@templatical/media-library 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/de-1v2LO7XG.js +89 -0
- package/dist/en-mipcUdaJ.js +89 -0
- package/dist/index.d.ts +342 -0
- package/dist/templatical-media-library.css +1 -0
- package/dist/templatical-media-library.js +3424 -0
- package/dist/templatical-media-library.umd.cjs +13 -0
- package/package.json +47 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
(function(q,L){typeof exports=="object"&&typeof module<"u"?L(exports,require("@templatical/core/cloud"),require("vue"),require("lucide-vue-next"),require("vue-advanced-cropper"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","@templatical/core/cloud","vue","lucide-vue-next","vue-advanced-cropper","@vueuse/core"],L):(q=typeof globalThis<"u"?globalThis:q||self,L(q.TemplaticalMediaLibrary={},q.TemplaticalCoreCloud,q.Vue,q.LucideVueNext,q.VueAdvancedCropper,q.VueUseCore))})(this,(function(q,L,e,V,Le,te){"use strict";class ke{constructor(o){this.authManager=o}get projectId(){return this.authManager.projectId}get tenantSlug(){return this.authManager.tenantSlug}get baseParams(){return{project:this.projectId,tenant:this.tenantSlug}}async request(o,l={}){const a=await this.authManager.authenticatedFetch(o,{...l,headers:{"Content-Type":"application/json",Accept:"application/json",...l.headers}});if(!a.ok){const i=await a.json().catch(()=>({message:`HTTP error ${a.status}`}));throw new Error(i.message)}return a.status===204?void 0:(await a.json()).data}async browseMedia(o){const l=new URLSearchParams;o.folder_id&&l.set("folder_id",o.folder_id),o.search&&l.set("search",o.search),o.category&&l.set("category",o.category),o.sort&&l.set("sort",o.sort),o.cursor&&l.set("cursor",o.cursor);const a=l.toString(),r=`${L.buildUrl(L.API_ROUTES["media.browse"],this.baseParams)}${a?`?${a}`:""}`,i=await this.authManager.authenticatedFetch(r,{headers:{Accept:"application/json"}});if(!i.ok){const d=await i.json().catch(()=>({message:`HTTP error ${i.status}`}));throw new Error(d.message)}return i.json()}async uploadMedia(o,l){const a=new FormData;a.append("file",o),l&&a.append("folder_id",l);const r=L.buildUrl(L.API_ROUTES["media.upload"],this.baseParams),i=await this.authManager.authenticatedFetch(r,{method:"POST",headers:{Accept:"application/json"},body:a});if(!i.ok){const m=await i.json().catch(()=>({message:`HTTP error ${i.status}`}));throw new Error(m.message)}return(await i.json()).data}async updateMedia(o,l,a){return this.request(L.buildUrl(L.API_ROUTES["media.update"],{...this.baseParams,media:o}),{method:"PUT",body:JSON.stringify({filename:l,alt_text:a})})}async deleteMedia(o){return this.request(L.buildUrl(L.API_ROUTES["media.delete"],this.baseParams),{method:"POST",body:JSON.stringify({ids:o})})}async moveMedia(o,l){return this.request(L.buildUrl(L.API_ROUTES["media.move"],this.baseParams),{method:"POST",body:JSON.stringify({ids:o,folder_id:l})})}async getMediaFolders(){return this.request(L.buildUrl(L.API_ROUTES["folders.index"],this.baseParams))}async createMediaFolder(o,l){return this.request(L.buildUrl(L.API_ROUTES["folders.store"],this.baseParams),{method:"POST",body:JSON.stringify({name:o,parent_id:l??null})})}async renameMediaFolder(o,l){return this.request(L.buildUrl(L.API_ROUTES["folders.update"],{...this.baseParams,mediaFolder:o}),{method:"PUT",body:JSON.stringify({name:l})})}async deleteMediaFolder(o){return this.request(L.buildUrl(L.API_ROUTES["folders.destroy"],{...this.baseParams,mediaFolder:o}),{method:"DELETE"})}async checkMediaUsage(o){const l=await this.authManager.authenticatedFetch(L.buildUrl(L.API_ROUTES["media.checkUsage"],this.baseParams),{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({ids:o})});if(!l.ok){const a=await l.json().catch(()=>({message:`HTTP error ${l.status}`}));throw new Error(a.message)}return l.json()}async getFrequentlyUsed(){return this.request(L.buildUrl(L.API_ROUTES["media.frequentlyUsed"],this.baseParams))}async importFromUrl(o,l){return this.request(L.buildUrl(L.API_ROUTES["media.importFromUrl"],this.baseParams),{method:"POST",body:JSON.stringify({url:o,folder_id:l??null})})}async replaceMedia(o,l){const a=new FormData;a.append("file",l);const r=L.buildUrl(L.API_ROUTES["media.replace"],{...this.baseParams,media:o}),i=await this.authManager.authenticatedFetch(r,{method:"POST",headers:{Accept:"application/json"},body:a});if(!i.ok){const m=await i.json().catch(()=>({message:`HTTP error ${i.status}`}));throw new Error(m.message)}return(await i.json()).data}}function ye(t){if(!t.projectId)throw new Error("projectId is required for useMediaLibrary");const o=new ke(t.authManager),l=e.ref([]),a=e.ref([]),r=e.ref(null),i=e.ref("files"),d=e.ref(""),m=e.ref(null),p=e.ref("newest"),g=e.ref(!1),u=e.ref(!1),x=e.ref(!1),k=e.ref(null),C=e.ref(null),n=e.ref(new Set),f=e.ref(null),B=e.ref([]),s=e.ref({}),v=e.ref(!1),M=e.ref([]),U=e.ref(!1),c=e.ref(null),W=e.ref(!1),P=e.ref(null),D=e.ref(!1),R=e.ref(null),O=e.ref(null);async function A(){var h;g.value=!0;try{const y=await o.browseMedia({folder_id:d.value?void 0:r.value,search:d.value||void 0,category:m.value||void 0,sort:p.value!=="newest"?p.value:void 0});l.value=y.data,k.value=y.meta.next_cursor,x.value=!!y.meta.next_cursor}catch(y){(h=t.onError)==null||h.call(t,y)}finally{g.value=!1}}async function Z(){var h;if(!(!x.value||!k.value||g.value)){g.value=!0;try{const y=await o.browseMedia({folder_id:d.value?void 0:r.value,search:d.value||void 0,category:m.value||void 0,sort:p.value!=="newest"?p.value:void 0,cursor:k.value});l.value=[...l.value,...y.data],k.value=y.meta.next_cursor,x.value=!!y.meta.next_cursor}catch(y){(h=t.onError)==null||h.call(t,y)}finally{g.value=!1}}}async function z(h){d.value=h,await A()}async function I(h){m.value=h,await A()}async function H(h){p.value=h,await A()}async function J(h){i.value="files",r.value=h,d.value="",n.value=new Set,f.value=null,await A()}async function Q(){i.value="frequently-used",r.value=null,d.value="",n.value=new Set,f.value=null,await se()}async function G(h){var y;u.value=!0;try{const N=await o.uploadMedia(h,r.value);return l.value=[N,...l.value],N}catch(N){return(y=t.onError)==null||y.call(t,N),null}finally{u.value=!1}}async function j(h){var y;u.value=!0,C.value={current:0,total:h.length};try{for(let N=0;N<h.length;N++){C.value={current:N+1,total:h.length};try{const S=await o.uploadMedia(h[N],r.value);l.value=[S,...l.value]}catch(S){(y=t.onError)==null||y.call(t,S)}}}finally{u.value=!1,C.value=null}}async function X(h){var y;if(n.value.size!==0)try{const N=await o.moveMedia([...n.value],h);if(r.value===null){const S=new Map(N.map(T=>[T.id,T]));l.value=l.value.map(T=>S.get(T.id)??T)}else l.value=l.value.filter(S=>!n.value.has(S.id));n.value=new Set,f.value=null}catch(N){(y=t.onError)==null||y.call(t,N)}}async function le(h,y,N){var S,T;try{const ee=await o.updateMedia(h,y,N);l.value=l.value.map(De=>De.id===h?ee:De),((S=f.value)==null?void 0:S.id)===h&&(f.value=ee)}catch(ee){(T=t.onError)==null||T.call(t,ee)}}async function pe(){var h;if(n.value.size!==0)try{await o.deleteMedia([...n.value]),l.value=l.value.filter(y=>!n.value.has(y.id)),B.value=B.value.filter(y=>!n.value.has(y.id)),n.value=new Set,f.value=null}catch(y){(h=t.onError)==null||h.call(t,y)}}async function se(){var h;try{B.value=await o.getFrequentlyUsed()}catch(y){(h=t.onError)==null||h.call(t,y)}}async function oe(){var h;if(n.value.size===0)return!1;M.value=[...n.value];try{const y=await o.checkMediaUsage(M.value);s.value=y.data;const N=Object.values(y.data).some(S=>S.template_count>0);return v.value=!0,N}catch(y){return(h=t.onError)==null||h.call(t,y),!1}}async function re(){var h;if(v.value=!1,M.value.length!==0)try{await o.deleteMedia(M.value),l.value=l.value.filter(y=>!M.value.includes(y.id)),B.value=B.value.filter(y=>!M.value.includes(y.id)),n.value=new Set,f.value=null,M.value=[],s.value={}}catch(y){(h=t.onError)==null||h.call(t,y)}}function w(){v.value=!1,M.value=[],s.value={}}async function E(h){var y;U.value=!0,c.value=null;try{const N=await o.importFromUrl(h,r.value);return l.value=[N,...l.value],N}catch(N){return c.value=N instanceof Error?N.message:"Import failed",(y=t.onError)==null||y.call(t,N),null}finally{U.value=!1}}function F(h){const y=new Set(n.value);y.has(h)?y.delete(h):y.add(h),n.value=y}function Y(){n.value=new Set,f.value=null}function ce(h){f.value=h,n.value=new Set([h.id])}async function ae(){var h;try{a.value=await o.getMediaFolders()}catch(y){(h=t.onError)==null||h.call(t,y)}}async function b(h,y){var N;try{const S=await o.createMediaFolder(h,y);return await ae(),S}catch(S){return(N=t.onError)==null||N.call(t,S),null}}function _(h,y){for(const N of h){if(N.id===y)return N;if(N.children){const S=_(N.children,y);if(S)return S}}return null}async function de(h,y){var N;try{await o.renameMediaFolder(h,y),await ae()}catch(S){(N=t.onError)==null||N.call(t,S)}}async function $(h){var y;try{const N=_(a.value,h),S=(N==null?void 0:N.parent_id)??null;await o.deleteMediaFolder(h),r.value===h&&(r.value=S),await ae(),await A()}catch(N){(y=t.onError)==null||y.call(t,N)}}async function me(h){var y;R.value=h,P.value=null;try{const N=await o.checkMediaUsage([h.id]);O.value=N.data[h.id]??null,D.value=!0}catch(N){(y=t.onError)==null||y.call(t,N)}}function ue(){D.value=!1,R.value=null,O.value=null,P.value=null}async function be(h){var y,N;if(!R.value)return null;W.value=!0,P.value=null;try{const S=await o.replaceMedia(R.value.id,h);return l.value=l.value.map(T=>T.id===S.id?S:T),B.value=B.value.map(T=>T.id===S.id?S:T),((y=f.value)==null?void 0:y.id)===S.id&&(f.value=S),D.value=!1,R.value=null,O.value=null,S}catch(S){return P.value=S instanceof Error?S.message:"Replace failed",(N=t.onError)==null||N.call(t,S),null}finally{W.value=!1}}async function Oo(h,y){var N,S;try{const T=await o.replaceMedia(h,y);return l.value=l.value.map(ee=>ee.id===T.id?T:ee),B.value=B.value.map(ee=>ee.id===T.id?T:ee),((N=f.value)==null?void 0:N.id)===T.id&&(f.value=T),T}catch(T){return(S=t.onError)==null||S.call(t,T),null}}return{items:l,folders:a,currentFolderId:r,viewMode:i,searchQuery:d,categoryFilter:m,sortOption:p,isLoading:g,isUploading:u,uploadProgress:C,hasMore:x,selectedItems:n,previewItem:f,frequentlyUsedItems:B,deleteUsageInfo:s,showDeleteWarning:v,loadItems:A,loadMore:Z,search:z,filterByCategory:I,sortBy:H,navigateToFolder:J,showFrequentlyUsed:Q,uploadFile:G,uploadFiles:j,moveSelected:X,updateFile:le,deleteSelected:pe,isImportingFromUrl:U,importFromUrlError:c,importFromUrl:E,toggleSelection:F,clearSelection:Y,selectItem:ce,loadFolders:ae,createFolder:b,renameFolder:de,deleteFolder:$,findFolderInTree:_,loadFrequentlyUsed:se,checkUsageBeforeDelete:oe,confirmDelete:re,cancelDelete:w,isReplacing:W,replaceError:P,showReplaceWarning:D,pendingReplaceItem:R,replaceUsageInfo:O,checkUsageBeforeReplace:me,cancelReplace:ue,replaceFile:be,replaceMediaDirectly:Oo}}function K(t){const o=t??e.inject("translations"),l=e.isRef(o)?o.value:o;function a(r,i){return r.replace(/\{(\w+)\}/g,(d,m)=>m in i?String(i[m]):`{${m}}`)}return{t:l,format:a}}const Ie={key:0,class:"tpl:flex tpl:items-center tpl:gap-1 tpl:text-xs",style:{color:"var(--tpl-text-muted)"}},ze=["onClick"],Ue={key:1,style:{color:"var(--tpl-text)"}},xe=e.defineComponent({__name:"MediaBreadcrumb",props:{folders:{},currentFolderId:{}},emits:["navigate"],setup(t,{emit:o}){const l=t,a=o,{t:r}=K(),i=e.computed(()=>{if(!l.currentFolderId)return[];const m=[];return d(l.folders,l.currentFolderId,m),m});function d(m,p,g){for(const u of m){if(u.id===p)return g.push(u),!0;if(u.children&&d(u.children,p,g))return g.unshift(u),!0}return!1}return(m,p)=>i.value.length>0?(e.openBlock(),e.createElementBlock("div",Ie,[e.createElementVNode("button",{class:"tpl:transition-colors tpl:duration-150 tpl:hover:underline",style:{color:"var(--tpl-primary)"},onClick:p[0]||(p[0]=g=>a("navigate",null))},e.toDisplayString(e.unref(r).mediaLibrary.allFiles),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(g,u)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:g.id},[e.createVNode(e.unref(V.ChevronRight),{size:12,"stroke-width":2}),u<i.value.length-1?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:transition-colors tpl:duration-150 tpl:hover:underline",style:{color:"var(--tpl-primary)"},onClick:x=>a("navigate",g.id)},e.toDisplayString(g.name),9,ze)):(e.openBlock(),e.createElementBlock("span",Ue,e.toDisplayString(g.name),1))],64))),128))])):e.createCommentVNode("",!0)}});function ne(){const t=e.inject("planConfig"),o=e.computed(()=>{var x;return((x=t.config.value)==null?void 0:x.media)??null}),l=e.computed(()=>{var x;return((x=o.value)==null?void 0:x.use_media_library)??!0}),a=e.computed(()=>{var x;return((x=o.value)==null?void 0:x.categories)??null}),r=e.computed(()=>a.value?Object.values(a.value).flatMap(x=>x.mime_types):[]),i=e.computed(()=>r.value.join(",")),d=e.computed(()=>{var x;return((x=o.value)==null?void 0:x.max_file_size)??0});function m(x,k){return a.value?!k||k.length===0?r.value.includes(x):k.some(C=>{var n;return(n=a.value[C])==null?void 0:n.mime_types.includes(x)}):!1}function p(x){var k;return a.value?((k=a.value.images)==null?void 0:k.mime_types.includes(x))??!1:!1}function g(x){if(!a.value)return null;for(const[k,C]of Object.entries(a.value))if(C.mime_types.includes(x))return k;return null}const u=e.computed(()=>a.value?Object.keys(a.value):[]);return{isMediaLibraryEnabled:l,allAcceptedMimeTypes:r,allAcceptedInputString:i,maxFileSize:d,availableCategories:u,isAcceptedMimeType:m,isImageMimeType:p,getCategoryForMimeType:g}}const Te={free:void 0,square:1,landscape43:4/3,landscape169:16/9,original:void 0};function Pe(t){return t==="image/png"?{mimeType:"image/png",quality:1}:t==="image/gif"?{mimeType:"image/png",quality:1}:t==="image/webp"?{mimeType:"image/webp",quality:.92}:{mimeType:"image/jpeg",quality:.92}}function je(t,o,l){const a=t.width,r=t.height;if(!o&&!l)return t;let i=a,d=r;if(o&&a>o&&(i=o,d=Math.round(r*(o/a))),l&&d>l&&(d=l,i=Math.round(i*(l/(r*(o?o/a:1))))),i===a&&d===r)return t;const m=document.createElement("canvas");m.width=i,m.height=d;const p=m.getContext("2d");return p&&(p.imageSmoothingEnabled=!0,p.imageSmoothingQuality="high",p.drawImage(t,0,0,i,d)),m}function Re(t,o,l){return new Promise((a,r)=>{t.toBlob(i=>{if(!i){r(new Error("Failed to create blob from canvas"));return}const d=l.mimeType.split("/")[1],p=`${o.replace(/\.[^.]+$/,"")}.${d}`,g=new File([i],p,{type:l.mimeType});a(g)},l.mimeType,l.quality)})}function Ae(t,o,l,a){let r=t,i=o;if(l&&r>l){const d=l/r;r=l,i=Math.round(i*d)}if(a&&i>a){const d=a/i;i=a,r=Math.round(r*d)}return{width:r,height:i}}const Oe={class:"tpl:shrink-0 tpl:p-5 tpl:pb-4"},qe={class:"tpl:text-sm tpl:font-semibold",style:{color:"var(--tpl-text)"}},We={class:"tpl:min-h-0 tpl:flex-1 tpl:overflow-y-auto tpl:px-5"},Ke={key:0,class:"tpl:mb-4"},Ge={class:"tpl:relative tpl:mb-3 tpl:overflow-hidden tpl:rounded-md tpl:border",style:{"border-color":"var(--tpl-border)",height:"300px","background-color":"var(--tpl-bg)"}},He={class:"tpl:space-y-3"},Ze={class:"tpl:mb-1.5 tpl:block tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text-muted)"}},Je={class:"tpl:flex tpl:flex-wrap tpl:gap-1.5"},Xe=["onClick"],Qe={class:"tpl:flex tpl:gap-3"},Ye={class:"tpl:flex-1"},et={class:"tpl:mb-1 tpl:block tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text-muted)"}},tt={class:"tpl:font-normal",style:{color:"var(--tpl-text-dim)"}},lt={class:"tpl:relative"},rt=["value","placeholder"],ot={class:"tpl:absolute tpl:top-1/2 tpl:right-2.5 tpl:-translate-y-1/2 tpl:text-xs",style:{color:"var(--tpl-text-dim)"}},at={class:"tpl:flex-1"},nt={class:"tpl:mb-1 tpl:block tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text-muted)"}},it={class:"tpl:font-normal",style:{color:"var(--tpl-text-dim)"}},st={class:"tpl:relative"},ct=["value","placeholder"],dt={class:"tpl:absolute tpl:top-1/2 tpl:right-2.5 tpl:-translate-y-1/2 tpl:text-xs",style:{color:"var(--tpl-text-dim)"}},pt={key:0,class:"tpl:flex tpl:items-center tpl:gap-1 tpl:text-xs",style:{color:"var(--tpl-text-muted)"}},mt={class:"tpl:font-medium",style:{color:"var(--tpl-text)"}},ft={class:"tpl:mb-3"},ut={class:"tpl:mb-1 tpl:block tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text-muted)"}},yt=["autofocus"],gt={key:1,class:"tpl:mb-4"},ht={class:"tpl:mb-1 tpl:block tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text-muted)"}},bt=["placeholder"],kt={class:"tpl:flex tpl:shrink-0 tpl:justify-end tpl:gap-2 tpl:p-5 tpl:pt-4"},xt=["disabled"],wt=e.defineComponent({__name:"MediaEditModal",props:{visible:{type:Boolean},item:{}},emits:["save","close"],setup(t,{emit:o}){const l=t,a=o,{t:r}=K(),i=r.mediaLibrary,{isImageMimeType:d}=ne(),m=e.ref(""),p=e.ref(""),g=e.ref(null),u=e.ref("free"),x=e.ref(void 0),k=e.ref(void 0),C=e.ref(""),n=e.ref(""),f=e.ref(void 0),B=e.ref(null),s=e.ref(!1),v=e.ref(!1),M=e.ref(!1),U=e.computed(()=>l.item?["image/jpeg","image/png","image/webp","image/gif"].includes(l.item.mime_type):!1),c=e.computed(()=>u.value==="original"?f.value:Te[u.value]),W=e.computed(()=>B.value?Ae(B.value.width,B.value.height,x.value,k.value):null);e.watch(()=>l.visible,z=>{z&&l.item&&(m.value=l.item.filename,p.value=l.item.alt_text||"",u.value="free",x.value=void 0,k.value=void 0,C.value="",n.value="",f.value=void 0,B.value=null,s.value=!1,M.value=!1,l.item.width&&l.item.height&&(f.value=l.item.width/l.item.height))});function P(z){z.coordinates&&(B.value={width:Math.round(z.coordinates.width),height:Math.round(z.coordinates.height)},M.value=!0)}function D(){var z,I;s.value=!0,!f.value&&((z=l.item)!=null&&z.width)&&((I=l.item)!=null&&I.height)&&(f.value=l.item.width/l.item.height)}function R(z){const I=z.target.value;C.value=I,x.value=I&&parseInt(I,10)||void 0}function O(z){const I=z.target.value;n.value=I,k.value=I&&parseInt(I,10)||void 0}async function A(){const z=m.value.trim();if(!z||!l.item||v.value)return;const I=d(l.item.mime_type);let H;if(U.value&&g.value&&M.value){v.value=!0;try{const{canvas:J}=g.value.getResult();if(J){const Q=je(J,x.value,k.value),G=Pe(l.item.mime_type);H={file:await Re(Q,l.item.filename,G)}}}catch{v.value=!1;return}v.value=!1}a("save",l.item.id,z,I?p.value:void 0,H),a("close")}function Z(z){z.key==="Enter"&&!v.value&&(z.preventDefault(),A()),z.key==="Escape"&&a("close")}return(z,I)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{"enter-active-class":"tpl:transition tpl:ease-out tpl:duration-150","enter-from-class":"tpl:opacity-0","enter-to-class":"tpl:opacity-100","leave-active-class":"tpl:transition tpl:ease-in tpl:duration-100","leave-from-class":"tpl:opacity-100","leave-to-class":"tpl:opacity-0"},{default:e.withCtx(()=>{var H,J,Q,G;return[t.visible&&t.item?(e.openBlock(),e.createElementBlock("div",{key:0,class:"tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center",style:{"background-color":"var(--tpl-overlay)"},onClick:I[3]||(I[3]=e.withModifiers(j=>a("close"),["self"])),onKeydown:Z},[e.createElementVNode("div",{class:e.normalizeClass(["tpl:mx-4 tpl:flex tpl:max-h-[90vh] tpl:w-full tpl:flex-col tpl:overflow-hidden tpl:rounded-lg tpl:shadow-xl",U.value?"tpl:max-w-2xl":"tpl:max-w-sm"]),style:{"background-color":"var(--tpl-bg-elevated)"}},[e.createElementVNode("div",Oe,[e.createElementVNode("h3",qe,e.toDisplayString(e.unref(r).mediaLibrary.editFile),1)]),e.createElementVNode("div",We,[U.value?(e.openBlock(),e.createElementBlock("div",Ke,[e.createElementVNode("div",Ge,[e.createVNode(e.unref(Le.Cropper),{ref_key:"cropperRef",ref:g,src:t.item.url,"stencil-props":{aspectRatio:c.value},class:"tpl:h-full tpl:w-full","background-class":"tpl-cropper-background",onChange:P,onReady:D},null,8,["src","stencil-props"])]),e.createElementVNode("div",He,[e.createElementVNode("div",null,[e.createElementVNode("label",Ze,e.toDisplayString(e.unref(r).mediaLibrary.cropAspectRatio),1),e.createElementVNode("div",Je,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["free","square","landscape43","landscape169","original"],j=>e.createElementVNode("button",{key:j,type:"button",class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:e.normalizeStyle({borderColor:u.value===j?"var(--tpl-primary)":"var(--tpl-border)",backgroundColor:u.value===j?"var(--tpl-primary-light)":"var(--tpl-bg)",color:u.value===j?"var(--tpl-primary)":"var(--tpl-text)"}),onClick:X=>u.value=j},e.toDisplayString(e.unref(i)[`crop${j.charAt(0).toUpperCase()}${j.slice(1)}`]),13,Xe)),64))])]),e.createElementVNode("div",Qe,[e.createElementVNode("div",Ye,[e.createElementVNode("label",et,[e.createTextVNode(e.toDisplayString(e.unref(r).mediaLibrary.cropMaxWidth)+" ",1),e.createElementVNode("span",tt,e.toDisplayString(e.unref(r).mediaLibrary.cropOptional),1)]),e.createElementVNode("div",lt,[e.createElementVNode("input",{value:C.value,type:"number",min:"1",class:"tpl:w-full tpl:rounded-md tpl:border tpl:py-1.5 tpl:pr-8 tpl:pl-3 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},placeholder:((J=(H=B.value)==null?void 0:H.width)==null?void 0:J.toString())||"",onInput:R},null,40,rt),e.createElementVNode("span",ot,e.toDisplayString(e.unref(r).mediaLibrary.cropPixels),1)])]),e.createElementVNode("div",at,[e.createElementVNode("label",nt,[e.createTextVNode(e.toDisplayString(e.unref(r).mediaLibrary.cropMaxHeight)+" ",1),e.createElementVNode("span",it,e.toDisplayString(e.unref(r).mediaLibrary.cropOptional),1)]),e.createElementVNode("div",st,[e.createElementVNode("input",{value:n.value,type:"number",min:"1",class:"tpl:w-full tpl:rounded-md tpl:border tpl:py-1.5 tpl:pr-8 tpl:pl-3 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},placeholder:((G=(Q=B.value)==null?void 0:Q.height)==null?void 0:G.toString())||"",onInput:O},null,40,ct),e.createElementVNode("span",dt,e.toDisplayString(e.unref(r).mediaLibrary.cropPixels),1)])])]),W.value?(e.openBlock(),e.createElementBlock("div",pt,[e.createElementVNode("span",null,e.toDisplayString(e.unref(r).mediaLibrary.cropOutputSize)+": ",1),e.createElementVNode("span",mt,e.toDisplayString(W.value.width)+" x "+e.toDisplayString(W.value.height)+" "+e.toDisplayString(e.unref(r).mediaLibrary.cropPixels),1)])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),e.createElementVNode("div",ft,[e.createElementVNode("label",ut,e.toDisplayString(e.unref(r).mediaLibrary.fileName),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I[0]||(I[0]=j=>m.value=j),type:"text",class:"tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},autofocus:!U.value},null,8,yt),[[e.vModelText,m.value]])]),e.unref(d)(t.item.mime_type)?(e.openBlock(),e.createElementBlock("div",gt,[e.createElementVNode("label",ht,e.toDisplayString(e.unref(r).mediaLibrary.altText),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I[1]||(I[1]=j=>p.value=j),type:"text",class:"tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},placeholder:e.unref(r).mediaLibrary.altTextPlaceholder},null,8,bt),[[e.vModelText,p.value]])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",kt,[e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text)","background-color":"var(--tpl-bg)"},onClick:I[2]||(I[2]=j=>a("close"))},e.toDisplayString(e.unref(r).mediaLibrary.cancel),1),e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:text-white tpl:transition-all tpl:duration-150 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50",style:{background:`linear-gradient(
|
|
2
|
+
135deg,
|
|
3
|
+
var(--tpl-primary),
|
|
4
|
+
var(--tpl-primary-hover)
|
|
5
|
+
)`},disabled:v.value,onClick:A},e.toDisplayString(v.value?e.unref(r).mediaLibrary.saving:e.unref(r).mediaLibrary.saveChanges),9,xt)])],2)],32)):e.createCommentVNode("",!0)]}),_:1})]))}}),ge=(t,o)=>{const l=t.__vccOpts||t;for(const[a,r]of o)l[a]=r;return l},we=ge(wt,[["__scopeId","data-v-4d303952"]]),Et={key:1,class:"tpl:size-4 tpl:shrink-0"},_t={key:0,class:"tpl:truncate"},Nt={key:3,class:"tpl:flex tpl:shrink-0 tpl:items-center tpl:gap-0.5 tpl:opacity-0 tpl:transition-opacity tpl:group-hover:opacity-100"},Ct=["title"],Bt=["title"],Vt={key:0},Ft=["placeholder"],St=5,vt=e.defineComponent({__name:"MediaFolderTreeNode",props:{folder:{},currentFolderId:{},depth:{}},emits:["navigate","createFolder","renameFolder","deleteFolder"],setup(t,{emit:o}){const l=t,a=o,{t:r}=K(),i=e.ref(!1),d=e.ref(!1),m=e.ref(""),p=e.ref(!1),g=e.ref(""),u=e.computed(()=>{var P;return(((P=l.folder.children)==null?void 0:P.length)??0)>0}),x=e.computed(()=>l.depth<St-1),k=e.computed(()=>l.currentFolderId===l.folder.id),C=e.computed(()=>!l.currentFolderId||!l.folder.children?!1:f(l.folder.children,l.currentFolderId)),n=e.computed(()=>i.value||C.value);function f(P,D){for(const R of P)if(R.id===D||R.children&&f(R.children,D))return!0;return!1}function B(){i.value=!i.value}function s(){d.value=!0,m.value=l.folder.name}function v(){const P=m.value.trim();P&&P!==l.folder.name&&a("renameFolder",l.folder.id,P),d.value=!1,m.value=""}function M(){d.value=!1,m.value=""}function U(){p.value=!0,g.value="",i.value=!0}function c(){g.value.trim()&&a("createFolder",g.value.trim(),l.folder.id),p.value=!1,g.value=""}function W(){p.value=!1,g.value=""}return(P,D)=>{const R=e.resolveComponent("MediaFolderTreeNode",!0);return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:"tpl:group tpl:flex tpl:w-full tpl:items-center tpl:gap-1 tpl:py-1.5 tpl:pr-2 tpl:text-left tpl:text-xs tpl:transition-all tpl:duration-150",style:e.normalizeStyle({paddingLeft:`${t.depth*16+8}px`,backgroundColor:k.value?"var(--tpl-bg-active)":"transparent",color:k.value?"var(--tpl-primary)":"var(--tpl-text)"})},[u.value||p.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:flex tpl:size-4 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded tpl:transition-colors",onClick:e.withModifiers(B,["stop"])},[e.createVNode(e.unref(V.ChevronRight),{class:e.normalizeClass(["tpl:transition-transform tpl:duration-150",{"tpl:rotate-90":n.value}]),size:10,"stroke-width":2},null,8,["class"])])):(e.openBlock(),e.createElementBlock("span",Et)),e.createElementVNode("button",{class:"tpl:flex tpl:min-w-0 tpl:flex-1 tpl:items-center tpl:gap-1.5",onClick:D[0]||(D[0]=O=>a("navigate",t.folder.id))},[e.createVNode(e.unref(V.Folder),{class:"tpl:shrink-0",size:14,"stroke-width":1.5}),d.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",_t,e.toDisplayString(t.folder.name),1))]),d.value?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:2,"onUpdate:modelValue":D[1]||(D[1]=O=>m.value=O),type:"text",class:"tpl:min-w-0 tpl:flex-1 tpl:rounded tpl:border tpl:px-1.5 tpl:py-0.5 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-primary)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},autofocus:"",onKeydown:[e.withKeys(v,["enter"]),e.withKeys(M,["escape"])],onBlur:v,onClick:D[2]||(D[2]=e.withModifiers(()=>{},["stop"]))},null,544)),[[e.vModelText,m.value]]):e.createCommentVNode("",!0),d.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Nt,[x.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:flex tpl:size-6 tpl:items-center tpl:justify-center tpl:rounded tpl:transition-colors",title:e.unref(r).mediaLibrary.addSubfolder,onClick:e.withModifiers(U,["stop"])},[e.createVNode(e.unref(V.Plus),{size:12,"stroke-width":2})],8,Ct)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:items-center tpl:justify-center tpl:rounded tpl:transition-colors",title:e.unref(r).mediaLibrary.renameFolder,onClick:e.withModifiers(s,["stop"])},[e.createVNode(e.unref(V.Pencil),{size:12,"stroke-width":2})],8,Bt),e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:items-center tpl:justify-center tpl:rounded tpl:transition-colors",onClick:D[3]||(D[3]=e.withModifiers(O=>a("deleteFolder",t.folder.id),["stop"]))},[e.createVNode(e.unref(V.Trash2),{size:12,"stroke-width":2,style:{color:"var(--tpl-danger)"}})])]))],4),n.value?(e.openBlock(),e.createElementBlock("div",Vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.folder.children,O=>(e.openBlock(),e.createBlock(R,{key:O.id,folder:O,"current-folder-id":t.currentFolderId,depth:t.depth+1,onNavigate:D[4]||(D[4]=A=>a("navigate",A)),onCreateFolder:D[5]||(D[5]=(A,Z)=>a("createFolder",A,Z)),onRenameFolder:D[6]||(D[6]=(A,Z)=>a("renameFolder",A,Z)),onDeleteFolder:D[7]||(D[7]=A=>a("deleteFolder",A))},null,8,["folder","current-folder-id","depth"]))),128)),p.value?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle({paddingLeft:`${(t.depth+1)*16+8}px`}),class:"tpl:py-1.5 tpl:pr-2"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":D[8]||(D[8]=O=>g.value=O),type:"text",class:"tpl:w-full tpl:rounded tpl:border tpl:px-2 tpl:py-1 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-primary)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},placeholder:e.unref(r).mediaLibrary.subfolderName,autofocus:"",onKeydown:[e.withKeys(c,["enter"]),e.withKeys(W,["escape"])],onBlur:c},null,40,Ft),[[e.vModelText,g.value]])],4)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])}}}),$t={class:"tpl:flex tpl:h-full tpl:flex-col tpl:overflow-y-auto"},Mt={key:0,class:"tpl:px-3 tpl:py-2"},Dt=["placeholder"],Ee=e.defineComponent({__name:"MediaFolderTree",props:{folders:{},currentFolderId:{},viewMode:{},hasFrequentlyUsed:{type:Boolean}},emits:["navigate","createFolder","renameFolder","deleteFolder","showFrequentlyUsed"],setup(t,{emit:o}){const l=o,{t:a}=K(),r=e.ref(!1),i=e.ref("");function d(){r.value=!0,i.value=""}function m(){i.value.trim()&&l("createFolder",i.value.trim()),r.value=!1,i.value=""}function p(){r.value=!1,i.value=""}return(g,u)=>(e.openBlock(),e.createElementBlock("div",$t,[e.createElementVNode("button",{class:"tpl:flex tpl:w-full tpl:items-center tpl:gap-2 tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:e.normalizeStyle({backgroundColor:t.viewMode==="files"&&t.currentFolderId===null?"var(--tpl-bg-active)":"transparent",color:t.viewMode==="files"&&t.currentFolderId===null?"var(--tpl-primary)":"var(--tpl-text)"}),onClick:u[0]||(u[0]=x=>l("navigate",null))},[e.createVNode(e.unref(V.File),{size:14,"stroke-width":1.5}),e.createTextVNode(" "+e.toDisplayString(e.unref(a).mediaLibrary.allFiles),1)],4),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.folders,x=>(e.openBlock(),e.createBlock(vt,{key:x.id,folder:x,"current-folder-id":t.currentFolderId,depth:0,onNavigate:u[1]||(u[1]=k=>l("navigate",k)),onCreateFolder:u[2]||(u[2]=(k,C)=>l("createFolder",k,C)),onRenameFolder:u[3]||(u[3]=(k,C)=>l("renameFolder",k,C)),onDeleteFolder:u[4]||(u[4]=k=>l("deleteFolder",k))},null,8,["folder","current-folder-id"]))),128)),r.value?(e.openBlock(),e.createElementBlock("div",Mt,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[5]||(u[5]=x=>i.value=x),type:"text",class:"tpl:w-full tpl:rounded tpl:border tpl:px-2 tpl:py-1 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-primary)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},placeholder:e.unref(a).mediaLibrary.folderName,autofocus:"",onKeydown:[e.withKeys(m,["enter"]),e.withKeys(p,["escape"])],onBlur:m},null,40,Dt),[[e.vModelText,i.value]])])):e.createCommentVNode("",!0),r.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,class:"tpl:flex tpl:w-full tpl:items-center tpl:gap-2 tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:transition-all tpl:duration-150",style:{color:"var(--tpl-text-muted)"},onClick:d},[e.createVNode(e.unref(V.Plus),{size:14,"stroke-width":1.5}),e.createTextVNode(" "+e.toDisplayString(e.unref(a).mediaLibrary.newFolder),1)])),u[7]||(u[7]=e.createElementVNode("div",{class:"tpl:flex-1"},null,-1)),t.hasFrequentlyUsed?(e.openBlock(),e.createElementBlock("button",{key:2,class:"tpl:flex tpl:w-full tpl:items-center tpl:gap-2 tpl:border-t tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:e.normalizeStyle({borderColor:"var(--tpl-border)",backgroundColor:t.viewMode==="frequently-used"?"var(--tpl-bg-active)":"transparent",color:t.viewMode==="frequently-used"?"var(--tpl-primary)":"var(--tpl-text)"}),onClick:u[6]||(u[6]=x=>l("showFrequentlyUsed"))},[e.createVNode(e.unref(V.Star),{size:14,"stroke-width":1.5}),e.createTextVNode(" "+e.toDisplayString(e.unref(a).mediaLibrary.frequentlyUsed),1)],4)):e.createCommentVNode("",!0)]))}}),Lt={class:"tpl:flex tpl:aspect-square tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2"},he=e.defineComponent({__name:"MediaFileIcon",props:{mimeType:{}},setup(t){const o=t,l={"application/pdf":{label:"PDF",color:"#dc2626",bgColor:"#fef2f2",icon:"document"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{label:"DOC",color:"#2563eb",bgColor:"#eff6ff",icon:"document"},"application/msword":{label:"DOC",color:"#2563eb",bgColor:"#eff6ff",icon:"document"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{label:"XLS",color:"#16a34a",bgColor:"#f0fdf4",icon:"document"},"application/vnd.ms-excel":{label:"XLS",color:"#16a34a",bgColor:"#f0fdf4",icon:"document"},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{label:"PPT",color:"#ea580c",bgColor:"#fff7ed",icon:"document"},"application/vnd.ms-powerpoint":{label:"PPT",color:"#ea580c",bgColor:"#fff7ed",icon:"document"},"text/csv":{label:"CSV",color:"#16a34a",bgColor:"#f0fdf4",icon:"document"},"text/plain":{label:"TXT",color:"#6b7280",bgColor:"#f9fafb",icon:"document"},"video/mp4":{label:"MP4",color:"#9333ea",bgColor:"#faf5ff",icon:"video"},"video/quicktime":{label:"MOV",color:"#9333ea",bgColor:"#faf5ff",icon:"video"},"video/webm":{label:"WEBM",color:"#9333ea",bgColor:"#faf5ff",icon:"video"},"audio/mpeg":{label:"MP3",color:"#0d9488",bgColor:"#f0fdfa",icon:"audio"},"audio/wav":{label:"WAV",color:"#0d9488",bgColor:"#f0fdfa",icon:"audio"},"audio/ogg":{label:"OGG",color:"#0d9488",bgColor:"#f0fdfa",icon:"audio"}},a={label:"FILE",color:"#6b7280",bgColor:"#f9fafb",icon:"document"},r=e.computed(()=>l[o.mimeType]??a);return(i,d)=>(e.openBlock(),e.createElementBlock("div",Lt,[r.value.icon==="document"?(e.openBlock(),e.createElementBlock("svg",{key:0,width:"60",height:"60",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",style:e.normalizeStyle({color:r.value.color})},[...d[0]||(d[0]=[e.createElementVNode("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"},null,-1),e.createElementVNode("polyline",{points:"14 2 14 8 20 8"},null,-1),e.createElementVNode("line",{x1:"8",y1:"13",x2:"16",y2:"13"},null,-1),e.createElementVNode("line",{x1:"8",y1:"17",x2:"12",y2:"17"},null,-1)])],4)):r.value.icon==="video"?(e.openBlock(),e.createElementBlock("svg",{key:1,width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",style:e.normalizeStyle({color:r.value.color})},[...d[1]||(d[1]=[e.createElementVNode("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2"},null,-1),e.createElementVNode("polygon",{points:"10,8 16,12 10,16",fill:"currentColor",stroke:"none"},null,-1)])],4)):(e.openBlock(),e.createElementBlock("svg",{key:2,width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",style:e.normalizeStyle({color:r.value.color})},[...d[2]||(d[2]=[e.createElementVNode("path",{d:"M9 18V5l12-2v13"},null,-1),e.createElementVNode("circle",{cx:"6",cy:"18",r:"3"},null,-1),e.createElementVNode("circle",{cx:"18",cy:"16",r:"3"},null,-1)])],4)),e.createElementVNode("span",{class:"tpl:text-xs tpl:font-bold tpl:tracking-wider",style:e.normalizeStyle({color:r.value.color})},e.toDisplayString(r.value.label),5)]))}}),It={class:"tpl:p-4"},zt={key:1,class:"tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:py-16"},Ut={class:"tpl:text-xs",style:{color:"var(--tpl-text-muted)"}},Tt={key:2,class:"tpl:grid tpl:grid-cols-4 tpl:gap-3"},Pt=["onClick"],jt={class:"tpl:aspect-square"},Rt=["src","alt"],At={class:"tpl:px-2 tpl:py-1.5"},Ot={class:"tpl:truncate tpl:text-[10px] tpl:font-medium",style:{color:"var(--tpl-text)"}},qt={class:"tpl:flex tpl:justify-between tpl:text-[9px]",style:{color:"var(--tpl-text-muted)"}},Wt={key:0},Kt={class:"tpl:absolute tpl:top-1.5 tpl:left-1.5 tpl:flex tpl:gap-1 tpl:opacity-0 tpl:transition-opacity tpl:duration-150 tpl:group-hover:opacity-100"},Gt=["title","onClick"],Ht=["title","onClick"],Zt={key:0,class:"tpl:absolute tpl:top-1.5 tpl:right-1.5 tpl:flex tpl:size-5 tpl:items-center tpl:justify-center tpl:rounded-full tpl:text-white",style:{"background-color":"var(--tpl-primary)"}},Jt={key:3,class:"tpl:flex tpl:flex-col tpl:gap-1"},Xt=["onClick"],Qt={class:"tpl:size-10 tpl:shrink-0 tpl:overflow-hidden tpl:rounded",style:{"background-color":"var(--tpl-bg-hover)"}},Yt=["src","alt"],el={key:1,class:"tpl-list-icon tpl:size-full"},tl={class:"tpl:min-w-0 tpl:flex-1"},ll={class:"tpl:truncate tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text)"}},rl={class:"tpl:text-[10px]",style:{color:"var(--tpl-text-muted)"}},ol={class:"tpl:flex tpl:gap-1 tpl:opacity-0 tpl:transition-opacity tpl:duration-150 tpl:group-hover:opacity-100"},al=["title","onClick"],nl=["title","onClick"],il={key:0,class:"tpl:flex tpl:size-5 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-full tpl:text-white",style:{"background-color":"var(--tpl-primary)"}},sl={key:4,class:"tpl:flex tpl:justify-center tpl:py-4"},_e=ge(e.defineComponent({__name:"MediaGrid",props:{items:{},selectedIds:{},isLoading:{type:Boolean},hasMore:{type:Boolean},accept:{},layout:{}},emits:["select","toggle","loadMore","edit","replace"],setup(t,{emit:o}){const l=t,a=o,{isAcceptedMimeType:r,isImageMimeType:i}=ne();function d(k){return!l.accept||l.accept.length===0?!0:r(k.mime_type,l.accept)}function m(k){a("select",k)}const{t:p}=K(),g=e.ref(null);te.useIntersectionObserver(g,([{isIntersecting:k}])=>{k&&l.hasMore&&!l.isLoading&&a("loadMore")},{threshold:.1});function u(k){return k<1024?`${k} B`:k<1024*1024?`${(k/1024).toFixed(1)} KB`:`${(k/(1024*1024)).toFixed(1)} MB`}function x(k){return new Date(k).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}return(k,C)=>(e.openBlock(),e.createElementBlock("div",It,[t.isLoading&&t.items.length===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(t.layout==="list"?"tpl:flex tpl:flex-col tpl:gap-1":"tpl:grid tpl:grid-cols-4 tpl:gap-3")},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(8,n=>e.createElementVNode("div",{key:n,class:e.normalizeClass(["tpl-pulse tpl:rounded-lg",t.layout==="list"?"tpl:h-12":"tpl:aspect-square"]),style:{"background-color":"var(--tpl-bg-hover)"}},null,2)),64))],2)):t.items.length===0?(e.openBlock(),e.createElementBlock("div",zt,[e.createVNode(e.unref(V.File),{class:"tpl:mb-3",size:40,"stroke-width":1,style:{color:"var(--tpl-text-dim)"}}),e.createElementVNode("p",Ut,e.toDisplayString(e.unref(p).mediaLibrary.noFiles),1)])):t.layout!=="list"?(e.openBlock(),e.createElementBlock("div",Tt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,n=>(e.openBlock(),e.createElementBlock("div",{key:n.id,class:e.normalizeClass(["tpl-media-item tpl:group tpl:relative tpl:overflow-hidden tpl:rounded-lg tpl:border-2 tpl:transition-all tpl:duration-150",["tpl:cursor-pointer",!d(n)&&!t.selectedIds.has(n.id)?"tpl:opacity-60":"",t.selectedIds.has(n.id)?"tpl-media-item--selected":""]]),style:e.normalizeStyle({borderColor:t.selectedIds.has(n.id)?"var(--tpl-primary)":"transparent",backgroundColor:!d(n)&&!t.selectedIds.has(n.id)?"var(--tpl-bg)":"var(--tpl-bg-hover)"}),onClick:f=>m(n)},[e.createElementVNode("div",jt,[e.unref(i)(n.mime_type)?(e.openBlock(),e.createElementBlock("img",{key:0,src:n.small_url||n.url,alt:n.filename,class:"tpl:size-full tpl:object-cover",loading:"lazy"},null,8,Rt)):(e.openBlock(),e.createBlock(he,{key:1,"mime-type":n.mime_type},null,8,["mime-type"]))]),e.createElementVNode("div",At,[e.createElementVNode("p",Ot,e.toDisplayString(n.filename),1),e.createElementVNode("p",qt,[e.createElementVNode("span",null,e.toDisplayString(u(n.size)),1),e.unref(i)(n.mime_type)&&n.width&&n.height?(e.openBlock(),e.createElementBlock("span",Wt,e.toDisplayString(n.width)+"×"+e.toDisplayString(n.height),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Kt,[e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:items-center tpl:justify-center tpl:rounded-full tpl:text-white",style:{"background-color":"rgba(0, 0, 0, 0.6)"},title:e.unref(p).mediaLibrary.editFile,onClick:e.withModifiers(f=>a("edit",n),["stop"])},[e.createVNode(e.unref(V.Pencil),{size:11,"stroke-width":2})],8,Gt),e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:items-center tpl:justify-center tpl:rounded-full tpl:text-white",style:{"background-color":"rgba(0, 0, 0, 0.6)"},title:e.unref(p).mediaLibrary.replaceFile,onClick:e.withModifiers(f=>a("replace",n),["stop"])},[e.createVNode(e.unref(V.RefreshCw),{size:11,"stroke-width":2})],8,Ht)]),t.selectedIds.has(n.id)?(e.openBlock(),e.createElementBlock("div",Zt,[e.createVNode(e.unref(V.Check),{size:12,"stroke-width":3})])):e.createCommentVNode("",!0)],14,Pt))),128))])):(e.openBlock(),e.createElementBlock("div",Jt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,n=>(e.openBlock(),e.createElementBlock("div",{key:n.id,class:e.normalizeClass(["tpl-media-list-item tpl:group tpl:flex tpl:cursor-pointer tpl:items-center tpl:gap-3 tpl:rounded-lg tpl:px-3 tpl:py-2 tpl:transition-all tpl:duration-150",[!d(n)&&!t.selectedIds.has(n.id)?"tpl:opacity-60":""]]),style:e.normalizeStyle({backgroundColor:t.selectedIds.has(n.id)?"var(--tpl-bg-hover)":"transparent"}),onClick:f=>m(n)},[e.createElementVNode("div",Qt,[e.unref(i)(n.mime_type)?(e.openBlock(),e.createElementBlock("img",{key:0,src:n.small_url||n.url,alt:n.filename,class:"tpl:size-full tpl:object-cover",loading:"lazy"},null,8,Yt)):(e.openBlock(),e.createElementBlock("div",el,[e.createVNode(he,{"mime-type":n.mime_type},null,8,["mime-type"])]))]),e.createElementVNode("div",tl,[e.createElementVNode("p",ll,e.toDisplayString(n.filename),1),e.createElementVNode("p",rl,[e.createTextVNode(e.toDisplayString(u(n.size))+" · "+e.toDisplayString(x(n.created_at))+" ",1),e.unref(i)(n.mime_type)&&n.width&&n.height?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" · "+e.toDisplayString(n.width)+"×"+e.toDisplayString(n.height),1)],64)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ol,[e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:shrink-0 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded",style:{color:"var(--tpl-text-muted)"},title:e.unref(p).mediaLibrary.editFile,onClick:e.withModifiers(f=>a("edit",n),["stop"])},[e.createVNode(e.unref(V.Pencil),{size:12,"stroke-width":2})],8,al),e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:shrink-0 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded",style:{color:"var(--tpl-text-muted)"},title:e.unref(p).mediaLibrary.replaceFile,onClick:e.withModifiers(f=>a("replace",n),["stop"])},[e.createVNode(e.unref(V.RefreshCw),{size:12,"stroke-width":2})],8,nl)]),t.selectedIds.has(n.id)?(e.openBlock(),e.createElementBlock("div",il,[e.createVNode(e.unref(V.Check),{size:12,"stroke-width":3})])):e.createCommentVNode("",!0)],14,Xt))),128))])),e.createElementVNode("div",{ref_key:"sentinelRef",ref:g,class:"tpl:h-4"},null,512),t.isLoading&&t.items.length>0?(e.openBlock(),e.createElementBlock("div",sl,[e.createVNode(e.unref(V.Loader2),{class:"tpl-spinner",size:20,"stroke-width":2,style:{color:"var(--tpl-primary)"}})])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-1c1258ec"]]),cl={class:"tpl:mx-4 tpl:w-full tpl:max-w-sm tpl:rounded-lg tpl:p-5 tpl:shadow-xl",style:{"background-color":"var(--tpl-bg-elevated)"}},dl={class:"tpl:mb-4 tpl:text-sm tpl:font-semibold",style:{color:"var(--tpl-text)"}},pl={class:"tpl:mb-3"},ml=["placeholder","disabled"],fl={key:0,class:"tpl:mb-3 tpl:text-xs",style:{color:"var(--tpl-danger)"}},ul={class:"tpl:flex tpl:justify-end tpl:gap-2"},yl=["disabled"],gl=["disabled"],hl={key:0,class:"tpl:flex tpl:items-center tpl:gap-1.5"},bl={key:1},Ne=e.defineComponent({__name:"MediaImportUrlModal",props:{visible:{type:Boolean},isImporting:{type:Boolean},error:{}},emits:["import","close"],setup(t,{emit:o}){const l=t,a=o,{t:r}=K(),i=e.ref("");e.watch(()=>l.visible,g=>{g&&(i.value="")});function d(){const g=i.value.trim();!g||l.isImporting||a("import",g)}function m(){l.isImporting||a("close")}function p(g){g.key==="Enter"&&(g.preventDefault(),d()),g.key==="Escape"&&m()}return(g,u)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{"enter-active-class":"tpl:transition tpl:ease-out tpl:duration-150","enter-from-class":"tpl:opacity-0","enter-to-class":"tpl:opacity-100","leave-active-class":"tpl:transition tpl:ease-in tpl:duration-100","leave-from-class":"tpl:opacity-100","leave-to-class":"tpl:opacity-0"},{default:e.withCtx(()=>[t.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center",style:{"background-color":"var(--tpl-overlay)"},onClick:e.withModifiers(m,["self"]),onKeydown:p},[e.createElementVNode("div",cl,[e.createElementVNode("h3",dl,e.toDisplayString(e.unref(r).mediaLibrary.importFromUrl),1),e.createElementVNode("div",pl,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=x=>i.value=x),type:"url",class:"tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},placeholder:e.unref(r).mediaLibrary.importUrlPlaceholder,disabled:t.isImporting,autofocus:""},null,8,ml),[[e.vModelText,i.value]])]),t.error?(e.openBlock(),e.createElementBlock("p",fl,e.toDisplayString(t.error),1)):e.createCommentVNode("",!0),e.createElementVNode("div",ul,[e.createElementVNode("button",{class:e.normalizeClass(["tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",{"tpl:cursor-not-allowed tpl:opacity-50":t.isImporting}]),style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text)","background-color":"var(--tpl-bg)"},disabled:t.isImporting,onClick:m},e.toDisplayString(e.unref(r).mediaLibrary.cancel),11,yl),e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:text-white tpl:transition-all tpl:duration-150 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50",style:{background:`linear-gradient(
|
|
6
|
+
135deg,
|
|
7
|
+
var(--tpl-primary),
|
|
8
|
+
var(--tpl-primary-hover)
|
|
9
|
+
)`},disabled:!i.value.trim()||t.isImporting,onClick:d},[t.isImporting?(e.openBlock(),e.createElementBlock("span",hl,[e.createVNode(e.unref(V.Loader2),{class:"tpl:animate-spin",size:12,"stroke-width":2}),e.createTextVNode(" "+e.toDisplayString(e.unref(r).mediaLibrary.importing),1)])):(e.openBlock(),e.createElementBlock("span",bl,e.toDisplayString(e.unref(r).mediaLibrary.import),1))],8,gl)])])],32)):e.createCommentVNode("",!0)]),_:1})]))}}),kl={class:"tpl:max-h-56 tpl:overflow-y-auto tpl:py-1"},xl=["disabled","onClick"],wl={class:"tpl:truncate"},El={key:0,class:"tpl:shrink-0",style:{color:"var(--tpl-text-dim)"}},Ce=e.defineComponent({__name:"MediaMovePicker",props:{folders:{},currentFolderId:{}},emits:["select","close"],setup(t,{emit:o}){const l=o,{t:a}=K(),r=e.ref(null);function i(d,m=0){var g;const p=[];for(const u of d)p.push({id:u.id,name:u.name,depth:m}),(g=u.children)!=null&&g.length&&p.push(...i(u.children,m+1));return p}return te.onClickOutside(r,()=>{l("close")}),(d,m)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"pickerRef",ref:r,class:"tpl:absolute tpl:bottom-full tpl:left-0 tpl:z-10 tpl:mb-2 tpl:w-56 tpl:overflow-hidden tpl:rounded-lg tpl:border tpl:shadow-lg",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg-elevated)"}},[e.createElementVNode("div",kl,[t.currentFolderId!==null?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:flex tpl:w-full tpl:items-center tpl:gap-1.5 tpl:px-3 tpl:py-1.5 tpl:text-left tpl:text-xs tpl:transition-colors tpl:duration-100",style:{color:"var(--tpl-text)"},onClick:m[0]||(m[0]=p=>l("select",null))},[e.createVNode(e.unref(V.File),{class:"tpl:shrink-0",size:14,"stroke-width":1.5}),e.createTextVNode(" "+e.toDisplayString(e.unref(a).mediaLibrary.moveToRoot),1)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i(t.folders),p=>(e.openBlock(),e.createElementBlock("button",{key:p.id,class:"tpl:flex tpl:w-full tpl:items-center tpl:gap-1.5 tpl:py-1.5 tpl:pr-3 tpl:text-left tpl:text-xs tpl:transition-colors tpl:duration-100",style:e.normalizeStyle({paddingLeft:`${p.depth*16+12}px`,color:p.id===t.currentFolderId?"var(--tpl-text-dim)":"var(--tpl-text)",opacity:p.id===t.currentFolderId?.5:1}),disabled:p.id===t.currentFolderId,onClick:g=>l("select",p.id)},[e.createVNode(e.unref(V.Folder),{class:"tpl:shrink-0",size:14,"stroke-width":1.5}),e.createElementVNode("span",wl,e.toDisplayString(p.name),1),p.id===t.currentFolderId?(e.openBlock(),e.createElementBlock("span",El,e.toDisplayString(e.unref(a).mediaLibrary.currentFolder),1)):e.createCommentVNode("",!0)],12,xl))),128))])],512))}}),_l={class:"tpl:flex tpl:items-center tpl:gap-3"},Nl=["src","alt"],Cl={key:1,class:"tpl:flex tpl:size-10 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:overflow-hidden tpl:rounded",style:{border:"1px solid var(--tpl-border)"}},Bl={class:"tpl:min-w-0 tpl:flex-1"},Vl={class:"tpl:truncate tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text)"}},Fl={class:"tpl:mt-0.5 tpl:text-[10px]",style:{color:"var(--tpl-text-muted)"}},Sl={key:2,class:"tpl:shrink-0"},vl={class:"tpl:block tpl:text-[10px]",style:{color:"var(--tpl-text-muted)"}},$l=["value"],Ml=["value"],Be=ge(e.defineComponent({__name:"MediaPreviewPanel",props:{item:{},folders:{},selectedConversion:{}},emits:["update:selectedConversion"],setup(t,{emit:o}){const l=t,a=o,{t:r}=K(),{isImageMimeType:i}=ne(),d=e.computed(()=>{if(!k.value||!l.item.conversions_generated)return[];const f=[];return l.item.small_url&&f.push({value:"small",label:r.mediaLibrary.conversionSmall,url:l.item.small_url}),l.item.medium_url&&f.push({value:"medium",label:r.mediaLibrary.conversionMedium,url:l.item.medium_url}),l.item.large_url&&f.push({value:"large",label:r.mediaLibrary.conversionLarge,url:l.item.large_url}),f.push({value:"original",label:r.mediaLibrary.conversionOriginal,url:l.item.url}),f}),m=e.computed(()=>k.value&&d.value.length>1),p=e.computed(()=>{if(!k.value)return null;switch(l.selectedConversion){case"small":return l.item.small_url||l.item.url;case"medium":return l.item.medium_url||l.item.url;case"large":return l.item.large_url||l.item.url;default:return l.item.url}});function g(f){const B=f.target;a("update:selectedConversion",B.value)}function u(f,B,s=[]){for(const v of f){const M=[...s,v.name];if(v.id===B)return M;if(v.children){const U=u(v.children,B,M);if(U)return U}}return null}const x=e.computed(()=>{if(!l.item.folder_id||!l.folders)return null;const f=u(l.folders,l.item.folder_id);return f?f.join("/"):null}),k=e.computed(()=>i(l.item.mime_type));function C(f){return f<1024?`${f} B`:f<1024*1024?`${(f/1024).toFixed(1)} KB`:`${(f/(1024*1024)).toFixed(1)} MB`}function n(f){return new Date(f).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}return(f,B)=>(e.openBlock(),e.createElementBlock("div",_l,[k.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:p.value??void 0,alt:t.item.alt_text||t.item.filename,class:"tpl:size-10 tpl:shrink-0 tpl:rounded tpl:object-cover",style:{border:"1px solid var(--tpl-border)"}},null,8,Nl)):(e.openBlock(),e.createElementBlock("div",Cl,[e.createVNode(he,{"mime-type":t.item.mime_type,class:"tpl-preview-icon"},null,8,["mime-type"])])),e.createElementVNode("div",Bl,[e.createElementVNode("p",Vl,e.toDisplayString(t.item.filename),1),e.createElementVNode("p",Fl,[e.createTextVNode(e.toDisplayString(C(t.item.size))+" · "+e.toDisplayString(n(t.item.created_at))+" ",1),k.value&&t.item.width&&t.item.height?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" · "+e.toDisplayString(t.item.width)+"×"+e.toDisplayString(t.item.height)+"px ",1)],64)):e.createCommentVNode("",!0),x.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[B[0]||(B[0]=e.createTextVNode(" · ",-1)),e.createVNode(e.unref(V.Folder),{class:"tpl:mb-px tpl:inline",size:9,"stroke-width":2}),e.createTextVNode(" "+e.toDisplayString(x.value),1)],64)):e.createCommentVNode("",!0)]),k.value?(e.openBlock(),e.createElementBlock("p",{key:0,class:e.normalizeClass(["tpl:mt-0.5 tpl:truncate tpl:text-[10px] tpl:italic",{"tpl:invisible":!t.item.alt_text}]),style:{color:"var(--tpl-text-dim)"}},e.toDisplayString(t.item.alt_text||" "),3)):e.createCommentVNode("",!0)]),m.value?(e.openBlock(),e.createElementBlock("div",Sl,[e.createElementVNode("label",vl,e.toDisplayString(e.unref(r).mediaLibrary.conversionLabel),1),e.createElementVNode("select",{class:"tpl:mt-0.5 tpl:rounded-md tpl:border tpl:py-1 tpl:pr-6 tpl:pl-2 tpl:text-xs tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},value:t.selectedConversion,onChange:g},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,s=>(e.openBlock(),e.createElementBlock("option",{key:s.value,value:s.value},e.toDisplayString(s.label),9,Ml))),128))],40,$l)])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-3c9c60c7"]]),Dl={class:"tpl:mx-4 tpl:w-full tpl:max-w-sm tpl:rounded-lg tpl:p-5 tpl:shadow-xl",style:{"background-color":"var(--tpl-bg-elevated)"}},Ll={class:"tpl:mb-2 tpl:text-sm tpl:font-semibold",style:{color:"var(--tpl-text)"}},Il={class:"tpl:mb-2 tpl:text-xs",style:{color:"var(--tpl-text-muted)"}},zl={key:0,class:"tpl:mb-3 tpl:text-xs",style:{color:"var(--tpl-warning)"}},Ul={class:"tpl:mb-3 tpl:rounded tpl:border tpl:p-2",style:{"border-color":"var(--tpl-border)"}},Tl={class:"tpl:truncate tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text)"}},Pl={class:"tpl:mb-4"},jl={class:"tpl:mb-1 tpl:block tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text-muted)"}},Rl=["accept"],Al={key:1,class:"tpl:mb-3 tpl:text-xs",style:{color:"var(--tpl-danger)"}},Ol={class:"tpl:flex tpl:justify-end tpl:gap-2"},ql=["disabled"],Wl=["disabled"],Ve=e.defineComponent({__name:"MediaReplaceModal",props:{visible:{type:Boolean},item:{},usageInfo:{},isReplacing:{type:Boolean},error:{}},emits:["replace","close"],setup(t,{emit:o}){const l=t,a=o,{t:r}=K(),i=e.ref(null),d=e.ref(null),m=e.computed(()=>{if(!l.item)return"";const C=l.item.filename.split(".");return C.length>1?C[C.length-1].toLowerCase():""}),p=e.computed(()=>m.value?`.${m.value}`:"*"),g=e.computed(()=>{var C;return(((C=l.usageInfo)==null?void 0:C.template_count)??0)>0});e.watch(()=>l.visible,C=>{C||(d.value=null,i.value&&(i.value.value=""))});function u(C){const n=C.target;n.files&&n.files.length>0&&(d.value=n.files[0])}function x(){d.value&&a("replace",d.value)}function k(C){C.key==="Escape"&&a("close")}return(C,n)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{"enter-active-class":"tpl:transition tpl:ease-out tpl:duration-150","enter-from-class":"tpl:opacity-0","enter-to-class":"tpl:opacity-100","leave-active-class":"tpl:transition tpl:ease-in tpl:duration-100","leave-from-class":"tpl:opacity-100","leave-to-class":"tpl:opacity-0"},{default:e.withCtx(()=>[t.visible&&t.item?(e.openBlock(),e.createElementBlock("div",{key:0,class:"tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center",style:{"background-color":"var(--tpl-overlay)"},onClick:n[1]||(n[1]=e.withModifiers(f=>a("close"),["self"])),onKeydown:k},[e.createElementVNode("div",Dl,[e.createElementVNode("h3",Ll,e.toDisplayString(e.unref(r).mediaLibrary.replaceWarningTitle),1),e.createElementVNode("p",Il,e.toDisplayString(e.unref(r).mediaLibrary.replaceWarningMessage.replace("{extension}",`.${m.value}`)),1),g.value?(e.openBlock(),e.createElementBlock("p",zl,e.toDisplayString(e.unref(r).mediaLibrary.replaceWarningUsageNote.replace("{count}",t.usageInfo.template_count.toString())),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Ul,[e.createElementVNode("p",Tl,e.toDisplayString(t.item.filename),1)]),e.createElementVNode("div",Pl,[e.createElementVNode("label",jl,e.toDisplayString(e.unref(r).mediaLibrary.replaceSelectFile),1),e.createElementVNode("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:p.value,class:"tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},onChange:u},null,40,Rl)]),t.error?(e.openBlock(),e.createElementBlock("p",Al,e.toDisplayString(t.error),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Ol,[e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text)","background-color":"var(--tpl-bg)"},disabled:t.isReplacing,onClick:n[0]||(n[0]=f=>a("close"))},e.toDisplayString(e.unref(r).mediaLibrary.cancel),9,ql),e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:text-white tpl:transition-all tpl:duration-150 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50",style:{background:`linear-gradient(
|
|
10
|
+
135deg,
|
|
11
|
+
var(--tpl-primary),
|
|
12
|
+
var(--tpl-primary-hover)
|
|
13
|
+
)`},disabled:!d.value||t.isReplacing,onClick:x},e.toDisplayString(t.isReplacing?e.unref(r).mediaLibrary.replacing:e.unref(r).mediaLibrary.replace),9,Wl)])])],32)):e.createCommentVNode("",!0)]),_:1})]))}}),Kl={key:0,class:"tpl:flex tpl:items-center tpl:gap-2"},Gl={class:"tpl:text-xs",style:{color:"var(--tpl-text-muted)"}},Hl={class:"tpl:text-xs",style:{color:"var(--tpl-text-muted)"}},Zl={class:"tpl:mt-1 tpl:text-[10px]",style:{color:"var(--tpl-text-dim)"}},Fe=e.defineComponent({__name:"MediaUploadZone",props:{isUploading:{type:Boolean},uploadProgress:{}},emits:["upload"],setup(t,{emit:o}){const l=o,{t:a,format:r}=K(),{allAcceptedMimeTypes:i,allAcceptedInputString:d,maxFileSize:m}=ne(),p=e.ref();function g(n){const f=[];for(const B of Array.from(n))i.value.includes(B.type)&&B.size<=m.value&&f.push(B);return f}function u(n){const f=g(n);f.length&&l("upload",f)}const{isOverDropZone:x}=te.useDropZone(p,{onDrop:n=>{n!=null&&n.length&&u(n)}}),{open:k,onChange:C}=te.useFileDialog({accept:d.value,multiple:!0});return C(n=>{n!=null&&n.length&&u(n)}),(n,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dropZoneRef",ref:p,class:e.normalizeClass(["tpl-upload-zone tpl:flex tpl:cursor-pointer tpl:flex-col tpl:items-center tpl:justify-center tpl:rounded-lg tpl:border-2 tpl:border-dashed tpl:p-5 tpl:text-center tpl:transition-all tpl:duration-150",e.unref(x)?"tpl-upload-zone-active":""]),style:{"border-color":"var(--tpl-border-light)","background-color":"var(--tpl-bg)"},onClick:f[0]||(f[0]=B=>e.unref(k)())},[t.isUploading?(e.openBlock(),e.createElementBlock("div",Kl,[e.createVNode(e.unref(V.Loader2),{class:"tpl-spinner",size:20,"stroke-width":2,style:{color:"var(--tpl-primary)"}}),e.createElementVNode("span",Gl,e.toDisplayString(t.uploadProgress&&t.uploadProgress.total>1?e.unref(r)(e.unref(a).mediaLibrary.uploadingProgress,{current:t.uploadProgress.current,total:t.uploadProgress.total}):e.unref(a).mediaLibrary.uploading),1)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(V.Upload),{class:"tpl:mb-2",size:24,"stroke-width":1.5,style:{color:"var(--tpl-text-dim)"}}),e.createElementVNode("p",Hl,e.toDisplayString(e.unref(a).mediaLibrary.dropOrClick),1),e.createElementVNode("p",Zl,e.toDisplayString(e.unref(a).mediaLibrary.acceptedFormats),1)],64))],2))}}),Jl=["width","height","viewBox"],Xl=["cx","cy","r","stroke-width"],Ql=["cx","cy","r","stroke-width","stroke","stroke-dasharray","stroke-dashoffset"],Yl={key:0,class:"tpl:absolute tpl:top-full tpl:left-1/2 tpl:z-50 tpl:mt-2 tpl:-translate-x-1/2 tpl:rounded-md tpl:px-2.5 tpl:py-1.5 tpl:text-xs tpl:whitespace-nowrap tpl:shadow-lg",style:{"background-color":"var(--tpl-text)",color:"var(--tpl-bg-elevated)"}},Se=e.defineComponent({__name:"StorageProgressRing",props:{usedBytes:{},limitBytes:{},size:{}},setup(t){const o=t,{t:l,format:a}=K(),r=e.ref(!1),i=e.computed(()=>o.size??24),d=e.computed(()=>Math.max(2,i.value/8)),m=e.computed(()=>(i.value-d.value)/2),p=e.computed(()=>2*Math.PI*m.value),g=e.computed(()=>o.limitBytes<=0?0:Math.min(100,o.usedBytes/o.limitBytes*100)),u=e.computed(()=>p.value-g.value/100*p.value),x=e.computed(()=>g.value>=95?"var(--tpl-danger)":g.value>=75?"var(--tpl-warning, #f59e0b)":"var(--tpl-primary)");function k(v){if(v===0)return"0 B";const M=1024,U=["B","KB","MB","GB"],c=Math.floor(Math.log(v)/Math.log(M)),W=v/Math.pow(M,c),P=c>=2?1:0;return`${W.toFixed(P)} ${U[c]}`}const C=e.computed(()=>k(o.usedBytes)),n=e.computed(()=>k(o.limitBytes)),f=e.computed(()=>Math.max(0,o.limitBytes-o.usedBytes)),B=e.computed(()=>k(f.value)),s=e.computed(()=>a(l.mediaLibrary.storageTooltip,{used:C.value,total:n.value,remaining:B.value}));return(v,M)=>(e.openBlock(),e.createElementBlock("div",{class:"tpl:relative tpl:inline-flex tpl:cursor-help tpl:items-center tpl:justify-center",onMouseenter:M[0]||(M[0]=U=>r.value=!0),onMouseleave:M[1]||(M[1]=U=>r.value=!1)},[(e.openBlock(),e.createElementBlock("svg",{width:i.value,height:i.value,class:"tpl:-rotate-90",viewBox:`0 0 ${i.value} ${i.value}`},[e.createElementVNode("circle",{cx:i.value/2,cy:i.value/2,r:m.value,fill:"none","stroke-width":d.value,style:{stroke:"var(--tpl-border)"}},null,8,Xl),e.createElementVNode("circle",{cx:i.value/2,cy:i.value/2,r:m.value,fill:"none","stroke-width":d.value,stroke:x.value,"stroke-linecap":"round","stroke-dasharray":p.value,"stroke-dashoffset":u.value,class:"tpl:transition-all tpl:duration-300 tpl:ease-out"},null,8,Ql)],8,Jl)),e.createVNode(e.Transition,{"enter-active-class":"tpl:transition tpl:ease-out tpl:duration-150","enter-from-class":"tpl:opacity-0 tpl:translate-y-1","enter-to-class":"tpl:opacity-100 tpl:translate-y-0","leave-active-class":"tpl:transition tpl:ease-in tpl:duration-100","leave-from-class":"tpl:opacity-100 tpl:translate-y-0","leave-to-class":"tpl:opacity-0 tpl:translate-y-1"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createElementBlock("div",Yl,[e.createTextVNode(e.toDisplayString(s.value)+" ",1),M[2]||(M[2]=e.createElementVNode("div",{class:"tpl:absolute tpl:-top-1 tpl:left-1/2 tpl:size-2 tpl:-translate-x-1/2 tpl:rotate-45",style:{"background-color":"var(--tpl-text)"}},null,-1))])):e.createCommentVNode("",!0)]),_:1})],32))}}),er={class:"tpl-media-modal tpl-scale-in tpl:flex tpl:flex-col tpl:overflow-hidden tpl:rounded-[var(--tpl-radius-lg)]",style:{width:"900px",height:"650px","max-width":"95vw","max-height":"90vh","background-color":"var(--tpl-bg-elevated)",border:"1px solid var(--tpl-border)","box-shadow":"var(--tpl-shadow-xl)"}},tr={class:"tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-between tpl:border-b tpl:px-5 tpl:py-3.5",style:{"border-color":"var(--tpl-border)"}},lr={class:"tpl:text-sm tpl:font-semibold",style:{color:"var(--tpl-text)"}},rr={class:"tpl:flex tpl:items-center tpl:gap-3"},or={class:"tpl:relative"},ar=["value","placeholder"],nr={class:"tpl:flex tpl:min-h-0 tpl:flex-1 tpl:overflow-hidden"},ir={key:0,class:"tpl:flex tpl:w-48 tpl:shrink-0 tpl:flex-col tpl:border-r",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)"}},sr={class:"tpl:flex tpl:min-w-0 tpl:flex-1 tpl:flex-col"},cr={class:"tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-between tpl:border-b tpl:px-4 tpl:py-2.5",style:{"border-color":"var(--tpl-border)"}},dr={class:"tpl:flex tpl:items-center tpl:gap-2"},pr=["title"],mr={key:1,class:"tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text)"}},fr={class:"tpl:flex tpl:rounded-md tpl:p-0.5",style:{border:"1px solid var(--tpl-border)","background-color":"var(--tpl-bg)"}},ur=["title"],yr=["title"],gr={class:"tpl:flex tpl:items-center tpl:gap-2"},hr=["value"],br={value:""},kr=["value"],xr=["value"],wr={value:"newest"},Er={value:"oldest"},_r={value:"name_asc"},Nr={value:"name_desc"},Cr={value:"size_asc"},Br={value:"size_desc"},Vr={class:"tpl:min-h-0 tpl:flex-1 tpl:overflow-y-auto"},Fr={key:0,class:"tpl:px-4 tpl:pt-3"},Sr={class:"tpl-scale-in tpl:mx-4 tpl:w-full tpl:max-w-sm tpl:rounded-[var(--tpl-radius-lg)] tpl:p-5",style:{"background-color":"var(--tpl-bg-elevated)","box-shadow":"var(--tpl-shadow-xl)"}},vr={class:"tpl:mb-2 tpl:text-sm tpl:font-semibold",style:{color:"var(--tpl-text)"}},$r={key:0,class:"tpl:mb-4 tpl:text-xs",style:{color:"var(--tpl-text-muted)"}},Mr={key:1,class:"tpl:mb-4 tpl:max-h-32 tpl:overflow-y-auto tpl:rounded tpl:border tpl:p-2",style:{"border-color":"var(--tpl-border)"}},Dr={class:"tpl:font-medium"},Lr={style:{color:"var(--tpl-text-muted)"}},Ir={class:"tpl:flex tpl:justify-end tpl:gap-2"},zr={class:"tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-between tpl:border-t tpl:px-5 tpl:py-3",style:{"border-color":"var(--tpl-border)"}},Ur={class:"tpl:flex tpl:min-w-0 tpl:flex-1 tpl:items-center tpl:gap-3"},Tr={class:"tpl:flex tpl:items-center tpl:gap-5"},Pr={key:0,class:"tpl:flex tpl:items-center tpl:gap-2"},jr={key:1,class:"tpl:relative"},Rr={class:"tpl:flex tpl:items-center tpl:gap-2"},Ar=["disabled"],Or=e.defineComponent({__name:"MediaLibraryModal",props:{visible:{type:Boolean},accept:{}},emits:["close","select"],setup(t,{emit:o}){const l=t,a=o,{t:r}=K(),i=e.inject("authManager"),d=e.inject("projectId"),m=e.computed(()=>d.value),p=e.inject("planConfig"),g=e.computed(()=>p.hasFeature("media_folders")),u=e.computed(()=>p.hasFeature("import_from_url")),x=e.computed(()=>{var b;return((b=p.config.value)==null?void 0:b.storage.used_bytes)??0}),k=e.computed(()=>{var b;return((b=p.config.value)==null?void 0:b.storage.limit_bytes)??0}),{isAcceptedMimeType:C,availableCategories:n}=ne(),f={images:()=>r.mediaLibrary.filterImages,documents:()=>r.mediaLibrary.filterDocuments,videos:()=>r.mediaLibrary.filterVideos,audio:()=>r.mediaLibrary.filterAudio};function B(b){var _;return((_=f[b])==null?void 0:_.call(f))??b}const s=e.ref("grid"),v=e.ref(!1),M=e.ref(""),U=e.ref("original"),c=ye({projectId:m.value,authManager:i}),W=e.computed(()=>{const b=c.previewItem.value;if(!b)return null;switch(U.value){case"small":return b.small_url||b.url;case"medium":return b.medium_url||b.url;case"large":return b.large_url||b.url;default:return b.url}}),P=e.computed(()=>c.frequentlyUsedItems.value.length>0),D=e.computed(()=>c.viewMode.value==="frequently-used"?c.frequentlyUsedItems.value:c.items.value),R=e.computed(()=>Object.values(c.deleteUsageInfo.value).some(b=>b.template_count>0));e.watch(()=>l.visible,b=>{b?(c.loadItems(),c.loadFrequentlyUsed()):(c.clearSelection(),c.cancelDelete(),c.cancelReplace(),M.value="",c.categoryFilter.value=null,c.sortOption.value="newest",c.viewMode.value="files",X.value=null,re.value=!1,U.value="original")}),e.watch(v,b=>{b&&g.value&&c.loadFolders()}),e.watch(()=>{var b;return(b=c.previewItem.value)==null?void 0:b.id},()=>{U.value="original"});const O=te.useDebounceFn(b=>{c.search(b)},300);function A(b){M.value=b,O(b)}function Z(b){b.key==="Escape"&&a("close")}async function z(b){await c.uploadFiles(b)}function I(b){c.selectItem(b)}function H(){var b;return c.previewItem.value?(b=l.accept)!=null&&b.length?C(c.previewItem.value.mime_type,l.accept):!0:!1}function J(){if(H()){const b=c.previewItem.value,_={...b,url:W.value||b.url};a("select",_),a("close")}}async function Q(b,_){await c.createFolder(b,_)}async function G(b,_){await c.renameFolder(b,_)}async function j(b){await c.deleteFolder(b)}const X=e.ref(null);function le(b){X.value=b}async function pe(b,_,de,$){$&&await c.replaceMediaDirectly(b,$.file),await c.updateFile(b,_,de),X.value=null}const{copy:se,copied:oe}=te.useClipboard({copiedDuring:2e3,legacy:!0}),re=e.ref(!1);async function w(b){await c.importFromUrl(b)&&(re.value=!1)}const E=e.ref(!1);async function F(b){E.value=!1,await c.moveSelected(b)}async function Y(){await c.checkUsageBeforeDelete()}function ce(b){c.checkUsageBeforeReplace(b)}async function ae(b){await c.replaceFile(b)}return te.useEventListener(document,"keydown",Z),(b,_)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{"enter-active-class":"tpl:transition tpl:duration-200","enter-from-class":"tpl:opacity-0","enter-to-class":"tpl:opacity-100","leave-active-class":"tpl:transition tpl:duration-150","leave-from-class":"tpl:opacity-100","leave-to-class":"tpl:opacity-0"},{default:e.withCtx(()=>{var de;return[t.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"tpl tpl-media-overlay tpl:fixed tpl:inset-0 tpl:z-[9999]",onClick:_[17]||(_[17]=e.withModifiers($=>a("close"),["self"]))},[e.createElementVNode("div",er,[e.createElementVNode("div",tr,[e.createElementVNode("h2",lr,e.toDisplayString(e.unref(r).mediaLibrary.title),1),e.createElementVNode("div",rr,[e.createVNode(Se,{"used-bytes":x.value,"limit-bytes":k.value,size:22},null,8,["used-bytes","limit-bytes"]),e.createElementVNode("div",or,[e.createElementVNode("input",{value:M.value,type:"text",class:"tpl:w-52 tpl:rounded-md tpl:border tpl:py-1.5 tpl:pr-3 tpl:pl-8 tpl:text-xs tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:outline-none tpl:focus:shadow-[var(--tpl-ring)]",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},placeholder:e.unref(r).mediaLibrary.searchPlaceholder,onInput:_[0]||(_[0]=$=>A($.target.value))},null,40,ar),e.createVNode(e.unref(V.Search),{class:"tpl:absolute tpl:top-1/2 tpl:left-2.5 tpl:-translate-y-1/2",size:13,"stroke-width":2,style:{color:"var(--tpl-text-dim)"}})]),e.createElementVNode("button",{class:"tpl:flex tpl:size-7 tpl:items-center tpl:justify-center tpl:rounded-md tpl:transition-all tpl:duration-150",style:{color:"var(--tpl-text-muted)"},onClick:_[1]||(_[1]=$=>a("close"))},[e.createVNode(e.unref(V.X),{size:18,"stroke-width":2})])])]),e.createElementVNode("div",nr,[e.createVNode(e.Transition,{"enter-active-class":"tpl:transition-all tpl:duration-200 tpl:ease-out","enter-from-class":"tpl:-ml-48 tpl:opacity-0","enter-to-class":"tpl:ml-0 tpl:opacity-100","leave-active-class":"tpl:transition-all tpl:duration-150 tpl:ease-in","leave-from-class":"tpl:ml-0 tpl:opacity-100","leave-to-class":"tpl:-ml-48 tpl:opacity-0"},{default:e.withCtx(()=>[g.value&&v.value?(e.openBlock(),e.createElementBlock("div",ir,[e.createVNode(Ee,{folders:e.unref(c).folders.value,"current-folder-id":e.unref(c).currentFolderId.value,"view-mode":e.unref(c).viewMode.value,"has-frequently-used":P.value,onNavigate:e.unref(c).navigateToFolder,onCreateFolder:Q,onRenameFolder:G,onDeleteFolder:j,onShowFrequentlyUsed:e.unref(c).showFrequentlyUsed},null,8,["folders","current-folder-id","view-mode","has-frequently-used","onNavigate","onShowFrequentlyUsed"])])):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",sr,[e.createElementVNode("div",cr,[e.createElementVNode("div",dr,[g.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-md tpl:transition-all tpl:duration-150",style:e.normalizeStyle({color:v.value?"var(--tpl-primary)":"var(--tpl-text-muted)",backgroundColor:v.value?"var(--tpl-bg)":"transparent",border:v.value?"1px solid var(--tpl-border)":"1px solid transparent"}),title:v.value?e.unref(r).mediaLibrary.hideFolders:e.unref(r).mediaLibrary.showFolders,onClick:_[2]||(_[2]=$=>v.value=!v.value)},[e.createVNode(e.unref(V.PanelLeft),{size:16,"stroke-width":2})],12,pr)):e.createCommentVNode("",!0),e.unref(c).viewMode.value==="frequently-used"?(e.openBlock(),e.createElementBlock("span",mr,e.toDisplayString(e.unref(r).mediaLibrary.frequentlyUsed),1)):(e.openBlock(),e.createBlock(xe,{key:2,folders:e.unref(c).folders.value,"current-folder-id":e.unref(c).currentFolderId.value,onNavigate:e.unref(c).navigateToFolder},null,8,["folders","current-folder-id","onNavigate"])),e.createElementVNode("div",fr,[e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded tpl:transition-all tpl:duration-150",style:e.normalizeStyle({color:s.value==="grid"?"var(--tpl-primary)":"var(--tpl-text-muted)",backgroundColor:s.value==="grid"?"var(--tpl-bg-elevated)":"transparent"}),title:e.unref(r).mediaLibrary.viewGrid,onClick:_[3]||(_[3]=$=>s.value="grid")},[e.createVNode(e.unref(V.Grid2x2),{size:14,"stroke-width":2})],12,ur),e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded tpl:transition-all tpl:duration-150",style:e.normalizeStyle({color:s.value==="list"?"var(--tpl-primary)":"var(--tpl-text-muted)",backgroundColor:s.value==="list"?"var(--tpl-bg-elevated)":"transparent"}),title:e.unref(r).mediaLibrary.viewList,onClick:_[4]||(_[4]=$=>s.value="list")},[e.createVNode(e.unref(V.List),{size:14,"stroke-width":2})],12,yr)])]),e.createElementVNode("div",gr,[e.unref(n).length>1?(e.openBlock(),e.createElementBlock("select",{key:0,class:"tpl:rounded-md tpl:border tpl:py-1.5 tpl:pr-7 tpl:pl-2.5 tpl:text-xs tpl:transition-all tpl:duration-150 tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},value:e.unref(c).categoryFilter.value??"",onChange:_[5]||(_[5]=$=>e.unref(c).filterByCategory($.target.value||null))},[e.createElementVNode("option",br,e.toDisplayString(e.unref(r).mediaLibrary.filterAll),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n),$=>(e.openBlock(),e.createElementBlock("option",{key:$,value:$},e.toDisplayString(B($)),9,kr))),128))],40,hr)):e.createCommentVNode("",!0),e.createElementVNode("select",{class:"tpl:rounded-md tpl:border tpl:py-1.5 tpl:pr-7 tpl:pl-2.5 tpl:text-xs tpl:transition-all tpl:duration-150 tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},value:e.unref(c).sortOption.value,onChange:_[6]||(_[6]=$=>e.unref(c).sortBy($.target.value))},[e.createElementVNode("option",wr,e.toDisplayString(e.unref(r).mediaLibrary.sortNewest),1),e.createElementVNode("option",Er,e.toDisplayString(e.unref(r).mediaLibrary.sortOldest),1),e.createElementVNode("option",_r,e.toDisplayString(e.unref(r).mediaLibrary.sortNameAsc),1),e.createElementVNode("option",Nr,e.toDisplayString(e.unref(r).mediaLibrary.sortNameDesc),1),e.createElementVNode("option",Cr,e.toDisplayString(e.unref(r).mediaLibrary.sortSizeAsc),1),e.createElementVNode("option",Br,e.toDisplayString(e.unref(r).mediaLibrary.sortSizeDesc),1)],40,xr)])]),e.createElementVNode("div",Vr,[e.unref(c).viewMode.value==="files"?(e.openBlock(),e.createElementBlock("div",Fr,[e.createVNode(Fe,{"is-uploading":e.unref(c).isUploading.value,"upload-progress":e.unref(c).uploadProgress.value,onUpload:z},null,8,["is-uploading","upload-progress"]),u.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:mt-2 tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border tpl:border-dashed tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text-muted)","background-color":"var(--tpl-bg)"},onClick:_[7]||(_[7]=$=>re.value=!0)},[e.createVNode(e.unref(V.Link),{size:14,"stroke-width":2}),e.createTextVNode(" "+e.toDisplayString(e.unref(r).mediaLibrary.importFromUrl),1)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createVNode(_e,{items:D.value,"selected-ids":e.unref(c).selectedItems.value,"is-loading":e.unref(c).isLoading.value,"has-more":e.unref(c).viewMode.value==="files"&&e.unref(c).hasMore.value,accept:t.accept,layout:s.value,onSelect:I,onToggle:e.unref(c).toggleSelection,onLoadMore:e.unref(c).loadMore,onEdit:le,onReplace:ce},null,8,["items","selected-ids","is-loading","has-more","accept","layout","onToggle","onLoadMore"])])])]),e.createVNode(Ne,{visible:re.value,"is-importing":e.unref(c).isImportingFromUrl.value,error:e.unref(c).importFromUrlError.value,onImport:w,onClose:_[8]||(_[8]=$=>re.value=!1)},null,8,["visible","is-importing","error"]),e.createVNode(we,{visible:!!X.value,item:X.value,onSave:pe,onClose:_[9]||(_[9]=$=>X.value=null)},null,8,["visible","item"]),e.createVNode(Ve,{visible:e.unref(c).showReplaceWarning.value,item:e.unref(c).pendingReplaceItem.value,"usage-info":e.unref(c).replaceUsageInfo.value,"is-replacing":e.unref(c).isReplacing.value,error:e.unref(c).replaceError.value,onReplace:ae,onClose:e.unref(c).cancelReplace},null,8,["visible","item","usage-info","is-replacing","error","onClose"]),e.createVNode(e.Transition,{"enter-active-class":"tpl:transition tpl:ease-out tpl:duration-150","enter-from-class":"tpl:opacity-0","enter-to-class":"tpl:opacity-100","leave-active-class":"tpl:transition tpl:ease-in tpl:duration-100","leave-from-class":"tpl:opacity-100","leave-to-class":"tpl:opacity-0"},{default:e.withCtx(()=>[e.unref(c).showDeleteWarning.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"tpl:absolute tpl:inset-0 tpl:z-10 tpl:flex tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-lg)]",style:{"background-color":"var(--tpl-overlay)","backdrop-filter":"blur(8px)","-webkit-backdrop-filter":"blur(8px)"},onClick:_[12]||(_[12]=e.withModifiers((...$)=>e.unref(c).cancelDelete&&e.unref(c).cancelDelete(...$),["self"]))},[e.createElementVNode("div",Sr,[e.createElementVNode("h3",vr,e.toDisplayString(e.unref(r).mediaLibrary.deleteWarningTitle),1),e.createElementVNode("p",{class:e.normalizeClass(["tpl:text-xs",R.value?"tpl:mb-2":"tpl:mb-4"]),style:{color:"var(--tpl-text-muted)"}},e.toDisplayString(e.unref(r).mediaLibrary.deleteWarningMessage),3),R.value?(e.openBlock(),e.createElementBlock("p",$r,e.toDisplayString(e.unref(r).mediaLibrary.deleteWarningUsageNote),1)):e.createCommentVNode("",!0),R.value?(e.openBlock(),e.createElementBlock("div",Mr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(c).deleteUsageInfo.value,($,me)=>{var ue;return e.openBlock(),e.createElementBlock("div",{key:me,class:"tpl:text-xs",style:{color:"var(--tpl-text)"}},[$.template_count>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("span",Dr,e.toDisplayString(((ue=D.value.find(be=>be.id===me))==null?void 0:ue.filename)||me),1),e.createElementVNode("span",Lr," - "+e.toDisplayString(e.unref(r).mediaLibrary.usedInTemplates.replace("{count}",$.template_count.toString())),1)],64)):e.createCommentVNode("",!0)])}),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",Ir,[e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text)","background-color":"var(--tpl-bg)"},onClick:_[10]||(_[10]=(...$)=>e.unref(c).cancelDelete&&e.unref(c).cancelDelete(...$))},e.toDisplayString(e.unref(r).mediaLibrary.cancel),1),e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-danger)",color:"var(--tpl-danger)","background-color":"var(--tpl-danger-light)"},onClick:_[11]||(_[11]=(...$)=>e.unref(c).confirmDelete&&e.unref(c).confirmDelete(...$))},e.toDisplayString(R.value?e.unref(r).mediaLibrary.deleteAnyway:e.unref(r).mediaLibrary.confirmDelete),1)])])])):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",zr,[e.createElementVNode("div",Ur,[e.unref(c).previewItem.value?(e.openBlock(),e.createBlock(Be,{key:0,"selected-conversion":U.value,"onUpdate:selectedConversion":_[13]||(_[13]=$=>U.value=$),item:e.unref(c).previewItem.value,folders:e.unref(c).folders.value},null,8,["selected-conversion","item","folders"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Tr,[e.unref(c).selectedItems.value.size>0?(e.openBlock(),e.createElementBlock("div",Pr,[e.unref(c).previewItem.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:flex tpl:cursor-pointer tpl:items-center tpl:gap-1 tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:e.normalizeStyle({borderColor:e.unref(oe)?"var(--tpl-success)":"var(--tpl-border)",color:e.unref(oe)?"var(--tpl-success)":"var(--tpl-text)",backgroundColor:"var(--tpl-bg)"}),onClick:_[14]||(_[14]=$=>e.unref(se)(W.value))},[e.unref(oe)?(e.openBlock(),e.createBlock(e.unref(V.Check),{key:1,size:12,"stroke-width":2})):(e.openBlock(),e.createBlock(e.unref(V.Copy),{key:0,size:12,"stroke-width":2})),e.createTextVNode(" "+e.toDisplayString(e.unref(oe)?e.unref(r).mediaLibrary.copied:e.unref(r).mediaLibrary.copyUrl),1)],4)):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("div",jr,[e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text)","background-color":"var(--tpl-bg)"},onClick:_[15]||(_[15]=$=>E.value=!E.value)},e.toDisplayString(e.unref(r).mediaLibrary.moveSelected),1),E.value?(e.openBlock(),e.createBlock(Ce,{key:0,folders:e.unref(c).folders.value,"current-folder-id":e.unref(c).currentFolderId.value,onSelect:F,onClose:_[16]||(_[16]=$=>E.value=!1)},null,8,["folders","current-folder-id"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Rr,[e.unref(c).selectedItems.value.size>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-danger)",color:"var(--tpl-danger)","background-color":"var(--tpl-danger-light)"},onClick:Y},e.toDisplayString(e.unref(r).mediaLibrary.deleteSelected),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:px-4 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50",style:{"background-color":"var(--tpl-primary)",color:"var(--tpl-bg)"},disabled:!H(),onClick:J},e.toDisplayString((de=t.accept)!=null&&de.length?e.unref(r).mediaLibrary.selectImage:e.unref(r).mediaLibrary.selectFile),9,Ar)])])])])])):e.createCommentVNode("",!0)]}),_:1})]))}});function qr(){const t=e.inject("onRequestMedia"),o=e.inject("planConfig"),l=e.ref(!1),a=e.computed(()=>!!t&&o.hasFeature("pluggable_media"));async function r(i){if(!t)return null;l.value=!0;try{return await t(i??{})}finally{l.value=!1}}return{isPluggableMediaEnabled:a,isRequesting:l,requestMedia:r}}const Wr={class:"tpl tpl:flex tpl:flex-col tpl:overflow-hidden tpl:rounded-[var(--tpl-radius-lg)]",style:{width:"100%",height:"100%","background-color":"var(--tpl-bg-elevated)",border:"1px solid var(--tpl-border)"}},Kr={class:"tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-between tpl:border-b tpl:px-5 tpl:py-3.5",style:{"border-color":"var(--tpl-border)"}},Gr={class:"tpl:text-sm tpl:font-semibold",style:{color:"var(--tpl-text)"}},Hr={class:"tpl:flex tpl:items-center tpl:gap-3"},Zr={class:"tpl:relative"},Jr=["value","placeholder"],Xr={class:"tpl:flex tpl:min-h-0 tpl:flex-1 tpl:overflow-hidden"},Qr={key:0,class:"tpl:flex tpl:w-48 tpl:shrink-0 tpl:flex-col tpl:border-r",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)"}},Yr={class:"tpl:flex tpl:min-w-0 tpl:flex-1 tpl:flex-col"},eo={class:"tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-between tpl:border-b tpl:px-4 tpl:py-2.5",style:{"border-color":"var(--tpl-border)"}},to={class:"tpl:flex tpl:items-center tpl:gap-2"},lo=["title"],ro={key:1,class:"tpl:text-xs tpl:font-medium",style:{color:"var(--tpl-text)"}},oo={class:"tpl:flex tpl:rounded-md tpl:p-0.5",style:{border:"1px solid var(--tpl-border)","background-color":"var(--tpl-bg)"}},ao=["title"],no=["title"],io={class:"tpl:flex tpl:items-center tpl:gap-2"},so=["value"],co={value:""},po=["value"],mo=["value"],fo={value:"newest"},uo={value:"oldest"},yo={value:"name_asc"},go={value:"name_desc"},ho={value:"size_asc"},bo={value:"size_desc"},ko={class:"tpl:min-h-0 tpl:flex-1 tpl:overflow-y-auto"},xo={key:0,class:"tpl:px-4 tpl:pt-3"},wo={class:"tpl-scale-in tpl:mx-4 tpl:w-full tpl:max-w-sm tpl:rounded-[var(--tpl-radius-lg)] tpl:p-5",style:{"background-color":"var(--tpl-bg-elevated)","box-shadow":"var(--tpl-shadow-xl)"}},Eo={class:"tpl:mb-2 tpl:text-sm tpl:font-semibold",style:{color:"var(--tpl-text)"}},_o={key:0,class:"tpl:mb-4 tpl:text-xs",style:{color:"var(--tpl-text-muted)"}},No={key:1,class:"tpl:mb-4 tpl:max-h-32 tpl:overflow-y-auto tpl:rounded tpl:border tpl:p-2",style:{"border-color":"var(--tpl-border)"}},Co={class:"tpl:font-medium"},Bo={style:{color:"var(--tpl-text-muted)"}},Vo={class:"tpl:flex tpl:justify-end tpl:gap-2"},Fo={class:"tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-between tpl:border-t tpl:px-5 tpl:py-3",style:{"border-color":"var(--tpl-border)"}},So={class:"tpl:flex tpl:min-w-0 tpl:flex-1 tpl:items-center tpl:gap-3"},vo={class:"tpl:flex tpl:items-center tpl:gap-5"},$o={key:0,class:"tpl:flex tpl:items-center tpl:gap-2"},Mo={key:1,class:"tpl:relative"},Do={class:"tpl:flex tpl:items-center tpl:gap-2"},Lo=["disabled"],Io=e.defineComponent({__name:"MediaLibrary",props:{authManager:{},projectId:{},planConfig:{},translations:{},onSelect:{type:Function},onError:{type:Function}},emits:["ready"],setup(t,{emit:o}){const l=t,a=o,r=e.computed(()=>l.translations);e.provide("translations",l.translations),e.provide("authManager",l.authManager),e.provide("projectId",e.computed(()=>l.projectId));const i=e.ref(l.planConfig);e.provide("planConfig",{config:i,isLoading:e.ref(!1),hasFeature:w=>l.planConfig.features[w]??!1,features:e.computed(()=>l.planConfig.features),fetchConfig:async()=>{}});const d=e.computed(()=>l.planConfig.features.media_folders??!1),m=e.computed(()=>l.planConfig.features.import_from_url??!1),p=e.computed(()=>l.planConfig.storage.used_bytes??0),g=e.computed(()=>l.planConfig.storage.limit_bytes??0),{availableCategories:u}=ne(),x={images:()=>r.value.mediaLibrary.filterImages,documents:()=>r.value.mediaLibrary.filterDocuments,videos:()=>r.value.mediaLibrary.filterVideos,audio:()=>r.value.mediaLibrary.filterAudio};function k(w){var E;return((E=x[w])==null?void 0:E.call(x))??w}const C=e.ref("grid"),n=e.ref(!1),f=e.ref(""),B=e.ref("original"),s=ye({projectId:l.projectId,authManager:l.authManager,onError:l.onError}),v=e.computed(()=>{const w=s.previewItem.value;if(!w)return null;switch(B.value){case"small":return w.small_url||w.url;case"medium":return w.medium_url||w.url;case"large":return w.large_url||w.url;default:return w.url}}),M=e.computed(()=>s.frequentlyUsedItems.value.length>0),U=e.computed(()=>s.viewMode.value==="frequently-used"?s.frequentlyUsedItems.value:s.items.value),c=e.computed(()=>Object.values(s.deleteUsageInfo.value).some(w=>w.template_count>0));e.watch(n,w=>{w&&d.value&&s.loadFolders()}),e.watch(()=>{var w;return(w=s.previewItem.value)==null?void 0:w.id},()=>{B.value="original"});const W=te.useDebounceFn(w=>{s.search(w)},300);function P(w){f.value=w,W(w)}async function D(w){await s.uploadFiles(w)}function R(w){s.selectItem(w)}function O(){var F;if(!s.previewItem.value)return;const w=s.previewItem.value,E={...w,url:v.value||w.url};(F=l.onSelect)==null||F.call(l,E)}async function A(w,E){await s.createFolder(w,E)}async function Z(w,E){await s.renameFolder(w,E)}async function z(w){await s.deleteFolder(w)}const I=e.ref(null);function H(w){I.value=w}async function J(w,E,F,Y){Y&&await s.replaceMediaDirectly(w,Y.file),await s.updateFile(w,E,F),I.value=null}const{copy:Q,copied:G}=te.useClipboard({copiedDuring:2e3,legacy:!0}),j=e.ref(!1);async function X(w){await s.importFromUrl(w)&&(j.value=!1)}const le=e.ref(!1);async function pe(w){le.value=!1,await s.moveSelected(w)}async function se(){await s.checkUsageBeforeDelete()}function oe(w){s.checkUsageBeforeReplace(w)}async function re(w){await s.replaceFile(w)}return e.onMounted(()=>{s.loadItems(),s.loadFrequentlyUsed(),a("ready")}),(w,E)=>(e.openBlock(),e.createElementBlock("div",Wr,[e.createElementVNode("div",Kr,[e.createElementVNode("h2",Gr,e.toDisplayString(r.value.mediaLibrary.title),1),e.createElementVNode("div",Hr,[e.createVNode(Se,{"used-bytes":p.value,"limit-bytes":g.value,size:22},null,8,["used-bytes","limit-bytes"]),e.createElementVNode("div",Zr,[e.createElementVNode("input",{value:f.value,type:"text",class:"tpl:w-52 tpl:rounded-md tpl:border tpl:py-1.5 tpl:pr-3 tpl:pl-8 tpl:text-xs tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:outline-none tpl:focus:shadow-[var(--tpl-ring)]",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},placeholder:r.value.mediaLibrary.searchPlaceholder,onInput:E[0]||(E[0]=F=>P(F.target.value))},null,40,Jr),e.createVNode(e.unref(V.Search),{class:"tpl:absolute tpl:top-1/2 tpl:left-2.5 tpl:-translate-y-1/2",size:13,"stroke-width":2,style:{color:"var(--tpl-text-dim)"}})])])]),e.createElementVNode("div",Xr,[e.createVNode(e.Transition,{"enter-active-class":"tpl:transition-all tpl:duration-200 tpl:ease-out","enter-from-class":"tpl:-ml-48 tpl:opacity-0","enter-to-class":"tpl:ml-0 tpl:opacity-100","leave-active-class":"tpl:transition-all tpl:duration-150 tpl:ease-in","leave-from-class":"tpl:ml-0 tpl:opacity-100","leave-to-class":"tpl:-ml-48 tpl:opacity-0"},{default:e.withCtx(()=>[d.value&&n.value?(e.openBlock(),e.createElementBlock("div",Qr,[e.createVNode(Ee,{folders:e.unref(s).folders.value,"current-folder-id":e.unref(s).currentFolderId.value,"view-mode":e.unref(s).viewMode.value,"has-frequently-used":M.value,onNavigate:e.unref(s).navigateToFolder,onCreateFolder:A,onRenameFolder:Z,onDeleteFolder:z,onShowFrequentlyUsed:e.unref(s).showFrequentlyUsed},null,8,["folders","current-folder-id","view-mode","has-frequently-used","onNavigate","onShowFrequentlyUsed"])])):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",Yr,[e.createElementVNode("div",eo,[e.createElementVNode("div",to,[d.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-md tpl:transition-all tpl:duration-150",style:e.normalizeStyle({color:n.value?"var(--tpl-primary)":"var(--tpl-text-muted)",backgroundColor:n.value?"var(--tpl-bg)":"transparent",border:n.value?"1px solid var(--tpl-border)":"1px solid transparent"}),title:n.value?r.value.mediaLibrary.hideFolders:r.value.mediaLibrary.showFolders,onClick:E[1]||(E[1]=F=>n.value=!n.value)},[e.createVNode(e.unref(V.PanelLeft),{size:16,"stroke-width":2})],12,lo)):e.createCommentVNode("",!0),e.unref(s).viewMode.value==="frequently-used"?(e.openBlock(),e.createElementBlock("span",ro,e.toDisplayString(r.value.mediaLibrary.frequentlyUsed),1)):(e.openBlock(),e.createBlock(xe,{key:2,folders:e.unref(s).folders.value,"current-folder-id":e.unref(s).currentFolderId.value,onNavigate:e.unref(s).navigateToFolder},null,8,["folders","current-folder-id","onNavigate"])),e.createElementVNode("div",oo,[e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded tpl:transition-all tpl:duration-150",style:e.normalizeStyle({color:C.value==="grid"?"var(--tpl-primary)":"var(--tpl-text-muted)",backgroundColor:C.value==="grid"?"var(--tpl-bg-elevated)":"transparent"}),title:r.value.mediaLibrary.viewGrid,onClick:E[2]||(E[2]=F=>C.value="grid")},[e.createVNode(e.unref(V.Grid2x2),{size:14,"stroke-width":2})],12,ao),e.createElementVNode("button",{class:"tpl:flex tpl:size-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded tpl:transition-all tpl:duration-150",style:e.normalizeStyle({color:C.value==="list"?"var(--tpl-primary)":"var(--tpl-text-muted)",backgroundColor:C.value==="list"?"var(--tpl-bg-elevated)":"transparent"}),title:r.value.mediaLibrary.viewList,onClick:E[3]||(E[3]=F=>C.value="list")},[e.createVNode(e.unref(V.List),{size:14,"stroke-width":2})],12,no)])]),e.createElementVNode("div",io,[e.unref(u).length>1?(e.openBlock(),e.createElementBlock("select",{key:0,class:"tpl:rounded-md tpl:border tpl:py-1.5 tpl:pr-7 tpl:pl-2.5 tpl:text-xs tpl:transition-all tpl:duration-150 tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},value:e.unref(s).categoryFilter.value??"",onChange:E[4]||(E[4]=F=>e.unref(s).filterByCategory(F.target.value||null))},[e.createElementVNode("option",co,e.toDisplayString(r.value.mediaLibrary.filterAll),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(u),F=>(e.openBlock(),e.createElementBlock("option",{key:F,value:F},e.toDisplayString(k(F)),9,po))),128))],40,so)):e.createCommentVNode("",!0),e.createElementVNode("select",{class:"tpl:rounded-md tpl:border tpl:py-1.5 tpl:pr-7 tpl:pl-2.5 tpl:text-xs tpl:transition-all tpl:duration-150 tpl:outline-none",style:{"border-color":"var(--tpl-border)","background-color":"var(--tpl-bg)",color:"var(--tpl-text)"},value:e.unref(s).sortOption.value,onChange:E[5]||(E[5]=F=>e.unref(s).sortBy(F.target.value))},[e.createElementVNode("option",fo,e.toDisplayString(r.value.mediaLibrary.sortNewest),1),e.createElementVNode("option",uo,e.toDisplayString(r.value.mediaLibrary.sortOldest),1),e.createElementVNode("option",yo,e.toDisplayString(r.value.mediaLibrary.sortNameAsc),1),e.createElementVNode("option",go,e.toDisplayString(r.value.mediaLibrary.sortNameDesc),1),e.createElementVNode("option",ho,e.toDisplayString(r.value.mediaLibrary.sortSizeAsc),1),e.createElementVNode("option",bo,e.toDisplayString(r.value.mediaLibrary.sortSizeDesc),1)],40,mo)])]),e.createElementVNode("div",ko,[e.unref(s).viewMode.value==="files"?(e.openBlock(),e.createElementBlock("div",xo,[e.createVNode(Fe,{"is-uploading":e.unref(s).isUploading.value,"upload-progress":e.unref(s).uploadProgress.value,onUpload:D},null,8,["is-uploading","upload-progress"]),m.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:mt-2 tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border tpl:border-dashed tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text-muted)","background-color":"var(--tpl-bg)"},onClick:E[6]||(E[6]=F=>j.value=!0)},[e.createVNode(e.unref(V.Link),{size:14,"stroke-width":2}),e.createTextVNode(" "+e.toDisplayString(r.value.mediaLibrary.importFromUrl),1)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createVNode(_e,{items:U.value,"selected-ids":e.unref(s).selectedItems.value,"is-loading":e.unref(s).isLoading.value,"has-more":e.unref(s).viewMode.value==="files"&&e.unref(s).hasMore.value,layout:C.value,onSelect:R,onToggle:e.unref(s).toggleSelection,onLoadMore:e.unref(s).loadMore,onEdit:H,onReplace:oe},null,8,["items","selected-ids","is-loading","has-more","layout","onToggle","onLoadMore"])])])]),e.createVNode(Ne,{visible:j.value,"is-importing":e.unref(s).isImportingFromUrl.value,error:e.unref(s).importFromUrlError.value,onImport:X,onClose:E[7]||(E[7]=F=>j.value=!1)},null,8,["visible","is-importing","error"]),e.createVNode(we,{visible:!!I.value,item:I.value,onSave:J,onClose:E[8]||(E[8]=F=>I.value=null)},null,8,["visible","item"]),e.createVNode(Ve,{visible:e.unref(s).showReplaceWarning.value,item:e.unref(s).pendingReplaceItem.value,"usage-info":e.unref(s).replaceUsageInfo.value,"is-replacing":e.unref(s).isReplacing.value,error:e.unref(s).replaceError.value,onReplace:re,onClose:e.unref(s).cancelReplace},null,8,["visible","item","usage-info","is-replacing","error","onClose"]),e.createVNode(e.Transition,{"enter-active-class":"tpl:transition tpl:ease-out tpl:duration-150","enter-from-class":"tpl:opacity-0","enter-to-class":"tpl:opacity-100","leave-active-class":"tpl:transition tpl:ease-in tpl:duration-100","leave-from-class":"tpl:opacity-100","leave-to-class":"tpl:opacity-0"},{default:e.withCtx(()=>[e.unref(s).showDeleteWarning.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"tpl:absolute tpl:inset-0 tpl:z-10 tpl:flex tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-lg)]",style:{"background-color":"rgba(0, 0, 0, 0.5)","backdrop-filter":"blur(8px)","-webkit-backdrop-filter":"blur(8px)"},onClick:E[11]||(E[11]=e.withModifiers((...F)=>e.unref(s).cancelDelete&&e.unref(s).cancelDelete(...F),["self"]))},[e.createElementVNode("div",wo,[e.createElementVNode("h3",Eo,e.toDisplayString(r.value.mediaLibrary.deleteWarningTitle),1),e.createElementVNode("p",{class:e.normalizeClass(["tpl:text-xs",c.value?"tpl:mb-2":"tpl:mb-4"]),style:{color:"var(--tpl-text-muted)"}},e.toDisplayString(r.value.mediaLibrary.deleteWarningMessage),3),c.value?(e.openBlock(),e.createElementBlock("p",_o,e.toDisplayString(r.value.mediaLibrary.deleteWarningUsageNote),1)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",No,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s).deleteUsageInfo.value,(F,Y)=>{var ce;return e.openBlock(),e.createElementBlock("div",{key:Y,class:"tpl:text-xs",style:{color:"var(--tpl-text)"}},[F.template_count>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("span",Co,e.toDisplayString(((ce=U.value.find(ae=>ae.id===Y))==null?void 0:ce.filename)||Y),1),e.createElementVNode("span",Bo," - "+e.toDisplayString(r.value.mediaLibrary.usedInTemplates.replace("{count}",F.template_count.toString())),1)],64)):e.createCommentVNode("",!0)])}),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",Vo,[e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text)","background-color":"var(--tpl-bg)"},onClick:E[9]||(E[9]=(...F)=>e.unref(s).cancelDelete&&e.unref(s).cancelDelete(...F))},e.toDisplayString(r.value.mediaLibrary.cancel),1),e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-danger)",color:"var(--tpl-danger)","background-color":"var(--tpl-danger-light)"},onClick:E[10]||(E[10]=(...F)=>e.unref(s).confirmDelete&&e.unref(s).confirmDelete(...F))},e.toDisplayString(c.value?r.value.mediaLibrary.deleteAnyway:r.value.mediaLibrary.confirmDelete),1)])])])):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",Fo,[e.createElementVNode("div",So,[e.unref(s).previewItem.value?(e.openBlock(),e.createBlock(Be,{key:0,"selected-conversion":B.value,"onUpdate:selectedConversion":E[12]||(E[12]=F=>B.value=F),item:e.unref(s).previewItem.value,folders:e.unref(s).folders.value},null,8,["selected-conversion","item","folders"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",vo,[e.unref(s).selectedItems.value.size>0?(e.openBlock(),e.createElementBlock("div",$o,[e.unref(s).previewItem.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:flex tpl:cursor-pointer tpl:items-center tpl:gap-1 tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:e.normalizeStyle({borderColor:e.unref(G)?"var(--tpl-success)":"var(--tpl-border)",color:e.unref(G)?"var(--tpl-success)":"var(--tpl-text)",backgroundColor:"var(--tpl-bg)"}),onClick:E[13]||(E[13]=F=>e.unref(Q)(v.value))},[e.unref(G)?(e.openBlock(),e.createBlock(e.unref(V.Check),{key:1,size:12,"stroke-width":2})):(e.openBlock(),e.createBlock(e.unref(V.Copy),{key:0,size:12,"stroke-width":2})),e.createTextVNode(" "+e.toDisplayString(e.unref(G)?r.value.mediaLibrary.copied:r.value.mediaLibrary.copyUrl),1)],4)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",Mo,[e.createElementVNode("button",{class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-border)",color:"var(--tpl-text)","background-color":"var(--tpl-bg)"},onClick:E[14]||(E[14]=F=>le.value=!le.value)},e.toDisplayString(r.value.mediaLibrary.moveSelected),1),le.value?(e.openBlock(),e.createBlock(Ce,{key:0,folders:e.unref(s).folders.value,"current-folder-id":e.unref(s).currentFolderId.value,onSelect:pe,onClose:E[15]||(E[15]=F=>le.value=!1)},null,8,["folders","current-folder-id"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",Do,[e.unref(s).selectedItems.value.size>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",style:{"border-color":"var(--tpl-danger)",color:"var(--tpl-danger)","background-color":"var(--tpl-danger-light)"},onClick:se},e.toDisplayString(r.value.mediaLibrary.deleteSelected),1)):e.createCommentVNode("",!0),t.onSelect?(e.openBlock(),e.createElementBlock("button",{key:1,class:"tpl:cursor-pointer tpl:rounded-md tpl:px-4 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50",style:{"background-color":"var(--tpl-primary)",color:"var(--tpl-bg)"},disabled:!e.unref(s).previewItem.value,onClick:O},e.toDisplayString(r.value.mediaLibrary.selectFile),9,Lo)):e.createCommentVNode("",!0)])])])]))}}),zo=(t,o,l)=>{const a=t[o];return a?typeof a=="function"?a():Promise.resolve(a):new Promise((r,i)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(i.bind(null,new Error("Unknown variable dynamic import: "+o+(o.split("/").length!==l?". Note that variables only represent file names one level deep.":""))))})},Uo=["en","de"];function To(t){return t.split("-")[0].toLowerCase()}async function Po(t){const o=To(t),l=Uo.includes(o)?o:"en";return(await zo(Object.assign({"./locales/de.ts":()=>Promise.resolve().then(()=>Ro),"./locales/en.ts":()=>Promise.resolve().then(()=>Ao)}),`./locales/${l}.ts`,3)).default}let ie=null;const ve=e.ref(null);async function $e(t){const o=typeof t.container=="string"?document.querySelector(t.container):t.container;if(!o)throw new Error(`Container element not found: ${t.container}`);ie&&fe();const l=L.createSdkAuthManager(t.auth,t.onError);await l.initialize();const r=await new L.ApiClient(l).fetchConfig(),i=await Po(t.locale??"en");return Me(o,t.theme),new Promise((d,m)=>{try{ie=e.createApp({setup(){const p=()=>{d({setTheme:u=>Me(o,u),unmount:fe})};return()=>e.h(Io,{authManager:l,projectId:l.projectId,planConfig:r,translations:i,onSelect:t.onSelect,onError:t.onError,ref:ve,onReady:p})}}),ie.mount(o)}catch(p){m(p)}})}function fe(){ie&&(ie.unmount(),ie=null,ve.value=null)}function Me(t,o){o&&(o.primaryColor&&t.style.setProperty("--tpl-primary",o.primaryColor),o.borderRadius!==void 0&&(t.style.setProperty("--tpl-radius",`${o.borderRadius}px`),t.style.setProperty("--tpl-radius-sm",`${Math.max(0,o.borderRadius-3)}px`),t.style.setProperty("--tpl-radius-lg",`${o.borderRadius+4}px`)))}const jo={init:$e,unmount:fe};typeof window<"u"&&(window.TemplaticalMedia=jo);const Ro=Object.freeze(Object.defineProperty({__proto__:null,default:{mediaLibrary:{title:"Medienbibliothek",searchPlaceholder:"Dateien suchen...",allFiles:"Alle Dateien",filterAll:"Alle Typen",filterImages:"Bilder",filterDocuments:"Dokumente",filterVideos:"Videos",filterAudio:"Audio",newFolder:"Neuer Ordner",folderName:"Ordnername",noFiles:"Keine Dateien gefunden",dropOrClick:"Dateien hierher ziehen oder klicken zum Hochladen",acceptedFormats:"Bilder, PDF, Video, Audio, Dokumente (max. 10 MB)",uploading:"Wird hochgeladen...",uploadingProgress:"{current} von {total} wird hochgeladen...",selectImage:"Bild auswählen",selectFile:"Datei auswählen",deleteSelected:"Löschen",copyUrl:"URL kopieren",copied:"Kopiert!",browseMedia:"Medienbibliothek durchsuchen",renameFolder:"Ordner umbenennen",addSubfolder:"Unterordner hinzufügen",subfolderName:"Unterordnername",sortNewest:"Neueste zuerst",sortOldest:"Älteste zuerst",sortNameAsc:"Name A-Z",sortNameDesc:"Name Z-A",sortSizeAsc:"Kleinste zuerst",sortSizeDesc:"Größte zuerst",moveSelected:"Verschieben",moveToRoot:"Alle Dateien",currentFolder:"(aktuell)",confirmDelete:"Bestätigen?",renameFile:"Umbenennen",editFile:"Datei bearbeiten",fileName:"Dateiname",altText:"Alternativtext",altTextPlaceholder:"Bildbeschreibung für Barrierefreiheit",saveChanges:"Speichern",cancel:"Abbrechen",frequentlyUsed:"Häufig verwendet",deleteWarningTitle:"Datei löschen",deleteWarningMessage:"Sind Sie sicher? Diese Aktion kann nicht rückgängig gemacht werden.",deleteWarningUsageNote:"Die folgenden Dateien werden in Vorlagen verwendet. Das Löschen kann diese Vorlagen beschädigen.",deleteAnyway:"Löschen",usedInTemplates:"In {count} Vorlage(n) verwendet",viewGrid:"Rasteransicht",viewList:"Listenansicht",showFolders:"Ordner anzeigen",hideFolders:"Ordner ausblenden",importFromUrl:"Von URL importieren",importUrlPlaceholder:"https://example.com/image.jpg",import:"Importieren",importing:"Wird importiert...",importError:"Import von URL fehlgeschlagen",conversionLabel:"Groesse",conversionOriginal:"Original",conversionSmall:"Klein (150px)",conversionMedium:"Mittel (600px)",conversionLarge:"Gross (1200px)",replaceFile:"Datei ersetzen",replaceWarningTitle:"Datei ersetzen",replaceWarningMessage:"Sie sind dabei, diese Datei zu ersetzen. Die Ersatzdatei muss dieselbe Dateierweiterung haben ({extension}).",replaceWarningUsageNote:"Diese Datei wird in {count} Vorlage(n) verwendet. Das Ersetzen aktualisiert alle Verweise.",replaceSelectFile:"Ersatzdatei auswählen",replace:"Ersetzen",replacing:"Wird ersetzt...",replaceError:"Ersetzen der Datei fehlgeschlagen",saving:"Wird gespeichert...",cropAspectRatio:"Seitenverhältnis",cropFree:"Frei",cropSquare:"1:1",cropLandscape43:"4:3",cropLandscape169:"16:9",cropOriginal:"Original",cropMaxWidth:"Max. Breite",cropMaxHeight:"Max. Höhe",cropOutputSize:"Ausgabegröße",cropPixels:"px",cropOptional:"(optional)",storageTooltip:"{used} von {total} verwendet ({remaining} verfügbar)"}}},Symbol.toStringTag,{value:"Module"})),Ao=Object.freeze(Object.defineProperty({__proto__:null,default:{mediaLibrary:{title:"Media Library",searchPlaceholder:"Search files...",allFiles:"All Files",filterAll:"All Types",filterImages:"Images",filterDocuments:"Documents",filterVideos:"Videos",filterAudio:"Audio",newFolder:"New Folder",folderName:"Folder name",noFiles:"No files found",dropOrClick:"Drop files here or click to upload",acceptedFormats:"Images, PDF, Video, Audio, Documents (max 10MB)",uploading:"Uploading...",uploadingProgress:"Uploading {current} of {total}...",selectImage:"Select Image",selectFile:"Select File",deleteSelected:"Delete",copyUrl:"Copy URL",copied:"Copied!",browseMedia:"Browse Media Library",renameFolder:"Rename folder",addSubfolder:"Add subfolder",subfolderName:"Subfolder name",sortNewest:"Newest First",sortOldest:"Oldest First",sortNameAsc:"Name A-Z",sortNameDesc:"Name Z-A",sortSizeAsc:"Smallest First",sortSizeDesc:"Largest First",moveSelected:"Move",moveToRoot:"All Files",currentFolder:"(current)",confirmDelete:"Confirm?",renameFile:"Rename",editFile:"Edit File",fileName:"Filename",altText:"Alt Text",altTextPlaceholder:"Describe this image for accessibility",saveChanges:"Save",cancel:"Cancel",frequentlyUsed:"Frequently Used",deleteWarningTitle:"Delete File",deleteWarningMessage:"Are you sure? This action is irreversible.",deleteWarningUsageNote:"The following files are used in templates. Deleting them may break those templates.",deleteAnyway:"Delete",usedInTemplates:"Used in {count} template(s)",viewGrid:"Grid view",viewList:"List view",showFolders:"Show folders",hideFolders:"Hide folders",importFromUrl:"Import from URL",importUrlPlaceholder:"https://example.com/image.jpg",import:"Import",importing:"Importing...",importError:"Failed to import from URL",conversionLabel:"Size",conversionOriginal:"Original",conversionSmall:"Small (150px)",conversionMedium:"Medium (600px)",conversionLarge:"Large (1200px)",replaceFile:"Replace File",replaceWarningTitle:"Replace File",replaceWarningMessage:"You are about to replace this file. The replacement must have the same file extension ({extension}).",replaceWarningUsageNote:"This file is used in {count} template(s). Replacing it will update all references.",replaceSelectFile:"Select replacement file",replace:"Replace",replacing:"Replacing...",replaceError:"Failed to replace file",saving:"Saving...",cropAspectRatio:"Aspect Ratio",cropFree:"Free",cropSquare:"1:1",cropLandscape43:"4:3",cropLandscape169:"16:9",cropOriginal:"Original",cropMaxWidth:"Max Width",cropMaxHeight:"Max Height",cropOutputSize:"Output Size",cropPixels:"px",cropOptional:"(optional)",storageTooltip:"{used} of {total} used ({remaining} remaining)"}}},Symbol.toStringTag,{value:"Module"}));q.MediaApiClient=ke,q.MediaLibraryModal=Or,q.init=$e,q.unmount=fe,q.useI18n=K,q.useMediaCategories=ne,q.useMediaLibrary=ye,q.useMediaPicker=qr,Object.defineProperty(q,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@templatical/media-library",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"publishConfig": { "access": "public" },
|
|
5
|
+
"description": "Media library management for Templatical email editor",
|
|
6
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/templatical-media-library.umd.cjs",
|
|
9
|
+
"module": "./dist/templatical-media-library.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/templatical-media-library.js",
|
|
15
|
+
"require": "./dist/templatical-media-library.umd.cjs"
|
|
16
|
+
},
|
|
17
|
+
"./style.css": "./dist/style.css"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "vite build",
|
|
24
|
+
"test": "vitest run",
|
|
25
|
+
"typecheck": "vue-tsc --noEmit"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@templatical/core": "workspace:*",
|
|
29
|
+
"@templatical/types": "workspace:*",
|
|
30
|
+
"@vueuse/core": "^14.0.0",
|
|
31
|
+
"lucide-vue-next": "^0.475.0",
|
|
32
|
+
"vue-advanced-cropper": "^2.0.0"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"vue": "^3.4.0",
|
|
36
|
+
"tailwindcss": "^4.0.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@vitejs/plugin-vue": "^5.0.0",
|
|
40
|
+
"typescript": "^5.7.0",
|
|
41
|
+
"vite": "^6.0.0",
|
|
42
|
+
"vite-plugin-dts": "^4.5.4",
|
|
43
|
+
"vitest": "^3.0.0",
|
|
44
|
+
"vue": "^3.5.0",
|
|
45
|
+
"vue-tsc": "^2.0.0"
|
|
46
|
+
}
|
|
47
|
+
}
|