2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import"../chunks/DsnmJJEf.js";import{o as Ge}from"../chunks/DukJHxi2.js";import{p as Xe,u as Be,g as e,d as i,r as l,s as d,t as P,j as r,a as h,b as Me,i as T,c as S,q as ue,h as p,v as je,m as he,f as ve,k as Ve,o as We,$ as qe,n as Oe,l as Qe}from"../chunks/krC2xWPP.js";import{d as $e,a as pe,s as G,e as Ze}from"../chunks/CddAxf8c.js";import{p as et,i as A}from"../chunks/DjsWWzyL.js";import{s as ce,h as tt}from"../chunks/j_DJpx8B.js";import{i as u,a as at}from"../chunks/Cu5ilWky.js";import{p as ke}from"../chunks/euuZp6ft.js";import{g as fe}from"../chunks/BVTiZ3e2.js";import{b as me}from"../chunks/BSopV7IU.js";import{f as rt,b as ot,g as st,u as nt,d as it}from"../chunks/BXL-vMzI.js";import{a as we,c as lt,s as ct,v as dt,h as ut,B as vt}from"../chunks/D7PIEGLR.js";import{C as Fe}from"../chunks/CqW2kplp.js";import{c as ft,U as mt}from"../chunks/Cp407y3V.js";import{s as le,t as te,B as _e}from"../chunks/Lvd_r9sp.js";import{S as _t}from"../chunks/K87jKp17.js";import{I as pt}from"../chunks/dWUbZIEy.js";import{C as Et}from"../chunks/DEuEFefA.js";import{C as gt}from"../chunks/Cv606Ht4.js";import{p as ae}from"../chunks/BzvfRedh.js";import{c as bt}from"../chunks/CU9nfEd1.js";import{D as yt}from"../chunks/nlum2O0L.js";import{g as xt}from"../chunks/DXEgXodZ.js";import{L as Ne}from"../chunks/C_E2vM9U.js";import{T as Tt}from"../chunks/CSNyvbvN.js";import{S as ht}from"../chunks/CV_JZMCk.js";import{U as Ot,C as Nt}from"../chunks/mRQytvOt.js";var St=S('<button type="button" class="inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"><!></button>'),Ct=S('<div><div class="flex items-center justify-between gap-2"><span class="text-[11px] font-semibold uppercase tracking-wide text-muted-foreground"> </span> <!></div> <p class="mt-0.5 break-all font-mono text-xs text-foreground"> </p></div>'),Dt=S('<div><div class="border-b border-border px-4 py-2.5"><h2 class="text-xs font-semibold uppercase tracking-wide text-muted-foreground"> </h2></div> <div class="space-y-3 px-4 py-3"><!> <!> <!> <!></div></div>'),It=S('<div class="object-info-popover relative"><button type="button"><!></button> <!></div>');function At(Ee,f){Xe(f,!0);const o=(m,v=ue,g=ue,V=ue,q=ue)=>{var J=Ct(),z=i(J),K=i(z),U=i(K,!0);l(K);var se=d(K,2);{var ne=j=>{var k=St(),de=i(k);{var ge=w=>{Et(w,{size:13,class:"text-emerald-500"})},be=w=>{gt(w,{size:13})};A(de,w=>{e(D)===V()?w(ge):w(be,-1)})}l(k),P((w,ye)=>{le(k,"title",w),le(k,"aria-label",ye)},[()=>u.t("ADMIN_NEXT.COPY_BUTTON.COPY"),()=>u.t("ADMIN_NEXT.COPY_BUTTON.COPY")]),pe("click",k,()=>re(V(),g())),h(j,k)};A(se,j=>{q()&&j(ne)})}l(z);var R=d(z,2),s=i(R,!0);l(R),l(J),P(()=>{G(U,v()),G(s,g())}),h(m,J)};let E=et(f,"align",3,"start"),C=T(!1),D=T(null);const B=p(()=>f.directoryTitle&&f.directoryTitle!==f.meta.type?`${f.directoryTitle} (${f.meta.type})`:f.meta.type),I=p(()=>f.meta.storageKey&&f.meta.storageKey!==f.meta.key);async function re(m,v){try{await navigator.clipboard.writeText(v)}catch{const g=document.createElement("textarea");g.value=v,g.style.position="fixed",g.style.opacity="0",document.body.appendChild(g),g.select(),document.execCommand("copy"),document.body.removeChild(g)}r(D,m,!0),setTimeout(()=>{e(D)===m&&r(D,null)},2e3)}function oe(m){m.key==="Escape"&&r(C,!1)}function M(m){m.target.closest(".object-info-popover")||r(C,!1)}Be(()=>{if(e(C))return document.addEventListener("mousedown",M),()=>document.removeEventListener("mousedown",M)});var $=It(),O=i($),W=i(O);pt(W,{size:16}),l(O);var N=d(O,2);{var L=m=>{var v=Dt(),g=i(v),V=i(g),q=i(V,!0);l(V),l(g);var J=d(g,2),z=i(J);{let s=p(()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.INFO.ID"));o(z,()=>e(s),()=>f.meta.key,()=>"id",()=>!0)}var K=d(z,2);{let s=p(()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.INFO.DIRECTORY"));o(K,()=>e(s),()=>e(B),()=>"directory",()=>!1)}var U=d(K,2);{var se=s=>{{let j=p(()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.INFO.STORAGE_KEY"));o(s,()=>e(j),()=>f.meta.storageKey,()=>"storageKey",()=>!0)}};A(U,s=>{e(I)&&s(se)})}var ne=d(U,2);{var R=s=>{{let j=p(()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.INFO.LOCATION"));o(s,()=>e(j),()=>f.meta.storagePath,()=>"location",()=>!0)}};A(ne,s=>{f.meta.storagePath&&s(R)})}l(J),l(v),P(s=>{ce(v,1,`absolute top-full z-50 mt-2 w-80 overflow-hidden rounded-xl border border-border bg-popover shadow-lg ${E()==="end"?"end-0":"start-0"}`),G(q,s)},[()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.INFO.TITLE")]),h(m,v)};A(N,m=>{e(C)&&m(L)})}l($),P((m,v)=>{ce(O,1,`inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground ${e(C)?"bg-accent text-foreground":""}`),le(O,"title",m),le(O,"aria-label",v),le(O,"aria-expanded",e(C))},[()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.INFO.SHOW_INFO"),()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.INFO.SHOW_INFO")]),pe("keydown",$,oe),pe("click",O,()=>r(C,!e(C))),h(Ee,$),Me()}$e(["click","keydown"]);var Lt=S('<p class="text-xs text-muted-foreground"> </p>'),jt=S("<!> Undo",1),kt=S("<!> ",1),wt=S("<!> Save",1),Ft=S('<div><div><div class="flex min-w-0 items-center gap-3"><button type="button" class="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"><!></button> <div class="min-w-0"><h1> </h1> <!></div> <!></div> <div class="flex shrink-0 items-center gap-2"><!> <!> <!> <!></div></div></div>'),Xt=S('<div class="flex flex-1 items-center justify-center"><!></div>'),Bt=S('<div class="flex flex-1 items-center justify-center"><div class="text-center"><!> <p class="mt-2 text-sm text-destructive"> </p> <!></div></div>'),Mt=S('<div class="flex-1 overflow-y-auto"><div class="space-y-6 px-6 py-6"><!></div></div>'),$t=S('<div class="flex h-full flex-col"><!> <!></div> <!> <!>',1);function fa(Ee,f){Xe(f,!0);const o=p(()=>ke.params.type??""),E=p(()=>ke.params.key??"");je("mediaSource",()=>({apiBase:e(o)&&e(E)?`flex-objects/${e(o)}/${e(E)}`:null,invalidationKeys:e(o)&&e(E)?[`flex-objects:${e(o)}:media:${e(E)}`,`flex-objects:${e(o)}:update:${e(E)}`]:[]}));let C=T(he([]));je("pageMediaItems",{get items(){return e(C)},update(t){r(C,t,!0)}});let D=T(null),B=T(null),I=T(null),re=T(""),oe=T(!0),M=T(!1),$=T(!1),O=T(""),W=T(!1),N=T(he({})),L=T(he({})),m=T("{}");const v=p(()=>we(e(N))!==e(m));let g=p(()=>!e(I)||!ut(e(I).fields,e(N)));const V=p(()=>e(N)._post_entries_save??"edit"),q=p(()=>{const t=e(D)?.edit?.title?.template;return!t||!e(B)?e(D)?.title??e(o):t.replace(/\{\{\s*object\.(\w+)\s*(?:\?\?\s*'([^']*)')?\s*\}\}/g,(n,a,c)=>String(e(B)[a]??c??""))});function J(t){const{key:n,__meta:a,...c}=t;r(N,structuredClone(c),!0),r(m,we(e(N)),!0)}async function z(){r(oe,!0),r(O,"");try{const[t,n,a]=await Promise.all([rt(e(o),e(E)),ot(e(o)).catch(()=>null),st().catch(()=>[])]);r(B,t.object,!0),r(re,t.etag,!0),r(I,n,!0),r(D,a.find(c=>c.type===e(o))??null,!0),J(t.object),e(o)&&e(E)&&xt(`flex-objects/${e(o)}/${e(E)}`).then(c=>{r(C,c,!0)}).catch(()=>{})}catch{r(O,`Failed to load object '${e(E)}' from '${e(o)}'.`)}finally{r(oe,!1)}}function K(t,n){const a=t.split("."),c={...e(N)};let _=c;for(let F=0;F<a.length-1;F++){const b=a[F];typeof _[b]!="object"||_[b]===null?_[b]={}:_[b]={..._[b]},_=_[b]}_[a[a.length-1]]=n,r(N,c,!0);const H=e(I)?dt(e(I).fields,t,c):null;if(H)r(L,{...e(L),[t]:H},!0);else if(e(L)[t]){const{[t]:F,...b}=e(L);r(L,b,!0)}}async function U(){if(r(L,e(I)?lt(e(I).fields,e(N)):{},!0),Object.keys(e(L)).length>0){ct();return}r(M,!0);try{const{_post_entries_save:t,...n}=e(N),a=await nt(e(o),e(E),n,e(re));r(B,a.object,!0),r(re,a.etag,!0),J(a.object),te.success(u.t("ADMIN_NEXT.TOASTS.SAVED")),e(V)==="list"&&fe(`${me}/flex-objects/${e(o)}`)}catch(t){t&&typeof t=="object"&&"status"in t&&t.status===409?te.error(u.t("ADMIN_NEXT.FLEX_OBJECTS.OBJECT_WAS_MODIFIED_ELSEWHERE_PLEASE")):te.error(u.t("ADMIN_NEXT.FLEX_OBJECTS.FAILED_TO_SAVE"))}finally{r(M,!1)}}async function se(){r(W,!1),r($,!0);try{await it(e(o),e(E)),te.success(u.t("ADMIN_NEXT.FLEX_OBJECTS.OBJECT_DELETED")),fe(`${me}/flex-objects/${e(o)}`)}catch{te.error(u.t("ADMIN_NEXT.FLEX_OBJECTS.FAILED_TO_DELETE_OBJECT"))}finally{r($,!1)}}function ne(t){if((t.metaKey||t.ctrlKey)&&t.key==="s"&&(t.preventDefault(),ae.autoSaveEnabled?s.forceSave():e(v)&&!e(M)&&U()),(t.metaKey||t.ctrlKey)&&t.key==="z"&&!t.shiftKey&&ae.autoSaveEnabled){const n=(document.activeElement?.tagName??"").toLowerCase();n==="input"||n==="textarea"||document.activeElement?.isContentEditable||(t.preventDefault(),s.undo())}}const R=bt(()=>ae.autoSaveEnabled?e(v)||s.saving||s.undoStack.some(t=>!t.savedToServer):e(v)),s=ft({save:U,getValue:t=>{const n=t.split(".");let a=e(N);for(const c of n){if(a==null||typeof a!="object")return;a=a[c]}return a},applyChange:K,formName:u.t("ADMIN_NEXT.TOASTS.FORM_LABEL.FLEX_OBJECT")});Be(()=>{e(o),e(E),s.reset(),z()}),Ge(()=>{const t=at.subscribe(`flex-objects:${e(o)}:update:${e(E)}`,()=>{e(v)?te.info(u.t("ADMIN_NEXT.FLEX_OBJECTS.OBJECT_CHANGED_ELSEWHERE_SAVE_TO")):z()},{dirtyGuard:()=>e(M)||s.saving});return()=>{t()}});var j=$t();tt("1cw9010",t=>{Ve(()=>{qe.title=`${e(q)??""} — ${e(D)?.title??e(o)??""} — Grav Admin`})}),Ze("keydown",We,ne);var k=ve(j),de=i(k);_t(de,{children:(n,a)=>{let c=()=>a?.().scrolled;var _=Ft(),H=i(_),F=i(H),b=i(F),Ce=i(b);yt(Ce,{name:"arrow-back",size:16}),l(b);var Q=d(b,2),Z=i(Q),ze=i(Z,!0);l(Z);var Ke=d(Z,2);{var Pe=y=>{var X=Lt(),ee=i(X,!0);l(X),P(()=>G(ee,e(D)?.title??e(o))),h(y,X)};A(Ke,y=>{c()||y(Pe)})}l(Q);var Ue=d(Q,2);{var Re=y=>{{let X=p(()=>e(D)?.title);At(y,{get meta(){return e(B).__meta},get directoryTitle(){return e(X)},align:"start"})}};A(Ue,y=>{e(B)?.__meta&&y(Re)})}l(F);var De=d(F,2),Ie=i(De);mt(Ie,{get hasChanges(){return e(v)},get saving(){return s.saving},get lastSavedAt(){return s.lastSavedAt},get autoSaveEnabled(){return ae.autoSaveEnabled}});var Ae=d(Ie,2);{var He=y=>{_e(y,{variant:"outline",size:"sm",onclick:()=>s.undo(),children:(X,ee)=>{var Y=jt(),ie=ve(Y);Ot(ie,{size:14}),Oe(),h(X,Y)},$$slots:{default:!0}})};A(Ae,y=>{ae.autoSaveEnabled&&ae.autoSaveToolbarUndo&&s.canUndo&&y(He)})}var Le=d(Ae,2);_e(Le,{variant:"destructive",size:"sm",onclick:()=>r(W,!0),get disabled(){return e($)},children:(y,X)=>{var ee=kt(),Y=ve(ee);{var ie=x=>{Ne(x,{size:14,class:"me-1.5 animate-spin"})},xe=x=>{Tt(x,{size:14,class:"me-1.5"})};A(Y,x=>{e($)?x(ie):x(xe,-1)})}var Te=d(Y);P(x=>G(Te,` ${x??""}`),[()=>u.t("ADMIN_NEXT.DELETE")]),h(y,ee)},$$slots:{default:!0}});var Ye=d(Le,2);{let y=p(()=>!e(v)||e(M)||!e(g));_e(Ye,{size:"sm",onclick:U,get disabled(){return e(y)},children:(X,ee)=>{var Y=wt(),ie=ve(Y);{var xe=x=>{Ne(x,{size:14,class:"me-1.5 animate-spin"})},Te=x=>{ht(x,{size:14,class:"me-1.5"})};A(ie,x=>{e(M)?x(xe):x(Te,-1)})}Oe(),h(X,Y)},$$slots:{default:!0}})}l(De),l(H),l(_),P(()=>{ce(_,1,`px-6 transition-[padding] duration-200 ${c()?"py-2":"pt-6 pb-3"}`),ce(H,1,`flex items-center justify-between gap-4 ${c()?"min-h-6":"min-h-8"}`),ce(Z,1,`truncate font-semibold text-foreground transition-[font-size] duration-200 ${c()?"text-sm":"text-lg"}`),G(ze,e(q))}),pe("click",b,()=>fe(`${me}/flex-objects/${e(o)}`)),h(n,_)},$$slots:{default:!0}});var ge=d(de,2);{var be=t=>{var n=Xt(),a=i(n);Ne(a,{size:24,class:"animate-spin text-muted-foreground"}),l(n),h(t,n)},w=t=>{var n=Bt(),a=i(n),c=i(a);Nt(c,{size:32,class:"mx-auto text-destructive"});var _=d(c,2),H=i(_,!0);l(_);var F=d(_,2);_e(F,{variant:"outline",size:"sm",class:"mt-3",onclick:()=>fe(`${me}/flex-objects/${e(o)}`),children:(b,Ce)=>{Oe();var Q=Qe();P(Z=>G(Q,Z),[()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.BACK_TO_LIST")]),h(b,Q)},$$slots:{default:!0}}),l(a),l(n),P(()=>G(H,e(O))),h(t,n)},ye=t=>{var n=Mt(),a=i(n),c=i(a);vt(c,{get fields(){return e(I).fields},get data(){return e(N)},onchange:K,get oncommit(){return s.oncommit},get errors(){return e(L)}}),l(a),l(n),h(t,n)};A(ge,t=>{e(oe)?t(be):e(O)?t(w,1):e(B)&&e(I)&&t(ye,2)})}l(k);var Se=d(k,2);{let t=p(()=>u.t("ADMIN_NEXT.FLEX_OBJECTS.DELETE_OBJECT"));Fe(Se,{get open(){return e(W)},get title(){return e(t)},message:"Are you sure you want to delete this object? This action cannot be undone.",confirmLabel:"Delete",variant:"destructive",onconfirm:se,oncancel:()=>r(W,!1)})}var Je=d(Se,2);{let t=p(()=>u.t("ADMIN_NEXT.UNSAVED_CHANGES"));Fe(Je,{get open(){return R.showModal},get title(){return e(t)},message:"You have unsaved changes. Leave anyway?",confirmLabel:"Leave",cancelLabel:"Stay",get onconfirm(){return R.confirm},get oncancel(){return R.cancel}})}h(Ee,j),Me()}$e(["click"]);export{fa as component};
|