2 lines
3.7 KiB
JavaScript
2 lines
3.7 KiB
JavaScript
import"./DsnmJJEf.js";import{p as J,e as j,f as F,a as g,b as z,g as a,h as T,d as U,r as L,t as D,c as w,i as I,m as B,j as i}from"./krC2xWPP.js";import{p as C,i as W}from"./DjsWWzyL.js";import{s as A,t as G}from"./Lvd_r9sp.js";import{i as d}from"./Cu5ilWky.js";import{L as P}from"./C_E2vM9U.js";import{C as K}from"./DEuEFefA.js";import{p as R}from"./BzvfRedh.js";var Y=w('<span class="inline-flex h-7 w-7 items-center justify-center rounded-md border border-border bg-card text-muted-foreground"><!></span>'),q=w('<span class="inline-flex h-7 w-7 items-center justify-center rounded-md border border-emerald-500/30 bg-emerald-500/10 text-emerald-600 dark:text-emerald-400"><!></span>'),Q=w('<span class="inline-flex h-7 w-7 items-center justify-center rounded-md border border-amber-500/30 bg-amber-500/10"><span class="relative flex h-2 w-2"><span class="absolute inline-flex h-full w-full animate-ping rounded-full bg-amber-400 opacity-70"></span> <span class="relative inline-flex h-2 w-2 rounded-full bg-amber-500"></span></span></span>');function ie(v,n){J(n,!0);let p=C(n,"saving",3,!1),E=C(n,"lastSavedAt",3,null),f=C(n,"autoSaveEnabled",3,!1);const h=T(()=>f()&&p()),e=T(()=>f()&&!p()&&!n.hasChanges&&E()!=null),_=T(()=>n.hasChanges&&!a(h));var m=j(),b=F(m);{var s=o=>{var t=Y(),c=U(t);P(c,{size:12,class:"animate-spin"}),L(t),D((S,N)=>{A(t,"title",S),A(t,"aria-label",N)},[()=>d.t("ADMIN_NEXT.UNSAVED_INDICATOR.SAVING_CHANGES"),()=>d.t("ADMIN_NEXT.UNSAVED_INDICATOR.SAVING_CHANGES_2")]),g(o,t)},l=o=>{var t=q(),c=U(t);K(c,{size:12,strokeWidth:2.5}),L(t),D((S,N)=>{A(t,"title",S),A(t,"aria-label",N)},[()=>d.t("ADMIN_NEXT.ALL_CHANGES_SAVED"),()=>d.t("ADMIN_NEXT.ALL_CHANGES_SAVED")]),g(o,t)},u=o=>{var t=Q();D((c,S)=>{A(t,"title",c),A(t,"aria-label",S)},[()=>d.t("ADMIN_NEXT.UNSAVED_INDICATOR.UNSAVED_CHANGES_CLICK_SAVE_TO_PERSIST"),()=>d.t("ADMIN_NEXT.UNSAVED_INDICATOR.YOU_HAVE_UNSAVED_CHANGES")]),g(o,t)};W(b,o=>{a(h)?o(s):a(e)?o(l,1):a(_)&&o(u,2)})}g(v,m),z()}function oe(v){const{save:n,getValue:p,applyChange:E,canSave:f}=v,h=v.formName??d.t("ADMIN_NEXT.TOASTS.FORM_LABEL.FORM");let e=I(B([])),_=I(!1),m=I(null),b=0,s=null,l=null,u=[];const o=T(()=>a(e).length>0);async function t(){if(!a(_)){i(_,!0);try{await n(),i(m,Date.now(),!0),i(e,a(e).map(r=>r.savedToServer?r:{...r,savedToServer:!0}),!0)}catch{G.error(d.t("ADMIN_NEXT.TOASTS.SAVE_FORM_FAILED",{form:h}))}finally{i(_,!1)}}}function c(){f&&!f()||(s&&clearTimeout(s),s=setTimeout(()=>{s=null,t()},500))}function S(r,O,y){if(!R.autoSaveEnabled)return;const V=y!==void 0?y:p(r);if(JSON.stringify(V)===JSON.stringify(O))return;const x={id:b++,path:r,oldValue:JSON.parse(JSON.stringify(V??null)),newValue:JSON.parse(JSON.stringify(O??null)),timestamp:Date.now(),label:`Changed ${Z(r)}`,savedToServer:!1},M=R.autoSaveBatchWindowMs;M>0?(u.push(x),l&&clearTimeout(l),l=setTimeout(()=>{i(e,[...a(e),...u].slice(-50),!0),u=[],l=null,c()},M)):(i(e,[...a(e),x].slice(-50),!0),c())}function N(){if(a(e).length===0)return;const r=a(e)[a(e).length-1];i(e,a(e).slice(0,-1),!0),E(r.path,r.oldValue),r.savedToServer&&c(),G.info(`Undone: ${r.label}`,{duration:2e3})}async function X(){f&&!f()||(s&&(clearTimeout(s),s=null),u.length>0&&(i(e,[...a(e),...u].slice(-50),!0),u=[],l&&(clearTimeout(l),l=null)),await t())}function k(){i(e,[],!0),s&&(clearTimeout(s),s=null),l&&(clearTimeout(l),l=null),u=[],i(m,null)}function H(){i(e,a(e).map(r=>r.savedToServer?r:{...r,savedToServer:!0}),!0),i(m,Date.now(),!0)}return{get undoStack(){return a(e)},get canUndo(){return a(o)},get saving(){return a(_)},get lastSavedAt(){return a(m)},oncommit:S,undo:N,forceSave:X,reset:k,markAllSaved:H}}function Z(v){const n=v.split(".");return n[0]==="header"&&n.length>1&&n.shift(),n.join(" > ")}export{ie as U,oe as c};
|