@codingfactory/mediables-vue 2.19.3 → 2.21.0

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.
Files changed (35) hide show
  1. package/dist/{PixiFrameExporter-BgKJMR1H.js → PixiFrameExporter-Bpp8rp3Q.js} +2 -2
  2. package/dist/{PixiFrameExporter-BgKJMR1H.js.map → PixiFrameExporter-Bpp8rp3Q.js.map} +1 -1
  3. package/dist/{PixiFrameExporter-CZkLc9b5.cjs → PixiFrameExporter-CLC3hJuN.cjs} +2 -2
  4. package/dist/{PixiFrameExporter-CZkLc9b5.cjs.map → PixiFrameExporter-CLC3hJuN.cjs.map} +1 -1
  5. package/dist/components/CoverFocalPointPicker.vue.d.ts +21 -0
  6. package/dist/components/CoverPhotoUploader.vue.d.ts +52 -0
  7. package/dist/editor-v2-CFLWp7RZ.cjs +2 -0
  8. package/dist/editor-v2-CFLWp7RZ.cjs.map +1 -0
  9. package/dist/editor-v2-DjhJBaCS.js +7187 -0
  10. package/dist/editor-v2-DjhJBaCS.js.map +1 -0
  11. package/dist/filters/index.d.ts +1 -0
  12. package/dist/filters/recipeToCssFilter.d.ts +71 -0
  13. package/dist/index-Bvo95NTy.cjs +357 -0
  14. package/dist/index-Bvo95NTy.cjs.map +1 -0
  15. package/dist/index-DKM5lmdH.js +39288 -0
  16. package/dist/index-DKM5lmdH.js.map +1 -0
  17. package/dist/index-Dae8SHT7.js.map +1 -1
  18. package/dist/index-QOKC8XA_.cjs.map +1 -1
  19. package/dist/index.d.ts +7 -2
  20. package/dist/mediables-vanilla.cjs +1 -1
  21. package/dist/mediables-vanilla.mjs +10 -9
  22. package/dist/mediables-vue.cjs +1 -1
  23. package/dist/mediables-vue.mjs +119 -107
  24. package/dist/style.css +1 -1
  25. package/dist/utils/videoRecipeCapabilities.d.ts +15 -0
  26. package/dist/vanilla-exports.d.ts +2 -1
  27. package/package.json +1 -1
  28. package/dist/editor-BDmZ747c.cjs +0 -2
  29. package/dist/editor-BDmZ747c.cjs.map +0 -1
  30. package/dist/editor-CcfSL2dI.js +0 -4322
  31. package/dist/editor-CcfSL2dI.js.map +0 -1
  32. package/dist/index-CSYvPx9Q.js +0 -41633
  33. package/dist/index-CSYvPx9Q.js.map +0 -1
  34. package/dist/index-LL2h0nsa.cjs +0 -357
  35. package/dist/index-LL2h0nsa.cjs.map +0 -1
@@ -0,0 +1,357 @@
1
+ "use strict";var Ev=Object.defineProperty;var Sv=(a,n,t)=>n in a?Ev(a,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[n]=t;var ie=(a,n,t)=>Sv(a,typeof n!="symbol"?n+"":n,t);const ml=require("pinia"),e=require("vue"),xv=require("./imageEditorState-PrcqbsfM.cjs"),zt=require("pixi.js"),bu=require("./editor-v2-CFLWp7RZ.cjs"),Ea=require("./index-QOKC8XA_.cjs"),G=require("@ionic/vue"),Cv=require("pixi-filters");function Vv(a){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const t in a)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(a,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>a[t]})}}return n.default=a,Object.freeze(n)}const aa=Vv(zt);let $a={apiBaseUrl:"/api/v1",isAdmin:!1};function yu(a){return typeof a=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(a)}function ai(a){$a={...$a,...a}}function sm(){return{...$a}}function dm(a){$a={...a}}function um(a){const n=sm();return ai(a),()=>{dm(n)}}function Nv(a){const n=a.trim().replace(/\/+$/,"");return n===""?"/api/v1":n.startsWith("/")?n:`/${n}`}function Tv(a,n){const t=Nv(n),o=(i,r="")=>{const l=`/api${t}`;return!t.startsWith("/api/")&&i.startsWith(`${l}/`)?`${i.slice(4)}${r}`:!t.startsWith("/api/")&&i===l?`${t}${r}`:`${i}${r}`};if(/^https?:\/\//i.test(a))try{const i=typeof window<"u"?window.location.origin:"http://localhost",r=new URL(a,i);if(r.origin===i)return o(r.pathname,`${r.search}${r.hash}`)}catch{return a}return o(a)}const Bv=async(a,n={})=>{var s;const t=(s=document.querySelector('meta[name="csrf-token"]'))==null?void 0:s.getAttribute("content"),o={Accept:"application/json",...n.headers};t&&(o["X-CSRF-TOKEN"]=t),n.body instanceof FormData||(o["Content-Type"]="application/json");const r={method:n.method||"GET",headers:o,credentials:"include"};n.body instanceof FormData?r.body=n.body:n.body!==void 0&&(r.body=JSON.stringify(n.body));const l=await fetch(a,r);if(!l.ok){const d=await l.json().catch(()=>({message:"Request failed"}));throw new Error(d.message||`HTTP ${l.status}`)}if(l.status!==204)return await l.json()},ja=ml.defineStore("media",()=>{const a=e.ref([]),n=e.ref([]),t=e.ref(!1),o=e.ref(null),i=e.ref(1),r=e.ref(1),l=e.ref(24),s=e.ref({type:null,uuid:null}),d=e.ref([]),u=e.ref(!1),c=e.ref(null),m=e.ref(new Map),p=e.ref(new Map),f=e.ref(new Set),v=e.ref(new Map),h=e.ref({}),k=5*60*1e3,E=e.computed(()=>{if($a.apiScope)return $a.apiScope;if($a.isAdmin)return"admin"}),w=e.computed(()=>E.value==="admin");function b(){return $a.httpClient||Bv}function g(ge){const ke=$a.apiBaseUrl||"/api/v1",be=E.value?`/${E.value}`:"";return`${ke}${be}${ge}`}function D(ge){return`${$a.apiBaseUrl||"/api/v1"}${ge}`}function T(ge,ke){return`${E.value??"default"}-${ge}-${JSON.stringify(ke)}`}function F(ge){return Date.now()-ge<k}function V(){v.value.clear(),h.value={}}function I(ge){if(!ge||!ge.data)return;const ke={};ge.data.forEach(be=>{const Ce=`${be.file_name}-${be.collection_name||"default"}`,Ee=ke[Ce];(!Ee||Object.keys(be.generated_conversions||{}).length>Object.keys(Ee.generated_conversions||{}).length)&&(ke[Ce]=be)}),a.value=Object.values(ke),ge.meta&&(i.value=ge.meta.current_page,r.value=Math.ceil(ge.meta.total/ge.meta.per_page))}async function $(ge=1,ke={}){const be=T(ge,ke),Ce=v.value.get(be);if(Ce&&F(Ce.timestamp)){const Ee=Ce.data;return I(Ee),Ee}t.value=!0,o.value=null;try{const Ee=new URLSearchParams;Ee.append("page",ge.toString()),Ee.append("per_page",l.value.toString()),w.value&&Ee.append("linked","1");for(const ot in ke)if(Object.prototype.hasOwnProperty.call(ke,ot)){const it=ke[ot];it!=null&&it!==""&&Ee.append(ot,String(it))}const Ue=await b()(g(`/media?${Ee}`));return v.value.set(be,{data:Ue,timestamp:Date.now()}),I(Ue),Ue}catch(Ee){throw o.value=Ee instanceof Error?Ee.message:"Failed to fetch media",a.value=[],new Error(o.value)}finally{t.value=!1}}async function C(ge,ke){t.value=!0,o.value=null;const be=`${ge.name}-${Date.now()}`,Ce={file:ge,progress:0,status:"uploading"};m.value.set(be,Ce);try{const Ee=new FormData;Ee.append("file",ge),Ee.append("collection",ke.collection),ke.ownerUuid&&(Ee.append("owner_uuid",ke.ownerUuid),Ee.append("owner_type",ke.ownerType||"")),ke.usageUuid&&(Ee.append("usage_uuid",ke.usageUuid),Ee.append("usage_type",ke.usageType||""),Ee.append("usage_purpose",ke.usagePurpose||"")),ke.customProperties&&Ee.append("custom_properties",JSON.stringify(ke.customProperties));const Ue=await b()(g("/media"),{method:"POST",body:Ee});return Ce.status="completed",Ce.progress=100,Ce.media=Ue==null?void 0:Ue.data,i.value===1&&(Ue!=null&&Ue.data)&&(a.value=[Ue.data,...a.value]),V(),(Ue==null?void 0:Ue.data)||null}catch(Ee){throw Ce.status="error",Ce.error=Ee instanceof Error?Ee.message:"Upload failed",o.value=Ce.error,new Error(o.value)}finally{t.value=!1,setTimeout(()=>{m.value.delete(be)},5e3)}}async function M(ge){t.value=!0,o.value=null;const ke=a.value.findIndex(Ce=>Ce.uuid===ge);let be;ke!==-1&&(be=a.value.splice(ke,1)[0]);try{return await b()(g(`/media/${ge}`),{method:"DELETE"}),f.value.delete(ge),V(),!0}catch(Ce){throw be&&ke!==-1&&a.value.splice(ke,0,be),o.value=Ce instanceof Error?Ce.message:"Failed to delete media",new Error(o.value)}finally{t.value=!1}}async function _(ge,ke){t.value=!0,o.value=null;try{const Ce=await b()(g(`/media/${ge}`),{method:"PATCH",body:ke,data:ke});if(Ce!=null&&Ce.data){const Ee=a.value.findIndex(Ae=>Ae.uuid===ge);return Ee!==-1&&(a.value[Ee]={...a.value[Ee],...Ce.data}),V(),Ce.data}return null}catch(be){throw o.value=be instanceof Error?be.message:"Failed to update media",new Error(o.value)}finally{t.value=!1}}async function L(){t.value=!0,o.value=null;try{const ke=await b()(g("/media/collections"));return n.value=(ke==null?void 0:ke.data)||[],n.value}catch(ge){throw o.value=ge instanceof Error?ge.message:"Failed to fetch collections",n.value=[],new Error(o.value)}finally{t.value=!1}}async function j(ge,ke,be="images",Ce){u.value=!0,c.value=null;try{const Ee=new URLSearchParams;Ee.append("collection",be),Ce&&Ee.append("search",Ce);const Ue=await b()(g(`/media/model/${ge}/${ke}?${Ee}`));return Ue!=null&&Ue.data?(d.value=Ue.data,Ue.data):[]}catch(Ee){throw c.value=Ee instanceof Error?Ee.message:"Failed to fetch model media",d.value=[],new Error(c.value)}finally{u.value=!1}}async function B(ge,ke,be,Ce="images"){u.value=!0,c.value=null;const Ee=[...d.value];try{const Ue=await b()(g(`/media/model/${ge}/${ke}/attach`),{method:"POST",body:{media_uuids:be,collection:Ce}});return await j(ge,ke,Ce),(Ue==null?void 0:Ue.data)||[]}catch(Ae){throw d.value=Ee,c.value=Ae instanceof Error?Ae.message:"Failed to attach media",new Error(c.value)}finally{u.value=!1}}async function U(ge,ke,be,Ce="images"){u.value=!0,c.value=null;const Ee=[...d.value];d.value=d.value.filter(Ae=>Ae.uuid!==be);try{return await b()(g(`/media/model/${ge}/${ke}/detach`),{method:"POST",body:{media_uuid:be,collection:Ce}}),!0}catch(Ae){throw d.value=Ee,c.value=Ae instanceof Error?Ae.message:"Failed to detach media",new Error(c.value)}finally{u.value=!1}}async function S(ge,ke,be,Ce="images"){u.value=!0,c.value=null;const Ee=[...d.value],Ae=new Map(d.value.map(Ue=>[Ue.uuid,Ue]));d.value=be.map(Ue=>Ae.get(Ue)).filter(Ue=>Ue!==void 0);try{return await b()(g(`/media/model/${ge}/${ke}/reorder`),{method:"POST",body:{media_uuids:be,collection:Ce}}),!0}catch(Ue){throw d.value=Ee,c.value=Ue instanceof Error?Ue.message:"Failed to reorder media",new Error(c.value)}finally{u.value=!1}}async function R(ge,ke,be={}){var mt,Ct;const Ce=b(),Ee=$a.apiBaseUrl||"/api/v1";let Ae=yu(ke.documentId)?ke.documentId:yu((mt=ke.document)==null?void 0:mt.id)?ke.document.id:null,Ue=ke.documentRevisionId??null,ot=typeof ke.documentRevisionNumber=="number"?ke.documentRevisionNumber:typeof((Ct=ke.document)==null?void 0:Ct.revision)=="number"?ke.document.revision:null;if(ke.document){const Se=await Ce(`${Ee}/media/${ge}/editor-documents/materialize`,{method:"POST",body:{document_id:Ae,base_document_revision:ot,document:ke.document}});Ae=Se.document_id,Ue=Se.document_revision_id,ot=Se.document_revision_number}if(ke.document&&Ae&&Ue&&typeof ot=="number"){const Se=new FormData,Re=(ke.mimeType||ke.blob.type||"image/png")==="image/jpeg"?"jpg":"png";Se.append("flattened_file",ke.blob,`edited.${Re}`),Se.append("document_id",Ae),Se.append("document_revision_id",Ue),Se.append("expected_document_revision",String(ot)),Se.append("output_mode",be.asVariant?"save-as-variant":"save-as-new");const at=await Ce(`${Ee}/media/${ge}/editor-documents/save`,{method:"POST",body:Se});if(at.media)return at.media;throw new Error("Unexpected response from layered editor save endpoint")}const it=new FormData,gt=(ke.mimeType||ke.blob.type||"image/png")==="image/jpeg"?"jpg":"png";it.append("image_file",ke.blob,`edited.${gt}`);const St=xv.serializeEditorState(ke.state);St&&it.append("editor_state",St),it.append("save_as_new","true"),be.asVariant&&it.append("as_variant","true"),be.name!==void 0&&it.append("name",be.name);const ct=await Ce(`${Ee}/editor/${ge}/save`,{method:"POST",body:it});if("media"in ct&&ct.media)return ct.media;if("status_url"in ct&&ct.status_url)return O(Ce,Tv(ct.status_url,Ee),be.pollTimeout??6e4);throw new Error("Unexpected response from editor save endpoint")}async function O(ge,ke,be){const Ce=Date.now(),Ee=2e3;for(;Date.now()-Ce<be;){await new Promise(Ue=>setTimeout(Ue,Ee));const Ae=await ge(ke);if(Ae.status==="completed"&&Ae.media)return Ae.media;if(Ae.status==="failed")throw new Error(Ae.error??"Image processing failed")}throw new Error("Image processing timed out")}function K(ge,ke,be){s.value=be!==void 0?{type:ge,uuid:ke,collection:be}:{type:ge,uuid:ke},h.value[`${ge}-${ke}`]={timestamp:Date.now()}}function se(){s.value={type:null,uuid:null},d.value=[],c.value=null}async function xe(){if(!s.value.type||!s.value.uuid)return;const ge=await j(s.value.type,s.value.uuid,s.value.collection||"images");d.value=ge||[]}function ue(){a.value.forEach(ge=>f.value.add(ge.uuid))}function le(){f.value.clear()}function H(ge){f.value.has(ge)?f.value.delete(ge):f.value.add(ge)}function y(ge){return f.value.has(ge)}function A(){return Array.from(m.value.values()).some(ge=>ge.status==="uploading")}function W(ge){return m.value.get(ge)||p.value.get(ge)}function q(){return[...Array.from(m.value.values()),...Array.from(p.value.values())]}async function de(){const ge=Array.from(f.value);let ke=0;for(const be of ge)try{await M(be),ke++}catch{}return le(),ke}function Pe(ge,ke){var be;return ke&&((be=ge.conversion_urls)!=null&&be[ke])?ge.conversion_urls[ke]||"":ge.original_url||ge.url||""}return{items:a,collections:n,loading:t,error:o,currentPage:i,totalPages:r,itemsPerPage:l,isAdmin:w,modelContext:s,modelMedia:d,isLoadingModelMedia:u,modelMediaError:c,selectedItems:f,uploadProgress:m,uploadQueue:p,cachedResponses:h,fetchMedia:$,uploadFile:C,deleteMedia:M,updateMedia:_,clearCache:V,fetchCollections:L,fetchModelMedia:j,attachMedia:B,detachMedia:U,reorderMedia:S,saveEditedImage:R,setModelContext:K,clearModelContext:se,refreshModelMedia:xe,selectAllItems:ue,clearSelection:le,toggleSelection:H,isSelected:y,deleteSelectedItems:de,getHttpClient:b,getApiUrl:g,getEditorApiUrl:D,hasActiveUploads:A,getUploadProgress:W,getAllUploadProgress:q,getMediaUrl:Pe}}),cm=()=>(($a.apiScope!=="admin"||$a.isAdmin!==!0)&&ai({...$a,apiScope:"admin",isAdmin:!0}),ja());function Mv(a,n){try{let t=Ea.getFilter(a);if(t||(Ea.registerCorePixiFilters(),t=Ea.getFilter(a)),!t){try{const r=Ea.getAllFilters()}catch{}return null}const o={...t.defaultParams,...n};return t.createFilter(o)}catch{return null}}const ni=a=>a!==null&&typeof a=="object"&&!Array.isArray(a)?a:null,wu=a=>{if(typeof a=="number"&&Number.isFinite(a))return a;if(typeof a=="string"){const n=Number(a);return Number.isFinite(n)?n:null}return null},Ja=(a,n,t)=>Math.min(t,Math.max(n,a)),Ka=a=>Math.abs(a-Math.round(a))<.001?String(Math.round(a)):a.toFixed(2),pl=a=>{const n=typeof a.type=="string"?a.type.trim():"";if(n!=="")return n;const t=typeof a.filterId=="string"?a.filterId.trim():"";return t!==""?t:null},Ss=a=>{const n=ni(a);if(!n)return!1;const t=["type","filterId","id","name"];for(const i of t){const r=n[i];if(typeof r=="string"&&r.trim()!=="")return!0}const o=ni(n.params);return!!(o&&Object.keys(o).length>0)},Va=(a,n)=>{for(const o of n){const i=wu(a[o]);if(i!==null)return i}const t=ni(a.params);if(!t)return null;for(const o of n){const i=wu(t[o]);if(i!==null)return i}return null},pd=a=>{if(!a)return[];const n=new Map,t=(r,l)=>{const s=ni(r);if(!s)return;const d=pl(s);if(!d)return;const u=d.toLowerCase();!l&&n.has(u)||n.set(u,s)},o=Array.isArray(a.timeline)?ni(a.timeline[0]):null,i=o==null?void 0:o.filters;if(Array.isArray(i))for(const r of i)t(r,!0);if(Array.isArray(a.filters))for(const r of a.filters)t(r,!1);return Array.from(n.values())},$v=a=>{if(!a)return!1;const n=Array.isArray(a.timeline)?ni(a.timeline[0]):null,t=n==null?void 0:n.filters;return Array.isArray(t)&&t.some(Ss)?!0:Array.isArray(a.filters)&&a.filters.some(Ss)},Iv=a=>{const t=pd(a).find(i=>{var r;return((r=pl(i))==null?void 0:r.toLowerCase())==="noise"});if(!t)return 0;const o=Va(t,["noise","value","amount","intensity"])??.2;return Ja(o<=1?o:o/100,0,1)},mm=a=>{const n=pl(a);if(!n)return null;const t=n.toLowerCase();if(t==="brightness"){const o=Va(a,["value","brightness","amount"]);if(o===null)return null;const i=o>10?o:o>=-1&&o<=1?(o+1)*100:o*100;return`brightness(${Ka(Ja(i,0,300))}%)`}if(t==="contrast"){const o=Va(a,["value","contrast","amount"]);if(o===null)return null;const i=o>10?o:o*100;return`contrast(${Ka(Ja(i,0,400))}%)`}if(t==="saturation"||t==="saturate"){const o=Va(a,["value","saturation","amount"]);if(o===null)return null;const i=o>10?o:o*100;return`saturate(${Ka(Ja(i,0,400))}%)`}if(t==="hue"||t==="hue-rotate"){const o=Va(a,["degrees","value","hue"]),i=Va(a,["radians"]),r=o??(i!==null?i*180/Math.PI:null);return r===null||Math.abs(r)<.01?null:`hue-rotate(${Ka(r)}deg)`}if(t==="blur"||t==="softfocus"){const o=Va(a,["radius","sigma","value","amount"])??0;return o>.01?`blur(${Ka(Ja(o,0,30))}px)`:null}if(t==="grayscale"){const o=Va(a,["amount","value","intensity"])??100,i=o<=1?o*100:o;return i>.01?`grayscale(${Ka(Ja(i,0,100))}%)`:null}if(t==="sepia"){const o=Va(a,["amount","value","intensity"])??100,i=o<=1?o*100:o;return i>.01?`sepia(${Ka(Ja(i,0,100))}%)`:null}if(t==="invert"){const o=Va(a,["amount","value","intensity"])??100,i=o<=1?o*100:o;return i>.01?`invert(${Ka(Ja(i,0,100))}%)`:null}if(t==="cinematic")return"contrast(120%) brightness(95%) saturate(85%)";if(t==="dramatic")return"contrast(140%) brightness(90%) saturate(110%) sepia(10%)";if(t==="dreamy")return"blur(0.5px) brightness(105%) saturate(90%) contrast(95%)";if(t==="blackandwhite")return"grayscale(100%) contrast(120%)";if(t==="vintage")return"sepia(30%) saturate(140%) contrast(110%)";if(t==="adjustment"){const o=[],i=Va(a,["brightness"]),r=Va(a,["contrast"]),l=Va(a,["saturation"]),s=Va(a,["gamma"]);return i!==null&&Math.abs(i-1)>.01&&o.push(`brightness(${Ka(Ja(i*100,0,500))}%)`),r!==null&&Math.abs(r-1)>.01&&o.push(`contrast(${Ka(Ja(r*100,0,500))}%)`),l!==null&&Math.abs(l-1)>.01&&o.push(`saturate(${Ka(Ja(l*100,0,500))}%)`),s!==null&&Math.abs(s-1)>.05&&o.push(`brightness(${Ka(Ja(s*100,10,500))}%)`),o.length>0?o.join(" "):null}return null},Dv=a=>{const n=pd(a);if(n.length===0)return"";const t=[];for(const o of n){const i=mm(o);i!==null&&i!==""&&t.push(i)}return t.join(" ")},Fv=78e5,Av=e.defineComponent({__name:"ImageEditor",props:{initialImage:{},initialState:{default:null},initialDocument:{default:null},initialDocumentId:{default:null},initialDocumentRevisionId:{default:null},initialDocumentRevisionNumber:{default:null},sessionKey:{default:0},theme:{default:"auto"},cropShape:{default:"square"},preset:{},editorVersion:{default:"v2"},backgroundRemoval:{default:null},backgroundReplacement:{default:null},primaryColor:{default:"#3880ff"},secondaryColor:{default:"#5260ff"},saveButtonColor:{default:"#3880ff"},downloadButtonColor:{default:"#2dd36f"}},emits:["save","cancel","error"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null);let r=null,l=null;function s(h){return typeof h=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(h)}function d(){const h={state:t.initialState??null,sessionKey:t.sessionKey};return t.initialDocument&&(h.document=t.initialDocument,h.documentId=t.initialDocumentId,h.documentRevisionId=t.initialDocumentRevisionId,h.documentRevisionNumber=t.initialDocumentRevisionNumber),h}async function u(){var h,k,E;try{if(!r){o("error",new Error("Editor not initialized"));return}const w=await((h=r.exportBlob)==null?void 0:h.call(r,"png",.92,{maxPixels:Fv}));if(!w){o("error",new Error("Failed to export image — the image could not be processed"));return}const b=r.getSerializableState(),g={blob:w.blob,mimeType:w.blob.type||"image/png",dimensions:{width:w.width,height:w.height},state:b},D=((k=r.getSerializableDocument)==null?void 0:k.call(r))??null;if(D){const T=((E=r.getEditorDocumentBinding)==null?void 0:E.call(r))??null;g.document=D,g.documentId=(T==null?void 0:T.documentId)??(s(D.id)?D.id:null),g.documentRevisionId=(T==null?void 0:T.documentRevisionId)??null,g.documentRevisionNumber=(T==null?void 0:T.documentRevisionNumber)??D.revision??null}o("save",g)}catch(w){o("error",w instanceof Error?w:new Error("Failed to export image"))}}function c(){o("cancel")}function m(h){if(h instanceof Error)return h;if(h!==null&&typeof h=="object"&&"error"in h){const k=h.error;if(k instanceof Error)return k;if(typeof k=="string"&&k.trim()!=="")return new Error(k)}return typeof h=="string"&&h.trim()!==""?new Error(h):new Error("Failed to load image")}function p(h){o("error",m(h))}function f(){if(!i.value||r)return;window.PIXI=aa,Ea.initializeFilterRegistry();const h={theme:t.theme};t.backgroundRemoval&&(h.backgroundRemoval=t.backgroundRemoval),t.backgroundReplacement&&(h.backgroundReplacement=t.backgroundReplacement),t.preset&&(h.preset=t.preset),t.preset?t.cropShape==="circle"&&(h.cropShape="circle",h.initialAspectRatio="1:1",h.initialMode="crop"):(h.cropShape=t.cropShape==="circle"?"circle":"free",h.initialAspectRatio=t.cropShape==="circle"?"1:1":"free",h.initialMode=t.cropShape==="circle"?"crop":"adjust");const k=t.editorVersion==="v2"?bu.VanillaImageEditorV2:bu.VanillaImageEditor,E=new k(i.value,h);r=E,E.setFilterRegistry({getAllFilters:Ea.getAllFilters,getFilter:Ea.getFilter,getFiltersByCategory:Ea.getFiltersByCategory}),E.save=function(){u()},E.on("cancel",c),E.on("error",p),t.initialImage&&E.loadImage(t.initialImage,d())}e.onMounted(()=>{i.value&&(i.value.clientWidth>0?f():(l=new ResizeObserver(h=>{const k=h[0];k&&k.contentRect.width>0&&!r&&(f(),l==null||l.disconnect(),l=null)}),l.observe(i.value)))});const v=()=>{!r||!t.initialImage||r.loadImage(t.initialImage,d())};return e.watch(()=>t.initialImage,(h,k)=>{!r||!h||h===k||v()}),e.watch(()=>t.sessionKey,(h,k)=>{h!==k&&v()}),e.watch(()=>t.initialState,(h,k)=>{h!==k&&v()}),e.watch(()=>[t.initialDocument,t.initialDocumentId,t.initialDocumentRevisionId,t.initialDocumentRevisionNumber],(h,k)=>{h!==k&&v()}),e.onUnmounted(()=>{l==null||l.disconnect(),l=null,r&&(r.destroy(),r=null)}),(h,k)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:i,class:"vanilla-editor-wrapper","data-testid":"vanilla-image-editor"},null,512))}}),Ie=(a,n)=>{const t=a.__vccOpts||a;for(const[o,i]of n)t[o]=i;return t},pm=Ie(Av,[["__scopeId","data-v-8ab74f83"]]),Rv={class:"editor-modal-panel"},Lv={class:"editor-fill"},Pv=e.defineComponent({__name:"ImageEditorModal",props:{modelValue:{type:Boolean,default:!1},initialImage:{},initialState:{default:null},initialDocument:{default:null},initialDocumentId:{default:null},initialDocumentRevisionId:{default:null},initialDocumentRevisionNumber:{default:null},sessionKey:{default:0},acceptedFormats:{default:"image/jpeg,image/png,image/webp,image/gif"},maxFileSize:{default:10},theme:{default:"auto"},cropShape:{default:"square"},preset:{},editorVersion:{default:"v2"},backgroundRemoval:{default:null},backgroundReplacement:{default:null},primaryColor:{default:"#3880ff"},secondaryColor:{default:"#5260ff"},saveButtonColor:{default:"#3880ff"},downloadButtonColor:{default:"#2dd36f"},saveHandler:{}},emits:["update:modelValue","save","cancel","error"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r=e.ref(t.modelValue),l=e.ref(!1),s=e.ref(null),d=h=>{o("error",h)},u=()=>{e.nextTick(()=>{if(i.value){const h=i.value.querySelector("button:not([disabled]), [href], input:not([disabled])");h&&h.focus()}})};e.watch(()=>t.modelValue,h=>{r.value=h,h&&(s.value=document.activeElement,u())},{immediate:!0});const c=async h=>{try{if(l.value=!0,t.saveHandler){await t.saveHandler(h);return}o("save",h)}catch(k){d(k instanceof Error?k:new Error("Failed to save image"))}finally{l.value=!1}},m=()=>{o("cancel"),f()},p=()=>{l.value||f()},f=()=>{r.value=!1,o("update:modelValue",!1),s.value&&s.value instanceof HTMLElement&&(s.value.focus(),s.value=null)},v=h=>{if(h.key==="Escape"&&r.value&&!l.value){f();return}if(h.key==="Tab"&&r.value&&i.value){const k=i.value.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])');if(k.length===0)return;const E=k[0],w=k[k.length-1];h.shiftKey&&document.activeElement===E?(h.preventDefault(),w.focus()):!h.shiftKey&&document.activeElement===w&&(h.preventDefault(),E.focus())}};return e.onMounted(()=>{document.addEventListener("keydown",v)}),e.onBeforeUnmount(()=>{document.removeEventListener("keydown",v)}),(h,k)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"overlayRef",ref:i,role:"dialog","aria-modal":"true","aria-label":"Image editor",class:"editor-modal-overlay","data-testid":"image-editor-modal",onKeydown:e.withKeys(p,["escape"])},[e.createElementVNode("div",{class:"editor-modal-backdrop",onClick:p}),e.createElementVNode("div",Rv,[e.createElementVNode("div",Lv,[e.createVNode(pm,{"initial-image":h.initialImage,"initial-state":h.initialState,"initial-document":h.initialDocument,"initial-document-id":h.initialDocumentId,"initial-document-revision-id":h.initialDocumentRevisionId,"initial-document-revision-number":h.initialDocumentRevisionNumber,"session-key":h.sessionKey,theme:h.theme,"crop-shape":h.cropShape,preset:h.preset,"editor-version":h.editorVersion,"background-removal":h.backgroundRemoval,"background-replacement":h.backgroundReplacement,"primary-color":h.primaryColor,"secondary-color":h.secondaryColor,"save-button-color":h.saveButtonColor,"download-button-color":h.downloadButtonColor,onSave:c,onCancel:m,onError:d},null,8,["initial-image","initial-state","initial-document","initial-document-id","initial-document-revision-id","initial-document-revision-number","session-key","theme","crop-shape","preset","editor-version","background-removal","background-replacement","primary-color","secondary-color","save-button-color","download-button-color"])])])],544)):e.createCommentVNode("",!0)]))}}),fm=Ie(Pv,[["__scopeId","data-v-bd4e671f"]]),Uv={class:"media-workspace"},Ov={class:"media-workspace-toolbar"},zv={class:"media-workspace-label"},jv=["value"],Wv={class:"media-workspace-grid"},Zv=["onClick"],Hv=e.defineComponent({__name:"MediaWorkspace",props:{apiScope:{},subScopes:{},initialScopeId:{}},emits:["scope-change","update:media","upload","preview"],setup(a,{emit:n}){var m;const t=a,o=n,i=ja(),r=e.ref(t.initialScopeId??((m=t.subScopes[0])==null?void 0:m.id)??""),l=e.computed(()=>t.subScopes),s=e.computed(()=>l.value.find(p=>p.id===r.value));let d=null;function u(){d&&(d(),d=null),t.apiScope&&(d=um({apiScope:t.apiScope,isAdmin:t.apiScope==="admin"}))}async function c(){var f;const p={};(f=s.value)!=null&&f.collection&&(p.collection=s.value.collection),await i.fetchMedia(1,p),o("update:media",[...i.items])}return e.watch(()=>t.initialScopeId,p=>{p&&p!==r.value&&(r.value=p)}),e.watch(()=>t.subScopes,p=>{if(p.length===0){r.value="";return}p.some(f=>f.id===r.value)||(r.value=p[0].id)},{deep:!0}),e.watch(()=>t.apiScope,()=>{u(),c()}),e.watch(r,p=>{p&&(o("scope-change",p),c())}),e.onMounted(()=>{u(),c()}),e.onUnmounted(()=>{d&&(d(),d=null)}),(p,f)=>(e.openBlock(),e.createElementBlock("div",Uv,[e.createElementVNode("div",Ov,[e.createElementVNode("label",zv,[f[2]||(f[2]=e.createElementVNode("span",{class:"media-workspace-label-text"},"Scope",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":f[0]||(f[0]=v=>r.value=v),"data-testid":"scope-select",class:"media-workspace-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,v=>(e.openBlock(),e.createElementBlock("option",{key:v.id,value:v.id},e.toDisplayString(v.label),9,jv))),128))],512),[[e.vModelSelect,r.value]])]),e.createElementVNode("button",{type:"button",class:"media-workspace-upload","data-testid":"upload-button",onClick:f[1]||(f[1]=v=>o("upload"))}," Upload ")]),e.createElementVNode("div",Wv,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i).items,v=>(e.openBlock(),e.createElementBlock("button",{key:v.uuid,type:"button",class:"media-workspace-item","data-testid":"media-item",onClick:h=>o("preview",v)},e.toDisplayString(v.file_name),9,Zv))),128))])]))}}),Gv=Ie(Hv,[["__scopeId","data-v-895f26fe"]]),Xv={class:"managed-media-gallery"},Kv={class:"gallery-grid"},Jv=e.defineComponent({__name:"ManagedMediaGallery",props:{media:{},selectable:{type:Boolean},multiple:{type:Boolean}},emits:["select","remove"],setup(a){return(n,t)=>(e.openBlock(),e.createElementBlock("div",Xv,[e.createElementVNode("div",Kv,[e.renderSlot(n.$slots,"default",{},void 0,!0)])]))}}),qv=Ie(Jv,[["__scopeId","data-v-10a9b8c5"]]),Yv=["data-testid","aria-label"],Qv={class:"mediables-cover-focal-picker__header"},eh={class:"mediables-cover-focal-picker__title"},th={class:"mediables-cover-focal-picker__value","aria-live":"polite"},ah=["disabled","data-testid"],nh=["data-testid","aria-label"],oh=["src","alt"],ih=["disabled","data-testid","aria-label"],rh=e.defineComponent({__name:"CoverFocalPointPicker",props:{imageUrl:{},focalPoint:{default:()=>({x:.5,y:.5})},alt:{default:"Cover photo"},aspectRatio:{default:3},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},title:{default:"Cover focus"},resetButtonLabel:{default:"Reset"},testIdPrefix:{default:"cover-photo"}},emits:["preview","commit"],setup(a,{emit:n}){const t={x:.5,y:.5},o=a,i=n,r=e.ref(null),l=e.ref(h(o.focalPoint)),s=e.ref(!1),d=e.computed(()=>o.disabled||o.readonly),u=e.computed(()=>Number.isFinite(o.aspectRatio)&&o.aspectRatio>0?o.aspectRatio:3),c=e.computed(()=>({"--mediables-cover-focal-aspect-ratio":String(u.value)})),m=e.computed(()=>`${Math.round(l.value.x*100)}% ${Math.round(l.value.y*100)}%`),p=e.computed(()=>`x ${Math.round(l.value.x*100)}%, y ${Math.round(l.value.y*100)}%`),f=e.computed(()=>l.value.x===.5&&l.value.y===.5);e.watch(()=>o.focalPoint,$=>{s.value||(l.value=h($))},{deep:!0});function v($){return $<0?0:$>1?1:$}function h($){const C=typeof($==null?void 0:$.x)=="number"&&Number.isFinite($.x)?v($.x):t.x,M=typeof($==null?void 0:$.y)=="number"&&Number.isFinite($.y)?v($.y):t.y;return{x:C,y:M}}function k($,C=!1){if(d.value)return;const M=h($);l.value=M,i("preview",M),C&&i("commit",M)}function E($){const C=r.value;if(C===null)return null;const M=C.getBoundingClientRect();return M.width<=0||M.height<=0?null:{x:v(($.clientX-M.left)/M.width),y:v(($.clientY-M.top)/M.height)}}function w($){$.button!==0||d.value||b($)}function b($){if($.button!==0||d.value)return;$.preventDefault(),s.value=!0;const C=E($);C!==null&&k(C),window.addEventListener("pointermove",g),window.addEventListener("pointerup",D,{once:!0}),window.addEventListener("pointercancel",T,{once:!0})}function g($){const C=E($);C!==null&&k(C)}function D($){const C=E($);C!==null?k(C,!0):i("commit",l.value),F()}function T(){F()}function F(){s.value=!1,window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",D),window.removeEventListener("pointercancel",T)}function V($){if(d.value)return;const C=$.shiftKey?.1:.01;let M=null;$.key==="ArrowLeft"?M={...l.value,x:l.value.x-C}:$.key==="ArrowRight"?M={...l.value,x:l.value.x+C}:$.key==="ArrowUp"?M={...l.value,y:l.value.y-C}:$.key==="ArrowDown"?M={...l.value,y:l.value.y+C}:$.key==="Home"?M=$.shiftKey?{...l.value,y:0}:{...l.value,x:0}:$.key==="End"&&(M=$.shiftKey?{...l.value,y:1}:{...l.value,x:1}),M!==null&&($.preventDefault(),k(M,!0))}function I(){k(t,!0)}return e.onBeforeUnmount(F),($,C)=>(e.openBlock(),e.createElementBlock("section",{class:"mediables-cover-focal-picker","data-testid":`${$.testIdPrefix}-focal-picker`,"aria-label":$.title},[e.createElementVNode("div",Qv,[e.createElementVNode("div",null,[e.createElementVNode("h3",eh,e.toDisplayString($.title),1),e.createElementVNode("p",th,e.toDisplayString(p.value),1)]),e.createElementVNode("button",{type:"button",class:"mediables-cover-focal-picker__reset",disabled:d.value||f.value,"data-testid":`${$.testIdPrefix}-focal-reset`,onClick:I},e.toDisplayString($.resetButtonLabel),9,ah)]),e.createElementVNode("div",{ref_key:"previewRef",ref:r,class:"mediables-cover-focal-picker__preview",style:e.normalizeStyle(c.value),"data-testid":`${$.testIdPrefix}-focal-preview`,"aria-label":`${$.title} preview`,onPointerdown:w},[e.createElementVNode("img",{src:$.imageUrl,alt:$.alt,class:"mediables-cover-focal-picker__image",style:e.normalizeStyle({objectPosition:m.value}),draggable:"false"},null,12,oh),C[0]||(C[0]=e.createElementVNode("span",{class:"mediables-cover-focal-picker__crosshair","aria-hidden":"true"},null,-1)),e.createElementVNode("button",{type:"button",class:"mediables-cover-focal-picker__handle",style:e.normalizeStyle({left:`${l.value.x*100}%`,top:`${l.value.y*100}%`}),disabled:d.value,"data-testid":`${$.testIdPrefix}-focal-handle`,"aria-label":`Cover focal point ${p.value}. Use arrow keys to move.`,onPointerdown:e.withModifiers(b,["stop"]),onKeydown:V},null,44,ih)],44,nh)],8,Yv))}}),vm=Ie(rh,[["__scopeId","data-v-4caa00fa"]]),lh=["data-testid"],sh={class:"mediables-cover-uploader__header"},dh={class:"mediables-cover-uploader__label"},uh={key:0,class:"mediables-cover-uploader__helper"},ch={key:0,class:"mediables-cover-uploader__actions"},mh=["disabled","data-testid"],ph=["disabled","data-testid"],fh=["accept","disabled","data-testid"],vh=["data-testid"],hh={class:"mediables-cover-uploader__empty-copy"},gh=["disabled","data-testid"],bh={key:2,class:"mediables-cover-uploader__uploading"},yh=["aria-valuenow","aria-label","data-testid"],wh=["data-testid"],kh=["data-testid"],_h=e.defineComponent({__name:"CoverPhotoUploader",props:{modelValue:{default:null},uploadFile:{},aspectRatio:{default:3},acceptedMimeTypes:{default:()=>["image/jpeg","image/png","image/webp","image/gif"]},maxFileSizeMb:{default:12},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},testIdPrefix:{default:"cover-photo"},label:{default:"Cover photo"},helperText:{default:"Upload an image and choose which part stays visible."},emptyTitle:{default:"No cover photo"},emptyDescription:{default:"Upload an image to use as the cover."},uploadButtonLabel:{default:"Upload cover photo"},replaceButtonLabel:{default:"Replace"},removeButtonLabel:{default:"Remove"},resetButtonLabel:{default:"Reset focus"},cancelButtonLabel:{default:"Cancel upload"},focusTitle:{default:"Cover focus"},alt:{default:"Cover photo preview"}},emits:["update:modelValue","upload-start","upload-progress","upload-error","remove","focal-point-preview","focal-point-commit"],setup(a,{emit:n}){const t={x:.5,y:.5},o=a,i=n,r=e.ref(null),l=e.ref(!1),s=e.ref(0),d=e.ref(null);let u=null;const c=e.computed(()=>o.disabled||l.value),m=e.computed(()=>Number.isFinite(o.aspectRatio)&&o.aspectRatio>0?o.aspectRatio:3),p=e.computed(()=>({"--mediables-cover-uploader-aspect-ratio":String(m.value)})),f=e.computed(()=>{var B,U,S;return{mediaId:E((B=o.modelValue)==null?void 0:B.mediaId),imageUrl:E((U=o.modelValue)==null?void 0:U.imageUrl),focalPoint:b((S=o.modelValue)==null?void 0:S.focalPoint)}}),v=e.computed(()=>f.value.imageUrl!==null),h=e.computed(()=>o.acceptedMimeTypes.join(",")),k=e.computed(()=>`Uploading cover photo ${s.value}%`);function E(B){if(typeof B!="string")return null;const U=B.trim();return U.length>0?U:null}function w(B){return B<0?0:B>1?1:B}function b(B){const U=typeof(B==null?void 0:B.x)=="number"&&Number.isFinite(B.x)?w(B.x):t.x,S=typeof(B==null?void 0:B.y)=="number"&&Number.isFinite(B.y)?w(B.y):t.y;return{x:U,y:S}}function g(B){return Number.isFinite(B)?Math.round(Math.min(100,Math.max(0,B))):0}function D(){var B;c.value||o.readonly||(B=r.value)==null||B.click()}function T(){r.value!==null&&(r.value.value="")}function F(B){if(!o.acceptedMimeTypes.includes(B.type))return"Choose a JPEG, PNG, WebP, or GIF image.";const U=o.maxFileSizeMb*1024*1024;return B.size>U?`Choose an image ${o.maxFileSizeMb} MB or smaller.`:null}function V(B){d.value=B}async function I(B){var R;const S=(R=B.target.files)==null?void 0:R.item(0);S&&await $(S)}async function $(B){if(c.value||o.readonly){T();return}const U=F(B);if(U!==null){V(U),T();return}C();const S=new AbortController;u=S,l.value=!0,s.value=0,V(null),i("upload-start",B);try{const R=await o.uploadFile(B,{signal:S.signal,onProgress:O=>{s.value=g(O),i("upload-progress",s.value)}});if(S.signal.aborted)return;i("update:modelValue",{mediaId:R.mediaId,imageUrl:R.imageUrl,focalPoint:t}),s.value=100}catch(R){if(S.signal.aborted)return;const O=R instanceof Error?R:new Error("Cover photo upload failed.");V(O.message||"Cover photo upload failed."),i("upload-error",{file:B,error:O})}finally{u===S&&(u=null),l.value=!1,T()}}function C(){u==null||u.abort(),u=null,l.value=!1,s.value=0}function M(B){i("update:modelValue",{mediaId:E(B.mediaId),imageUrl:E(B.imageUrl),focalPoint:b(B.focalPoint)})}function _(B){i("focal-point-preview",b(B))}function L(B){const U=b(B);M({...f.value,focalPoint:U}),i("focal-point-commit",U)}function j(){c.value||o.readonly||(C(),V(null),i("remove"),M({mediaId:null,imageUrl:null,focalPoint:t}))}return e.onBeforeUnmount(C),(B,U)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["mediables-cover-uploader",{"mediables-cover-uploader--disabled":B.disabled,"mediables-cover-uploader--readonly":B.readonly}]),"data-testid":`${B.testIdPrefix}-uploader`},[e.createElementVNode("div",sh,[e.createElementVNode("div",null,[e.createElementVNode("h2",dh,e.toDisplayString(B.label),1),B.helperText?(e.openBlock(),e.createElementBlock("p",uh,e.toDisplayString(B.helperText),1)):e.createCommentVNode("",!0)]),v.value?(e.openBlock(),e.createElementBlock("div",ch,[B.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mediables-cover-uploader__button",disabled:c.value,"data-testid":`${B.testIdPrefix}-replace-button`,onClick:D},e.toDisplayString(B.replaceButtonLabel),9,mh)),B.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"mediables-cover-uploader__button mediables-cover-uploader__button--danger",disabled:c.value,"data-testid":`${B.testIdPrefix}-remove-button`,onClick:j},e.toDisplayString(B.removeButtonLabel),9,ph))])):e.createCommentVNode("",!0)]),e.createElementVNode("input",{ref_key:"fileInputRef",ref:r,class:"mediables-cover-uploader__input",type:"file",accept:h.value,disabled:c.value||B.readonly,"data-testid":`${B.testIdPrefix}-input`,onChange:I},null,40,fh),v.value?(e.openBlock(),e.createBlock(vm,{key:1,"image-url":f.value.imageUrl,"focal-point":f.value.focalPoint,alt:B.alt,"aspect-ratio":B.aspectRatio,disabled:c.value,readonly:B.readonly,title:B.focusTitle,"reset-button-label":B.resetButtonLabel,"test-id-prefix":B.testIdPrefix,onPreview:_,onCommit:L},null,8,["image-url","focal-point","alt","aspect-ratio","disabled","readonly","title","reset-button-label","test-id-prefix"])):(e.openBlock(),e.createElementBlock("div",{key:0,class:"mediables-cover-uploader__empty",style:e.normalizeStyle(p.value),"data-testid":`${B.testIdPrefix}-empty`},[e.createElementVNode("div",hh,[e.createElementVNode("strong",null,e.toDisplayString(B.emptyTitle),1),e.createElementVNode("span",null,e.toDisplayString(B.emptyDescription),1)]),B.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mediables-cover-uploader__primary",disabled:c.value,"data-testid":`${B.testIdPrefix}-upload-button`,onClick:D},e.toDisplayString(B.uploadButtonLabel),9,gh))],12,vh)),l.value?(e.openBlock(),e.createElementBlock("div",bh,[e.createElementVNode("div",{class:"mediables-cover-uploader__progress",role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":s.value,"aria-label":k.value,"data-testid":`${B.testIdPrefix}-progress`},[e.createElementVNode("span",{style:e.normalizeStyle({width:`${s.value}%`})},null,4)],8,yh),e.createElementVNode("button",{type:"button",class:"mediables-cover-uploader__button","data-testid":`${B.testIdPrefix}-cancel-upload-button`,onClick:C},e.toDisplayString(B.cancelButtonLabel),9,wh)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("p",{key:3,class:"mediables-cover-uploader__error",role:"alert","data-testid":`${B.testIdPrefix}-error`},e.toDisplayString(d.value),9,kh)):e.createCommentVNode("",!0)],10,lh))}}),Eh=Ie(_h,[["__scopeId","data-v-9f124997"]]),Dr="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 176v160M336 256H176' class='ionicon-fill-none ionicon-stroke-width'/></svg>",fd="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M256 112v288M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Sh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm0 319.91a20 20 0 1120-20 20 20 0 01-20 20zm21.72-201.15l-5.74 122a16 16 0 01-32 0l-5.74-121.94v-.05a21.74 21.74 0 1143.44 0z'/></svg>",vd="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M250.26 166.05L256 288l5.73-121.95a5.74 5.74 0 00-5.79-6h0a5.74 5.74 0 00-5.68 6z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 367.91a20 20 0 1120-20 20 20 0 01-20 20z'/></svg>",xh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>",Ch="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M268 112l144 144-144 144M392 256H100' class='ionicon-fill-none'/></svg>",ku="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M448 256L272 88v96C103.57 184 64 304.77 64 424c48.61-62.24 91.6-96 208-96v96z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",_u="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M240 424v-96c116.4 0 159.39 33.76 208 96 0-119.23-39.57-240-208-240V88L64 256z' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Mi="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M452.37 59.63h0a40.49 40.49 0 00-57.26 0L184 294.74c23.08 4.7 46.12 27.29 49.26 49.26l219.11-227.11a40.49 40.49 0 000-57.26zM138 336c-29.88 0-54 24.5-54 54.86 0 23.95-20.88 36.57-36 36.57C64.56 449.74 92.82 464 120 464c39.78 0 72-32.73 72-73.14 0-30.36-24.12-54.86-54-54.86z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Vh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M350.54 148.68l-26.62-42.06C318.31 100.08 310.62 96 302 96h-92c-8.62 0-16.31 4.08-21.92 10.62l-26.62 42.06C155.85 155.23 148.62 160 140 160H80a32 32 0 00-32 32v192a32 32 0 0032 32h352a32 32 0 0032-32V192a32 32 0 00-32-32h-59c-8.65 0-16.85-4.77-22.46-11.32z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='272' r='80' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M124 158v-22h-24v22' class='ionicon-fill-none ionicon-stroke-width'/></svg>",hm="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm108.25 138.29l-134.4 160a16 16 0 01-12 5.71h-.27a16 16 0 01-11.89-5.3l-57.6-64a16 16 0 1123.78-21.4l45.29 50.32 122.59-145.91a16 16 0 0124.5 20.58z'/></svg>",gm="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M416 128L192 384l-96-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Eu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M328 112L184 256l144 144' class='ionicon-fill-none'/></svg>",Nh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 184l144 144 144-144' class='ionicon-fill-none'/></svg>",Th="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144' class='ionicon-fill-none'/></svg>",Su="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144' class='ionicon-fill-none'/></svg>",Fo="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M368 368L144 144M368 144L144 368' class='ionicon-fill-none ionicon-stroke-width'/></svg>",xu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M320 367.79h76c55 0 100-29.21 100-83.6s-53-81.47-96-83.6c-8.89-85.06-71-136.8-144-136.8-69 0-113.44 45.79-128 91.2-60 5.7-112 43.88-112 106.4s54 106.4 120 106.4h56' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M320 255.79l-64-64-64 64M256 448.21V207.79' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Bh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='256' cy='184' r='120' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='344' cy='328' r='120' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='168' cy='328' r='120' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",no="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M430.11 347.9c-6.6-6.1-16.3-7.6-24.6-9-11.5-1.9-15.9-4-22.6-10-14.3-12.7-14.3-31.1 0-43.8l30.3-26.9c46.4-41 46.4-108.2 0-149.2-34.2-30.1-80.1-45-127.8-45-55.7 0-113.9 20.3-158.8 60.1-83.5 73.8-83.5 194.7 0 268.5 41.5 36.7 97.5 55 152.9 55.4h1.7c55.4 0 110-17.9 148.8-52.4 14.4-12.7 11.99-36.6.1-47.7z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='144' cy='208' r='32'/><circle cx='152' cy='311' r='32'/><circle cx='224' cy='144' r='32'/><circle cx='256' cy='367' r='48'/><circle cx='328' cy='144' r='32'/></svg>",Mh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M304 416V304h112M314.2 314.23L432 432M208 96v112H96M197.8 197.77L80 80M416 208H304V96M314.23 197.8L432 80M96 304h112v112M197.77 314.2L80 432' class='ionicon-fill-none ionicon-stroke-width'/></svg>",_i="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='256' cy='256' r='208' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 464c-114.88 0-208-93.12-208-208S141.12 48 256 48z'/></svg>",xs="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><rect x='128' y='128' width='336' height='336' rx='57' ry='57' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M383.5 128l.5-24a56.16 56.16 0 00-56-56H112a64.19 64.19 0 00-64 64v216a56.16 56.16 0 0056 56h24' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",$h="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M384 224v184a40 40 0 01-40 40H104a40 40 0 01-40-40V168a40 40 0 0140-40h167.48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M459.94 53.25a16.06 16.06 0 00-23.22-.56L424.35 65a8 8 0 000 11.31l11.34 11.32a8 8 0 0011.34 0l12.06-12c6.1-6.09 6.67-16.01.85-22.38zM399.34 90L218.82 270.2a9 9 0 00-2.31 3.93L208.16 299a3.91 3.91 0 004.86 4.86l24.85-8.35a9 9 0 003.93-2.31L422 112.66a9 9 0 000-12.66l-9.95-10a9 9 0 00-12.71 0z'/></svg>",Cu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M144 48v272a48 48 0 0048 48h272' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M368 304V192a48 48 0 00-48-48H208M368 368v96M144 144H48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Gr="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='104' cy='152' r='56' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='104' cy='360' r='56' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M157 175l-11 15 37 15s3.46-6.42 7-10z' stroke-linecap='square' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M154.17 334.43L460 162c-2.5-6.7-28-12-64-4-29.12 6.47-121.16 29.05-159.16 56.05C205.85 236.06 227 272 192 298c-25.61 19-44.43 22.82-44.43 22.82zM344.47 278.24L295 306.67c14.23 6.74 65.54 33.27 117 36.33 14.92.89 30 .39 39-6z' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='240' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",oi="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M336 176h40a40 40 0 0140 40v208a40 40 0 01-40 40H136a40 40 0 01-40-40V216a40 40 0 0140-40h40' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M176 272l80 80 80-80M256 48v288' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Ih="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='256' cy='256' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='416' cy='256' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='96' cy='256' r='32' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Dh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M432 320v112H320M421.8 421.77L304 304M80 192V80h112M90.2 90.23L208 208M320 80h112v112M421.77 90.2L304 208M192 432H80V320M90.23 421.8L208 304' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Fh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M432 320v112H320M421.8 421.77L304 304M80 192V80h112M90.2 90.23L208 208M320 80h112v112M421.77 90.2L304 208M192 432H80V320M90.23 421.8L208 304' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Ah="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M432 448a15.92 15.92 0 01-11.31-4.69l-352-352a16 16 0 0122.62-22.62l352 352A16 16 0 01432 448zM255.66 384c-41.49 0-81.5-12.28-118.92-36.5-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 00.14-2.94L93.5 161.38a2 2 0 00-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 00-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0075.8-12.58 2 2 0 00.77-3.31l-21.58-21.58a4 4 0 00-3.83-1 204.8 204.8 0 01-51.16 6.47zM490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 00-74.89 12.83 2 2 0 00-.75 3.31l21.55 21.55a4 4 0 003.88 1 192.82 192.82 0 0150.21-6.69c40.69 0 80.58 12.43 118.55 37 34.71 22.4 65.74 53.88 89.76 91a.13.13 0 010 .16 310.72 310.72 0 01-64.12 72.73 2 2 0 00-.15 2.95l19.9 19.89a2 2 0 002.7.13 343.49 343.49 0 0068.64-78.48 32.2 32.2 0 00-.1-34.78z'/><path d='M256 160a95.88 95.88 0 00-21.37 2.4 2 2 0 00-1 3.38l112.59 112.56a2 2 0 003.38-1A96 96 0 00256 160zM165.78 233.66a2 2 0 00-3.38 1 96 96 0 00115 115 2 2 0 001-3.38z'/></svg>",$i="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 00-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 000-17.47C428.89 172.28 347.8 112 255.66 112z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='80' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Vu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M80 464V68.14a8 8 0 014-6.9C91.81 56.66 112.92 48 160 48c64 0 145 48 192 48a199.53 199.53 0 0077.23-15.77 2 2 0 012.77 1.85v219.36a4 4 0 01-2.39 3.65C421.37 308.7 392.33 320 352 320c-48 0-128-32-192-32s-80 16-80 16' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",es="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M315.27 33L96 304h128l-31.51 173.23a2.36 2.36 0 002.33 2.77h0a2.36 2.36 0 001.89-.95L416 208H288l31.66-173.25a2.45 2.45 0 00-2.44-2.75h0a2.42 2.42 0 00-1.95 1z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Rh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M496 152a56 56 0 00-56-56H220.11a23.89 23.89 0 01-13.31-4L179 73.41A55.77 55.77 0 00147.89 64H72a56 56 0 00-56 56v48a8 8 0 008 8h464a8 8 0 008-8zM16 392a56 56 0 0056 56h368a56 56 0 0056-56V216a8 8 0 00-8-8H24a8 8 0 00-8 8z'/></svg>",Lh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='129' cy='96' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='129' cy='416' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M129 144v224' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='385' cy='288' r='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M129 144c0 96 112 144 208 144' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",ts="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M432 112V96a48.14 48.14 0 00-48-48H64a48.14 48.14 0 00-48 48v256a48.14 48.14 0 0048 48h16' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><rect x='96' y='128' width='400' height='336' rx='45.99' ry='45.99' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><ellipse cx='372.92' cy='219.64' rx='30.77' ry='30.55' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M342.15 372.17L255 285.78a30.93 30.93 0 00-42.18-1.21L96 387.64M265.23 464l118.59-117.73a31 31 0 0141.46-1.87L496 402.91' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Ph="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M248 64C146.39 64 64 146.39 64 248s82.39 184 184 184 184-82.39 184-184S349.61 64 248 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M220 220h32v116' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M208 340h88' class='ionicon-fill-none ionicon-stroke-width'/><path d='M248 130a26 26 0 1026 26 26 26 0 00-26-26z'/></svg>",Uh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M368 128h80M64 128h240M368 384h80M64 384h240M208 256h240M64 256h80' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='336' cy='128' r='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='176' cy='256' r='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='336' cy='384' r='32' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Oh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M208 432h-48a16 16 0 01-16-16V96a16 16 0 0116-16h48a16 16 0 0116 16v320a16 16 0 01-16 16zM352 432h-48a16 16 0 01-16-16V96a16 16 0 0116-16h48a16 16 0 0116 16v320a16 16 0 01-16 16z'/></svg>",zh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-32 272a16 16 0 01-32 0V192a16 16 0 0132 0zm96 0a16 16 0 01-32 0V192a16 16 0 0132 0z'/></svg>",bm="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M208 192v128M304 192v128' class='ionicon-fill-none ionicon-stroke-width'/></svg>",hd="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M176 96h16v320h-16zM320 96h16v320h-16z' class='ionicon-fill-none ionicon-stroke-width'/></svg>",jh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M133 440a35.37 35.37 0 01-17.5-4.67c-12-6.8-19.46-20-19.46-34.33V111c0-14.37 7.46-27.53 19.46-34.33a35.13 35.13 0 0135.77.45l247.85 148.36a36 36 0 010 61l-247.89 148.4A35.5 35.5 0 01133 440z'/></svg>",Wh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M30.71 229.47l188.87-113a30.54 30.54 0 0131.09-.39 33.74 33.74 0 0116.76 29.47v79.05l180.72-108.16a30.54 30.54 0 0131.09-.39A33.74 33.74 0 01496 145.52v221A33.73 33.73 0 01479.24 396a30.54 30.54 0 01-31.09-.39L267.43 287.4v79.08A33.73 33.73 0 01250.67 396a30.54 30.54 0 01-31.09-.39l-188.87-113a31.27 31.27 0 010-53z'/></svg>",Zh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M480 145.52v221c0 13.28-13 21.72-23.63 15.35L267.5 268.8c-9.24-5.53-9.24-20.07 0-25.6l188.87-113C467 123.8 480 132.24 480 145.52zM251.43 145.52v221c0 13.28-13 21.72-23.63 15.35L38.93 268.8c-9.24-5.53-9.24-20.07 0-25.6l188.87-113c10.64-6.4 23.63 2.04 23.63 15.32z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Hh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm74.77 217.3l-114.45 69.14a10.78 10.78 0 01-16.32-9.31V186.87a10.78 10.78 0 0116.32-9.31l114.45 69.14a10.89 10.89 0 010 18.6z'/></svg>",ym="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M216.32 334.44l114.45-69.14a10.89 10.89 0 000-18.6l-114.45-69.14a10.78 10.78 0 00-16.32 9.31v138.26a10.78 10.78 0 0016.32 9.31z'/></svg>",Gh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M481.29 229.47l-188.87-113a30.54 30.54 0 00-31.09-.39 33.74 33.74 0 00-16.76 29.47v79.05L63.85 116.44a30.54 30.54 0 00-31.09-.39A33.74 33.74 0 0016 145.52v221A33.74 33.74 0 0032.76 396a30.54 30.54 0 0031.09-.39L244.57 287.4v79.08A33.74 33.74 0 00261.33 396a30.54 30.54 0 0031.09-.39l188.87-113a31.27 31.27 0 000-53z'/></svg>",Xh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M32 145.52v221c0 13.28 13 21.72 23.63 15.35l188.87-113c9.24-5.53 9.24-20.07 0-25.6l-188.87-113C45 123.8 32 132.24 32 145.52zM260.57 145.52v221c0 13.28 13 21.72 23.63 15.35l188.87-113c9.24-5.53 9.24-20.07 0-25.6l-188.87-113c-10.64-6.47-23.63 1.97-23.63 15.25z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",gd="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M112 111v290c0 17.44 17 28.52 31 20.16l247.9-148.37c12.12-7.25 12.12-26.33 0-33.58L143 90.84c-14-8.36-31 2.72-31 20.16z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Kh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M400 111v290c0 17.44-17 28.52-31 20.16L121.09 272.79c-12.12-7.25-12.12-26.33 0-33.58L369 90.84c14-8.36 31 2.72 31 20.16z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M112 80v352' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Jh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M112 111v290c0 17.44 17 28.52 31 20.16l247.9-148.37c12.12-7.25 12.12-26.33 0-33.58L143 90.84c-14-8.36-31 2.72-31 20.16z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M400 80v352' class='ionicon-fill-none ionicon-stroke-width'/></svg>",zo="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M320 146s24.36-12-64-12a160 160 0 10160 160' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M256 58l80 80-80 80' class='ionicon-fill-none ionicon-stroke-width'/></svg>",qh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-linejoin='round' d='M336 256H176' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Yh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Nu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M304 96h112v112M405.77 106.2L111.98 400.02M208 416H96V304' class='ionicon-fill-none ionicon-stroke-width'/></svg>",fl="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M380.93 57.37A32 32 0 00358.3 48H94.22A46.21 46.21 0 0048 94.22v323.56A46.21 46.21 0 0094.22 464h323.56A46.36 46.36 0 00464 417.78V153.7a32 32 0 00-9.37-22.63zM256 416a64 64 0 1164-64 63.92 63.92 0 01-64 64zm48-224H112a16 16 0 01-16-16v-64a16 16 0 0116-16h192a16 16 0 0116 16v64a16 16 0 01-16 16z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Qh="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='256' cy='256' r='48'/><path d='M470.39 300l-.47-.38-31.56-24.75a16.11 16.11 0 01-6.1-13.33v-11.56a16 16 0 016.11-13.22L469.92 212l.47-.38a26.68 26.68 0 005.9-34.06l-42.71-73.9a1.59 1.59 0 01-.13-.22A26.86 26.86 0 00401 92.14l-.35.13-37.1 14.93a15.94 15.94 0 01-14.47-1.29q-4.92-3.1-10-5.86a15.94 15.94 0 01-8.19-11.82l-5.59-39.59-.12-.72A27.22 27.22 0 00298.76 26h-85.52a26.92 26.92 0 00-26.45 22.39l-.09.56-5.57 39.67a16 16 0 01-8.13 11.82 175.21 175.21 0 00-10 5.82 15.92 15.92 0 01-14.43 1.27l-37.13-15-.35-.14a26.87 26.87 0 00-32.48 11.34l-.13.22-42.77 73.95a26.71 26.71 0 005.9 34.1l.47.38 31.56 24.75a16.11 16.11 0 016.1 13.33v11.56a16 16 0 01-6.11 13.22L42.08 300l-.47.38a26.68 26.68 0 00-5.9 34.06l42.71 73.9a1.59 1.59 0 01.13.22 26.86 26.86 0 0032.45 11.3l.35-.13 37.07-14.93a15.94 15.94 0 0114.47 1.29q4.92 3.11 10 5.86a15.94 15.94 0 018.19 11.82l5.56 39.59.12.72A27.22 27.22 0 00213.24 486h85.52a26.92 26.92 0 0026.45-22.39l.09-.56 5.57-39.67a16 16 0 018.18-11.82c3.42-1.84 6.76-3.79 10-5.82a15.92 15.92 0 0114.43-1.27l37.13 14.95.35.14a26.85 26.85 0 0032.48-11.34 2.53 2.53 0 01.13-.22l42.71-73.89a26.7 26.7 0 00-5.89-34.11zm-134.48-40.24a80 80 0 11-83.66-83.67 80.21 80.21 0 0183.66 83.67z'/></svg>",as="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M400 304l48 48-48 48M400 112l48 48-48 48M64 352h85.19a80 80 0 0066.56-35.62L256 256' class='ionicon-fill-none ionicon-stroke-width'/><path d='M64 160h85.19a80 80 0 0166.56 35.62l80.5 120.76A80 80 0 00362.81 352H416M416 160h-53.19a80 80 0 00-66.56 35.62L288 208' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",ao="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M259.92 262.91L216.4 149.77a9 9 0 00-16.8 0l-43.52 113.14a9 9 0 01-5.17 5.17L37.77 311.6a9 9 0 000 16.8l113.14 43.52a9 9 0 015.17 5.17l43.52 113.14a9 9 0 0016.8 0l43.52-113.14a9 9 0 015.17-5.17l113.14-43.52a9 9 0 000-16.8l-113.14-43.52a9 9 0 01-5.17-5.17zM108 68L88 16 68 68 16 88l52 20 20 52 20-52 52-20-52-20zM426.67 117.33L400 48l-26.67 69.33L304 144l69.33 26.67L400 240l26.67-69.33L496 144l-69.33-26.67z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Ei="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-miterlimit='10' d='M256 48v48M256 416v48M403.08 108.92l-33.94 33.94M142.86 369.14l-33.94 33.94M464 256h-48M96 256H48M403.08 403.08l-33.94-33.94M142.86 142.86l-33.94-33.94' class='ionicon-fill-none ionicon-stroke-width'/><circle cx='256' cy='256' r='80' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Tu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M304 48l112 112-112 112M398.87 160H96M208 464L96 352l112-112M114 352h302' class='ionicon-fill-none ionicon-stroke-width'/></svg>",eg="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M512 128v256a64.07 64.07 0 01-64 64H64a64.07 64.07 0 01-64-64V128a64.07 64.07 0 0164-64h384a64.07 64.07 0 0164 64zM32 384a32 32 0 0032 32h384a32 32 0 0032-32V128a32 32 0 00-32-32H64a32 32 0 00-32 32z'/><path d='M0 128a64.07 64.07 0 0164-64h384a64.07 64.07 0 0164 64v256a64.07 64.07 0 01-64 64H64a64.07 64.07 0 01-64-64V128m480 256V128a32 32 0 00-32-32H64a32 32 0 00-32 32v256a32 32 0 0032 32h384a32 32 0 0032-32m-16 0a16 16 0 01-16 16H64a16 16 0 01-16-16V128a16 16 0 0116-16h384a16 16 0 0116 16v256z'/></svg>",wm="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M32 415.5l120-320 120 320M230 303.5H74M326 239.5c12.19-28.69 41-48 74-48h0c46 0 80 32 80 80v144' class='ionicon-fill-none ionicon-stroke-width'/><path d='M320 358.5c0 36 26.86 58 60 58 54 0 100-27 100-106v-15c-20 0-58 1-92 5-32.77 3.86-68 19-68 58z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Xr="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M112 112l20 320c.95 18.49 14.4 32 32 32h184c17.67 0 30.87-13.51 32-32l20-320' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M80 112h352' class='ionicon-stroke-width'/><path d='M192 112V72h0a23.93 23.93 0 0124-24h80a23.93 23.93 0 0124 24h0v40M256 176v224M184 176l8 224M328 176l-8 224' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",km="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M374.79 308.78L457.5 367a16 16 0 0022.5-14.62V159.62A16 16 0 00457.5 145l-82.71 58.22A16 16 0 00368 216.3v79.4a16 16 0 006.79 13.08z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M268 384H84a52.15 52.15 0 01-52-52V180a52.15 52.15 0 0152-52h184.48A51.68 51.68 0 01320 179.52V332a52.15 52.15 0 01-52 52z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",tg="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M232 416a23.88 23.88 0 01-14.2-4.68 8.27 8.27 0 01-.66-.51L125.76 336H56a24 24 0 01-24-24V200a24 24 0 0124-24h69.75l91.37-74.81a8.27 8.27 0 01.66-.51A24 24 0 01256 120v272a24 24 0 01-24 24zm-106.18-80zm-.27-159.86zM320 336a16 16 0 01-14.29-23.19c9.49-18.87 14.3-38 14.3-56.81 0-19.38-4.66-37.94-14.25-56.73a16 16 0 0128.5-14.54C346.19 208.12 352 231.44 352 256c0 23.86-6 47.81-17.7 71.19A16 16 0 01320 336z'/><path d='M368 384a16 16 0 01-13.86-24C373.05 327.09 384 299.51 384 256c0-44.17-10.93-71.56-29.82-103.94a16 16 0 0127.64-16.12C402.92 172.11 416 204.81 416 256c0 50.43-13.06 83.29-34.13 120a16 16 0 01-13.87 8z'/><path d='M416 432a16 16 0 01-13.39-24.74C429.85 365.47 448 323.76 448 256c0-66.5-18.18-108.62-45.49-151.39a16 16 0 1127-17.22C459.81 134.89 480 181.74 480 256c0 64.75-14.66 113.63-50.6 168.74A16 16 0 01416 432z'/></svg>",ag="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M296 416.19a23.92 23.92 0 01-14.21-4.69l-.66-.51-91.46-75H120a24 24 0 01-24-24V200a24 24 0 0124-24h69.65l91.46-75 .66-.51A24 24 0 01320 119.83v272.34a24 24 0 01-24 24zM384 336a16 16 0 01-14.29-23.18c9.49-18.9 14.3-38 14.3-56.82 0-19.36-4.66-37.92-14.25-56.73a16 16 0 0128.5-14.54C410.2 208.16 416 231.47 416 256c0 23.83-6 47.78-17.7 71.18A16 16 0 01384 336z'/></svg>",ng="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M264 416.19a23.92 23.92 0 01-14.21-4.69l-.66-.51-91.46-75H88a24 24 0 01-24-24V200a24 24 0 0124-24h69.65l91.46-75 .66-.51A24 24 0 01288 119.83v272.34a24 24 0 01-24 24zM352 336a16 16 0 01-14.29-23.18c9.49-18.9 14.3-38 14.3-56.82 0-19.36-4.66-37.92-14.25-56.73a16 16 0 0128.5-14.54C378.2 208.16 384 231.47 384 256c0 23.83-6 47.78-17.7 71.18A16 16 0 01352 336z'/><path d='M400 384a16 16 0 01-13.87-24C405 327.05 416 299.45 416 256c0-44.12-10.94-71.52-29.83-103.95A16 16 0 01413.83 136C434.92 172.16 448 204.88 448 256c0 50.36-13.06 83.24-34.12 120a16 16 0 01-13.88 8z'/></svg>",og="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M157.65 192H88a8 8 0 00-8 8v112a8 8 0 008 8h69.65a16 16 0 0110.14 3.63l91.47 75a8 8 0 0012.74-6.46V119.83a8 8 0 00-12.74-6.44l-91.47 75a16 16 0 01-10.14 3.61zM352 320c9.74-19.41 16-40.81 16-64 0-23.51-6-44.4-16-64M400 368c19.48-34 32-64 32-112s-12-77.7-32-112' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",ig="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-miterlimit='10' d='M416 432L64 80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M243.33 98.86a23.89 23.89 0 00-25.55 1.82l-.66.51-28.52 23.35a8 8 0 00-.59 11.85l54.33 54.33a8 8 0 0013.66-5.66v-64.49a24.51 24.51 0 00-12.67-21.71zM251.33 335.29L96.69 180.69A16 16 0 0085.38 176H56a24 24 0 00-24 24v112a24 24 0 0024 24h69.76l92 75.31a23.9 23.9 0 0025.87 1.69A24.51 24.51 0 00256 391.45v-44.86a16 16 0 00-4.67-11.3zM352 256c0-24.56-5.81-47.87-17.75-71.27a16 16 0 10-28.5 14.55C315.34 218.06 320 236.62 320 256q0 4-.31 8.13a8 8 0 002.32 6.25l14.36 14.36a8 8 0 0013.55-4.31A146 146 0 00352 256zM416 256c0-51.18-13.08-83.89-34.18-120.06a16 16 0 00-27.64 16.12C373.07 184.44 384 211.83 384 256c0 23.83-3.29 42.88-9.37 60.65a8 8 0 001.9 8.26L389 337.4a8 8 0 0013.13-2.79C411 311.76 416 287.26 416 256z'/><path d='M480 256c0-74.25-20.19-121.11-50.51-168.61a16 16 0 10-27 17.22C429.82 147.38 448 189.5 448 256c0 46.19-8.43 80.27-22.43 110.53a8 8 0 001.59 9l11.92 11.92a8 8 0 0012.92-2.16C471.6 344.9 480 305 480 256z'/></svg>",rg="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-miterlimit='10' d='M416 432L64 80' class='ionicon-fill-none ionicon-stroke-width'/><path d='M224 136.92v33.8a4 4 0 001.17 2.82l24 24a4 4 0 006.83-2.82v-74.15a24.53 24.53 0 00-12.67-21.72 23.91 23.91 0 00-25.55 1.83 8.27 8.27 0 00-.66.51l-31.94 26.15a4 4 0 00-.29 5.92l17.05 17.06a4 4 0 005.37.26zM224 375.08l-78.07-63.92a32 32 0 00-20.28-7.16H64v-96h50.72a4 4 0 002.82-6.83l-24-24a4 4 0 00-2.82-1.17H56a24 24 0 00-24 24v112a24 24 0 0024 24h69.76l91.36 74.8a8.27 8.27 0 00.66.51 23.93 23.93 0 0025.85 1.69A24.49 24.49 0 00256 391.45v-50.17a4 4 0 00-1.17-2.82l-24-24a4 4 0 00-6.83 2.82zM125.82 336zM352 256c0-24.56-5.81-47.88-17.75-71.27a16 16 0 00-28.5 14.54C315.34 218.06 320 236.62 320 256q0 4-.31 8.13a8 8 0 002.32 6.25l19.66 19.67a4 4 0 006.75-2A146.89 146.89 0 00352 256zM416 256c0-51.19-13.08-83.89-34.18-120.06a16 16 0 00-27.64 16.12C373.07 184.44 384 211.83 384 256c0 23.83-3.29 42.88-9.37 60.65a8 8 0 001.9 8.26l16.77 16.76a4 4 0 006.52-1.27C410.09 315.88 416 289.91 416 256z'/><path d='M480 256c0-74.26-20.19-121.11-50.51-168.61a16 16 0 10-27 17.22C429.82 147.38 448 189.5 448 256c0 47.45-8.9 82.12-23.59 113a4 4 0 00.77 4.55L443 391.39a4 4 0 006.4-1C470.88 348.22 480 307 480 256z'/></svg>",lg="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M85.57 446.25h340.86a32 32 0 0028.17-47.17L284.18 82.58c-12.09-22.44-44.27-22.44-56.36 0L57.4 399.08a32 32 0 0028.17 47.17z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M250.26 195.39l5.74 122 5.73-121.95a5.74 5.74 0 00-5.79-6h0a5.74 5.74 0 00-5.68 5.95z' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 397.25a20 20 0 1120-20 20 20 0 01-20 20z'/></svg>",br="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M400 320c0 88.37-55.63 144-144 144s-144-55.63-144-144c0-94.83 103.23-222.85 134.89-259.88a12 12 0 0118.23 0C296.77 97.15 400 225.17 400 320z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M344 328a72 72 0 01-72 72' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Bu=()=>{};function sg(a,n){function t(...o){return new Promise((i,r)=>{Promise.resolve(a(()=>n.apply(this,o),{fn:n,thisArg:this,args:o})).then(i).catch(r)})}return t}function dg(a,n={}){let t,o,i=Bu;const r=d=>{clearTimeout(d),i(),i=Bu};let l;return d=>{const u=e.toValue(a),c=e.toValue(n.maxWait);return t&&r(t),u<=0||c!==void 0&&c<=0?(o&&(r(o),o=null),Promise.resolve(d())):new Promise((m,p)=>{i=n.rejectOnCancel?p:m,l=d,c&&!o&&(o=setTimeout(()=>{t&&r(t),o=null,m(l())},c)),t=setTimeout(()=>{o&&r(o),o=null,m(d())},u)})}}function ug(a,n=200,t={}){return sg(dg(n,t),a)}const Si=new Map;function cg(a){const n=e.getCurrentScope();function t(s){var d;const u=Si.get(a)||new Set;u.add(s),Si.set(a,u);const c=()=>i(s);return(d=n==null?void 0:n.cleanups)==null||d.push(c),c}function o(s){function d(...u){i(d),s(...u)}return t(d)}function i(s){const d=Si.get(a);d&&(d.delete(s),d.size||r())}function r(){Si.delete(a)}function l(s,d){var u;(u=Si.get(a))==null||u.forEach(c=>c(s,d))}return{on:t,once:o,off:i,emit:l,reset:r}}function _m(){var r,l;const a=typeof window<"u"&&"Capacitor"in window&&((l=(r=window.Capacitor)==null?void 0:r.isNativePlatform)==null?void 0:l.call(r));return{selection:()=>{var s,d;if(a)try{const u=(d=(s=window.Capacitor)==null?void 0:s.Plugins)==null?void 0:d.Haptics;u&&u.impact({style:"LIGHT"})}catch{}else"vibrate"in navigator&&navigator.vibrate(10)},success:()=>{var s,d;if(a)try{const u=(d=(s=window.Capacitor)==null?void 0:s.Plugins)==null?void 0:d.Haptics;u&&u.impact({style:"MEDIUM"})}catch{}else"vibrate"in navigator&&navigator.vibrate(30)},error:()=>{var s,d;if(a)try{const u=(d=(s=window.Capacitor)==null?void 0:s.Plugins)==null?void 0:d.Haptics;u&&u.impact({style:"HEAVY"})}catch{}else"vibrate"in navigator&&navigator.vibrate([50,50,50])},notification:()=>{var s,d;if(a)try{const u=(d=(s=window.Capacitor)==null?void 0:s.Plugins)==null?void 0:d.Haptics;u&&u.notification({type:"SUCCESS"})}catch{}else"vibrate"in navigator&&navigator.vibrate([20,100,20])}}}function vl(a,n={}){const t=e.ref(new Set),o=e.ref(new Map),i=e.ref(null),r=e.ref(-1),l=e.ref(n.scopeKey!==void 0?e.toValue(n.scopeKey):"default"),s=e.ref(!1),d=e.ref(null),u=cg("media-selection"),c=_m(),m=()=>{if(n.currentPage===void 0)return null;const O=e.toValue(n.currentPage);return typeof O=="number"&&Number.isFinite(O)?O:null};function p(O){t.value=O,o.value=new Map(Array.from(o.value.entries()).filter(([K])=>O.has(K)))}function f(O){if(o.value.has(O))return;const K=new Map(o.value);K.set(O,{uuid:O,selectedAt:Date.now(),page:m()}),o.value=K}const v=e.computed(()=>a.value.filter(O=>t.value.has(O.uuid))),h=e.computed(()=>t.value.size),k=e.computed(()=>Array.from(o.value.values()).sort((O,K)=>O.selectedAt-K.selectedAt).map(O=>O.uuid)),E=e.computed(()=>Math.max(0,h.value-v.value.length)),w=e.computed(()=>{const O=new Map;for(const K of o.value.values())K.page!==null&&O.set(K.page,(O.get(K.page)??0)+1);return O});e.watch(t,O=>{u.emit({type:"selection:changed",count:O.size,selectedIds:Array.from(O)})}),n.scopeKey!==void 0&&e.watch(()=>e.toValue(n.scopeKey),(O,K)=>{O!==void 0&&O!==K&&U(O)});const b=e.computed(()=>a.value.length>0&&a.value.every(O=>t.value.has(O.uuid))),g=e.computed(()=>a.value.some(O=>t.value.has(O.uuid)));function D(O){return t.value.has(O)}function T(O){const K=new Set(t.value),se=K.size===0;K.add(O),f(O),t.value=K,i.value=O,r.value=a.value.findIndex(xe=>xe.uuid===O),se&&c.selection()}function F(O){const K=new Set(t.value);K.delete(O);const se=new Map(o.value);se.delete(O),o.value=se,t.value=K,i.value===O&&(i.value=null,r.value=-1)}function V(O){if(t.value.has(O)){F(O);return}T(O)}function I(){const O=new Set(t.value);for(const K of a.value)O.add(K.uuid),f(K.uuid);t.value=O}function $(){t.value=new Set,o.value=new Map,i.value=null,r.value=-1,s.value=!1,d.value=null}function C(){if(b.value){$();return}I()}function M(O,K){const se=a.value.findIndex(xe=>xe.uuid===O);if(se!==-1){if(K!=null&&K.shiftKey&&r.value!==-1){const xe=Math.min(r.value,se),ue=Math.max(r.value,se),le=new Set(t.value);for(let H=xe;H<=ue;H++){const y=a.value[H];y!==void 0&&(le.add(y.uuid),f(y.uuid))}t.value=le;return}V(O)}}function _(){if(a.value.length===0)return;let O=r.value+1;O>=a.value.length&&(O=0),$();const K=a.value[O];K!==void 0&&T(K.uuid)}function L(){if(a.value.length===0)return;let O=r.value-1;O<0&&(O=a.value.length-1),$();const K=a.value[O];K!==void 0&&T(K.uuid)}function j(O){switch(O.key){case"ArrowDown":O.preventDefault(),_();break;case"ArrowUp":O.preventDefault(),L();break;case"a":(O.ctrlKey||O.metaKey)&&(O.preventDefault(),I());break;case"Escape":O.preventDefault(),$();break;case" ":i.value&&(O.preventDefault(),V(i.value));break}}async function B(O){var se;if(h.value===0||l.value===O)return!0;const K=(se=n.confirmScopeChange)==null?void 0:se.call(n,{from:l.value,to:O,selectedCount:h.value});return K===void 0?!0:await K}async function U(O){return l.value===O?!0:await B(O)?(l.value=O,$(),!0):!1}async function S(){if(!n.fetchMatchingUuids){const K={uuids:a.value.map(se=>se.uuid),overCap:!1,totalMatching:a.value.length};return R(K),K}const O=await n.fetchMatchingUuids();return R(O),O}function R(O){const K=new Set(O.uuids),se=new Map,xe=Date.now();O.uuids.forEach((ue,le)=>{se.set(ue,{uuid:ue,selectedAt:xe+le,page:m()})}),p(K),o.value=se,s.value=O.overCap,d.value=O.totalMatching}return{selectedIds:e.computed(()=>t.value),selectedRecords:e.computed(()=>o.value),selectedItems:v,selectedCount:h,orderedIds:k,crossPageCount:E,selectedPages:w,overCap:e.computed(()=>s.value),totalMatching:e.computed(()=>d.value),activeScopeKey:e.computed(()=>l.value),isAllSelected:b,isSomeSelected:g,lastSelectedId:e.computed(()=>i.value),isSelected:D,toggle:V,select:T,deselect:F,selectAll:I,clear:$,toggleAll:C,rangeSelect:M,selectAcrossAllPages:S,setScopeKey:U,canChangeScope:B,selectNext:_,selectPrevious:L,handleKeydown:j,selectionBus:u}}const mg={class:"flex items-center justify-between w-full px-4"},pg={class:"p-4"},fg={key:0,class:"mb-4 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg"},vg={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},hg=["value"],gg={class:"flex gap-2 mt-4"},bg={class:"flex justify-end mb-4"},yg={key:1,class:"flex justify-center items-center h-64"},wg={key:2,class:"flex flex-col items-center justify-center h-64 text-center"},kg={class:"text-sm text-theme-secondary"},_g={key:0},Eg={class:"mb-4"},Sg={class:"mb-4"},xg={class:"flex gap-2"},Cg={class:"flex items-center justify-between px-4 py-2"},Vg={class:"text-sm text-theme-secondary"},Ng={key:0},Tg={key:0},Bg={key:1},Mg={class:"flex gap-2"},$g=e.defineComponent({__name:"AdminMediaBrowser",props:{isOpen:{type:Boolean},selectionMode:{default:"single"},selectedItems:{default:()=>[]},modelType:{},modelId:{},collection:{default:"images"},maxSelection:{}},emits:["close","confirm"],setup(a,{emit:n}){const t=a,o=n,i=e.ref("recent"),r=e.ref("grid"),l=e.ref(""),s=e.ref(!1),d=e.ref([]),{selectedItems:u}=e.toRefs(t),c=e.ref(new Set(u.value)),m=e.ref(!1),p=e.ref({}),f=e.ref(["images","documents","videos"]),v=e.ref(1),h=e.ref(!0),k=e.ref(!1),E=cm(),w=vl(d);function b(H){var ge;const y=H.conversion_urls||{},A=H.proxy_url||H.original_url||H.url||"",W=y.thumb||y.preview||H.preview_url||H.thumbnail_url||A,q=H.custom_properties||{},de=q.width,Pe=q.height;return{...H,uuid:H.uuid,name:H.name||H.file_name,file_name:H.file_name,filename:H.file_name,mime_type:H.mime_type,size:H.size,collection_name:H.collection_name||"images",disk:H.disk,original_url:A,url:A,thumbnail_url:W,conversions:H.conversions||{},conversion_urls:y,generated_conversions:H.generated_conversions||{},custom_properties:q,caption:H.caption||null,alt_text:H.alt_text||null,created_at:H.created_at,updated_at:H.updated_at,is_image:((ge=H.mime_type)==null?void 0:ge.startsWith("image/"))||!1,...typeof de=="number"?{width:de}:{},...typeof Pe=="number"?{height:Pe}:{},...H.formatted_size!==void 0?{formatted_size:H.formatted_size}:{}}}e.watch(()=>t.selectedItems,H=>{c.value=new Set(H),w.clear(),H.forEach(y=>w.select(y))});const g=e.computed(()=>{var y;let H=d.value;return(y=p.value.types)!=null&&y.length&&(H=H.filter(A=>{var q,de;const W=(q=A.mime_type)==null?void 0:q.split("/")[0];return(de=p.value.types)==null?void 0:de.includes(W)})),(p.value.sizeMin!==void 0||p.value.sizeMax!==void 0)&&(H=H.filter(A=>{const W=A.size/1048576;return!(p.value.sizeMin!==void 0&&W<p.value.sizeMin||p.value.sizeMax!==void 0&&W>p.value.sizeMax)})),H}),D=e.computed(()=>{var y;let H=0;return p.value.search&&H++,p.value.collection&&H++,(p.value.dateFrom||p.value.dateTo)&&H++,(y=p.value.types)!=null&&y.length&&(H+=p.value.types.length),(p.value.sizeMin!==void 0||p.value.sizeMax!==void 0)&&H++,H}),T=e.computed(()=>{const H=w.selectedCount.value;return H===0?"Select Media":`Select ${t.selectionMode==="multiple"?`${H} ${H===1?"Item":"Items"}`:"Item"}`}),F=e.computed(()=>{const H=w.selectedCount.value;return!!(H===0||t.selectionMode==="single"&&H>1||t.maxSelection&&H>t.maxSelection)}),V=e.computed(()=>{switch(i.value){case"recent":return"Recent Uploads";case"model":return"Model Media";case"library":return"Media Library";default:return"Media Browser"}});async function I(H=!0){H?(s.value=!0,d.value=[],v.value=1,h.value=!0):k.value=!0;try{const y={collection:p.value.collection||t.collection,per_page:24};switch((l.value||p.value.search)&&(y.search=l.value||p.value.search||""),p.value.dateFrom&&(y.from_date=p.value.dateFrom),p.value.dateTo&&(y.to_date=p.value.dateTo),i.value){case"recent":await E.fetchMedia(v.value,y),H?d.value=E.items.map(A=>b(A)):d.value=[...d.value,...E.items.map(A=>b(A))],h.value=E.currentPage<E.totalPages;break;case"model":if(t.modelType&&t.modelId){const A=await E.fetchModelMedia(t.modelType,t.modelId,y.collection,y.search);d.value=A?A.map(W=>b(W)):[],h.value=!1}break;case"library":await E.fetchMedia(v.value,y),H?d.value=E.items.map(A=>b(A)):d.value=[...d.value,...E.items.map(A=>b(A))],h.value=E.currentPage<E.totalPages;break}}catch{}finally{s.value=!1,k.value=!1}}async function $(H){if(!h.value||k.value){H!=null&&H.target&&H.target.complete();return}v.value++,await I(!1),H!=null&&H.target&&(H.target.complete(),h.value||(H.target.disabled=!0))}function C(H){return H==="recent"||H==="model"||H==="library"}function M(H){i.value=H,I()}function _(H){typeof H=="string"&&C(H)&&M(H)}async function L(H){t.selectionMode==="single"?(w.clear(),w.select(H.uuid)):(w.toggle(H.uuid),t.maxSelection&&w.selectedCount.value>t.maxSelection&&(w.deselect(H.uuid),await(await G.toastController.create({message:`Maximum ${t.maxSelection} items can be selected`,duration:2e3,color:"warning"})).present()))}function j(){o("confirm",w.selectedItems.value)}function B(){o("close")}function U(H){}const S=e.ref(null),R=e.ref(!1);function O(H){S.value=H,R.value=!0}function K(H){const y=d.value.findIndex(W=>W.uuid===H.uuid);y!==-1&&(d.value[y]=H);const A={};H.alt_text!==void 0&&(A.alt_text=H.alt_text),H.caption!==void 0&&(A.caption=H.caption),H.custom_properties!==void 0&&(A.custom_properties=H.custom_properties),E.updateMedia(H.uuid,A)}function se(){I()}function xe(){p.value={},l.value="",I()}const ue=ug(()=>{I(!0)},300);e.watch(l,()=>{t.isOpen&&ue()});async function le(H){try{await(await G.alertController.create({header:"Delete Media",message:"Are you sure you want to delete this media item?",buttons:[{text:"Cancel",role:"cancel"},{text:"Delete",role:"destructive",handler:async()=>{await E.deleteMedia(H),await I()}}]})).present()}catch{}}return e.watch(()=>t.isOpen,H=>{H&&I()}),e.onMounted(()=>{t.selectedItems.length>0&&t.selectedItems.forEach(H=>w.select(H))}),(H,y)=>{const A=e.resolveComponent("AdminMediaGrid"),W=e.resolveComponent("AdminMediaListItem");return e.openBlock(),e.createBlock(e.unref(G.IonModal),{"is-open":H.isOpen,onDidDismiss:B,"backdrop-dismiss":!1,class:"media-browser-modal"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(G.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButton),{onClick:B},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(G.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(V.value),1)]),_:1})]),_:1}),e.createVNode(e.unref(G.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",mg,[e.createVNode(e.unref(G.IonSegment),{value:i.value,onIonChange:y[0]||(y[0]=q=>_(q.detail.value)),class:"max-w-xs"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonSegmentButton),{value:"recent"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...y[15]||(y[15]=[e.createTextVNode("Recent",-1)])]),_:1})]),_:1}),t.modelType&&t.modelId?(e.openBlock(),e.createBlock(e.unref(G.IonSegmentButton),{key:0,value:"model"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...y[16]||(y[16]=[e.createTextVNode("Model",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(G.IonSegmentButton),{value:"library"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...y[17]||(y[17]=[e.createTextVNode("Library",-1)])]),_:1})]),_:1})]),_:1},8,["value"]),e.createVNode(e.unref(G.IonButton),{fill:"clear",size:"small",onClick:y[1]||(y[1]=q=>m.value=!m.value),class:"relative"},{"icon-only":e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{name:"filter-outline"})]),default:e.withCtx(()=>[D.value>0?(e.openBlock(),e.createBlock(e.unref(G.IonBadge),{key:0,color:"primary",class:"absolute -top-1 -right-1 min-w-[20px] h-5 rounded-full flex items-center justify-center text-xs"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(D.value),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})])]),_:1})]),_:1}),e.createVNode(e.unref(G.IonContent),null,{default:e.withCtx(()=>[e.createElementVNode("div",pg,[m.value?(e.openBlock(),e.createElementBlock("div",fg,[e.createElementVNode("div",vg,[e.createElementVNode("div",null,[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...y[18]||(y[18]=[e.createTextVNode("Collection",-1)])]),_:1}),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[2]||(y[2]=q=>p.value.collection=q),class:"w-full p-2 border rounded"},[y[19]||(y[19]=e.createElementVNode("option",{value:""},"All Collections",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,q=>(e.openBlock(),e.createElementBlock("option",{key:q,value:q},e.toDisplayString(q),9,hg))),128))],512),[[e.vModelSelect,p.value.collection]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...y[20]||(y[20]=[e.createTextVNode("From Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[3]||(y[3]=q=>p.value.dateFrom=q),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,p.value.dateFrom]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...y[21]||(y[21]=[e.createTextVNode("To Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[4]||(y[4]=q=>p.value.dateTo=q),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,p.value.dateTo]])])]),e.createElementVNode("div",gg,[e.createVNode(e.unref(G.IonButton),{size:"small",onClick:se},{default:e.withCtx(()=>[...y[22]||(y[22]=[e.createTextVNode("Apply",-1)])]),_:1}),e.createVNode(e.unref(G.IonButton),{size:"small",fill:"clear",onClick:xe},{default:e.withCtx(()=>[...y[23]||(y[23]=[e.createTextVNode("Clear",-1)])]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(e.unref(G.IonSearchbar),{modelValue:l.value,"onUpdate:modelValue":y[5]||(y[5]=q=>l.value=q),placeholder:"Search media...",debounce:300,class:"mb-4"},null,8,["modelValue"]),e.createElementVNode("div",bg,[e.createVNode(e.unref(G.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButton),{fill:r.value==="grid"?"solid":"clear",size:"small",onClick:y[6]||(y[6]=q=>r.value="grid")},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{name:"grid-outline"})]),_:1},8,["fill"]),e.createVNode(e.unref(G.IonButton),{fill:r.value==="list"?"solid":"clear",size:"small",onClick:y[7]||(y[7]=q=>r.value="list")},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{name:"list-outline"})]),_:1},8,["fill"])]),_:1})]),s.value?(e.openBlock(),e.createElementBlock("div",yg,[e.createVNode(e.unref(G.IonSpinner),{name:"crescent"})])):g.value.length===0?(e.openBlock(),e.createElementBlock("div",wg,[e.createVNode(e.unref(G.IonIcon),{name:"images-outline",class:"text-6xl text-theme-secondary mb-4"}),y[24]||(y[24]=e.createElementVNode("h3",{class:"text-lg font-medium text-theme mb-2"}," No Media Found ",-1)),e.createElementVNode("p",kg,e.toDisplayString(l.value?"Try adjusting your search":"No media items available"),1)])):r.value==="grid"?(e.openBlock(),e.createBlock(A,{key:3,"media-items":g.value,"selected-items":e.unref(w).selectedItems.value,"is-loading":!1,"selection-mode":!0,columns:{mobile:2,sm:3,md:4,lg:5,xl:6},onToggleSelect:L,onPreview:U,onEdit:O,onDelete:le},null,8,["media-items","selected-items"])):(e.openBlock(),e.createBlock(e.unref(G.IonList),{key:4,lines:"none",class:"rounded-lg overflow-hidden"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(q,de)=>(e.openBlock(),e.createBlock(W,{key:q.uuid,media:q,selected:e.unref(w).isSelected(q.uuid),"selection-mode":!0,index:de,onToggleSelect:L,onPreview:U,onEdit:O,onDelete:le},null,8,["media","selected","index"]))),128))]),_:1})),!s.value&&g.value.length>0&&i.value!=="model"?(e.openBlock(),e.createBlock(e.unref(G.IonInfiniteScroll),{key:5,threshold:"100px",onIonInfinite:y[8]||(y[8]=q=>$(q))},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonInfiniteScrollContent),{"loading-spinner":"crescent","loading-text":"Loading more media..."})]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(e.unref(G.IonModal),{"is-open":R.value,onDidDismiss:y[14]||(y[14]=q=>R.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(G.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButton),{onClick:y[9]||(y[9]=q=>R.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(G.IonTitle),null,{default:e.withCtx(()=>[...y[25]||(y[25]=[e.createTextVNode("Edit Media Info",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(G.IonContent),{class:"p-4"},{default:e.withCtx(()=>[S.value?(e.openBlock(),e.createElementBlock("div",_g,[e.createElementVNode("div",Eg,[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...y[26]||(y[26]=[e.createTextVNode("Caption",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[10]||(y[10]=q=>S.value.caption=q),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter caption..."},null,512),[[e.vModelText,S.value.caption]])]),e.createElementVNode("div",Sg,[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...y[27]||(y[27]=[e.createTextVNode("Alt Text",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[11]||(y[11]=q=>S.value.alt_text=q),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter alt text..."},null,512),[[e.vModelText,S.value.alt_text]])]),e.createElementVNode("div",xg,[e.createVNode(e.unref(G.IonButton),{onClick:y[12]||(y[12]=q=>K(S.value))},{default:e.withCtx(()=>[...y[28]||(y[28]=[e.createTextVNode("Save",-1)])]),_:1}),e.createVNode(e.unref(G.IonButton),{fill:"clear",onClick:y[13]||(y[13]=q=>R.value=!1)},{default:e.withCtx(()=>[...y[29]||(y[29]=[e.createTextVNode("Cancel",-1)])]),_:1})])])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["is-open"]),e.createVNode(e.unref(G.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",Cg,[e.createElementVNode("div",Vg,[e.unref(w).selectedCount.value>0?(e.openBlock(),e.createElementBlock("span",Ng,[e.createTextVNode(e.toDisplayString(e.unref(w).selectedCount.value)+" selected ",1),t.maxSelection?(e.openBlock(),e.createElementBlock("span",Tg," / "+e.toDisplayString(t.maxSelection)+" max ",1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("span",Bg," Select "+e.toDisplayString(t.selectionMode==="multiple"?"items":"an item"),1))]),e.createElementVNode("div",Mg,[e.createVNode(e.unref(G.IonButton),{fill:"clear",onClick:B},{default:e.withCtx(()=>[...y[30]||(y[30]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(G.IonButton),{disabled:F.value,onClick:j},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(T.value),1)]),_:1},8,["disabled"])])])]),_:1})]),_:1})]),_:1},8,["is-open"])}}}),Ig=Ie($g,[["__scopeId","data-v-9a8c0954"]]),Dg={key:1,class:"flex flex-col items-center justify-center py-16"},Fg=["draggable","onDragstart","onDragover","onDrop"],Ag={key:0,class:"absolute top-2 left-2 z-20"},Rg=["checked","onChange"],Lg={key:2,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-move"},Pg=["data-media-id"],Ug={key:0,class:"w-full h-full flex items-center justify-center"},Og=["src","alt","onError","onLoad"],zg={key:2,class:"w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-700"},jg={class:"text-center"},Wg={class:"text-4xl text-gray-400 mb-2"},Zg={class:"text-sm font-medium text-gray-500"},Hg={class:"absolute inset-0 bg-black/70 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2"},Gg=["onClick"],Xg=["onClick"],Kg=["onClick"],Jg={class:"p-3"},qg={class:"text-sm font-medium truncate mb-1"},Yg={class:"text-xs text-gray-600 dark:text-gray-400"},Qg={key:0},eb={key:0,class:"text-xs text-gray-500 dark:text-gray-500 mt-1 truncate"},tb=e.defineComponent({__name:"MediaGrid",props:{mediaItems:{default:()=>[]},selectedItems:{default:()=>[]},isLoading:{type:Boolean,default:!1},selectionMode:{type:Boolean,default:!1},reorderable:{type:Boolean,default:!1},showEditButton:{type:Boolean,default:!1},columns:{default:()=>({mobile:2,sm:3,md:4,lg:5,xl:6})}},emits:["toggleSelect","preview","edit","delete","reorder","upload"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r=e.ref(null),l=e.ref(new Set),s=e.ref(null),d=F=>t.selectedItems.some(V=>V.uuid===F.uuid),u=e.computed(()=>{const F=t.columns,V=["grid","gap-4"];switch(F.mobile){case 1:V.push("grid-cols-1");break;case 2:V.push("grid-cols-2");break;case 3:V.push("grid-cols-3");break;case 4:V.push("grid-cols-4");break;default:V.push("grid-cols-2");break}switch(F.sm){case 1:V.push("sm:grid-cols-1");break;case 2:V.push("sm:grid-cols-2");break;case 3:V.push("sm:grid-cols-3");break;case 4:V.push("sm:grid-cols-4");break;case 5:V.push("sm:grid-cols-5");break;default:V.push("sm:grid-cols-3");break}switch(F.md){case 2:V.push("md:grid-cols-2");break;case 3:V.push("md:grid-cols-3");break;case 4:V.push("md:grid-cols-4");break;case 5:V.push("md:grid-cols-5");break;case 6:V.push("md:grid-cols-6");break;default:V.push("md:grid-cols-4");break}switch(F.lg){case 3:V.push("lg:grid-cols-3");break;case 4:V.push("lg:grid-cols-4");break;case 5:V.push("lg:grid-cols-5");break;case 6:V.push("lg:grid-cols-6");break;case 7:V.push("lg:grid-cols-7");break;default:V.push("lg:grid-cols-5");break}switch(F.xl){case 4:V.push("xl:grid-cols-4");break;case 5:V.push("xl:grid-cols-5");break;case 6:V.push("xl:grid-cols-6");break;case 7:V.push("xl:grid-cols-7");break;case 8:V.push("xl:grid-cols-8");break;default:V.push("xl:grid-cols-6");break}return V.join(" ")});function c(F,V,I){t.reorderable&&(i.value=V,F.dataTransfer&&(F.dataTransfer.effectAllowed="move",F.dataTransfer.setData("text/html","")))}function m(F,V){t.reorderable&&(F.preventDefault(),r.value=V)}function p(){r.value=null}function f(F,V){if(!t.reorderable||!i.value)return;F.preventDefault();const I=[...t.mediaItems],$=I.findIndex(C=>{var M;return C.uuid===((M=i.value)==null?void 0:M.uuid)});if($!==-1&&$!==V&&i.value){const[C]=I.splice($,1);I.splice(V,0,C),o("reorder",I)}i.value=null,r.value=null}function v(F){return F<1024?F+" B":F<1024*1024?(F/1024).toFixed(1)+" KB":(F/(1024*1024)).toFixed(1)+" MB"}function h(F){var I;return F.thumbnail_url||((I=F.conversion_urls)==null?void 0:I.thumb)||F.original_url||F.url||""}function k(F){var $,C,M;const V=(($=F.mime_type)==null?void 0:$.startsWith("image/"))||!1,I=!!(F.thumbnail_url||(C=F.conversion_urls)!=null&&C.thumb||(M=F.conversion_urls)!=null&&M.preview||F.original_url||F.url);return V&&I}function E(F){var V;return((V=F.split(".").pop())==null?void 0:V.toUpperCase())||""}function w(F){var I;const V=((I=F.mime_type)==null?void 0:I.toLowerCase())||"";return V.startsWith("image/")?"image":V.startsWith("video/")?"videocam":V.startsWith("audio/")?"musical-notes":V.includes("pdf")?"document-text":V.includes("zip")||V.includes("rar")?"archive":V.includes("sheet")||V.includes("excel")?"grid":V.includes("document")||V.includes("word")?"document-text":"document"}e.onMounted(()=>{typeof window<"u"&&"IntersectionObserver"in window&&(s.value=new IntersectionObserver(F=>{F.forEach(V=>{var I;if(V.isIntersecting){const $=V.target.getAttribute("data-media-id");$&&(l.value.add($),(I=s.value)==null||I.unobserve(V.target))}})},{rootMargin:"50px"}))}),e.onUnmounted(()=>{s.value&&s.value.disconnect()});function b(F){return!0}function g(){s.value&&e.nextTick(()=>{document.querySelectorAll("[data-media-id]").forEach(V=>{var $;const I=V.getAttribute("data-media-id");I&&!l.value.has(I)&&(($=s.value)==null||$.observe(V))})})}e.watch(()=>t.mediaItems,()=>{l.value.clear(),g()},{immediate:!0,deep:!0});function D(F,V){const I=F.target;delete I.dataset.fallbackIndex}function T(F,V){const I=F.target,$=I.closest("[data-media-id]"),C=[V.original_url,V.url,V.thumbnail_url,"preview_url"in V?V.preview_url:void 0].filter(M=>M&&M.trim()!==""&&M!==I.src);if(C.length>0&&I.dataset.fallbackIndex){const M=parseInt(I.dataset.fallbackIndex);if(M<C.length){I.dataset.fallbackIndex=(M+1).toString(),I.src=C[M]||"";return}}else if(C.length>0){I.dataset.fallbackIndex="1",I.src=C[0]||"";return}if(I.style.display="none",$&&!$.querySelector(".media-fallback-icon")){const _=document.createElement("div");_.className="media-fallback-icon w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-800",_.innerHTML=`
2
+ <div class="text-center">
3
+ <div class="text-4xl text-gray-400 mb-2">${w(V)}</div>
4
+ <p class="text-sm font-medium text-gray-500">${E(V.file_name)}</p>
5
+ </div>
6
+ `,$.appendChild(_)}}return(F,V)=>F.isLoading?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(u.value)},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(12,I=>e.createElementVNode("div",{key:`skeleton-${I}`,class:"relative"},[...V[1]||(V[1]=[e.createStaticVNode('<div class="bg-white dark:bg-gray-800 rounded-lg shadow" data-v-f0c343b7><div class="aspect-square bg-gray-200 dark:bg-gray-700 animate-pulse rounded-t-lg" data-v-f0c343b7></div><div class="p-3" data-v-f0c343b7><div class="h-4 bg-gray-200 dark:bg-gray-700 animate-pulse rounded w-3/4 mb-2" data-v-f0c343b7></div><div class="h-3 bg-gray-200 dark:bg-gray-700 animate-pulse rounded w-1/2" data-v-f0c343b7></div></div></div>',1)])])),64))],2)):!F.mediaItems||!F.mediaItems.length?(e.openBlock(),e.createElementBlock("div",Dg,[V[2]||(V[2]=e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",class:"w-16 h-16 text-gray-400 mb-4"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})],-1)),V[3]||(V[3]=e.createElementVNode("h3",{class:"text-lg font-medium mb-2"}," No Media Items ",-1)),V[4]||(V[4]=e.createElementVNode("p",{class:"text-sm text-gray-600 dark:text-gray-400 mb-4"}," Upload some files to get started ",-1)),e.createElementVNode("button",{onClick:V[0]||(V[0]=I=>o("upload")),class:"px-3 py-2 bg-blue-500 text-white rounded hover:bg-blue-600"}," Upload Media ")])):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(u.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.mediaItems,(I,$)=>(e.openBlock(),e.createElementBlock("div",{key:I.uuid,class:e.normalizeClass(["relative group",{"ring-2 ring-blue-500 ring-offset-2":r.value===$}]),draggable:F.reorderable,onDragstart:C=>c(C,I),onDragover:C=>m(C,$),onDragleave:p,onDrop:C=>f(C,$)},[F.selectionMode?(e.openBlock(),e.createElementBlock("div",Ag,[e.createElementVNode("input",{type:"checkbox",checked:d(I),onChange:C=>o("toggleSelect",I),class:"w-5 h-5 bg-white dark:bg-gray-800 rounded cursor-pointer"},null,40,Rg)])):e.createCommentVNode("",!0),F.$slots.badge?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["absolute top-2 z-20",F.selectionMode?"left-10":"left-2"])},[e.renderSlot(F.$slots,"badge",{media:I,index:$},void 0,!0)],2)):e.createCommentVNode("",!0),F.reorderable?(e.openBlock(),e.createElementBlock("div",Lg,[...V[5]||(V[5]=[e.createElementVNode("div",{class:"bg-black/70 text-white p-2 rounded"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",class:"w-4 h-4"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"})])],-1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["bg-white dark:bg-gray-800 rounded-lg shadow overflow-hidden h-full",{"ring-2 ring-blue-500":d(I)}])},[e.createElementVNode("div",{class:"relative aspect-square bg-gray-100 dark:bg-gray-700 overflow-hidden","data-media-id":I.uuid},[k(I)&&!b(I.uuid)?(e.openBlock(),e.createElementBlock("div",Ug,[...V[6]||(V[6]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500"},null,-1)])])):e.createCommentVNode("",!0),k(I)&&b(I.uuid)?(e.openBlock(),e.createElementBlock("img",{key:1,src:h(I),alt:I.alt_text||I.file_name,class:"w-full h-full object-cover",loading:"lazy",onError:C=>T(C,I),onLoad:C=>D(C)},null,40,Og)):(e.openBlock(),e.createElementBlock("div",zg,[e.createElementVNode("div",jg,[e.createElementVNode("div",Wg,e.toDisplayString(w(I)),1),e.createElementVNode("p",Zg,e.toDisplayString(E(I.file_name)),1)])])),e.createElementVNode("div",Hg,[e.createElementVNode("button",{onClick:C=>o("preview",I),class:"p-2 bg-white/20 text-white rounded hover:bg-white/30",title:"Preview"},[...V[7]||(V[7]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",class:"w-5 h-5"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z"}),e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1)])],8,Gg),F.showEditButton&&k(I)?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:C=>o("edit",I),class:"p-2 bg-white/20 text-white rounded hover:bg-white/30",title:"Edit"},[...V[8]||(V[8]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",class:"w-5 h-5"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10"})],-1)])],8,Xg)):e.createCommentVNode("",!0),e.createElementVNode("button",{onClick:C=>o("delete",I.uuid),class:"p-2 bg-red-500/20 text-red-300 rounded hover:bg-red-500/30",title:"Delete"},[...V[9]||(V[9]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",class:"w-5 h-5"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"})],-1)])],8,Kg)])],8,Pg),e.createElementVNode("div",Jg,[e.createElementVNode("h4",qg,e.toDisplayString(I.file_name),1),e.createElementVNode("p",Yg,[e.createTextVNode(e.toDisplayString(v(I.size))+" ",1),I.width&&I.height?(e.openBlock(),e.createElementBlock("span",Qg," • "+e.toDisplayString(I.width)+"x"+e.toDisplayString(I.height),1)):e.createCommentVNode("",!0)]),I.caption?(e.openBlock(),e.createElementBlock("p",eb,e.toDisplayString(I.caption),1)):e.createCommentVNode("",!0)])],2)],42,Fg))),128))],2))}}),ab=Ie(tb,[["__scopeId","data-v-f0c343b7"]]),nb={class:"model-media-manager"},ob=["accept","multiple"],ib={class:"flex items-center justify-between mb-4"},rb={key:0,class:"text-lg font-medium"},lb={class:"flex gap-2"},sb={key:0,class:"flex items-center justify-center py-8"},db={key:1,class:"flex flex-col items-center justify-center py-12 text-center border-2 border-dashed border-gray-300 dark:border-gray-600 rounded-lg"},ub={class:"text-gray-600 dark:text-gray-400"},cb={class:"flex gap-2 mt-4"},mb={key:0,class:"px-2 py-1 bg-blue-500 text-white text-xs font-medium rounded"},pb=e.defineComponent({__name:"ModelMediaManager",props:{mediableType:{},mediableId:{},collection:{},mode:{default:"user"},initialMedia:{},maxFiles:{},acceptedMimeTypes:{},maxFileSize:{},allowReorder:{type:Boolean,default:!0},allowUpload:{type:Boolean,default:!0},allowBrowse:{type:Boolean,default:!0},allowDetach:{type:Boolean,default:!0},allowEdit:{type:Boolean,default:!1},editMode:{default:"replace"},showPrimaryBadge:{type:Boolean,default:!0},emptyText:{default:"No media attached"},title:{default:"Media"}},emits:["loading","update:media","error","attach","detach","reorder","upload-progress","edit-complete"],setup(a,{emit:n}){const t=a,o=n,i=ja(),r=e.ref(!1),l=e.ref(!1),s=e.ref(!1),d=e.ref(!1),u=e.ref(null),c=e.ref(0),m=e.ref(null),p=e.ref(null),f=e.ref(null),v=e.ref(null),h=e.ref(null),k=e.ref(void 0),E=e.ref(null),w=e.ref(null),b=e.computed(()=>{if(t.maxFiles!==void 0)return Math.max(0,t.maxFiles-i.modelMedia.length)}),g=e.computed(()=>i.modelMedia.map(ue=>ue.uuid)),D=e.computed(()=>{if(!(!t.acceptedMimeTypes||t.acceptedMimeTypes.length===0))return t.acceptedMimeTypes.join(",")});function T(){ai({isAdmin:t.mode==="admin"})}async function F(ue){await(await G.toastController.create({message:ue,duration:3e3,color:"danger",position:"bottom"})).present()}async function V(){if(!l.value)if(l.value=!0,T(),i.setModelContext(t.mediableType,t.mediableId,t.collection),t.initialMedia&&t.initialMedia.length>0)i.modelMedia=[...t.initialMedia],o("update:media",i.modelMedia);else{r.value=!0,o("loading",!0);try{await i.fetchModelMedia(t.mediableType,t.mediableId,t.collection),o("update:media",i.modelMedia)}catch(ue){const le=ue instanceof Error?ue.message:"Failed to fetch media";o("error",{operation:"fetch",message:le,details:ue})}finally{r.value=!1,o("loading",!1)}}}e.watch(()=>i.modelMedia,ue=>{l.value&&o("update:media",ue)},{deep:!0}),e.watch(()=>[t.mediableType,t.mediableId,t.collection],()=>{l.value=!1,V()}),e.watch(()=>t.mode,()=>{T()}),e.onMounted(()=>{V()}),e.onUnmounted(()=>{i.clearModelContext()});function I(){return i.modelMedia.length>0}function $(){return t.maxFiles===void 0?!1:i.modelMedia.length>=t.maxFiles}function C(ue){var H,y,A;if(!((H=ue.mime_type)!=null&&H.startsWith("image/")))return null;const le=ue.original_url||ue.url||((y=ue.conversion_urls)==null?void 0:y.preview)||((A=ue.conversion_urls)==null?void 0:A.thumb)||ue.thumbnail_url;return le&&le.trim()!==""?le:null}function M(){u.value=null,k.value=void 0,m.value=null,p.value=null,f.value=null,v.value=null,h.value=null}function _(){s.value=!0}function L(){var ue;(ue=w.value)==null||ue.click()}function j(){s.value=!1}async function B(ue){if(t.allowEdit&&C(ue)){M(),u.value=ue,c.value++;try{const le=i.getHttpClient(),H=i.getEditorApiUrl(""),y=await le(`${H.replace(/\/$/,"")}/editor/${ue.uuid}/edit`);if(!y.editable_source_url)throw new Error("Editor source URL missing from edit context");k.value=y.editable_source_url,m.value=y.editor_state??null,p.value=y.editor_document??null,f.value=y.editor_document_id??null,v.value=y.editor_document_revision_id??null,h.value=y.editor_document_revision_number??null}catch(le){M();const H=le instanceof Error?`Unable to load image editor: ${le.message}`:"Unable to load image editor";await F(H);return}d.value=!0}}function U(){d.value=!1,M()}async function S(ue){if(!u.value)throw new Error("No media selected for editing");const le=u.value,H=t.editMode==="variant";try{E.value=null;const y=await i.saveEditedImage(le.uuid,ue,{asVariant:H});H||await i.detachMedia(t.mediableType,t.mediableId,le.uuid,t.collection),await i.attachMedia(t.mediableType,t.mediableId,[y.uuid],t.collection),o("edit-complete",{originalMedia:le,editedMedia:y,mode:t.editMode}),d.value=!1,M()}catch(y){const A=y instanceof Error?y.message:"Failed to save edited image";throw E.value=A,await F(A),y}}function R(ue){if(E.value===ue.message){E.value=null;return}F(ue.message)}async function O(ue){const le=ue.target,H=le.files;if(!(!H||H.length===0)){for(let y=0;y<H.length;y++){const A=H[y];if(b.value!==void 0&&b.value<=0)break;if(t.acceptedMimeTypes&&t.acceptedMimeTypes.length>0&&!t.acceptedMimeTypes.includes(A.type)){o("error",{operation:"upload",message:`File type ${A.type} is not accepted`,details:{file:A.name}});continue}if(t.maxFileSize!==void 0&&A.size>t.maxFileSize){o("error",{operation:"upload",message:`File size exceeds limit of ${t.maxFileSize} bytes`,details:{file:A.name,size:A.size}});continue}o("upload-progress",{status:"uploading",progress:0,file:A});try{const W=await i.uploadFile(A,{collection:t.collection});W!=null&&W.uuid&&(await i.attachMedia(t.mediableType,t.mediableId,[W.uuid],t.collection),o("upload-progress",{status:"complete",progress:100,file:A}),o("attach",[W]))}catch(W){const q=W instanceof Error?W.message:"Upload failed";o("error",{operation:"upload",message:q,details:W}),o("upload-progress",{status:"error",progress:0,file:A,error:q})}}le.value=""}}async function K(ue){const le=ue.map(H=>H.uuid);try{await i.reorderMedia(t.mediableType,t.mediableId,le,t.collection),o("reorder",i.modelMedia)}catch(H){const y=H instanceof Error?H.message:"Failed to reorder media";o("error",{operation:"reorder",message:y,details:H}),await F(y)}}async function se(ue){const le=i.modelMedia.find(H=>H.uuid===ue);try{await i.detachMedia(t.mediableType,t.mediableId,ue,t.collection),le&&o("detach",le)}catch(H){const y=H instanceof Error?H.message:"Failed to detach media";o("error",{operation:"detach",message:y,details:H}),await F(y)}}async function xe(ue){s.value=!1;const le=ue.map(A=>A.uuid),H=new Set(g.value);let y=Array.from(new Set(le)).filter(A=>!H.has(A));if(b.value!==void 0&&y.length>b.value&&(y=y.slice(0,b.value)),y.length!==0)try{await i.attachMedia(t.mediableType,t.mediableId,y,t.collection);const A=i.modelMedia.filter(W=>y.includes(W.uuid));o("attach",A)}catch(A){const W=A instanceof Error?A.message:"Failed to attach media";o("error",{operation:"attach",message:W,details:A})}}return(ue,le)=>(e.openBlock(),e.createElementBlock("div",nb,[e.createElementVNode("input",{ref_key:"fileInputRef",ref:w,type:"file",accept:D.value,multiple:b.value===void 0||b.value>1,class:"hidden","data-testid":"upload-input",onChange:O},null,40,ob),e.createElementVNode("div",ib,[ue.title?(e.openBlock(),e.createElementBlock("h3",rb,e.toDisplayString(ue.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",lb,[ue.allowBrowse?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:0,fill:"outline",size:"small",disabled:$(),"data-testid":"browse-button",onClick:_},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{slot:"start",icon:e.unref(ts)},null,8,["icon"]),le[1]||(le[1]=e.createTextVNode(" Browse ",-1))]),_:1},8,["disabled"])):e.createCommentVNode("",!0),ue.allowUpload?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:1,fill:"solid",size:"small",disabled:$(),"data-testid":"upload-button",onClick:L},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{slot:"start",icon:e.unref(xu)},null,8,["icon"]),le[2]||(le[2]=e.createTextVNode(" Upload ",-1))]),_:1},8,["disabled"])):e.createCommentVNode("",!0)])]),r.value||e.unref(i).isLoadingModelMedia?(e.openBlock(),e.createElementBlock("div",sb,[e.createVNode(e.unref(G.IonSpinner),{"data-testid":"spinner"})])):I()?(e.openBlock(),e.createBlock(ab,{key:2,"media-items":e.unref(i).modelMedia,reorderable:!!ue.allowReorder,"is-loading":r.value||e.unref(i).isLoadingModelMedia,"show-edit-button":!!ue.allowEdit,"selection-mode":!1,onReorder:K,onDelete:se,onEdit:B},e.createSlots({_:2},[ue.showPrimaryBadge?{name:"badge",fn:e.withCtx(({index:H})=>[H===0?(e.openBlock(),e.createElementBlock("div",mb," Primary ")):e.createCommentVNode("",!0)]),key:"0"}:void 0]),1032,["media-items","reorderable","is-loading","show-edit-button"])):(e.openBlock(),e.createElementBlock("div",db,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(ts),class:"w-12 h-12 text-gray-400 mb-4"},null,8,["icon"]),e.createElementVNode("p",ub,e.toDisplayString(ue.emptyText),1),e.createElementVNode("div",cb,[ue.allowBrowse?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:0,fill:"outline",size:"small","data-testid":"browse-button-empty",onClick:_},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{slot:"start",icon:e.unref(ts)},null,8,["icon"]),le[3]||(le[3]=e.createTextVNode(" Browse Library ",-1))]),_:1})):e.createCommentVNode("",!0),ue.allowUpload?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:1,fill:"solid",size:"small","data-testid":"upload-button-empty",onClick:L},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{slot:"start",icon:e.unref(xu)},null,8,["icon"]),le[4]||(le[4]=e.createTextVNode(" Upload Files ",-1))]),_:1})):e.createCommentVNode("",!0)])])),e.createVNode(Ig,e.mergeProps({"is-open":s.value,"selected-items":g.value,collection:ue.collection},b.value!==null&&b.value!==void 0?{maxSelection:b.value}:{},{onConfirm:xe,onClose:j}),null,16,["is-open","selected-items","collection"]),e.createVNode(fm,{modelValue:d.value,"onUpdate:modelValue":le[0]||(le[0]=H=>d.value=H),"initial-image":k.value,"initial-state":m.value,"initial-document":p.value,"initial-document-id":f.value,"initial-document-revision-id":v.value,"initial-document-revision-number":h.value,"session-key":c.value,"save-handler":S,onCancel:U,onError:R},null,8,["modelValue","initial-image","initial-state","initial-document","initial-document-id","initial-document-revision-id","initial-document-revision-number","session-key"])]))}}),fb=Ie(pb,[["__scopeId","data-v-c58d85c8"]]),vb={class:"existing-media-selector","data-testid":"existing-media-selector"},hb={key:0,class:"existing-media-selector__status","data-testid":"existing-media-loading"},gb=["data-testid"],bb={class:"existing-media-selector__section-header"},yb={class:"existing-media-selector__section-title"},wb=["data-testid","aria-label","onClick"],kb={class:"existing-media-selector__grid"},_b=["data-testid","aria-label","aria-pressed","onClick"],Eb=["src","alt"],Sb={key:0,class:"existing-media-selector__selected-badge"},xb={key:1,class:"existing-media-selector__caption"},Cb={key:0,class:"existing-media-selector__section existing-media-selector__section--albums","data-testid":"existing-media-albums"},Vb={class:"existing-media-selector__section-header"},Nb={class:"existing-media-selector__section-title"},Tb={class:"existing-media-selector__albums"},Bb=["data-testid","aria-label","aria-pressed","onClick"],Mb={class:"existing-media-selector__album-name"},$b={key:0,class:"existing-media-selector__album-count"},Ib={class:"existing-media-selector__album-panel","data-testid":"existing-media-active-album"},Db={class:"existing-media-selector__section-header"},Fb={class:"existing-media-selector__section-subtitle"},Ab={key:0,class:"existing-media-selector__section-description"},Rb={key:0,class:"existing-media-selector__status","data-testid":"existing-media-active-album-loading"},Lb={key:1,class:"existing-media-selector__grid"},Pb=["data-testid","aria-label","aria-pressed","onClick"],Ub=["src","alt"],Ob={key:0,class:"existing-media-selector__selected-badge"},zb={key:1,class:"existing-media-selector__caption"},jb={key:2,class:"existing-media-selector__empty","data-testid":"existing-media-active-album-empty"},Wb={key:1,class:"existing-media-selector__empty","data-testid":"existing-media-empty"},Zb=e.defineComponent({__name:"ExistingMediaSelector",props:{sections:{default:()=>[]},albums:{default:()=>[]},selectedId:{default:null},activeAlbumId:{default:null},activeAlbumItems:{default:()=>[]},activeAlbumTitle:{},activeAlbumDescription:{},isLoading:{type:Boolean,default:!1},isAlbumLoading:{type:Boolean,default:!1},emptyMessage:{default:"No media available yet."},albumBrowseTitle:{default:"Browse Your Albums"},albumSectionTitle:{default:"Selected Album"},activeAlbumEmptyMessage:{default:"No media available in this album yet."}},emits:["select","update:activeAlbumId"],setup(a,{emit:n}){const t=a,o=n,i=e.reactive({}),r=e.computed(()=>t.sections.filter(g=>g.items.length>0)),l=e.computed(()=>t.albums.length>0),s=e.computed(()=>r.value.length>0||l.value),d=e.computed(()=>{if(typeof t.activeAlbumTitle=="string"&&t.activeAlbumTitle.trim().length>0)return t.activeAlbumTitle.trim();const g=t.albums.find(D=>D.id===t.activeAlbumId);return g!=null&&g.name.trim().length?g.name.trim():t.albumSectionTitle}),u=e.computed(()=>{if(typeof t.activeAlbumDescription=="string"&&t.activeAlbumDescription.trim().length>0)return t.activeAlbumDescription.trim();const g=t.albums.find(D=>D.id===t.activeAlbumId);return typeof(g==null?void 0:g.description)=="string"&&g.description.trim().length>0?g.description.trim():""});function c(g){const D=g.initialVisibleCount??6;return D>0?D:6}function m(g){return i[g]===!0}function p(g){i[g]=!m(g)}function f(g){return m(g.id)?g.items:g.items.slice(0,c(g))}function v(g){return g.items.length>c(g)}function h(g){o("select",g)}function k(g){o("update:activeAlbumId",g)}function E(g){var T;const D=(T=g.description)==null?void 0:T.trim();return D&&D.length>0?`Select ${D}`:"Select existing media"}function w(g,D){var F;const T=(F=D.description)==null?void 0:F.trim();return typeof D.alt=="string"&&D.alt.trim().length>0?D.alt.trim():T&&T.length>0?T:g.title}function b(g){const D=typeof g.mediaCount=="number"?` with ${g.mediaCount} item${g.mediaCount===1?"":"s"}`:"";return`Browse album ${g.name}${D}`}return(g,D)=>(e.openBlock(),e.createElementBlock("div",vb,[g.isLoading?(e.openBlock(),e.createElementBlock("div",hb," Loading your media... ")):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,T=>(e.openBlock(),e.createElementBlock("section",{key:T.id,class:"existing-media-selector__section","data-testid":`existing-media-section-${T.id}`},[e.createElementVNode("div",bb,[e.createElementVNode("h3",yb,e.toDisplayString(T.title),1),v(T)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"existing-media-selector__toggle","data-testid":`existing-media-toggle-${T.id}`,"aria-label":m(T.id)?`Show fewer items from ${T.title}`:`Show more items from ${T.title}`,onClick:F=>p(T.id)},e.toDisplayString(m(T.id)?"See less":"See more"),9,wb)):e.createCommentVNode("",!0)]),e.createElementVNode("div",kb,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f(T),F=>(e.openBlock(),e.createElementBlock("button",{key:F.id,type:"button",class:e.normalizeClass(["existing-media-selector__item",{"is-selected":g.selectedId===F.id}]),"data-testid":`existing-media-item-${T.id}-${F.id}`,"aria-label":E(F),"aria-pressed":g.selectedId===F.id?"true":"false",onClick:V=>h(F)},[e.createElementVNode("img",{class:"existing-media-selector__image",src:F.previewUrl,alt:w(T,F)},null,8,Eb),g.selectedId===F.id?(e.openBlock(),e.createElementBlock("div",Sb," Selected ")):e.createCommentVNode("",!0),F.description?(e.openBlock(),e.createElementBlock("div",xb,e.toDisplayString(F.description),1)):e.createCommentVNode("",!0)],10,_b))),128))])],8,gb))),128)),l.value?(e.openBlock(),e.createElementBlock("section",Cb,[e.createElementVNode("div",Vb,[e.createElementVNode("h3",Nb,e.toDisplayString(g.albumBrowseTitle),1)]),e.createElementVNode("div",Tb,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.albums,T=>(e.openBlock(),e.createElementBlock("button",{key:T.id,type:"button",class:e.normalizeClass(["existing-media-selector__album",{"is-active":g.activeAlbumId===T.id}]),"data-testid":`existing-media-album-${T.id}`,"aria-label":b(T),"aria-pressed":g.activeAlbumId===T.id?"true":"false",onClick:F=>k(T.id)},[e.createElementVNode("span",Mb,e.toDisplayString(T.name),1),typeof T.mediaCount=="number"?(e.openBlock(),e.createElementBlock("span",$b,e.toDisplayString(T.mediaCount),1)):e.createCommentVNode("",!0)],10,Bb))),128))]),e.createElementVNode("div",Ib,[e.createElementVNode("div",Db,[e.createElementVNode("div",null,[e.createElementVNode("h4",Fb,e.toDisplayString(d.value),1),u.value?(e.openBlock(),e.createElementBlock("p",Ab,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0)])]),g.isAlbumLoading?(e.openBlock(),e.createElementBlock("div",Rb," Loading album... ")):g.activeAlbumItems.length>0?(e.openBlock(),e.createElementBlock("div",Lb,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.activeAlbumItems,T=>(e.openBlock(),e.createElementBlock("button",{key:T.id,type:"button",class:e.normalizeClass(["existing-media-selector__item",{"is-selected":g.selectedId===T.id}]),"data-testid":`existing-media-item-album-${T.id}`,"aria-label":E(T),"aria-pressed":g.selectedId===T.id?"true":"false",onClick:F=>h(T)},[e.createElementVNode("img",{class:"existing-media-selector__image",src:T.previewUrl,alt:T.alt||T.description||d.value},null,8,Ub),g.selectedId===T.id?(e.openBlock(),e.createElementBlock("div",Ob," Selected ")):e.createCommentVNode("",!0),T.description?(e.openBlock(),e.createElementBlock("div",zb,e.toDisplayString(T.description),1)):e.createCommentVNode("",!0)],10,Pb))),128))])):(e.openBlock(),e.createElementBlock("div",jb,[e.renderSlot(g.$slots,"active-album-empty",{},()=>[e.createTextVNode(e.toDisplayString(g.activeAlbumEmptyMessage),1)],!0)]))])])):e.createCommentVNode("",!0),s.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Wb,[e.renderSlot(g.$slots,"empty",{},()=>[e.createTextVNode(e.toDisplayString(g.emptyMessage),1)],!0)]))],64))]))}}),Hb=Ie(Zb,[["__scopeId","data-v-904abb6b"]]);function yr(a,n,t,o){if(t<=0||o<=0)return!1;try{return n.drawImage(a,0,0,t,o),!0}catch(i){return i instanceof DOMException&&i.name==="InvalidStateError",!1}}function Gb(a,n){return a?{display:"block",position:"absolute",inset:"0",width:"100%",height:"100%",objectFit:n,opacity:"0",pointerEvents:"none"}:{display:"block",position:"relative",inset:"auto",width:"100%",height:"100%",objectFit:n,opacity:"1",pointerEvents:"auto"}}const Xb=["src","crossorigin"],Kb={class:"preview-controls"},Jb=["aria-label"],qb={class:"time-display"},Yb={class:"current-time"},Qb={class:"total-time"},e0={key:0,class:"fps-display"},t0={key:0,class:"loading-overlay"},a0={key:1,class:"error-overlay"},n0=.1,o0=e.defineComponent({__name:"VideoPreview",props:{source:{},filters:{},playhead:{},fallbackDuration:{default:0},isPlaying:{type:Boolean,default:!1},showFps:{type:Boolean,default:!1},targetFps:{default:30},fitMode:{default:"contain"},active:{type:Boolean,default:!0}},emits:["frame-update","play-pause","duration-change","error"],setup(a,{expose:n,emit:t}){const{ColorMatrixFilter:o,BlurFilter:i}=aa,r=a,l=t,s=e.ref(),d=e.ref(),u=e.ref(),c=e.ref(!0),m=e.ref(),p=e.ref(0),f=e.ref(0),v=e.ref(!1);let h,k,E=null,w=null,b=null,g=[],D="",T=null,F=0,V=0,I=0,$=0,C=!1,M=0,_=0,L,j=null,B=!1,U=!1,S=0;const R=e.computed(()=>r.source&&typeof r.source=="string"?r.source:""),O=e.computed(()=>{const Se=R.value;if(!(!Se||Se.startsWith("blob:")))return"anonymous"}),K=e.computed(()=>Gb(v.value,r.fitMode));function se(Se){return typeof Se=="number"&&Number.isFinite(Se)&&Se>=0?Se:Number.isFinite(r.fallbackDuration)&&r.fallbackDuration>0?r.fallbackDuration:0}function xe(Se){const Ve=se(Se.duration);return Ve<=0?!1:Se.currentTime>=Math.max(0,Ve-n0)}async function ue(){var Se,Ve;if(!U&&d.value&&!h&&!(!u.value||u.value.readyState<3)){U=!0;try{m.value=void 0;let Re=((Se=s.value)==null?void 0:Se.clientWidth)||800,at=((Ve=s.value)==null?void 0:Ve.clientHeight)||450;if((Re<=0||at<=0)&&(Re=u.value.videoWidth||800,at=u.value.videoHeight||450),h=new aa.Application,await h.init({width:Re,height:at,background:0,resolution:window.devicePixelRatio||1,autoDensity:!0,antialias:!0,powerPreference:"high-performance",preserveDrawingBuffer:!0}),d.value.appendChild(h.canvas),u.value){if(u.value.videoWidth===0||u.value.videoHeight===0){setTimeout(()=>{u.value&&u.value.videoWidth>0&&!h&&ue()},100),h&&(h.destroy(!0),h=null);return}if(F=u.value.videoWidth,V=u.value.videoHeight,w=document.createElement("canvas"),w.width=F,w.height=V,b=w.getContext("2d"),!b)throw new Error("Unable to create 2D canvas context for video preview");const He=yr(u.value,b,F,V),Je=aa.Texture.from(w);E=Je.source,k=new aa.Sprite(Je),k.visible=!0,k.alpha=1,St(),h.stage.addChild(k),h.renderer&&!h.renderer.destroyed&&h.render()}A(),r.targetFps<60?le():h.ticker.add(H),v.value=!0,"ResizeObserver"in window&&(T=new ResizeObserver(He=>{C||(C=!0,requestAnimationFrame(()=>{C=!1;const Je=He[He.length-1],{width:kt,height:ft}=Je.contentRect;if(kt<=0||ft<=0)return;const jt=Math.round(kt),Le=Math.round(ft);jt===I&&Le===$||(I=jt,$=Le,St())}))}),T.observe(s.value)),r.filters&&r.filters.length>0&&A(),r.showFps&&Ue(),S=0}catch{if(Lt(),!B&&!!u.value&&u.value.readyState>=2&&u.value.videoWidth>0&&u.value.videoHeight>0&&S<2){S+=1,window.setTimeout(()=>{B||ue()},S*150);return}m.value="Failed to initialize video preview",l("error",m.value)}finally{U=!1}}}function le(){const Se=1e3/r.targetFps;let Ve=performance.now();function Re(){if(B||!h)return;const at=performance.now(),He=at-Ve;He>=Se&&(H(),Ve=at-He%Se),j=requestAnimationFrame(Re)}j=requestAnimationFrame(Re)}function H(){if(!(!h||!k||B)&&r.active)try{b&&w&&E&&u.value&&(u.value.readyState>=2&&yr(u.value,b,w.width,w.height)&&E.update(),u.value.paused||l("frame-update",de())),r.showFps&&_++,h.renderer&&!h.renderer.destroyed&&h.render()}catch{B=!0}}function y(){for(const Se of g)try{Se.destroy()}catch{}g=[]}function A(){if(k){if(!r.filters||r.filters.length===0){k.filters=null,y();return}y(),r.filters.forEach(Se=>{const Ve=W(Se);Ve&&g.push(Ve)}),k.filters=g.length>0?g:null,D=JSON.stringify(r.filters),h&&h.render()}}function W(Se){const Ve=Se.filterId,Re=Se.params||{},at=Ea.getFilter(Ve);if(at&&!Ea.isFilterCompatibleWithMedia(Ve,"video"))return null;if(at&&at.createFilter)try{return at.createFilter(Re)}catch{}const He=(Je,kt,ft)=>Math.min(ft,Math.max(kt,Je));switch(Ve){case"brightness":{const Je=new o,kt=He(typeof Re.brightness=="number"?Re.brightness:typeof Re.value=="number"?Re.value:1,0,5);return Je.brightness(kt,!0),Je}case"contrast":{const Je=new o,kt=He(typeof Re.contrast=="number"?Re.contrast:typeof Re.value=="number"?Re.value:1,0,5);return Je.contrast(kt,!0),Je}case"saturation":{const Je=new o,kt=He(typeof Re.saturation=="number"?Re.saturation:typeof Re.value=="number"?Re.value:1,0,5);return Je.saturate(kt,!0),Je}case"hue":{const Je=new o,kt=He(typeof Re.value=="number"?Re.value:0,-180,180);return Je.hue(kt,!0),Je}case"gaussian-blur":case"blur":{const Je=He(typeof Re.blur=="number"?Re.blur:typeof Re.value=="number"?Re.value:2,0,10);return new i(Je)}case"grayscale":{const Je=new o;return Je.desaturate(),Je}case"sepia":case"color-matrix":{const Je=new o;return Je.sepia(!0),Je}case"vignette":{const Je=typeof Re.value=="number"?Re.value:.3;return q(He(Je,0,1))}default:return null}}function q(Se){const Ve=`
7
+ precision mediump float;
8
+ varying vec2 vTextureCoord;
9
+ uniform sampler2D uSampler;
10
+ uniform float strength;
11
+ void main(void){
12
+ vec2 uv = vTextureCoord - 0.5;
13
+ float dist = length(uv) * 2.0;
14
+ float vignette = smoothstep(1.0, 1.0 - strength, dist);
15
+ vec4 color = texture2D(uSampler, vTextureCoord);
16
+ gl_FragColor = vec4(color.rgb * (1.0 - vignette), color.a);
17
+ }
18
+ `;return new aa.Filter(void 0,Ve,{strength:Se})}function de(){var Ve;return!h||!k?null:{dataUrl:h.canvas.toDataURL("image/jpeg",.8),timestamp:((Ve=u.value)==null?void 0:Ve.currentTime)||0,width:F||0,height:V||0}}function Pe(){var Se;p.value=se((Se=u.value)==null?void 0:Se.duration),l("duration-change",p.value)}function ge(){c.value=!1,m.value=void 0}function ke(){c.value&&(c.value=!1),!v.value&&r.active?ue():v.value}function be(){var Ve,Re,at;const Se=((Ve=u.value)==null?void 0:Ve.currentTime)||0;l("frame-update",{dataUrl:null,timestamp:Se,width:((Re=u.value)==null?void 0:Re.videoWidth)||0,height:((at=u.value)==null?void 0:at.videoHeight)||0})}function Ce(){u.value&&(u.value.currentTime=0),l("play-pause")}function Ee(Se){var Re;const Ve=Se.target;if(Ve!=null&&Ve.error)switch(Ve.error.code){case Ve.error.MEDIA_ERR_ABORTED:m.value="Video playback aborted";break;case Ve.error.MEDIA_ERR_NETWORK:m.value="Network error loading video";break;case Ve.error.MEDIA_ERR_DECODE:m.value="Video format not supported";break;case Ve.error.MEDIA_ERR_SRC_NOT_SUPPORTED:m.value=`Video source not supported: ${(Re=Ve.src)==null?void 0:Re.substring(0,100)}`;break;default:m.value="Failed to load video"}else m.value="Failed to load video";l("error",m.value),c.value=!1}function Ae(Se){u.value&&(u.value.currentTime=Math.max(0,Math.min(Se,p.value)))}function Ue(){L=window.setInterval(()=>{const Se=performance.now(),Ve=Se-M;f.value=Math.round(_*1e3/Ve),_=0,M=Se},1e3)}function ot(Se){if(!Number.isFinite(Se)||Se<0)return"00:00";const Ve=Math.floor(Se/60),Re=Math.floor(Se%60);return`${Ve.toString().padStart(2,"0")}:${Re.toString().padStart(2,"0")}`}function it(){m.value=void 0,c.value=!0,S=0,Lt(),u.value&&u.value.load()}function Lt(){if(T&&(T.disconnect(),T=null),j&&(cancelAnimationFrame(j),j=null),h!=null&&h.ticker&&(h.ticker.stop(),h.ticker.remove(H)),h)try{h.destroy(!0,{children:!0,texture:!0})}catch{}d.value&&(d.value.innerHTML=""),y(),h=null,k=null,E=null,w=null,b=null,v.value=!1,C=!1,D=""}function gt(){h&&(C||(C=!0,requestAnimationFrame(()=>{C=!1,St()})))}function St(){if(!h||!k||!F||!V||!s.value)return;const Se=Math.round(s.value.clientWidth),Ve=Math.round(s.value.clientHeight);if(Se<=0||Ve<=0)return;h.renderer.resize(Se,Ve);const Re=h.screen.width/F,at=h.screen.height/V;let He=1;switch(r.fitMode){case"cover":He=Math.max(Re,at);break;case"none":He=1;break;case"contain":default:He=Math.min(Re,at);break}k.scale.set(He),k.anchor.set(.5),k.position.set(h.screen.width/2,h.screen.height/2),k.visible=!0,k.alpha=1,h.renderer&&!h.renderer.destroyed&&h.render()}e.watch(()=>r.filters,()=>{v.value&&A()},{deep:!0}),e.watch(()=>r.active,async Se=>{if(Se&&!h&&u.value&&u.value.readyState>=2){await ue();return}h&&(Se&&(await e.nextTick(),s.value&&s.value.getBoundingClientRect(),k&&b&&w&&E&&(u.value&&u.value.readyState>=2&&yr(u.value,b,w.width,w.height)&&E.update(),St(),h.renderer&&!h.renderer.destroyed&&h.render())),r.targetFps>=60&&h.ticker&&(Se?h.ticker.start():h.ticker.stop()))}),e.watch(R,Se=>{Se?(c.value=!0,m.value=void 0,e.nextTick(()=>{u.value&&u.value.load()})):(c.value=!1,m.value="No video source provided")},{immediate:!0});async function ct(){if(u.value){m.value=void 0,xe(u.value)&&(u.value.currentTime=0);try{await u.value.play();return}catch{if(!u.value.muted){u.value.muted=!0;try{await u.value.play();return}catch{}}}m.value="Unable to start preview playback",l("error",m.value)}}e.watch(()=>r.isPlaying,Se=>{u.value&&(Se?ct():u.value.pause())}),e.watch(()=>r.playhead,Se=>{u.value&&Math.abs(u.value.currentTime-Se)>.5&&Ae(Se)}),e.watch(()=>r.fitMode,()=>{St()}),e.onMounted(()=>{B=!1,e.nextTick(()=>{s.value&&s.value.getBoundingClientRect(),u.value}),window.addEventListener("resize",gt),M=performance.now(),e.nextTick(()=>{u.value&&u.value.readyState>=2&&!v.value?ue():u.value&&u.value.src&&u.value.readyState===0&&u.value.load()})}),e.onUnmounted(()=>{if(B=!0,j&&(cancelAnimationFrame(j),j=null),window.removeEventListener("resize",gt),T&&(T.disconnect(),T=null),L&&clearInterval(L),h&&h.ticker&&(h.ticker.stop(),h.ticker.remove(H)),h){try{h.destroy(!0,{children:!0,texture:!0})}catch{}h=null}g.forEach(Se=>{try{Se.destroy()}catch{}}),g=[],k=null,E=null,w=null,b=null,u.value&&(u.value.pause(),u.value.removeAttribute("src"),u.value.load())});async function mt(Se){if(!await Ct()||!u.value||!b||!w||!E)return null;const Re=u.value,at=Number.isFinite(p.value)&&p.value>0?p.value:Number.isFinite(Re.duration)&&Re.duration>0?Re.duration:0,He=Math.max(0,Math.min(Se,at));return await new Promise(kt=>{let ft=!1,jt=0;const Le=()=>{ft||(ft=!0,Re.removeEventListener("seeked",Wt),window.clearTimeout(jt),kt())},Wt=()=>{Le()},Zt=Number.isFinite(Re.currentTime)?Re.currentTime:0;if(Math.abs(Zt-He)<.016){requestAnimationFrame(()=>Le());return}Re.addEventListener("seeked",Wt),jt=window.setTimeout(()=>Le(),700),Re.currentTime=He}),yr(Re,b,w.width,w.height)?(E.update(),h.render(),h.canvas):null}async function Ct(){if(!u.value)return!1;if(!h){if(!(u.value.readyState>=2))return!1;await ue()}if(!h||!k||!b||!w||!E)return!1;if(r.filters&&r.filters.length>0){const Se=k.filters,Ve=Array.isArray(Se)?Se.length:0,at=JSON.stringify(r.filters)!==D;(Ve===0||Ve!==r.filters.length||at)&&A()}return await e.nextTick(),await new Promise(Se=>{requestAnimationFrame(()=>Se())}),!0}return n({captureFrameAt:mt,ensureReadyForCapture:Ct,duration:p,pixiCanvas:e.computed(()=>h?h.canvas:null),videoElement:e.computed(()=>u.value??null)}),(Se,Ve)=>(e.openBlock(),e.createElementBlock("div",{class:"video-preview",ref_key:"containerRef",ref:s},[e.createElementVNode("div",{class:"canvas-container",ref_key:"canvasContainerRef",ref:d},null,512),e.createElementVNode("video",{ref_key:"videoRef",ref:u,src:R.value,onLoadedmetadata:Pe,onLoadeddata:ge,onCanplay:ke,onTimeupdate:be,onEnded:Ce,onError:Ee,style:e.normalizeStyle(K.value),crossorigin:O.value,preload:"auto",playsinline:"",controls:""},null,44,Xb),e.createElementVNode("div",Kb,[e.createElementVNode("button",{class:"play-button",onClick:Ve[0]||(Ve[0]=Re=>Se.$emit("play-pause")),"aria-label":Se.isPlaying?"Pause":"Play"},[e.createVNode(e.unref(G.IonIcon),{icon:Se.isPlaying?e.unref(bm):e.unref(ym)},null,8,["icon"])],8,Jb),e.createElementVNode("div",qb,[e.createElementVNode("span",Yb,e.toDisplayString(ot(Se.playhead)),1),Ve[1]||(Ve[1]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",Qb,e.toDisplayString(ot(p.value)),1)]),Se.showFps?(e.openBlock(),e.createElementBlock("div",e0,e.toDisplayString(f.value)+" FPS ",1)):e.createCommentVNode("",!0)]),c.value?(e.openBlock(),e.createElementBlock("div",t0,[e.createVNode(e.unref(G.IonSpinner),{name:"crescent"}),Ve[2]||(Ve[2]=e.createElementVNode("p",null,"Loading video...",-1))])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("div",a0,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(vd)},null,8,["icon"]),e.createElementVNode("p",null,e.toDisplayString(m.value),1),e.createElementVNode("button",{onClick:it},"Retry")])):e.createCommentVNode("",!0)],512))}}),Cs=Ie(o0,[["__scopeId","data-v-dd1744f4"]]);var bd=(a,n,t)=>{if(!n.has(a))throw TypeError("Cannot "+t)},ee=(a,n,t)=>(bd(a,n,"read from private field"),t?t.call(a):n.get(a)),pt=(a,n,t)=>{if(n.has(a))throw TypeError("Cannot add the same private member more than once");n instanceof WeakSet?n.add(a):n.set(a,t)},ua=(a,n,t,o)=>(bd(a,n,"write to private field"),n.set(a,t),t),i0=(a,n,t,o)=>({set _(i){ua(a,n,i)},get _(){return ee(a,n,o)}}),wt=(a,n,t)=>(bd(a,n,"access private method"),t),Et=new Uint8Array(8),xn=new DataView(Et.buffer),ia=a=>[(a%256+256)%256],Dt=a=>(xn.setUint16(0,a,!1),[Et[0],Et[1]]),r0=a=>(xn.setInt16(0,a,!1),[Et[0],Et[1]]),Em=a=>(xn.setUint32(0,a,!1),[Et[1],Et[2],Et[3]]),Ge=a=>(xn.setUint32(0,a,!1),[Et[0],Et[1],Et[2],Et[3]]),l0=a=>(xn.setInt32(0,a,!1),[Et[0],Et[1],Et[2],Et[3]]),Ao=a=>(xn.setUint32(0,Math.floor(a/2**32),!1),xn.setUint32(4,a,!1),[Et[0],Et[1],Et[2],Et[3],Et[4],Et[5],Et[6],Et[7]]),yd=a=>(xn.setInt16(0,2**8*a,!1),[Et[0],Et[1]]),_n=a=>(xn.setInt32(0,2**16*a,!1),[Et[0],Et[1],Et[2],Et[3]]),ns=a=>(xn.setInt32(0,2**30*a,!1),[Et[0],Et[1],Et[2],Et[3]]),Ya=(a,n=!1)=>{let t=Array(a.length).fill(null).map((o,i)=>a.charCodeAt(i));return n&&t.push(0),t},Kr=a=>a&&a[a.length-1],wd=a=>{let n;for(let t of a)(!n||t.presentationTimestamp>n.presentationTimestamp)&&(n=t);return n},Sn=(a,n,t=!0)=>{let o=a*n;return t?Math.round(o):o},Sm=a=>{let n=a*(Math.PI/180),t=Math.cos(n),o=Math.sin(n);return[t,o,0,-o,t,0,0,0,1]},xm=Sm(0),Cm=a=>[_n(a[0]),_n(a[1]),ns(a[2]),_n(a[3]),_n(a[4]),ns(a[5]),_n(a[6]),_n(a[7]),ns(a[8])],Ri=a=>!a||typeof a!="object"?a:Array.isArray(a)?a.map(Ri):Object.fromEntries(Object.entries(a).map(([n,t])=>[n,Ri(t)])),ii=a=>a>=0&&a<2**32,oa=(a,n,t)=>({type:a,contents:n&&new Uint8Array(n.flat(10)),children:t}),Gt=(a,n,t,o,i)=>oa(a,[ia(n),Em(t),o??[]],i),s0=a=>{let n=512;return a.fragmented?oa("ftyp",[Ya("iso5"),Ge(n),Ya("iso5"),Ya("iso6"),Ya("mp41")]):oa("ftyp",[Ya("isom"),Ge(n),Ya("isom"),a.holdsAvc?Ya("avc1"):[],Ya("mp41")])},Vs=a=>({type:"mdat",largeSize:a}),d0=a=>({type:"free",size:a}),Fr=(a,n,t=!1)=>oa("moov",null,[u0(n,a),...a.map(o=>c0(o,n)),t?z0(a):null]),u0=(a,n)=>{let t=Sn(Math.max(0,...n.filter(l=>l.samples.length>0).map(l=>{const s=wd(l.samples);return s.presentationTimestamp+s.duration})),Bs),o=Math.max(...n.map(l=>l.id))+1,i=!ii(a)||!ii(t),r=i?Ao:Ge;return Gt("mvhd",+i,0,[r(a),r(a),Ge(Bs),r(t),_n(1),yd(1),Array(10).fill(0),Cm(xm),Array(24).fill(0),Ge(o)])},c0=(a,n)=>oa("trak",null,[m0(a,n),p0(a,n)]),m0=(a,n)=>{let t=wd(a.samples),o=Sn(t?t.presentationTimestamp+t.duration:0,Bs),i=!ii(n)||!ii(o),r=i?Ao:Ge,l;return a.info.type==="video"?l=typeof a.info.rotation=="number"?Sm(a.info.rotation):a.info.rotation:l=xm,Gt("tkhd",+i,3,[r(n),r(n),Ge(a.id),Ge(0),r(o),Array(8).fill(0),Dt(0),Dt(0),yd(a.info.type==="audio"?1:0),Dt(0),Cm(l),_n(a.info.type==="video"?a.info.width:0),_n(a.info.type==="video"?a.info.height:0)])},p0=(a,n)=>oa("mdia",null,[f0(a,n),v0(a.info.type==="video"?"vide":"soun"),h0(a)]),f0=(a,n)=>{let t=wd(a.samples),o=Sn(t?t.presentationTimestamp+t.duration:0,a.timescale),i=!ii(n)||!ii(o),r=i?Ao:Ge;return Gt("mdhd",+i,0,[r(n),r(n),Ge(a.timescale),r(o),Dt(21956),Dt(0)])},v0=a=>Gt("hdlr",0,0,[Ya("mhlr"),Ya(a),Ge(0),Ge(0),Ge(0),Ya("mp4-muxer-hdlr",!0)]),h0=a=>oa("minf",null,[a.info.type==="video"?g0():b0(),y0(),_0(a)]),g0=()=>Gt("vmhd",0,1,[Dt(0),Dt(0),Dt(0),Dt(0)]),b0=()=>Gt("smhd",0,0,[Dt(0),Dt(0)]),y0=()=>oa("dinf",null,[w0()]),w0=()=>Gt("dref",0,0,[Ge(1)],[k0()]),k0=()=>Gt("url ",0,1),_0=a=>{const n=a.compositionTimeOffsetTable.length>1||a.compositionTimeOffsetTable.some(t=>t.sampleCompositionTimeOffset!==0);return oa("stbl",null,[E0(a),A0(a),R0(a),L0(a),P0(a),U0(a),n?O0(a):null])},E0=a=>Gt("stsd",0,0,[Ge(1)],[a.info.type==="video"?S0(Y0[a.info.codec],a):I0(ey[a.info.codec],a)]),S0=(a,n)=>oa(a,[Array(6).fill(0),Dt(1),Dt(0),Dt(0),Array(12).fill(0),Dt(n.info.width),Dt(n.info.height),Ge(4718592),Ge(4718592),Ge(0),Dt(1),Array(32).fill(0),Dt(24),r0(65535)],[Q0[n.info.codec](n),n.info.decoderConfig.colorSpace?N0(n):null]),x0={bt709:1,bt470bg:5,smpte170m:6},C0={bt709:1,smpte170m:6,"iec61966-2-1":13},V0={rgb:0,bt709:1,bt470bg:5,smpte170m:6},N0=a=>oa("colr",[Ya("nclx"),Dt(x0[a.info.decoderConfig.colorSpace.primaries]),Dt(C0[a.info.decoderConfig.colorSpace.transfer]),Dt(V0[a.info.decoderConfig.colorSpace.matrix]),ia((a.info.decoderConfig.colorSpace.fullRange?1:0)<<7)]),T0=a=>a.info.decoderConfig&&oa("avcC",[...new Uint8Array(a.info.decoderConfig.description)]),B0=a=>a.info.decoderConfig&&oa("hvcC",[...new Uint8Array(a.info.decoderConfig.description)]),M0=a=>{if(!a.info.decoderConfig)return null;let n=a.info.decoderConfig;if(!n.colorSpace)throw new Error("'colorSpace' is required in the decoder config for VP9.");let t=n.codec.split("."),o=Number(t[1]),i=Number(t[2]),s=(Number(t[3])<<4)+(0<<1)+Number(n.colorSpace.fullRange);return Gt("vpcC",1,0,[ia(o),ia(i),ia(s),ia(2),ia(2),ia(2),Dt(0)])},$0=()=>{let t=(1<<7)+1;return oa("av1C",[t,0,0,0])},I0=(a,n)=>oa(a,[Array(6).fill(0),Dt(1),Dt(0),Dt(0),Ge(0),Dt(n.info.numberOfChannels),Dt(16),Dt(0),Dt(0),_n(n.info.sampleRate)],[ty[n.info.codec](n)]),D0=a=>{let n=new Uint8Array(a.info.decoderConfig.description);return Gt("esds",0,0,[Ge(58753152),ia(32+n.byteLength),Dt(1),ia(0),Ge(75530368),ia(18+n.byteLength),ia(64),ia(21),Em(0),Ge(130071),Ge(130071),Ge(92307584),ia(n.byteLength),...n,Ge(109084800),ia(1),ia(2)])},F0=a=>{var i;let n=3840,t=0;const o=(i=a.info.decoderConfig)==null?void 0:i.description;if(o){if(o.byteLength<18)throw new TypeError("Invalid decoder description provided for Opus; must be at least 18 bytes long.");const r=ArrayBuffer.isView(o)?new DataView(o.buffer,o.byteOffset,o.byteLength):new DataView(o);n=r.getUint16(10,!0),t=r.getInt16(14,!0)}return oa("dOps",[ia(0),ia(a.info.numberOfChannels),Dt(n),Ge(a.info.sampleRate),yd(t),ia(0)])},A0=a=>Gt("stts",0,0,[Ge(a.timeToSampleTable.length),a.timeToSampleTable.map(n=>[Ge(n.sampleCount),Ge(n.sampleDelta)])]),R0=a=>{if(a.samples.every(t=>t.type==="key"))return null;let n=[...a.samples.entries()].filter(([,t])=>t.type==="key");return Gt("stss",0,0,[Ge(n.length),n.map(([t])=>Ge(t+1))])},L0=a=>Gt("stsc",0,0,[Ge(a.compactlyCodedChunkTable.length),a.compactlyCodedChunkTable.map(n=>[Ge(n.firstChunk),Ge(n.samplesPerChunk),Ge(1)])]),P0=a=>Gt("stsz",0,0,[Ge(0),Ge(a.samples.length),a.samples.map(n=>Ge(n.size))]),U0=a=>a.finalizedChunks.length>0&&Kr(a.finalizedChunks).offset>=2**32?Gt("co64",0,0,[Ge(a.finalizedChunks.length),a.finalizedChunks.map(n=>Ao(n.offset))]):Gt("stco",0,0,[Ge(a.finalizedChunks.length),a.finalizedChunks.map(n=>Ge(n.offset))]),O0=a=>Gt("ctts",0,0,[Ge(a.compositionTimeOffsetTable.length),a.compositionTimeOffsetTable.map(n=>[Ge(n.sampleCount),Ge(n.sampleCompositionTimeOffset)])]),z0=a=>oa("mvex",null,a.map(j0)),j0=a=>Gt("trex",0,0,[Ge(a.id),Ge(1),Ge(0),Ge(0),Ge(0)]),Mu=(a,n)=>oa("moof",null,[W0(a),...n.map(Z0)]),W0=a=>Gt("mfhd",0,0,[Ge(a)]),Vm=a=>{let n=0,t=0,o=0,i=0,r=a.type==="delta";return t|=+r,r?n|=1:n|=2,n<<24|t<<16|o<<8|i},Z0=a=>oa("traf",null,[H0(a),G0(a),X0(a)]),H0=a=>{let n=0;n|=8,n|=16,n|=32,n|=131072;let t=a.currentChunk.samples[1]??a.currentChunk.samples[0],o={duration:t.timescaleUnitsToNextSample,size:t.size,flags:Vm(t)};return Gt("tfhd",0,n,[Ge(a.id),Ge(o.duration),Ge(o.size),Ge(o.flags)])},G0=a=>Gt("tfdt",1,0,[Ao(Sn(a.currentChunk.startTimestamp,a.timescale))]),X0=a=>{let n=a.currentChunk.samples.map(h=>h.timescaleUnitsToNextSample),t=a.currentChunk.samples.map(h=>h.size),o=a.currentChunk.samples.map(Vm),i=a.currentChunk.samples.map(h=>Sn(h.presentationTimestamp-h.decodeTimestamp,a.timescale)),r=new Set(n),l=new Set(t),s=new Set(o),d=new Set(i),u=s.size===2&&o[0]!==o[1],c=r.size>1,m=l.size>1,p=!u&&s.size>1,f=d.size>1||[...d].some(h=>h!==0),v=0;return v|=1,v|=4*+u,v|=256*+c,v|=512*+m,v|=1024*+p,v|=2048*+f,Gt("trun",1,v,[Ge(a.currentChunk.samples.length),Ge(a.currentChunk.offset-a.currentChunk.moofOffset||0),u?Ge(o[0]):[],a.currentChunk.samples.map((h,k)=>[c?Ge(n[k]):[],m?Ge(t[k]):[],p?Ge(o[k]):[],f?l0(i[k]):[]])])},K0=a=>oa("mfra",null,[...a.map(J0),q0()]),J0=(a,n)=>Gt("tfra",1,0,[Ge(a.id),Ge(63),Ge(a.finalizedChunks.length),a.finalizedChunks.map(o=>[Ao(Sn(o.startTimestamp,a.timescale)),Ao(o.moofOffset),Ge(n+1),Ge(1),Ge(1)])]),q0=()=>Gt("mfro",0,0,[Ge(0)]),Y0={avc:"avc1",hevc:"hvc1",vp9:"vp09",av1:"av01"},Q0={avc:T0,hevc:B0,vp9:M0,av1:$0},ey={aac:"mp4a",opus:"Opus"},ty={aac:D0,opus:F0},hl=class{},kd=class extends hl{constructor(){super(...arguments),this.buffer=null}},Nm=class extends hl{constructor(a){if(super(),this.options=a,typeof a!="object")throw new TypeError("StreamTarget requires an options object to be passed to its constructor.");if(a.onData){if(typeof a.onData!="function")throw new TypeError("options.onData, when provided, must be a function.");if(a.onData.length<2)throw new TypeError("options.onData, when provided, must be a function that takes in at least two arguments (data and position). Ignoring the position argument, which specifies the byte offset at which the data is to be written, can lead to broken outputs.")}if(a.chunked!==void 0&&typeof a.chunked!="boolean")throw new TypeError("options.chunked, when provided, must be a boolean.");if(a.chunkSize!==void 0&&(!Number.isInteger(a.chunkSize)||a.chunkSize<1024))throw new TypeError("options.chunkSize, when provided, must be an integer and not smaller than 1024.")}},ay=class extends hl{constructor(a,n){if(super(),this.stream=a,this.options=n,!(a instanceof FileSystemWritableFileStream))throw new TypeError("FileSystemWritableFileStreamTarget requires a FileSystemWritableFileStream instance.");if(n!==void 0&&typeof n!="object")throw new TypeError("FileSystemWritableFileStreamTarget's options, when provided, must be an object.");if(n&&n.chunkSize!==void 0&&(!Number.isInteger(n.chunkSize)||n.chunkSize<=0))throw new TypeError("options.chunkSize, when provided, must be a positive integer")}},So,Jo,Tm=class{constructor(){this.pos=0,pt(this,So,new Uint8Array(8)),pt(this,Jo,new DataView(ee(this,So).buffer)),this.offsets=new WeakMap}seek(a){this.pos=a}writeU32(a){ee(this,Jo).setUint32(0,a,!1),this.write(ee(this,So).subarray(0,4))}writeU64(a){ee(this,Jo).setUint32(0,Math.floor(a/2**32),!1),ee(this,Jo).setUint32(4,a,!1),this.write(ee(this,So).subarray(0,8))}writeAscii(a){for(let n=0;n<a.length;n++)ee(this,Jo).setUint8(n%8,a.charCodeAt(n)),n%8===7&&this.write(ee(this,So));a.length%8!==0&&this.write(ee(this,So).subarray(0,a.length%8))}writeBox(a){if(this.offsets.set(a,this.pos),a.contents&&!a.children)this.writeBoxHeader(a,a.size??a.contents.byteLength+8),this.write(a.contents);else{let n=this.pos;if(this.writeBoxHeader(a,0),a.contents&&this.write(a.contents),a.children)for(let i of a.children)i&&this.writeBox(i);let t=this.pos,o=a.size??t-n;this.seek(n),this.writeBoxHeader(a,o),this.seek(t)}}writeBoxHeader(a,n){this.writeU32(a.largeSize?1:n),this.writeAscii(a.type),a.largeSize&&this.writeU64(n)}measureBoxHeader(a){return 8+(a.largeSize?8:0)}patchBox(a){let n=this.pos;this.seek(this.offsets.get(a)),this.writeBox(a),this.seek(n)}measureBox(a){if(a.contents&&!a.children)return this.measureBoxHeader(a)+a.contents.byteLength;{let n=this.measureBoxHeader(a);if(a.contents&&(n+=a.contents.byteLength),a.children)for(let t of a.children)t&&(n+=this.measureBox(t));return n}}};So=new WeakMap;Jo=new WeakMap;var Ar,Io,Ki,Ii,Rr,Ns,ny=class extends Tm{constructor(a){super(),pt(this,Rr),pt(this,Ar,void 0),pt(this,Io,new ArrayBuffer(2**16)),pt(this,Ki,new Uint8Array(ee(this,Io))),pt(this,Ii,0),ua(this,Ar,a)}write(a){wt(this,Rr,Ns).call(this,this.pos+a.byteLength),ee(this,Ki).set(a,this.pos),this.pos+=a.byteLength,ua(this,Ii,Math.max(ee(this,Ii),this.pos))}finalize(){wt(this,Rr,Ns).call(this,this.pos),ee(this,Ar).buffer=ee(this,Io).slice(0,Math.max(ee(this,Ii),this.pos))}};Ar=new WeakMap;Io=new WeakMap;Ki=new WeakMap;Ii=new WeakMap;Rr=new WeakSet;Ns=function(a){let n=ee(this,Io).byteLength;for(;n<a;)n*=2;if(n===ee(this,Io).byteLength)return;let t=new ArrayBuffer(n),o=new Uint8Array(t);o.set(ee(this,Ki),0),ua(this,Io,t),ua(this,Ki,o)};var oy=2**24,iy=2,Li,xo,Di,Pn,Za,Jr,Ts,_d,Bm,Ed,Mm,Pi,qr,Sd=class extends Tm{constructor(a){var n,t;super(),pt(this,Jr),pt(this,_d),pt(this,Ed),pt(this,Pi),pt(this,Li,void 0),pt(this,xo,[]),pt(this,Di,void 0),pt(this,Pn,void 0),pt(this,Za,[]),ua(this,Li,a),ua(this,Di,((n=a.options)==null?void 0:n.chunked)??!1),ua(this,Pn,((t=a.options)==null?void 0:t.chunkSize)??oy)}write(a){ee(this,xo).push({data:a.slice(),start:this.pos}),this.pos+=a.byteLength}flush(){var t,o;if(ee(this,xo).length===0)return;let a=[],n=[...ee(this,xo)].sort((i,r)=>i.start-r.start);a.push({start:n[0].start,size:n[0].data.byteLength});for(let i=1;i<n.length;i++){let r=a[a.length-1],l=n[i];l.start<=r.start+r.size?r.size=Math.max(r.size,l.start+l.data.byteLength-r.start):a.push({start:l.start,size:l.data.byteLength})}for(let i of a){i.data=new Uint8Array(i.size);for(let r of ee(this,xo))i.start<=r.start&&r.start<i.start+i.size&&i.data.set(r.data,r.start-i.start);ee(this,Di)?(wt(this,Jr,Ts).call(this,i.data,i.start),wt(this,Pi,qr).call(this)):(o=(t=ee(this,Li).options).onData)==null||o.call(t,i.data,i.start)}ee(this,xo).length=0}finalize(){ee(this,Di)&&wt(this,Pi,qr).call(this,!0)}};Li=new WeakMap;xo=new WeakMap;Di=new WeakMap;Pn=new WeakMap;Za=new WeakMap;Jr=new WeakSet;Ts=function(a,n){let t=ee(this,Za).findIndex(s=>s.start<=n&&n<s.start+ee(this,Pn));t===-1&&(t=wt(this,Ed,Mm).call(this,n));let o=ee(this,Za)[t],i=n-o.start,r=a.subarray(0,Math.min(ee(this,Pn)-i,a.byteLength));o.data.set(r,i);let l={start:i,end:i+r.byteLength};if(wt(this,_d,Bm).call(this,o,l),o.written[0].start===0&&o.written[0].end===ee(this,Pn)&&(o.shouldFlush=!0),ee(this,Za).length>iy){for(let s=0;s<ee(this,Za).length-1;s++)ee(this,Za)[s].shouldFlush=!0;wt(this,Pi,qr).call(this)}r.byteLength<a.byteLength&&wt(this,Jr,Ts).call(this,a.subarray(r.byteLength),n+r.byteLength)};_d=new WeakSet;Bm=function(a,n){let t=0,o=a.written.length-1,i=-1;for(;t<=o;){let r=Math.floor(t+(o-t+1)/2);a.written[r].start<=n.start?(t=r+1,i=r):o=r-1}for(a.written.splice(i+1,0,n),(i===-1||a.written[i].end<n.start)&&i++;i<a.written.length-1&&a.written[i].end>=a.written[i+1].start;)a.written[i].end=Math.max(a.written[i].end,a.written[i+1].end),a.written.splice(i+1,1)};Ed=new WeakSet;Mm=function(a){let t={start:Math.floor(a/ee(this,Pn))*ee(this,Pn),data:new Uint8Array(ee(this,Pn)),written:[],shouldFlush:!1};return ee(this,Za).push(t),ee(this,Za).sort((o,i)=>o.start-i.start),ee(this,Za).indexOf(t)};Pi=new WeakSet;qr=function(a=!1){var n,t;for(let o=0;o<ee(this,Za).length;o++){let i=ee(this,Za)[o];if(!(!i.shouldFlush&&!a)){for(let r of i.written)(t=(n=ee(this,Li).options).onData)==null||t.call(n,i.data.subarray(r.start,r.end),i.start+r.start);ee(this,Za).splice(o--,1)}}};var ry=class extends Sd{constructor(a){var n;super(new Nm({onData:(t,o)=>a.stream.write({type:"write",data:t,position:o}),chunked:!0,chunkSize:(n=a.options)==null?void 0:n.chunkSize}))}},Bs=1e3,ly=["avc","hevc","vp9","av1"],sy=["aac","opus"],dy=2082844800,uy=["strict","offset","cross-track-offset"],Qe,tt,Yr,Wa,ca,da,qo,Yo,xd,Co,Vo,Ui,Ms,$m,$s,Im,Cd,Dm,Is,Fm,Vd,Am,Lr,Ds,kn,Ln,Nd,Rm,Oi,Qr,el,Td,ri,nr,Pr,Fs,Lm=class{constructor(a){if(pt(this,Ms),pt(this,$s),pt(this,Cd),pt(this,Is),pt(this,Vd),pt(this,Lr),pt(this,kn),pt(this,Nd),pt(this,Oi),pt(this,el),pt(this,ri),pt(this,Pr),pt(this,Qe,void 0),pt(this,tt,void 0),pt(this,Yr,void 0),pt(this,Wa,void 0),pt(this,ca,null),pt(this,da,null),pt(this,qo,Math.floor(Date.now()/1e3)+dy),pt(this,Yo,[]),pt(this,xd,1),pt(this,Co,[]),pt(this,Vo,[]),pt(this,Ui,!1),wt(this,Ms,$m).call(this,a),a.video=Ri(a.video),a.audio=Ri(a.audio),a.fastStart=Ri(a.fastStart),this.target=a.target,ua(this,Qe,{firstTimestampBehavior:"strict",...a}),a.target instanceof kd)ua(this,tt,new ny(a.target));else if(a.target instanceof Nm)ua(this,tt,new Sd(a.target));else if(a.target instanceof ay)ua(this,tt,new ry(a.target));else throw new Error(`Invalid target: ${a.target}`);wt(this,Is,Fm).call(this),wt(this,$s,Im).call(this)}addVideoChunk(a,n,t,o){if(!(a instanceof EncodedVideoChunk))throw new TypeError("addVideoChunk's first argument (sample) must be of type EncodedVideoChunk.");if(n&&typeof n!="object")throw new TypeError("addVideoChunk's second argument (meta), when provided, must be an object.");if(t!==void 0&&(!Number.isFinite(t)||t<0))throw new TypeError("addVideoChunk's third argument (timestamp), when provided, must be a non-negative real number.");if(o!==void 0&&!Number.isFinite(o))throw new TypeError("addVideoChunk's fourth argument (compositionTimeOffset), when provided, must be a real number.");let i=new Uint8Array(a.byteLength);a.copyTo(i),this.addVideoChunkRaw(i,a.type,t??a.timestamp,a.duration,n,o)}addVideoChunkRaw(a,n,t,o,i,r){if(!(a instanceof Uint8Array))throw new TypeError("addVideoChunkRaw's first argument (data) must be an instance of Uint8Array.");if(n!=="key"&&n!=="delta")throw new TypeError("addVideoChunkRaw's second argument (type) must be either 'key' or 'delta'.");if(!Number.isFinite(t)||t<0)throw new TypeError("addVideoChunkRaw's third argument (timestamp) must be a non-negative real number.");if(!Number.isFinite(o)||o<0)throw new TypeError("addVideoChunkRaw's fourth argument (duration) must be a non-negative real number.");if(i&&typeof i!="object")throw new TypeError("addVideoChunkRaw's fifth argument (meta), when provided, must be an object.");if(r!==void 0&&!Number.isFinite(r))throw new TypeError("addVideoChunkRaw's sixth argument (compositionTimeOffset), when provided, must be a real number.");if(wt(this,Pr,Fs).call(this),!ee(this,Qe).video)throw new Error("No video track declared.");if(typeof ee(this,Qe).fastStart=="object"&&ee(this,ca).samples.length===ee(this,Qe).fastStart.expectedVideoChunks)throw new Error(`Cannot add more video chunks than specified in 'fastStart' (${ee(this,Qe).fastStart.expectedVideoChunks}).`);let l=wt(this,Lr,Ds).call(this,ee(this,ca),a,n,t,o,i,r);if(ee(this,Qe).fastStart==="fragmented"&&ee(this,da)){for(;ee(this,Vo).length>0&&ee(this,Vo)[0].decodeTimestamp<=l.decodeTimestamp;){let s=ee(this,Vo).shift();wt(this,kn,Ln).call(this,ee(this,da),s)}l.decodeTimestamp<=ee(this,da).lastDecodeTimestamp?wt(this,kn,Ln).call(this,ee(this,ca),l):ee(this,Co).push(l)}else wt(this,kn,Ln).call(this,ee(this,ca),l)}addAudioChunk(a,n,t){if(!(a instanceof EncodedAudioChunk))throw new TypeError("addAudioChunk's first argument (sample) must be of type EncodedAudioChunk.");if(n&&typeof n!="object")throw new TypeError("addAudioChunk's second argument (meta), when provided, must be an object.");if(t!==void 0&&(!Number.isFinite(t)||t<0))throw new TypeError("addAudioChunk's third argument (timestamp), when provided, must be a non-negative real number.");let o=new Uint8Array(a.byteLength);a.copyTo(o),this.addAudioChunkRaw(o,a.type,t??a.timestamp,a.duration,n)}addAudioChunkRaw(a,n,t,o,i){if(!(a instanceof Uint8Array))throw new TypeError("addAudioChunkRaw's first argument (data) must be an instance of Uint8Array.");if(n!=="key"&&n!=="delta")throw new TypeError("addAudioChunkRaw's second argument (type) must be either 'key' or 'delta'.");if(!Number.isFinite(t)||t<0)throw new TypeError("addAudioChunkRaw's third argument (timestamp) must be a non-negative real number.");if(!Number.isFinite(o)||o<0)throw new TypeError("addAudioChunkRaw's fourth argument (duration) must be a non-negative real number.");if(i&&typeof i!="object")throw new TypeError("addAudioChunkRaw's fifth argument (meta), when provided, must be an object.");if(wt(this,Pr,Fs).call(this),!ee(this,Qe).audio)throw new Error("No audio track declared.");if(typeof ee(this,Qe).fastStart=="object"&&ee(this,da).samples.length===ee(this,Qe).fastStart.expectedAudioChunks)throw new Error(`Cannot add more audio chunks than specified in 'fastStart' (${ee(this,Qe).fastStart.expectedAudioChunks}).`);let r=wt(this,Lr,Ds).call(this,ee(this,da),a,n,t,o,i);if(ee(this,Qe).fastStart==="fragmented"&&ee(this,ca)){for(;ee(this,Co).length>0&&ee(this,Co)[0].decodeTimestamp<=r.decodeTimestamp;){let l=ee(this,Co).shift();wt(this,kn,Ln).call(this,ee(this,ca),l)}r.decodeTimestamp<=ee(this,ca).lastDecodeTimestamp?wt(this,kn,Ln).call(this,ee(this,da),r):ee(this,Vo).push(r)}else wt(this,kn,Ln).call(this,ee(this,da),r)}finalize(){if(ee(this,Ui))throw new Error("Cannot finalize a muxer more than once.");if(ee(this,Qe).fastStart==="fragmented"){for(let n of ee(this,Co))wt(this,kn,Ln).call(this,ee(this,ca),n);for(let n of ee(this,Vo))wt(this,kn,Ln).call(this,ee(this,da),n);wt(this,el,Td).call(this,!1)}else ee(this,ca)&&wt(this,Oi,Qr).call(this,ee(this,ca)),ee(this,da)&&wt(this,Oi,Qr).call(this,ee(this,da));let a=[ee(this,ca),ee(this,da)].filter(Boolean);if(ee(this,Qe).fastStart==="in-memory"){let n;for(let o=0;o<2;o++){let i=Fr(a,ee(this,qo)),r=ee(this,tt).measureBox(i);n=ee(this,tt).measureBox(ee(this,Wa));let l=ee(this,tt).pos+r+n;for(let s of ee(this,Yo)){s.offset=l;for(let{data:d}of s.samples)l+=d.byteLength,n+=d.byteLength}if(l<2**32)break;n>=2**32&&(ee(this,Wa).largeSize=!0)}let t=Fr(a,ee(this,qo));ee(this,tt).writeBox(t),ee(this,Wa).size=n,ee(this,tt).writeBox(ee(this,Wa));for(let o of ee(this,Yo))for(let i of o.samples)ee(this,tt).write(i.data),i.data=null}else if(ee(this,Qe).fastStart==="fragmented"){let n=ee(this,tt).pos,t=K0(a);ee(this,tt).writeBox(t);let o=ee(this,tt).pos-n;ee(this,tt).seek(ee(this,tt).pos-4),ee(this,tt).writeU32(o)}else{let n=ee(this,tt).offsets.get(ee(this,Wa)),t=ee(this,tt).pos-n;ee(this,Wa).size=t,ee(this,Wa).largeSize=t>=2**32,ee(this,tt).patchBox(ee(this,Wa));let o=Fr(a,ee(this,qo));if(typeof ee(this,Qe).fastStart=="object"){ee(this,tt).seek(ee(this,Yr)),ee(this,tt).writeBox(o);let i=n-ee(this,tt).pos;ee(this,tt).writeBox(d0(i))}else ee(this,tt).writeBox(o)}wt(this,ri,nr).call(this),ee(this,tt).finalize(),ua(this,Ui,!0)}};Qe=new WeakMap;tt=new WeakMap;Yr=new WeakMap;Wa=new WeakMap;ca=new WeakMap;da=new WeakMap;qo=new WeakMap;Yo=new WeakMap;xd=new WeakMap;Co=new WeakMap;Vo=new WeakMap;Ui=new WeakMap;Ms=new WeakSet;$m=function(a){if(typeof a!="object")throw new TypeError("The muxer requires an options object to be passed to its constructor.");if(!(a.target instanceof hl))throw new TypeError("The target must be provided and an instance of Target.");if(a.video){if(!ly.includes(a.video.codec))throw new TypeError(`Unsupported video codec: ${a.video.codec}`);if(!Number.isInteger(a.video.width)||a.video.width<=0)throw new TypeError(`Invalid video width: ${a.video.width}. Must be a positive integer.`);if(!Number.isInteger(a.video.height)||a.video.height<=0)throw new TypeError(`Invalid video height: ${a.video.height}. Must be a positive integer.`);const n=a.video.rotation;if(typeof n=="number"&&![0,90,180,270].includes(n))throw new TypeError(`Invalid video rotation: ${n}. Has to be 0, 90, 180 or 270.`);if(Array.isArray(n)&&(n.length!==9||n.some(t=>typeof t!="number")))throw new TypeError(`Invalid video transformation matrix: ${n.join()}`);if(a.video.frameRate!==void 0&&(!Number.isInteger(a.video.frameRate)||a.video.frameRate<=0))throw new TypeError(`Invalid video frame rate: ${a.video.frameRate}. Must be a positive integer.`)}if(a.audio){if(!sy.includes(a.audio.codec))throw new TypeError(`Unsupported audio codec: ${a.audio.codec}`);if(!Number.isInteger(a.audio.numberOfChannels)||a.audio.numberOfChannels<=0)throw new TypeError(`Invalid number of audio channels: ${a.audio.numberOfChannels}. Must be a positive integer.`);if(!Number.isInteger(a.audio.sampleRate)||a.audio.sampleRate<=0)throw new TypeError(`Invalid audio sample rate: ${a.audio.sampleRate}. Must be a positive integer.`)}if(a.firstTimestampBehavior&&!uy.includes(a.firstTimestampBehavior))throw new TypeError(`Invalid first timestamp behavior: ${a.firstTimestampBehavior}`);if(typeof a.fastStart=="object"){if(a.video){if(a.fastStart.expectedVideoChunks===void 0)throw new TypeError("'fastStart' is an object but is missing property 'expectedVideoChunks'.");if(!Number.isInteger(a.fastStart.expectedVideoChunks)||a.fastStart.expectedVideoChunks<0)throw new TypeError("'expectedVideoChunks' must be a non-negative integer.")}if(a.audio){if(a.fastStart.expectedAudioChunks===void 0)throw new TypeError("'fastStart' is an object but is missing property 'expectedAudioChunks'.");if(!Number.isInteger(a.fastStart.expectedAudioChunks)||a.fastStart.expectedAudioChunks<0)throw new TypeError("'expectedAudioChunks' must be a non-negative integer.")}}else if(![!1,"in-memory","fragmented"].includes(a.fastStart))throw new TypeError("'fastStart' option must be false, 'in-memory', 'fragmented' or an object.");if(a.minFragmentDuration!==void 0&&(!Number.isFinite(a.minFragmentDuration)||a.minFragmentDuration<0))throw new TypeError("'minFragmentDuration' must be a non-negative number.")};$s=new WeakSet;Im=function(){var a;if(ee(this,tt).writeBox(s0({holdsAvc:((a=ee(this,Qe).video)==null?void 0:a.codec)==="avc",fragmented:ee(this,Qe).fastStart==="fragmented"})),ua(this,Yr,ee(this,tt).pos),ee(this,Qe).fastStart==="in-memory")ua(this,Wa,Vs(!1));else if(ee(this,Qe).fastStart!=="fragmented"){if(typeof ee(this,Qe).fastStart=="object"){let n=wt(this,Cd,Dm).call(this);ee(this,tt).seek(ee(this,tt).pos+n)}ua(this,Wa,Vs(!0)),ee(this,tt).writeBox(ee(this,Wa))}wt(this,ri,nr).call(this)};Cd=new WeakSet;Dm=function(){if(typeof ee(this,Qe).fastStart!="object")return;let a=0,n=[ee(this,Qe).fastStart.expectedVideoChunks,ee(this,Qe).fastStart.expectedAudioChunks];for(let t of n)t&&(a+=8*Math.ceil(2/3*t),a+=4*t,a+=12*Math.ceil(2/3*t),a+=4*t,a+=8*t);return a+=4096,a};Is=new WeakSet;Fm=function(){if(ee(this,Qe).video&&ua(this,ca,{id:1,info:{type:"video",codec:ee(this,Qe).video.codec,width:ee(this,Qe).video.width,height:ee(this,Qe).video.height,rotation:ee(this,Qe).video.rotation??0,decoderConfig:null},timescale:ee(this,Qe).video.frameRate??57600,samples:[],finalizedChunks:[],currentChunk:null,firstDecodeTimestamp:void 0,lastDecodeTimestamp:-1,timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,compactlyCodedChunkTable:[]}),ee(this,Qe).audio&&(ua(this,da,{id:ee(this,Qe).video?2:1,info:{type:"audio",codec:ee(this,Qe).audio.codec,numberOfChannels:ee(this,Qe).audio.numberOfChannels,sampleRate:ee(this,Qe).audio.sampleRate,decoderConfig:null},timescale:ee(this,Qe).audio.sampleRate,samples:[],finalizedChunks:[],currentChunk:null,firstDecodeTimestamp:void 0,lastDecodeTimestamp:-1,timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,compactlyCodedChunkTable:[]}),ee(this,Qe).audio.codec==="aac")){let a=wt(this,Vd,Am).call(this,2,ee(this,Qe).audio.sampleRate,ee(this,Qe).audio.numberOfChannels);ee(this,da).info.decoderConfig={codec:ee(this,Qe).audio.codec,description:a,numberOfChannels:ee(this,Qe).audio.numberOfChannels,sampleRate:ee(this,Qe).audio.sampleRate}}};Vd=new WeakSet;Am=function(a,n,t){let i=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350].indexOf(n),r=t,l="";l+=a.toString(2).padStart(5,"0"),l+=i.toString(2).padStart(4,"0"),i===15&&(l+=n.toString(2).padStart(24,"0")),l+=r.toString(2).padStart(4,"0");let s=Math.ceil(l.length/8)*8;l=l.padEnd(s,"0");let d=new Uint8Array(l.length/8);for(let u=0;u<l.length;u+=8)d[u/8]=parseInt(l.slice(u,u+8),2);return d};Lr=new WeakSet;Ds=function(a,n,t,o,i,r,l){let s=o/1e6,d=(o-(l??0))/1e6,u=i/1e6,c=wt(this,Nd,Rm).call(this,s,d,a);return s=c.presentationTimestamp,d=c.decodeTimestamp,r!=null&&r.decoderConfig&&(a.info.decoderConfig===null?a.info.decoderConfig=r.decoderConfig:Object.assign(a.info.decoderConfig,r.decoderConfig)),{presentationTimestamp:s,decodeTimestamp:d,duration:u,data:n,size:n.byteLength,type:t,timescaleUnitsToNextSample:Sn(u,a.timescale)}};kn=new WeakSet;Ln=function(a,n){ee(this,Qe).fastStart!=="fragmented"&&a.samples.push(n);const t=Sn(n.presentationTimestamp-n.decodeTimestamp,a.timescale);if(a.lastTimescaleUnits!==null){let i=Sn(n.decodeTimestamp,a.timescale,!1),r=Math.round(i-a.lastTimescaleUnits);if(a.lastTimescaleUnits+=r,a.lastSample.timescaleUnitsToNextSample=r,ee(this,Qe).fastStart!=="fragmented"){let l=Kr(a.timeToSampleTable);l.sampleCount===1?(l.sampleDelta=r,l.sampleCount++):l.sampleDelta===r?l.sampleCount++:(l.sampleCount--,a.timeToSampleTable.push({sampleCount:2,sampleDelta:r}));const s=Kr(a.compositionTimeOffsetTable);s.sampleCompositionTimeOffset===t?s.sampleCount++:a.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:t})}}else a.lastTimescaleUnits=0,ee(this,Qe).fastStart!=="fragmented"&&(a.timeToSampleTable.push({sampleCount:1,sampleDelta:Sn(n.duration,a.timescale)}),a.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:t}));a.lastSample=n;let o=!1;if(!a.currentChunk)o=!0;else{let i=n.presentationTimestamp-a.currentChunk.startTimestamp;if(ee(this,Qe).fastStart==="fragmented"){let r=ee(this,ca)??ee(this,da);const l=ee(this,Qe).minFragmentDuration??1;a===r&&n.type==="key"&&i>=l&&(o=!0,wt(this,el,Td).call(this))}else o=i>=.5}o&&(a.currentChunk&&wt(this,Oi,Qr).call(this,a),a.currentChunk={startTimestamp:n.presentationTimestamp,samples:[]}),a.currentChunk.samples.push(n)};Nd=new WeakSet;Rm=function(a,n,t){var l,s;const o=ee(this,Qe).firstTimestampBehavior==="strict",i=t.lastDecodeTimestamp===-1;if(o&&i&&n!==0)throw new Error(`The first chunk for your media track must have a timestamp of 0 (received DTS=${n}).Non-zero first timestamps are often caused by directly piping frames or audio data from a MediaStreamTrack into the encoder. Their timestamps are typically relative to the age of thedocument, which is probably what you want.
19
+
20
+ If you want to offset all timestamps of a track such that the first one is zero, set firstTimestampBehavior: 'offset' in the options.
21
+ `);if(ee(this,Qe).firstTimestampBehavior==="offset"||ee(this,Qe).firstTimestampBehavior==="cross-track-offset"){t.firstDecodeTimestamp===void 0&&(t.firstDecodeTimestamp=n);let d;ee(this,Qe).firstTimestampBehavior==="offset"?d=t.firstDecodeTimestamp:d=Math.min(((l=ee(this,ca))==null?void 0:l.firstDecodeTimestamp)??1/0,((s=ee(this,da))==null?void 0:s.firstDecodeTimestamp)??1/0),n-=d,a-=d}if(n<t.lastDecodeTimestamp)throw new Error(`Timestamps must be monotonically increasing (DTS went from ${t.lastDecodeTimestamp*1e6} to ${n*1e6}).`);return t.lastDecodeTimestamp=n,{presentationTimestamp:a,decodeTimestamp:n}};Oi=new WeakSet;Qr=function(a){if(ee(this,Qe).fastStart==="fragmented")throw new Error("Can't finalize individual chunks if 'fastStart' is set to 'fragmented'.");if(a.currentChunk){if(a.finalizedChunks.push(a.currentChunk),ee(this,Yo).push(a.currentChunk),(a.compactlyCodedChunkTable.length===0||Kr(a.compactlyCodedChunkTable).samplesPerChunk!==a.currentChunk.samples.length)&&a.compactlyCodedChunkTable.push({firstChunk:a.finalizedChunks.length,samplesPerChunk:a.currentChunk.samples.length}),ee(this,Qe).fastStart==="in-memory"){a.currentChunk.offset=0;return}a.currentChunk.offset=ee(this,tt).pos;for(let n of a.currentChunk.samples)ee(this,tt).write(n.data),n.data=null;wt(this,ri,nr).call(this)}};el=new WeakSet;Td=function(a=!0){if(ee(this,Qe).fastStart!=="fragmented")throw new Error("Can't finalize a fragment unless 'fastStart' is set to 'fragmented'.");let n=[ee(this,ca),ee(this,da)].filter(s=>s&&s.currentChunk);if(n.length===0)return;let t=i0(this,xd)._++;if(t===1){let s=Fr(n,ee(this,qo),!0);ee(this,tt).writeBox(s)}let o=ee(this,tt).pos,i=Mu(t,n);ee(this,tt).writeBox(i);{let s=Vs(!1),d=0;for(let c of n)for(let m of c.currentChunk.samples)d+=m.size;let u=ee(this,tt).measureBox(s)+d;u>=2**32&&(s.largeSize=!0,u=ee(this,tt).measureBox(s)+d),s.size=u,ee(this,tt).writeBox(s)}for(let s of n){s.currentChunk.offset=ee(this,tt).pos,s.currentChunk.moofOffset=o;for(let d of s.currentChunk.samples)ee(this,tt).write(d.data),d.data=null}let r=ee(this,tt).pos;ee(this,tt).seek(ee(this,tt).offsets.get(i));let l=Mu(t,n);ee(this,tt).writeBox(l),ee(this,tt).seek(r);for(let s of n)s.finalizedChunks.push(s.currentChunk),ee(this,Yo).push(s.currentChunk),s.currentChunk=null;a&&wt(this,ri,nr).call(this)};ri=new WeakSet;nr=function(){ee(this,tt)instanceof Sd&&ee(this,tt).flush()};Pr=new WeakSet;Fs=function(){if(ee(this,Ui))throw new Error("Cannot add new video or audio chunks after the file has been finalized.")};const Ji=30;class li extends Error{constructor({message:t="",code:o=""},...i){super(t,...i);ie(this,"message");ie(this,"code");this.code=o,this.message=t}}class Un extends li{}class na extends li{}class tl extends li{}class $u extends li{}function cy(a,n=Ji){if(n<1)throw new na({code:"invalidArgument",message:"FPS must be greater or equal to 1"});return Math.round(a*n)}function Qo(a,n=Ji){if(n<1)throw new na({code:"invalidArgument",message:"FPS must be greater or equal to 1"});return Math.round(a/n*1e3)}class Ze{constructor(n=0){ie(this,"time");this.time=Math.round(n)}get millis(){return this.time}set millis(n){this.time=Math.round(n)}get frames(){return cy(this.millis/1e3)}set frames(n){this.millis=Qo(n)}get seconds(){return this.millis/1e3}set seconds(n){this.millis=n*1e3}addMillis(n){return this.millis=this.millis+n,this}addFrames(n){const t=Qo(n);return this.millis=this.millis+t,this}add(n){return new Ze(n.millis+this.millis)}subtract(n){return new Ze(this.millis-n.millis)}static fromSeconds(n){const t=new Ze;return t.millis=n*1e3,t}static fromFrames(n,t){const o=new Ze;return o.millis=Qo(n,t),o}copy(){return new Ze(this.millis)}toJSON(){return this.millis}static fromJSON(n){return new Ze(n)}}function Iu(a,n){return[a.slice(0,n),a.slice(n)].filter(t=>t.length>0)}function Ur(a,n){return n?Math.floor(Math.random()*(n-a+1)+a):a}function my(a,n,t){t<0&&(t=0);const o=a[n];a.splice(n,1),a.splice(t,0,o)}function Du(a){return typeof a!="function"?!1:/^class\s/.test(Function.prototype.toString.call(a))}function py(a){const n=a.numberOfChannels,t=a.length,o=new Int16Array(t*n);for(let i=0;i<t;i++)for(let r=0;r<n;r++){let l=a.getChannelData(r)[i]*32767;l>32767&&(l=32767),l<-32767&&(l=-32767),o[i*n+r]=l}return o}function fy(a,n=44100,t=2){if(a.sampleRate==n&&a.numberOfChannels==t)return a;const o=Math.floor(a.duration*n),i=new OfflineAudioContext(t,1,n).createBuffer(t,o,n);for(let r=0;r<a.numberOfChannels;r++){const l=a.getChannelData(r),s=i.getChannelData(r),d=a.sampleRate/n;for(let u=0;u<s.length;u++){const c=u*d,m=Math.floor(c),p=Math.ceil(c);if(p>=l.length)s[u]=l[m];else{const f=c-m;s[u]=l[m]*(1-f)+l[p]*f}}}return i}async function vy(a){const{fps:n,height:t,width:o,bitrate:i}=a,r=["avc1.640034","avc1.4d0034","avc1.640028","avc1.640C32","avc1.64001f","avc1.42001E"],l=["prefer-hardware","prefer-software"],s=[];for(const u of r)for(const c of l)s.push({codec:u,hardwareAcceleration:c,width:o,height:t,bitrate:i,framerate:n});const d=[];if(!("VideoEncoder"in window))return d;for(const u of s){const c=await VideoEncoder.isConfigSupported(u);c.supported&&d.push(c.config??u)}return d.sort(hy)}function hy(a,n){const t=a.hardwareAcceleration??"",o=n.hardwareAcceleration??"";return t<o?-1:t>o?1:0}async function gy(a,n="untitled"){const t=document.createElement("a");if(document.head.appendChild(t),t.download=n,typeof a=="string"&&a.startsWith("data:image/svg+xml;base64,")){const o=a.split(",")[1],i=atob(o),r=new Array(i.length);for(let d=0;d<i.length;d++)r[d]=i.charCodeAt(d);const l=new Uint8Array(r),s=new Blob([l],{type:"image/svg+xml"});t.href=URL.createObjectURL(s),t.download=n.split(".")[0]+".svg"}else typeof a=="string"?t.href=a:t.href=URL.createObjectURL(a);t.click(),t.remove()}function Fu(a){return`${a.hours.toString().padStart(2,"0")}:${a.minutes.toString().padStart(2,"0")}:${a.seconds.toString().padStart(2,"0")},`+a.milliseconds.toString().padStart(3,"0")}function Au(a){const n=new Date(1970,0,1);return n.setSeconds(a),n.setMilliseconds(Math.round(a%1*1e3)),{hours:n.getHours(),minutes:n.getMinutes(),seconds:n.getSeconds(),milliseconds:n.getMilliseconds()}}class wr{constructor(n){ie(this,"words",[]);n&&(this.words=n)}get duration(){return this.stop.subtract(this.start)}get text(){return this.words.map(({text:n})=>n).join(" ")}get start(){var n;return((n=this.words.at(0))==null?void 0:n.start)??new Ze}get stop(){var n;return((n=this.words.at(-1))==null?void 0:n.stop)??new Ze}}var As=(a=>(a.en="en",a.de="de",a))(As||{});class Ru{constructor(n,t,o,i){ie(this,"id",crypto.randomUUID());ie(this,"text");ie(this,"start");ie(this,"stop");ie(this,"confidence");this.text=n,this.start=new Ze(t),this.stop=new Ze(o),this.confidence=i}get duration(){return this.stop.subtract(this.start)}}class To{constructor(n=[],t=As.en){ie(this,"id",crypto.randomUUID());ie(this,"language",As.en);ie(this,"groups",[]);this.groups=n,this.language=t}get text(){return this.groups.map(({text:n})=>n).join(" ")}get words(){return this.groups.flatMap(({words:n})=>n)}*iter({count:n,duration:t,length:o}){for(const i of this.groups){let r;for(const[l,s]of i.words.entries())r&&(n&&r.words.length>=Ur(...n)?(yield r,r=void 0):t&&(r==null?void 0:r.duration.seconds)>=Ur(...t)?(yield r,r=void 0):o&&r.text.length>=Ur(...o)&&(yield r,r=void 0)),r?r.words.push(s):r=new wr([s]),l==i.words.length-1&&(yield r)}}optimize(){const n=this.groups.flatMap(t=>t.words);for(let t=0;t<n.length-1;t++){const o=n[t],i=n[t+1];i.start.millis-o.stop.millis<0?i.start.millis=o.stop.millis+1:o.stop.millis=i.start.millis-1}return this}toSRT(n={}){let t=1,o="";for(const i of this.iter(n)){const r=Au(i.start.seconds),l=Au(i.stop.seconds);o+=`${t}
22
+ `+Fu(r)+" --> "+Fu(l)+`
23
+ ${i.text}
24
+
25
+ `,t+=1}return{text:o,blob:new Blob([o],{type:"text/plain;charset=utf8"})}}toJSON(){return this.groups.map(n=>n.words.map(t=>({token:t.text,start:t.start.millis,stop:t.stop.millis})))}slice(n,t=!0){let o=0;const i=[];for(const r of this.groups)for(const l of r.words)if(i.length==0&&t&&(o=l.start.millis),i.push(new Ru(l.text,l.start.millis-o,l.stop.millis-o)),i.length==n)return new To([new wr(i)]);return new To([new wr(i)])}copy(){return To.fromJSON(this.toJSON())}static fromJSON(n){const t=new To;for(const o of n){const i=new wr;for(const r of o)i.words.push(new Ru(r.token,r.start,r.stop));t.groups.push(i)}return t}static async from(n,t){const o=await fetch(n,t);if(!o.ok)throw new Un({code:"unexpectedIOError",message:"An unexpected error occurred while fetching the file"});return To.fromJSON(await o.json())}}function Or(a,n,t){return a+(n-a)*t}function by(a,n,t){const o=Number.parseInt(a.slice(1),16),i=Number.parseInt(n.slice(1),16),r=o>>16&255,l=o>>8&255,s=o&255,d=i>>16&255,u=i>>8&255,c=i&255,m=Math.round(Or(r,d,t)),p=Math.round(Or(l,u,t)),f=Math.round(Or(s,c,t));return`#${((1<<24)+(m<<16)+(p<<8)+f).toString(16).slice(1)}`}const yy={linear:a=>a,easeIn:a=>a*a,easeOut:a=>a*(2-a),easeInOut:a=>a<.5?2*a*a:-1+(4-2*a)*a};class qe{constructor(n,t,o={}){ie(this,"input");ie(this,"output");ie(this,"options");if(n.length!==t.length)throw new na({code:"invalidKeyframes",message:"inputRange and outputRange must have the same length"});this.input=n.map(i=>Qo(i)),this.output=t,this.options={extrapolate:"clamp",easing:"linear",type:"number",...JSON.parse(JSON.stringify(o))}}normalize(n){const{input:t}=this;if(n<t[0])return this.options.extrapolate==="clamp"?{t:0,segment:0}:{t:(n-t[0])/(t[1]-t[0]),segment:0};if(n>t[t.length-1])return this.options.extrapolate==="clamp"?{t:1,segment:t.length-2}:{t:(n-t[t.length-2])/(t[t.length-1]-t[t.length-2]),segment:t.length-2};for(let o=0;o<t.length-1;o++){const i=t[o],r=t[o+1];if(n>=i&&n<=r)return{t:(n-i)/(r-i),segment:o}}return{t:0,segment:0}}interpolate(n,t){const o=this.output[t],i=this.output[t+1],r=yy[this.options.easing](n);if(typeof o=="number"&&typeof i=="number")return Or(o,i,r);if(typeof o=="string"&&typeof i=="string")return by(o,i,r);if(this.output.length==1)return this.output[0];throw new na({code:"invalidKeyframes",message:"Unsupported output range types"})}value(n){const{t,segment:o}=this.normalize(typeof n=="number"?n:n.millis);return this.interpolate(t,o)}push(n,t){return this.input.push(Qo(n)),this.output.push(t),this}toJSON(){return this}static fromJSON(n){const t=new qe([],[]);return Object.assign(t,n),t}}class en{constructor(){ie(this,"id",crypto.randomUUID())}toJSON(){const n={};return(this.constructor.__serializableProperties||[]).forEach(({propertyKey:t,serializer:o})=>{const i=this[t];o&&i instanceof o?n[t]=i.toJSON():n[t]=i}),n}static fromJSON(n){const t=new this;return(this.__serializableProperties||[]).forEach(({propertyKey:o,serializer:i})=>{if(n.hasOwnProperty(o))if(i){const r=i.fromJSON(n[o]);t[o]=r}else t[o]=n[o]}),t}}function je(a){return function(n,t){n.constructor.__serializableProperties||(n.constructor.__serializableProperties=[]),n.constructor.__serializableProperties.push({propertyKey:t,serializer:a})}}function or(a){return class extends a{constructor(){super(...arguments);ie(this,"_handlers",{})}on(t,o){if(typeof o!="function")throw new Error("The callback of an event listener needs to be a function.");const i=crypto.randomUUID();return this._handlers[t]?this._handlers[t][i]=o:this._handlers[t]={[i]:o},i}off(t,...o){if(t){if(t==="*"){this._handlers={};return}for(const i of Object.values(this._handlers))t in i&&delete i[t];for(const i of o)this.off(i)}}trigger(t,o){var r,l;const i=new CustomEvent(t,{detail:o});Object.defineProperty(i,"currentTarget",{writable:!1,value:this});for(const s in this._handlers[t]??{})(r=this._handlers[t])==null||r[s](i);for(const s in this._handlers["*"]??{})(l=this._handlers["*"])==null||l[s](i)}bubble(t){return this.on("*",o=>{t.trigger(o.type,o.detail)})}resolve(t){return(o,i)=>{this.on("error",i),this.on(t,o)}}}}function Bd(a,n,t=0){if(!(a instanceof zt.Container||a instanceof zt.Filter||t==3))for(const o in a){const i=a[o];o&&(i instanceof qe&&(a[o]=i.value(n)),i!=null&&typeof i=="object"&&Object.keys(i).length&&Bd(i,n,t+1))}}var wy=Object.defineProperty,gl=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&wy(n,t,i),i};const ir=class Pm extends or(en){constructor(t={}){super();ie(this,"_name");ie(this,"_start",new Ze);ie(this,"_stop",Ze.fromSeconds(16));ie(this,"type","base");ie(this,"source");ie(this,"view",new zt.Container);ie(this,"createdAt",new Date);ie(this,"disabled",!1);ie(this,"state","IDLE");ie(this,"track");Object.assign(this,t)}get name(){var t;return this._name??((t=this.source)==null?void 0:t.name)}set name(t){this._name=t}get start(){return this._start}get stop(){return this._stop}async connect(t){this.state="ATTACHED",this.track=t,this.trigger("attach",void 0)}set start(t){typeof t=="number"?this.start.frames=t:this._start=t,this.start.millis>=this.stop.millis&&(this.stop.millis=this.start.millis+1),this.trigger("frame",this.start.frames)}set stop(t){typeof t=="number"?this.stop.frames=t:this._stop=t,this.stop.millis<=this.start.millis&&(this.start.millis=this.stop.millis-1),this.trigger("frame",this.stop.frames)}offsetBy(t){return typeof t=="number"?(this.start.addFrames(t),this.stop.addFrames(t),this.trigger("offsetBy",Ze.fromFrames(t))):(this.start.addMillis(t.millis),this.stop.addMillis(t.millis),this.trigger("offsetBy",t)),this.trigger("frame",void 0),this}async init(){}enter(){}update(t){}exit(){}detach(){var t;return(t=this.track)==null||t.remove(this),this}async split(t){var r,l;if(t||(t=(l=(r=this.track)==null?void 0:r.composition)==null?void 0:l.frame),typeof t=="number"&&(t=Ze.fromFrames(t)),!t||t.millis<=this.start.millis||t.millis>=this.stop.millis)throw new na({code:"splitOutOfRange",message:"Cannot split clip at the specified time"});if(!this.track)throw new na({code:"trackNotAttached",message:"Track must be attached to a track"});const o=this.copy();this.stop=t.copy(),o.start=t.copy().addMillis(1),Bd(o,o.start.subtract(this.start));const i=this.track.clips.findIndex(s=>s.id==this.id);return await this.track.add(o,i+1),o}copy(){return Pm.fromJSON(JSON.parse(JSON.stringify(this)))}set(t){return t&&Object.assign(this,t),this.trigger("update",void 0),this}};gl([je()],ir.prototype,"_name");gl([je(Ze)],ir.prototype,"_start");gl([je(Ze)],ir.prototype,"_stop");gl([je()],ir.prototype,"disabled");let rr=ir;var ky=Object.defineProperty,jo=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&ky(n,t,i),i};class Cn extends or(en){constructor(){super(...arguments);ie(this,"state","IDLE");ie(this,"metadata");ie(this,"objectURL");ie(this,"duration",Ze.fromSeconds(16));ie(this,"added",!1);ie(this,"type","base");ie(this,"name","");ie(this,"mimeType");ie(this,"externalURL");ie(this,"external",!1);ie(this,"file")}async createObjectURL(){return this.objectURL?this.objectURL:(this.objectURL=URL.createObjectURL(await this.getFile()),this.objectURL)}async getFile(){if(!this.file&&this.state=="LOADING"&&await new Promise(this.resolve("load")),!this.file)throw new na({code:"fileNotAccessible",message:"The desired file cannot be accessed"});return this.file}async loadFile(t){this.name=t.name,this.mimeType=Us(t.type),this.external=!1,this.file=t}async loadUrl(t,o){const i=await fetch(t,o);if(!(i!=null&&i.ok))throw new Un({code:"unexpectedIOError",message:"An unexpected error occurred while fetching the file"});const r=await i.blob();this.name=t.toString().split("/").at(-1)??"",this.external=!0,this.file=new File([r],this.name,{type:r.type}),this.externalURL=t,this.mimeType=Us(r.type)}async from(t,o){try{this.state="LOADING",t instanceof File?await this.loadFile(t):await this.loadUrl(t,o),this.state="READY",this.trigger("load",void 0)}catch(i){throw this.state=="ERROR",this.trigger("error",new Error(String(i))),i}return this}async arrayBuffer(){return await(await this.getFile()).arrayBuffer()}async remove(){this.state="IDLE",this.objectURL&&(URL.revokeObjectURL(this.objectURL),this.objectURL=void 0),delete this.file}async download(){const t=await this.getFile();gy(t,this.name)}async thumbnail(){return document.createElement("div")}static async from(t,o,i=new this){return i.from(t,o)}}jo([je()],Cn.prototype,"objectURL");jo([je()],Cn.prototype,"duration");jo([je()],Cn.prototype,"type");jo([je()],Cn.prototype,"name");jo([je()],Cn.prototype,"mimeType");jo([je()],Cn.prototype,"externalURL");jo([je()],Cn.prototype,"external");const Lu="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3C/svg%3E";function _y(a){const n=new TextEncoder().encode(a);let t="";const o=n.byteLength;for(let i=0;i<o;i++)t+=String.fromCharCode(n[i]);return btoa(t)}function Pu(a){if(!a||!a.body)return Lu;const n=a.body.scrollWidth,t=a.body.scrollHeight,o=a.cloneNode(!0),i=o.getElementsByTagName("style").item(0),r=o.getElementsByTagName("body").item(0);if(r==null||r.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),!r)return Lu;const l=new XMLSerializer,s=i?l.serializeToString(i):"",d=l.serializeToString(r),u=`
26
+ <svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${t}">
27
+ body { padding: 0; }
28
+ ${s}
29
+ <foreignObject width="100%" height="100%">
30
+ ${d}
31
+ </foreignObject>
32
+ </svg>`;return"data:image/svg+xml;base64,"+_y(u)}class Uu extends Cn{constructor(){super();ie(this,"type","html");ie(this,"iframe");const t=document.createElement("iframe");t.style.position="absolute",t.style.width="0",t.style.height="0",t.style.border="0",t.style.visibility="hidden",document.body.appendChild(t),this.iframe=t}get document(){var t;return(t=this.iframe.contentWindow)==null?void 0:t.document}async createObjectURL(){return!this.file&&this.state=="LOADING"&&await new Promise(this.resolve("load")),this.objectURL?this.objectURL:(this.objectURL=Pu(this.document),this.objectURL)}async loadUrl(t,o){await super.loadUrl(t,o),this.iframe.setAttribute("src",URL.createObjectURL(this.file)),await new Promise((i,r)=>{this.iframe.onload=()=>i(),this.iframe.onerror=l=>r(l)})}async loadFile(t){await super.loadFile(t),this.iframe.setAttribute("src",URL.createObjectURL(this.file)),await new Promise((o,i)=>{this.iframe.onload=()=>o(),this.iframe.onerror=r=>i(r)})}update(){this.objectURL&&(this.objectURL=Pu(this.document))}async thumbnail(){const t=new Image;return t.src=await this.createObjectURL(),t.className="object-contain w-full aspect-video h-auto",t}}function Ey(a,n={}){const{threshold:t=.02,hopSize:o=1024,minDuration:i=500}=n,r=[],l=a.getChannelData(0),s=a.sampleRate,d=Math.floor(i/1e3*s);let u=null,c=0;for(let m=0;m<l.length;m+=o){let p=0;const f=Math.min(m+o,l.length);for(let v=m;v<f;v++)p+=l[v]*l[v];p=Math.sqrt(p/(f-m)),p<t?(c+=o,u===null&&(u=m)):(u!==null&&c>=d&&r.push({start:Ze.fromSeconds(u/s),stop:Ze.fromSeconds(m/s)}),u=null,c=0)}return u!==null&&c>=d&&r.push({start:Ze.fromSeconds(u/s),stop:Ze.fromSeconds(l.length/s)}),r}const os=3e3;class oo extends Cn{constructor(){super(...arguments);ie(this,"type","audio");ie(this,"decoding",!1);ie(this,"_silences");ie(this,"transcript");ie(this,"audioBuffer")}async decode(t=2,o=48e3,i=!1){if(this.decoding&&i&&(await new Promise(this.resolve("update")),this.audioBuffer))return this.audioBuffer;this.decoding=!0;const r=await this.arrayBuffer(),l=await new OfflineAudioContext(t,1,o).decodeAudioData(r);return this.duration.seconds=l.duration,i&&(this.audioBuffer=l),this.decoding=!1,this.trigger("update",void 0),l}async samples(t=60,o=50,i=0){const r=this.audioBuffer??await this.decode(1,3e3,!0),l=Math.round(r.sampleRate/o),s=r.sampleRate*r.duration-l,d=Math.ceil(s/t),u=r.getChannelData(0),c=[];for(let m=0;m<s;m+=d){let p=0;for(let f=m;f<m+l;f++)p+=Math.abs(u[m]);c.push(Math.log1p(p/l*100))}return c.map(m=>Math.round(m/Math.max(...c)*(100-i))+i)}async fastsampler({length:t=60,start:o=0,stop:i,logarithmic:r=!1}={}){typeof o=="object"&&(o=o.millis),typeof i=="object"&&(i=i.millis);const l=this.audioBuffer??await this.decode(1,os,!0),s=l.getChannelData(0),d=Math.floor(Math.max(o*os/1e3,0)),u=i?Math.floor(Math.min(i*os/1e3,l.length)):l.length,c=Math.floor((u-d)/t),m=new Float32Array(t);for(let p=0;p<t;p++){const f=d+p*c,v=f+c;let h=-1/0;for(let k=f;k<v;k++){const E=s[k];E>h&&(h=E)}m[p]=r?Math.log2(1+h):h}return m}async thumbnail(...t){const o=await this.samples(...t),i=document.createElement("div");i.className="flex flex-row absolute space-between inset-0 audio-samples";for(const r of o){const l=document.createElement("div");l.className="audio-sample-item",l.style.height=`${r}%`,i.appendChild(l)}return i}async silences(t={}){if(this._silences)return this._silences;const o=await this.arrayBuffer(),i=new AudioContext,r=await i.decodeAudioData(o);return this._silences=Ey(r,t),i.close(),this._silences}}class Rs extends Cn{constructor(){super(...arguments);ie(this,"type","image")}async thumbnail(){const t=new Image;return t.src=await this.createObjectURL(),t.className="object-cover w-full aspect-video h-auto",t}}class Mo extends oo{constructor(){super(...arguments);ie(this,"type","video");ie(this,"downloadInProgress",!0)}async loadUrl(t,o){const i=await fetch(t,o);if(!(i!=null&&i.ok))throw new Un({code:"unexpectedIOError",message:"An unexpected error occurred while fetching the file"});this.name=t.toString().split("/").at(-1)??"",this.external=!0,this.externalURL=t,this.objectURL=String(t),this.mimeType=Us(i.headers.get("Content-type")),this.getBlob(i)}async getFile(){if(!this.file&&this.downloadInProgress&&await new Promise(this.resolve("load")),!this.file)throw new na({code:"fileNotAccessible",message:"The desired file cannot be accessed"});return this.file}async thumbnail(){const t=document.createElement("video");return t.className="object-cover w-full aspect-video h-auto",t.controls=!1,t.addEventListener("loadedmetadata",()=>{this.duration.seconds=t.duration,this.trigger("update",void 0)}),t.addEventListener("mousemove",o=>{const i=o.currentTarget,r=i==null?void 0:i.getBoundingClientRect(),l=o.clientX-((r==null?void 0:r.left)??0),s=i==null?void 0:i.duration;s&&r&&r.width>0&&(i.currentTime=Math.round(s*(l/r.width)))}),t.src=await this.createObjectURL(),t}async getBlob(t){try{this.downloadInProgress=!0;const o=await t.blob();this.file=new File([o],this.name,{type:o.type}),this.trigger("load",void 0)}catch(o){this.state=="ERROR",this.trigger("error",new Error(String(o)))}finally{this.downloadInProgress=!1}}}class Sy{static fromJSON(n){return[new Ze(n[0]),new Ze(n[1])]}}var xy=Object.defineProperty,Cy=Object.getOwnPropertyDescriptor,ui=(a,n,t,o)=>{for(var i=o>1?void 0:o?Cy(n,t):n,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=(o?l(n,t,i):l(i))||i);return o&&i&&xy(n,t,i),i};const Wo=class Um extends rr{constructor(t={}){super();ie(this,"source",new oo);ie(this,"_offset",new Ze);ie(this,"playing",!1);ie(this,"duration",new Ze);ie(this,"range",[new Ze,this.duration]);Object.assign(this,t)}get transcript(){return this.source.transcript}set transcript(t){this.source.transcript=t}get start(){return this.range[0].add(this.offset)}get stop(){return this.range[1].add(this.offset)}set start(t){typeof t=="number"&&(t=Ze.fromFrames(t));const o=t.subtract(this.offset);o.millis>=0&&o.millis<this.range[1].millis?this.range[0].millis=o.millis:o.millis<0?this.range[0].millis=0:this.range[0].millis=this.range[1].millis-1,this.trigger("frame",void 0)}set stop(t){typeof t=="number"&&(t=Ze.fromFrames(t));const o=t.subtract(this.offset);o.millis>this.range[0].millis&&o.millis<=this.duration.millis?this.range[1]=o:o.millis>this.duration.millis?this.range[1]=this.duration:this.range[1].millis=this.range[0].millis+1,this.trigger("frame",void 0)}get offset(){return this._offset}set offset(t){typeof t=="number"?this._offset.frames=t:this._offset=t,this.trigger("frame",this.offset.frames)}offsetBy(t){return typeof t=="number"?(this.offset.addFrames(t),this.trigger("offsetBy",Ze.fromFrames(t))):(this.offset.addMillis(t.millis),this.trigger("offsetBy",t)),this.trigger("frame",void 0),this}get muted(){var t;return((t=this.element)==null?void 0:t.muted)??!1}set muted(t){this.element&&(this.element.muted=t)}seek(t){return new Promise((o,i)=>{if(!this.element)return i(new $u({code:"elementNotDefined",message:"Cannot seek on undefined element"}));(t.millis<this.start.millis||t.millis>this.stop.millis)&&(t=this.start),this.element.onerror=()=>{var r;return i((r=this.element)==null?void 0:r.error)},this.element.pause(),this.element.currentTime=t.subtract(this.offset).seconds,this.element.onseeked=()=>o()})}subclip(t,o){if(t||(t=this.range[0]),o||(o=this.range[1]),typeof t=="number"&&(t=Ze.fromFrames(t)),typeof o=="number"&&(o=Ze.fromFrames(o)),t.millis>=o.millis)throw new na({code:"invalidKeyframe",message:"Start can't lower than or equal the stop"});return t.millis<0&&(this.range[0].millis=0,t=this.range[0]),o.millis>this.duration.millis&&this.duration.millis&&(o=this.duration),this.range=[t,o],this.trigger("frame",void 0),this}get volume(){var t;return((t=this.element)==null?void 0:t.volume)??1}set volume(t){this.element&&(this.element.volume=t)}copy(){const t=Um.fromJSON(JSON.parse(JSON.stringify(this)));return t.source=this.source,t}async split(t){var r,l;if(t||(t=(l=(r=this.track)==null?void 0:r.composition)==null?void 0:l.frame),typeof t=="number"&&(t=Ze.fromFrames(t)),!t||t.millis<=this.start.millis||t.millis>=this.stop.millis)throw new na({code:"invalidKeyframe",message:"Cannot split clip at the specified time"});if(!this.track)throw new $u({code:"trackNotDefined",message:"Clip must be attached to a track"});t=t.subtract(this.offset);const o=this.copy();this.range[1]=t.copy(),o.range[0]=t.copy().addMillis(1),Bd(o,o.start.subtract(this.start));const i=this.track.clips.findIndex(s=>s.id==this.id);return await this.track.add(o,i+1),o}async addCaptions(t){var o;if(!((o=this.track)!=null&&o.composition))throw new na({code:"compositionNotDefined",message:"Captions can only be generated after the clip has been added to the composition"});return await this.track.composition.createTrack("caption").from(this).generate(t)}set(t){return super.set(t)}async generateCaptions(t){return this.addCaptions(t)}async removeSilences(t={}){["READY","ATTACHED"].includes(this.state)||await this.init();const o=(await this.source.silences(t)).filter(l=>Ou(l,this.range)).sort((l,s)=>l.start.millis-s.start.millis);if(o.length==0)return[this];const i=t.padding??500,r=[this];for(const l of o){const s=r.at(-1);if(!s)break;if(!Ou(l,s.range))continue;const d=new Ze(Math.min(l.start.millis+i,l.stop.millis));if(l.start.millis>s.range[0].millis&&l.stop.millis<s.range[1].millis){const u=s.copy();s.range[1]=d,u.range[0]=l.stop,r.push(u)}else l.start.millis<=s.range[0].millis?s.range[0]=l.stop:l.stop.millis>=s.range[1].millis&&(s.range[1]=d)}return r}};ui([je(Ze)],Wo.prototype,"_offset",2);ui([je(Ze)],Wo.prototype,"duration",2);ui([je(Sy)],Wo.prototype,"range",2);ui([je(To)],Wo.prototype,"transcript",1);ui([je()],Wo.prototype,"muted",1);ui([je()],Wo.prototype,"volume",1);let bl=Wo;function Ou(a,n){return a.start.millis>=n[0].millis&&a.start.millis<=n[1].millis||a.stop.millis<=n[1].millis&&a.stop.millis>=n[0].millis}class kr{static fromJSON(n){return typeof n=="object"?qe.fromJSON(n):n}}class is{static fromJSON(n){return typeof n.x=="object"&&(n.x=qe.fromJSON(n.x)),typeof n.y=="object"&&(n.y=qe.fromJSON(n.y)),n}}let Vy=class{constructor(a){ie(this,"target");ie(this,"animation");this.target=a}init(a,n,t=0,o){if(!(a in this.target))throw new Error(`Property [${String(a)}] cannot be assigned`);const i=[t],r=[n];typeof this.target[a]==typeof n&&t!=0&&(i.unshift(0),r.unshift(this.target[a])),this.target[a]=this.animation=new qe(i,r,{easing:o})}};function Ny(a){const n=new Proxy(a,{get(t,o){return o=="to"?(i,r)=>{if(!t.animation)throw new na({code:"undefinedKeyframe",message:"Cannot use 'to() before selecting a property"});const l=new Ze(t.animation.input.at(-1)).frames+r;return t.animation.push(l,i),n}:(i,r,l)=>(t.init(o,i,r,l),n)}});return n}class Ty extends Vy{}var By=Object.defineProperty,My=Object.getOwnPropertyDescriptor,to=(a,n,t,o)=>{for(var i=o>1?void 0:o?My(n,t):n,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=(o?l(n,t,i):l(i))||i);return o&&i&&By(n,t,i),i};function yl(a){class n extends a{constructor(){super(...arguments);ie(this,"filters");ie(this,"_height");ie(this,"_width");ie(this,"_position",{x:this.view.position.x,y:this.view.position.y});ie(this,"_scale");ie(this,"rotation",this.view.angle);ie(this,"alpha",1);ie(this,"translate",{x:0,y:0})}get position(){return this._position}set position(i){typeof i=="string"?(this._position={x:"50%",y:"50%"},this.anchor={x:.5,y:.5}):this._position=i}get scale(){return this._scale??{x:this.view.scale.x,y:this.view.scale.y}}set scale(i){typeof i=="number"||i instanceof qe||typeof i=="function"?this._scale={x:i,y:i}:this._scale=i}get x(){return this._position.x}set x(i){this._position.x=i}get y(){return this._position.y}set y(i){this._position.y=i}get translateX(){return this.translate.x}set translateX(i){this.translate.x=i}get translateY(){return this.translate.y}set translateY(i){this.translate.y=i}get height(){return this._height??this.view.height}set height(i){this._height=i}get width(){return this._width??this.view.width}set width(i){this._width=i}get mask(){return this.view.mask}set mask(i){this.view.mask=i??null}get anchor(){return this.view.children[0]instanceof zt.Sprite?{x:this.view.children[0].anchor.x,y:this.view.children[0].anchor.y}:{x:0,y:0}}set anchor(i){const r=typeof i=="number"?{x:i,y:i}:i;for(const l of this.view.children)l instanceof zt.Sprite&&l.anchor.set(r.x,r.y)}enter(){this.filters&&!this.view.filters&&(this.view.filters=this.filters)}exit(){this.filters&&this.view.filters&&(this.view.filters=null)}animate(){return Ny(new Ty(this))}}return to([je(kr)],n.prototype,"_height",2),to([je(kr)],n.prototype,"_width",2),to([je(is)],n.prototype,"_position",2),to([je(is)],n.prototype,"_scale",2),to([je(kr)],n.prototype,"rotation",2),to([je(kr)],n.prototype,"alpha",2),to([je(is)],n.prototype,"translate",2),to([je()],n.prototype,"anchor",1),n}function wl(a,n,t){const o=t.value;return t.value=function(...i){var m,p,f,v;const r=i[0].subtract(this.start),l={width:((p=(m=this.track)==null?void 0:m.composition)==null?void 0:p.width)??1920,height:((v=(f=this.track)==null?void 0:f.composition)==null?void 0:v.height)??1080};let s;typeof this.translate.x=="number"?s=this.translate.x:typeof this.translate.x=="function"?s=this.translate.x.bind(this)(r):s=this.translate.x.value(r);let d;typeof this.translate.y=="number"?d=this.translate.y:typeof this.translate.y=="function"?d=this.translate.y.bind(this)(r):d=this.translate.y.value(r);let u;typeof this._position.x=="number"?u=this._position.x:typeof this._position.x=="string"?u=Number.parseFloat(this._position.x)*l.width/100:typeof this._position.x=="function"?u=this._position.x.bind(this)(r):u=this._position.x.value(r);let c;if(typeof this._position.y=="number"?c=this._position.y:typeof this._position.y=="string"?c=Number.parseFloat(this._position.y)*l.height/100:typeof this._position.y=="function"?c=this._position.y.bind(this)(r):c=this._position.y.value(r),this.view.position.set(u+s,c+d),typeof this._height=="string"?this.view.height=Math.round(Number.parseFloat(this._height)*l.height/100):typeof this._height=="object"?this.view.height=this._height.value(r):typeof this._height=="function"?this.view.height=this._height.bind(this)(r):this._height&&(this.view.height=this._height),this._height&&!this._width&&this.view.scale.set(this.view.scale.y),typeof this._width=="string"?this.view.width=Math.round(Number.parseFloat(this._width)*l.width/100):typeof this._width=="object"?this.view.width=this._width.value(r):typeof this._width=="function"?this.view.width=this._width.bind(this)(r):this._width&&(this.view.width=this._width),this._width&&!this._height&&this.view.scale.set(this.view.scale.x),this._scale){let h;typeof this._scale.x=="number"?h=this._scale.x:typeof this._scale.x=="function"?h=this._scale.x.bind(this)(r):h=this._scale.x.value(r);let k;typeof this._scale.y=="number"?k=this._scale.y:typeof this._scale.y=="function"?k=this._scale.y.bind(this)(r):k=this._scale.y.value(r),(this._width||this._height)&&(h*=this.view.scale._x,k*=this.view.scale._y),this.view.scale.set(h,k)}return typeof this.rotation=="number"?this.view.angle=this.rotation:typeof this.rotation=="function"?this.view.angle=this.rotation.bind(this)(r):this.view.angle=this.rotation.value(r),typeof this.alpha=="number"?this.view.alpha=this.alpha:typeof this.alpha=="function"?this.view.alpha=this.alpha.bind(this)(r):this.view.alpha=this.alpha.value(r),o.apply(this,i)},t}var $y=Object.defineProperty,Iy=Object.getOwnPropertyDescriptor,Dy=(a,n,t,o)=>{for(var i=Iy(n,t),r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&$y(n,t,i),i};const Om=class zm extends yl(rr){constructor(t,o={}){super();ie(this,"type","image");ie(this,"element",new Image);ie(this,"source",new Rs);ie(this,"sprite",new zt.Sprite);this.view.addChild(this.sprite),t instanceof Rs&&(this.source=t),t instanceof File&&this.source.from(t),Object.assign(this,o)}async init(){this.element.setAttribute("src",await this.source.createObjectURL()),await new Promise((t,o)=>{this.element.onload=()=>{this.sprite.texture=zt.Texture.from(this.element),this.state="READY",t()},this.element.onerror=i=>{this.state="ERROR",o(new Un({code:"sourceNotProcessable",message:"An error occurred while processing the input medium."}))}})}update(t){}copy(){const t=zm.fromJSON(JSON.parse(JSON.stringify(this)));return t.filters=this.filters,t.source=this.source,t}};Dy([wl],Om.prototype,"update");let Fy=Om;const _r={"The Bold Font":{weights:["500"],url:"https://diffusion-studio-public.s3.eu-central-1.amazonaws.com/fonts/the-bold-font.ttf"},"Komika Axis":{weights:["400"],url:"https://diffusion-studio-public.s3.eu-central-1.amazonaws.com/fonts/komika-axis.ttf"},Geologica:{weights:["100","200","300","400","500","600","700","800","900"],url:"https://fonts.gstatic.com/s/geologica/v1/oY1l8evIr7j9P3TN9YwNAdyjzUyDKkKdAGOJh1UlCDUIhAIdhCZOn1fLsig7jfvCCPHZckUWE1lELWNN-w.woff2"},Figtree:{weights:["300","400","500","600","700","800","900"],url:"https://fonts.gstatic.com/s/figtree/v5/_Xms-HUzqDCFdgfMm4S9DaRvzig.woff2"},Urbanist:{weights:["100","200","300","400","500","600","700","800","900"],url:"https://fonts.gstatic.com/s/urbanist/v15/L0x-DF02iFML4hGCyMqlbS1miXK2.woff2"},Montserrat:{weights:["100","200","300","400","500","600","700","800","900"],url:"https://fonts.gstatic.com/s/montserrat/v26/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2"},Bangers:{weights:["400"],url:"https://fonts.gstatic.com/s/bangers/v20/FeVQS0BTqb0h60ACH55Q2J5hm24.woff2"},Chewy:{weights:["400"],url:"https://fonts.gstatic.com/s/chewy/v18/uK_94ruUb-k-wn52KjI9OPec.woff2"},"Source Code Pro":{weights:["200","300","400","500","600","700","800","900"],url:"https://fonts.gstatic.com/s/sourcecodepro/v22/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevWnsUnxg.woff2"}};var Ay=Object.defineProperty,kl=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&Ay(n,t,i),i};const lr=class Ls extends or(en){constructor(t){super();ie(this,"loaded",!1);ie(this,"family");ie(this,"weight");ie(this,"source");ie(this,"style");t!=null&&t.source.startsWith("https://")&&(t.source=`url(${t.source})`),this.family=(t==null?void 0:t.family)??"Arial",this.source=t==null?void 0:t.source,this.style=t==null?void 0:t.style,this.weight=t==null?void 0:t.weight}get name(){return this.family+" "+(this.style??this.weight)}async load(){if(this.loaded||!this.source||!this.family)return this;const t=new FontFace(this.name,this.source);return this.weight&&(t.weight=this.weight),await new Promise(o=>{t.load().then(i=>{document.fonts.add(i),o(null)})}),this.loaded=!0,this.trigger("load",void 0),this}copy(){const t=Ls.fromJSON(JSON.parse(JSON.stringify(this)));return t.loaded=this.loaded,t}static async localFonts(){const t={};"queryLocalFonts"in window||Object.assign(window,{queryLocalFonts:()=>[]});for(const o of await window.queryLocalFonts()){if(o.family in t){t[o.family].push(o);continue}t[o.family]=[o]}return Object.keys(t).map(o=>({family:o,variants:t[o].map(i=>({family:o,style:i.style,source:`local('${i.fullName}'), local('${i.postscriptName}')`}))}))}static webFonts(){return Object.keys(_r).map(t=>({family:t,variants:_r[t].weights.map(o=>({family:t,source:`url(${_r[t].url})`,weight:o}))}))}static fromFamily({family:t,weight:o}){return new Ls({family:t,source:`url(${_r[t].url})`,weight:o})}};kl([je()],lr.prototype,"family");kl([je()],lr.prototype,"weight");kl([je()],lr.prototype,"source");kl([je()],lr.prototype,"style");let ka=lr;const En=4,jm={center:.5,justify:.5,left:0,right:1},Wm={alphabetic:0,top:0,middle:.5,hanging:1,bottom:1,ideographic:1};var Ry=Object.defineProperty,Ly=Object.getOwnPropertyDescriptor,Fa=(a,n,t,o)=>{for(var i=Ly(n,t),r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&Ry(n,t,i),i};const Na=class Zm extends yl(rr){constructor(t){super();ie(this,"type","text");ie(this,"_text","");ie(this,"_textCase");ie(this,"_anchor",{x:0,y:0});ie(this,"_font",new ka);ie(this,"style",new zt.TextStyle({fill:"#FFFFFF",fontFamily:this._font.family,fontSize:16}));this.style.padding=20,typeof t=="string"?(this.text=t,this.reflectUpdate()):t&&(Object.assign(this,t),this.reflectUpdate()),this.on("update",this.reflectUpdate.bind(this))}get text(){return this._text}set text(t){if(this._text=t,!this.view.children.length){const o=new zt.Text({text:this.transformedText,style:this.style,resolution:En,scale:En});this.view.addChild(o)}this.view.children[0]instanceof zt.Text&&this.transformedText&&(this.view.children[0].text=this.transformedText)}get name(){return this._text}get font(){return this._font}set font(t){if(this._font=t,t.loaded){this.style.fontFamily=t.name;return}this._font.load().then(()=>{this.style.fontFamily=t.name,this.trigger("update",void 0)})}get maxWidth(){if(this.style.wordWrap)return this.style.wordWrapWidth*En}set maxWidth(t){t?(this.style.wordWrap=!0,this.style.wordWrapWidth=t/En):this.style.wordWrap=!1}get textAlign(){return this.style.align}set textAlign(t){this.style.align=t,this.anchor.x=jm[t]}get padding(){return this.style.padding}set padding(t){this.style.padding=t}get textBaseline(){return this.style.textBaseline}set textBaseline(t){this.style.textBaseline=t,this.anchor.y=Wm[t]}get fillStyle(){const{fill:t}=this.style;return new zt.Color(t.toString()).toHex().toUpperCase()}set fillStyle(t){this.style.fill=t}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor={x:t,y:t}:this._anchor=t}get stroke(){if(!this.style.stroke)return;let{color:t="#000000",alpha:o=1,width:i=3,join:r="round",miterLimit:l}=this.style.stroke;return t=new zt.Color(t).toHex().toUpperCase(),{color:t,alpha:o,width:i,join:r,miterLimit:l}}set stroke(t){if(!t){this.style.stroke=void 0;return}const{color:o="#000000",alpha:i=1,width:r=3,join:l="round",miterLimit:s}=t;this.style.stroke={color:o,alpha:i,width:r,join:l,miterLimit:s}}get textCase(){return this._textCase}set textCase(t){this._textCase=t,this.view.children[0]instanceof zt.Text&&this.transformedText&&(this.view.children[0].text=this.transformedText)}get shadow(){if(!this.style.dropShadow)return;const{alpha:t,angle:o,blur:i,color:r,distance:l}=this.style.dropShadow,s=new zt.Color(r).toHex().toUpperCase();return{alpha:t,angle:o,blur:i,color:s,distance:l}}set shadow(t){t?this.style.dropShadow=t:this.style.dropShadow=!1}get fontFamily(){return Array.isArray(this.style.fontFamily)?this.style.fontFamily[0]:this.style.fontFamily}get fontSize(){return this.style.fontSize}set fontSize(t){this.style.fontSize=t}get leading(){return this.style.leading}set leading(t){this.style.leading=t}update(t){}copy(){const t=Zm.fromJSON(JSON.parse(JSON.stringify(this)));return t.filters=this.filters,t.font=this.font,t}get transformedText(){return this.textCase=="lower"?this._text.toLocaleLowerCase():this.textCase=="upper"?this._text.toUpperCase():this._text}reflectUpdate(){var r,l,s;const t=((r=this.view.children[0])==null?void 0:r.width)??0,o=((l=this.view.children[0])==null?void 0:l.height)??0,i=(((s=this.style.dropShadow)==null?void 0:s.distance)??0)*En;this.view.pivot={x:(t-i)*this._anchor.x,y:(o-i)*this._anchor.y}}set(t){return super.set(t)}};Fa([je()],Na.prototype,"text");Fa([je(ka)],Na.prototype,"font");Fa([je()],Na.prototype,"maxWidth");Fa([je()],Na.prototype,"textAlign");Fa([je()],Na.prototype,"padding");Fa([je()],Na.prototype,"textBaseline");Fa([je()],Na.prototype,"fillStyle");Fa([je()],Na.prototype,"anchor");Fa([je()],Na.prototype,"stroke");Fa([je()],Na.prototype,"textCase");Fa([je()],Na.prototype,"shadow");Fa([je()],Na.prototype,"fontSize");Fa([je()],Na.prototype,"leading");Fa([wl],Na.prototype,"update");let ci=Na;function rs(a){const n=a.split(" ").map(t=>`${t} `);return n[n.length-1]=n[n.length-1].replace(/ $/,""),n}const Py={get(a,n){const t=a[n];return typeof t=="number"?t*En:Array.isArray(t)&&typeof t[0]=="number"?t.map(o=>o*En):t}};function Uy(a){return new Proxy(a,Py)}class Oy{constructor(){ie(this,"tokens",[])}get width(){return this.tokens.reduce((n,t)=>n+t.metrics.lineWidths[0],0)}get height(){return Math.max(...this.tokens.map(n=>n.metrics.lineHeight))}}class zu{constructor(){ie(this,"lines",[])}get width(){return Math.max(...this.lines.map(n=>n.width))}get height(){return this.lines.reduce((n,t)=>n+t.height,0)}}class zy{static fromJSON(n){return n.map(t=>(t.font&&(t.font=ka.fromJSON(t.font)),t))}}var jy=Object.defineProperty,Wy=Object.getOwnPropertyDescriptor,mi=(a,n,t,o)=>{for(var i=o>1?void 0:o?Wy(n,t):n,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=(o?l(n,t,i):l(i))||i);return o&&i&&jy(n,t,i),i};const Zo=class Hm extends ci{constructor(t){super();ie(this,"type","complex_text");ie(this,"_maxWidth");ie(this,"_textAlign","left");ie(this,"_textBaseline","top");ie(this,"model",new zt.Container);ie(this,"segments",[]);ie(this,"metrics",new zu);ie(this,"background");ie(this,"styles");this.view.addChild(this.model),typeof t=="string"?(this.text=t,this.reflectUpdate()):t&&(Object.assign(this,t),this.reflectUpdate())}get text(){return this._text}set text(t){this._text=t}get maxWidth(){return this._maxWidth}set maxWidth(t){this._maxWidth=t}get textAlign(){return this._textAlign}set textAlign(t){this._textAlign=t,this._anchor.x=jm[t];const o=this.metrics.width;for(const i of this.metrics.lines){let r=0;(t=="center"||t=="justify")&&(r=(o-i.width)/2),t=="right"&&(r=o-i.width);for(const l of i.tokens)this.model.children[l.index].x=r,r+=l.metrics.lineWidths[0]}}get textBaseline(){return this._textBaseline}set textBaseline(t){this._textBaseline=t,this._anchor.y=Wm[t];let o=0;for(const i of this.metrics.lines){const r=i.height;for(const l of i.tokens){let s=0;t=="middle"&&(s=(r-l.metrics.lineHeight)/2),t=="bottom"&&(s=r-l.metrics.lineHeight),this.model.children[l.index].y=o+s}o+=r}}copy(){const t=Hm.fromJSON(JSON.parse(JSON.stringify(this)));return t.filters=this.filters,t.font=this.font,t}createRenderSplits(t=[]){var r,l;const o=this.transformedText??"",i=[{index:void 0,tokens:rs(o.substring(0,(r=t==null?void 0:t.at(0))==null?void 0:r.start))}];for(let s=0;s<t.length;s++)i.push({index:t[s].index,tokens:rs(o.substring(t[s].start,t[s].stop))}),!((t[s].stop??o.length)>=o.length)&&i.push({index:void 0,tokens:rs(o.substring(t[s].stop,(l=t.at(s+1))==null?void 0:l.start))});return i.filter(s=>s.tokens.join("").trim().length)}createTextMetrics(t,o){var r,l,s;const i=new zu;for(const d of t){const u=d.index!=null?o[d.index]:this.style;for(let c=0;c<d.tokens.length;c++){const m=Uy(zt.CanvasTextMetrics.measureText(d.tokens[c],u)),p=(((r=i.lines.at(-1))==null?void 0:r.width)??0)+m.lineWidths[0],f=this.maxWidth??Number.POSITIVE_INFINITY,v=(l=d.tokens.at(c-1))==null?void 0:l.match(/(\n|\\n).$/gim);(p>f||v||!i.lines.length)&&i.lines.push(new Oy),this.model.addChild(new zt.Text({text:d.tokens[c],style:u,resolution:En,scale:En})),(s=i.lines.at(-1))==null||s.tokens.push({metrics:m,index:this.model.children.length-1})}}return i}createTextStyles(){var t;return((t=this.styles)==null?void 0:t.map(o=>{var r;const i=this.style.clone();return i.fill=o.fillStyle??this.style.fill,i.fontSize=o.fontSize??this.style.fontSize,i.stroke=o.stroke??this.style.stroke,i.fontFamily=((r=o.font)==null?void 0:r.name)??this.style.fontFamily,i}))??[]}drawBackground(){var s,d;if(this.view.children.length>1&&this.view.removeChildAt(0),!this.background)return;const t=this.model.width,o=this.model.height,i=((s=this.background.padding)==null?void 0:s.x)??40,r=((d=this.background.padding)==null?void 0:d.y)??10,l=new zt.Graphics;l.roundRect(0-i/2,2-r/2,t+i,o+r,this.background.borderRadius??20),l.fill(this.background.fill??"#000000"),l.alpha=this.background.alpha??1,this.view.addChildAt(l,0)}reflectUpdate(){var s;if(!this.transformedText)return;this.model.removeChildren();const t=this.createRenderSplits(this.segments),o=this.createTextStyles();this.metrics=this.createTextMetrics(t,o),this.textAlign=this.textAlign,this.textBaseline=this.textBaseline;const i=this.view.width,r=this.view.height,l=(((s=this.style.dropShadow)==null?void 0:s.distance)??0)*En;this.view.pivot={x:(i-l)*this._anchor.x,y:(r-l)*this._anchor.y},this.drawBackground()}};mi([je()],Zo.prototype,"background",2);mi([je(zy)],Zo.prototype,"styles",2);mi([je()],Zo.prototype,"text",1);mi([je()],Zo.prototype,"maxWidth",1);mi([je()],Zo.prototype,"textAlign",1);mi([je()],Zo.prototype,"textBaseline",1);let _l=Zo;const Gm="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBtPSh0PT4odFt0LkFWTUVESUFfVFlQRV9VTktOT1dOPS0xXT0iQVZNRURJQV9UWVBFX1VOS05PV04iLHRbdC5BVk1FRElBX1RZUEVfVklERU89MF09IkFWTUVESUFfVFlQRV9WSURFTyIsdFt0LkFWTUVESUFfVFlQRV9BVURJTz0xXT0iQVZNRURJQV9UWVBFX0FVRElPIix0W3QuQVZNRURJQV9UWVBFX0RBVEE9Ml09IkFWTUVESUFfVFlQRV9EQVRBIix0W3QuQVZNRURJQV9UWVBFX1NVQlRJVExFPTNdPSJBVk1FRElBX1RZUEVfU1VCVElUTEUiLHRbdC5BVk1FRElBX1RZUEVfQVRUQUNITUVOVD00XT0iQVZNRURJQV9UWVBFX0FUVEFDSE1FTlQiLHRbdC5BVk1FRElBX1RZUEVfTkI9NV09IkFWTUVESUFfVFlQRV9OQiIsdCkpKG18fHt9KSxvPSh0PT4odC5GRm1wZWdXb3JrZXJMb2FkZWQ9IkZGbXBlZ1dvcmtlckxvYWRlZCIsdC5XQVNNUnVudGltZUluaXRpYWxpemVkPSJXQVNNUnVudGltZUluaXRpYWxpemVkIix0LkxvYWRXQVNNPSJMb2FkV0FTTSIsdC5HZXRBVlBhY2tldD0iR2V0QVZQYWNrZXQiLHQuR2V0QVZQYWNrZXRzPSJHZXRBVlBhY2tldHMiLHQuR2V0QVZTdHJlYW09IkdldEFWU3RyZWFtIix0LkdldEFWU3RyZWFtcz0iR2V0QVZTdHJlYW1zIix0LlJlYWRBVlBhY2tldD0iUmVhZEFWUGFja2V0Iix0LkFWUGFja2V0U3RyZWFtPSJBVlBhY2tldFN0cmVhbSIsdC5SZWFkTmV4dEFWUGFja2V0PSJSZWFkTmV4dEFWUGFja2V0Iix0LlN0b3BSZWFkQVZQYWNrZXQ9IlN0b3BSZWFkQVZQYWNrZXQiLHQpKShvfHx7fSk7Y29uc3QgQT0iS0daMWJtTjBhVzl1S0NsN0luVnpaU0J6ZEhKcFkzUWlPMnhsZENCbU8zTmxiR1l1Y0c5emRFMWxjM05oWjJVb2UzUjVjR1U2SWtaR2JYQmxaMWR2Y210bGNreHZZV1JsWkNKOUtTeHpaV3htTG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSW0xbGMzTmhaMlVpTEdGemVXNWpJR1oxYm1OMGFXOXVLR3dwZTJOdmJuTjBlM1I1Y0dVNmRDeGtZWFJoT21NOWUzMHNiWE5uU1dRNmIzMDliQzVrWVhSaE8zUnllWHRwWmloMFBUMDlJa3h2WVdSWFFWTk5JaWw3WTI5dWMzUjdkMkZ6YlV4dllXUmxjbEJoZEdnNlpYMDlZM3g4ZTMwN1pqMWhkMkZwZENoaGQyRnBkQ0JwYlhCdmNuUW9aU2twTG1SbFptRjFiSFFvS1gxbGJITmxJR2xtS0hROVBUMGlSMlYwUVZaVGRISmxZVzBpS1h0amIyNXpkSHRtYVd4bE9tVXNjM1J5WldGdFZIbHdaVHB6TEhOMGNtVmhiVWx1WkdWNE9tRjlQV01zY2oxbUxtZGxkRUZXVTNSeVpXRnRLR1VzY3l4aEtUdHpaV3htTG5CdmMzUk5aWE56WVdkbEtIdDBlWEJsT25Rc2JYTm5TV1E2Ynl4eVpYTjFiSFE2Y24wc1czSXVZMjlrWldOd1lYSXVaWGgwY21Ga1lYUmhMbUoxWm1abGNsMHBmV1ZzYzJVZ2FXWW9kRDA5UFNKSFpYUkJWbE4wY21WaGJYTWlLWHRqYjI1emRIdG1hV3hsT21WOVBXTXNjejFtTG1kbGRFRldVM1J5WldGdGN5aGxLVHR6Wld4bUxuQnZjM1JOWlhOellXZGxLSHQwZVhCbE9uUXNiWE5uU1dRNmJ5eHlaWE4xYkhRNmMzMHNjeTV0WVhBb1lUMCtZUzVqYjJSbFkzQmhjaTVsZUhSeVlXUmhkR0V1WW5WbVptVnlLU2w5Wld4elpTQnBaaWgwUFQwOUlrZGxkRUZXVUdGamEyVjBJaWw3WTI5dWMzUjdabWxzWlRwbExIUnBiV1U2Y3l4emRISmxZVzFVZVhCbE9tRXNjM1J5WldGdFNXNWtaWGc2Y24wOVl5eHVQV1l1WjJWMFFWWlFZV05yWlhRb1pTeHpMR0VzY2lrN2MyVnNaaTV3YjNOMFRXVnpjMkZuWlNoN2RIbHdaVHAwTEcxelowbGtPbThzY21WemRXeDBPbTU5TEZ0dUxtUmhkR0V1WW5WbVptVnlYU2w5Wld4elpTQnBaaWgwUFQwOUlrZGxkRUZXVUdGamEyVjBjeUlwZTJOdmJuTjBlMlpwYkdVNlpTeDBhVzFsT25OOVBXTXNZVDFtTG1kbGRFRldVR0ZqYTJWMGN5aGxMSE1wTzNObGJHWXVjRzl6ZEUxbGMzTmhaMlVvZTNSNWNHVTZkQ3h0YzJkSlpEcHZMSEpsYzNWc2REcGhmU3hoTG0xaGNDaHlQVDV5TG1SaGRHRXVZblZtWm1WeUtTbDlaV3h6WlNCcFppaDBQVDA5SWxKbFlXUkJWbEJoWTJ0bGRDSXBlMk52Ym5OMGUyWnBiR1U2WlN4emRHRnlkRHB6TEdWdVpEcGhMSE4wY21WaGJWUjVjR1U2Y2l4emRISmxZVzFKYm1SbGVEcHVmVDFqTEdROVppNXlaV0ZrUVZaUVlXTnJaWFFvYnl4bExITXNZU3h5TEc0cE8zTmxiR1l1Y0c5emRFMWxjM05oWjJVb2UzUjVjR1U2ZEN4dGMyZEpaRHB2TEhKbGMzVnNkRHBrZlNsOWZXTmhkR05vS0dVcGUzTmxiR1l1Y0c5emRFMWxjM05oWjJVb2UzUjVjR1U2ZEN4dGMyZEpaRHB2TEdWeWNrMXpaenBsSUdsdWMzUmhibU5sYjJZZ1JYSnliM0kvWlM1dFpYTnpZV2RsT2lKVmJtdHViM2R1SUVWeWNtOXlJbjBwZlgwcGZTa29LVHNLIixnPXQ9PlVpbnQ4QXJyYXkuZnJvbShhdG9iKHQpLGU9PmUuY2hhckNvZGVBdCgwKSksVj10eXBlb2Ygc2VsZjwidSImJnNlbGYuQmxvYiYmbmV3IEJsb2IoW2coQSldLHt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQ7Y2hhcnNldD11dGYtOCJ9KTtmdW5jdGlvbiBFKHQpe2xldCBlO3RyeXtpZihlPVYmJihzZWxmLlVSTHx8c2VsZi53ZWJraXRVUkwpLmNyZWF0ZU9iamVjdFVSTChWKSwhZSl0aHJvdyIiO2NvbnN0IHM9bmV3IFdvcmtlcihlLHtuYW1lOnQ/Lm5hbWV9KTtyZXR1cm4gcy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9Pnsoc2VsZi5VUkx8fHNlbGYud2Via2l0VVJMKS5yZXZva2VPYmplY3RVUkwoZSl9KSxzfWNhdGNoe3JldHVybiBuZXcgV29ya2VyKCJkYXRhOnRleHQvamF2YXNjcmlwdDtiYXNlNjQsIitBLHtuYW1lOnQ/Lm5hbWV9KX1maW5hbGx5e2UmJihzZWxmLlVSTHx8c2VsZi53ZWJraXRVUkwpLnJldm9rZU9iamVjdFVSTChlKX19Y29uc3QgdT0xZTY7Y2xhc3MgcHtmZm1wZWdXb3JrZXI7ZmZtcGVnV29ya2VyTG9hZFN0YXR1czttc2dJZDtmaWxlO2NvbnN0cnVjdG9yKGUpe3RoaXMuZmZtcGVnV29ya2VyPW5ldyBFLHRoaXMuZmZtcGVnV29ya2VyTG9hZFN0YXR1cz1uZXcgUHJvbWlzZSgocyxhKT0+e3RoaXMuZmZtcGVnV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGk9Pntjb25zdHt0eXBlOnIsZXJyTXNnOmR9PWkuZGF0YTtyPT09by5GRm1wZWdXb3JrZXJMb2FkZWQmJnRoaXMucG9zdChvLkxvYWRXQVNNLHt3YXNtTG9hZGVyUGF0aDplLndhc21Mb2FkZXJQYXRofSkscj09PW8uV0FTTVJ1bnRpbWVJbml0aWFsaXplZCYmcyghMCkscj09PW8uTG9hZFdBU00mJmQmJmEoZCl9KX0pLHRoaXMubXNnSWQ9MH1wb3N0KGUscyxhKXt0aGlzLmZmbXBlZ1dvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTplLG1zZ0lkOmE/P3RoaXMubXNnSWQrKyxkYXRhOnN9KX1hc3luYyBsb2FkKGUpe2NvbnN0IHM9YXdhaXQgdGhpcy5mZm1wZWdXb3JrZXJMb2FkU3RhdHVzO3JldHVybiB0aGlzLmZpbGU9ZSxzfWRlc3Ryb3koKXt0aGlzLmZpbGU9dm9pZCAwLHRoaXMuZmZtcGVnV29ya2VyLnRlcm1pbmF0ZSgpfWdldEFWU3RyZWFtKGU9bS5BVk1FRElBX1RZUEVfVklERU8scz0tMSl7cmV0dXJuIG5ldyBQcm9taXNlKChhLGkpPT57aWYoIXRoaXMuZmlsZSl7aSgiZmlsZSBpcyBub3QgbG9hZGVkIik7cmV0dXJufWNvbnN0IHI9dGhpcy5tc2dJZCxkPSh7ZGF0YTpufSk9PntuLnR5cGU9PT1vLkdldEFWU3RyZWFtJiZuLm1zZ0lkPT09ciYmKG4uZXJyTXNnP2kobi5lcnJNc2cpOmEobi5yZXN1bHQpLHRoaXMuZmZtcGVnV29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGQpKX07dGhpcy5mZm1wZWdXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZCksdGhpcy5wb3N0KG8uR2V0QVZTdHJlYW0se2ZpbGU6dGhpcy5maWxlLHN0cmVhbVR5cGU6ZSxzdHJlYW1JbmRleDpzfSl9KX1nZXRBVlN0cmVhbXMoKXtyZXR1cm4gbmV3IFByb21pc2UoKGUscyk9PntpZighdGhpcy5maWxlKXtzKCJmaWxlIGlzIG5vdCBsb2FkZWQiKTtyZXR1cm59Y29uc3QgYT10aGlzLm1zZ0lkLGk9KHtkYXRhOnJ9KT0+e3IudHlwZT09PW8uR2V0QVZTdHJlYW1zJiZyLm1zZ0lkPT09YSYmKHIuZXJyTXNnP3Moci5lcnJNc2cpOmUoci5yZXN1bHQpLHRoaXMuZmZtcGVnV29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpKX07dGhpcy5mZm1wZWdXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaSksdGhpcy5wb3N0KG8uR2V0QVZTdHJlYW1zLHtmaWxlOnRoaXMuZmlsZX0pfSl9Z2V0QVZQYWNrZXQoZSxzPW0uQVZNRURJQV9UWVBFX1ZJREVPLGE9LTEpe3JldHVybiBuZXcgUHJvbWlzZSgoaSxyKT0+e2lmKCF0aGlzLmZpbGUpe3IoImZpbGUgaXMgbm90IGxvYWRlZCIpO3JldHVybn1jb25zdCBkPXRoaXMubXNnSWQsbj1oPT57Y29uc3QgbD1oLmRhdGE7bC50eXBlPT09by5HZXRBVlBhY2tldCYmbC5tc2dJZD09PWQmJihsLmVyck1zZz9yKGwuZXJyTXNnKTppKGwucmVzdWx0KSx0aGlzLmZmbXBlZ1dvcmtlci5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixuKSl9O3RoaXMuZmZtcGVnV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLG4pLHRoaXMucG9zdChvLkdldEFWUGFja2V0LHtmaWxlOnRoaXMuZmlsZSx0aW1lOmUsc3RyZWFtVHlwZTpzLHN0cmVhbUluZGV4OmF9KX0pfWdldEFWUGFja2V0cyhlKXtyZXR1cm4gbmV3IFByb21pc2UoKHMsYSk9PntpZighdGhpcy5maWxlKXthKCJmaWxlIGlzIG5vdCBsb2FkZWQiKTtyZXR1cm59Y29uc3QgaT10aGlzLm1zZ0lkLHI9ZD0+e2NvbnN0IG49ZC5kYXRhO24udHlwZT09PW8uR2V0QVZQYWNrZXRzJiZuLm1zZ0lkPT09aSYmKG4uZXJyTXNnP2Eobi5lcnJNc2cpOnMobi5yZXN1bHQpLHRoaXMuZmZtcGVnV29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpKX07dGhpcy5mZm1wZWdXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsciksdGhpcy5wb3N0KG8uR2V0QVZQYWNrZXRzLHtmaWxlOnRoaXMuZmlsZSx0aW1lOmV9KX0pfXJlYWRBVlBhY2tldChlPTAscz0wLGE9bS5BVk1FRElBX1RZUEVfVklERU8saT0tMSl7Y29uc3Qgcj1uZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koe2hpZ2hXYXRlck1hcms6MX0pLGQ9dGhpcy5tc2dJZDtsZXQgbj0wO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0Omg9PntpZighdGhpcy5maWxlKXtoLmVycm9yKCJmaWxlIGlzIG5vdCBsb2FkZWQiKTtyZXR1cm59Y29uc3QgbD1mPT57Y29uc3QgYz1mLmRhdGE7Yy50eXBlPT09by5SZWFkQVZQYWNrZXQmJmMubXNnSWQ9PT1kJiZjLmVyck1zZyYmKGguZXJyb3IoYy5lcnJNc2cpLHRoaXMuZmZtcGVnV29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGwpKSxjLnR5cGU9PT1vLkFWUGFja2V0U3RyZWFtJiZjLm1zZ0lkPT09ZCYmKGMucmVzdWx0P2guZW5xdWV1ZShjLnJlc3VsdCk6aC5jbG9zZSgpKX07dGhpcy5mZm1wZWdXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbCksdGhpcy5wb3N0KG8uUmVhZEFWUGFja2V0LHtmaWxlOnRoaXMuZmlsZSxzdGFydDplLGVuZDpzLHN0cmVhbVR5cGU6YSxzdHJlYW1JbmRleDppfSl9LHB1bGw6KCk9PntuPjAmJnRoaXMucG9zdChvLlJlYWROZXh0QVZQYWNrZXQsdm9pZCAwLGQpLG4rK30sY2FuY2VsOigpPT57dGhpcy5wb3N0KG8uU3RvcFJlYWRBVlBhY2tldCx2b2lkIDAsZCl9fSxyKX1nZXRWaWRlb1N0cmVhbShlKXtyZXR1cm4gdGhpcy5nZXRBVlN0cmVhbShtLkFWTUVESUFfVFlQRV9WSURFTyxlKX1nZXRBdWRpb1N0cmVhbShlKXtyZXR1cm4gdGhpcy5nZXRBVlN0cmVhbShtLkFWTUVESUFfVFlQRV9BVURJTyxlKX1zZWVrVmlkZW9QYWNrZXQoZSl7cmV0dXJuIHRoaXMuZ2V0QVZQYWNrZXQoZSxtLkFWTUVESUFfVFlQRV9WSURFTyl9c2Vla0F1ZGlvUGFja2V0KGUpe3JldHVybiB0aGlzLmdldEFWUGFja2V0KGUsbS5BVk1FRElBX1RZUEVfQVVESU8pfXJlYWRWaWRlb1BhY2tldChlLHMpe3JldHVybiB0aGlzLnJlYWRBVlBhY2tldChlLHMsbS5BVk1FRElBX1RZUEVfVklERU8pfXJlYWRBdWRpb1BhY2tldChlLHMpe3JldHVybiB0aGlzLnJlYWRBVlBhY2tldChlLHMsbS5BVk1FRElBX1RZUEVfQVVESU8pfWdlblZpZGVvRGVjb2RlckNvbmZpZyhlKXtyZXR1cm57Y29kZWM6ZS5jb2RlY3Bhci5jb2RlY19zdHJpbmcsY29kZWRXaWR0aDplLmNvZGVjcGFyLndpZHRoLGNvZGVkSGVpZ2h0OmUuY29kZWNwYXIuaGVpZ2h0LGRlc2NyaXB0aW9uOmUuY29kZWNwYXIuZXh0cmFkYXRhPy5sZW5ndGg+MD9lLmNvZGVjcGFyLmV4dHJhZGF0YTp2b2lkIDB9fWdlbkVuY29kZWRWaWRlb0NodW5rKGUpe3JldHVybiBuZXcgRW5jb2RlZFZpZGVvQ2h1bmsoe3R5cGU6ZS5rZXlmcmFtZT09PTE/ImtleSI6ImRlbHRhIix0aW1lc3RhbXA6ZS50aW1lc3RhbXAqdSxkdXJhdGlvbjplLmR1cmF0aW9uKnUsZGF0YTplLmRhdGF9KX1nZW5BdWRpb0RlY29kZXJDb25maWcoZSl7cmV0dXJue2NvZGVjOmUuY29kZWNwYXIuY29kZWNfc3RyaW5nfHwiIixzYW1wbGVSYXRlOmUuY29kZWNwYXIuc2FtcGxlX3JhdGUsbnVtYmVyT2ZDaGFubmVsczplLmNvZGVjcGFyLmNoYW5uZWxzLGRlc2NyaXB0aW9uOmUuY29kZWNwYXIuZXh0cmFkYXRhPy5sZW5ndGg+MD9lLmNvZGVjcGFyLmV4dHJhZGF0YTp2b2lkIDB9fWdlbkVuY29kZWRBdWRpb0NodW5rKGUpe3JldHVybiBuZXcgRW5jb2RlZEF1ZGlvQ2h1bmsoe3R5cGU6ZS5rZXlmcmFtZT09PTE/ImtleSI6ImRlbHRhIix0aW1lc3RhbXA6ZS50aW1lc3RhbXAqdSxkdXJhdGlvbjplLmR1cmF0aW9uKnUsZGF0YTplLmRhdGF9KX1hc3luYyBnZXRWaWRlb0RlY29kZXJDb25maWcoKXtjb25zdCBlPWF3YWl0IHRoaXMuZ2V0VmlkZW9TdHJlYW0oKTtyZXR1cm4gdGhpcy5nZW5WaWRlb0RlY29kZXJDb25maWcoZSl9YXN5bmMgc2Vla0VuY29kZWRWaWRlb0NodW5rKGUpe2NvbnN0IHM9YXdhaXQgdGhpcy5zZWVrVmlkZW9QYWNrZXQoZSk7cmV0dXJuIHRoaXMuZ2VuRW5jb2RlZFZpZGVvQ2h1bmsocyl9YXN5bmMgZ2V0QXVkaW9EZWNvZGVyQ29uZmlnKCl7Y29uc3QgZT1hd2FpdCB0aGlzLmdldEF1ZGlvU3RyZWFtKCk7cmV0dXJuIHRoaXMuZ2VuQXVkaW9EZWNvZGVyQ29uZmlnKGUpfWFzeW5jIHNlZWtFbmNvZGVkQXVkaW9DaHVuayhlKXtjb25zdCBzPWF3YWl0IHRoaXMuc2Vla0F1ZGlvUGFja2V0KGUpO3JldHVybiB0aGlzLmdlbkVuY29kZWRBdWRpb0NodW5rKHMpfX1jbGFzcyBre3ZpZGVvO2N1cnJlbnRGcmFtZXM9MDt0b3RhbEZyYW1lcztjdXJyZW50VGltZTtmcHM7Zmlyc3RUaW1lc3RhbXA7Y29uc3RydWN0b3IoZSxzKXt0aGlzLmN1cnJlbnRUaW1lPWVbMF0qMWU2LHRoaXMuZmlyc3RUaW1lc3RhbXA9ZVswXSoxZTYsdGhpcy50b3RhbEZyYW1lcz0oZVsxXS1lWzBdKSpzKzEsdGhpcy5mcHM9cyx0aGlzLnZpZGVvPW5ldyBWaWRlb0RlY29kZXIoe291dHB1dDp0aGlzLmhhbmRsZUZyYW1lT3V0cHV0LmJpbmQodGhpcyksZXJyb3I6dGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpfSl9cG9zdEZyYW1lKGUpe3NlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImZyYW1lIixmcmFtZTplfSksdGhpcy5jdXJyZW50VGltZSs9TWF0aC5mbG9vcigxL3RoaXMuZnBzKjFlNiksdGhpcy5jdXJyZW50RnJhbWVzKz0xfWhhbmRsZUZyYW1lT3V0cHV0KGUpe2NvbnN0IHM9ZS50aW1lc3RhbXAsYT1lLmR1cmF0aW9uPz8wLGk9cythO2lmKCF0aGlzLmlzRnJhbWVJblJhbmdlKHMpKXtlLmNsb3NlKCk7cmV0dXJufWZvcig7aT50aGlzLmN1cnJlbnRUaW1lJiZ0aGlzLmN1cnJlbnRGcmFtZXM8PXRoaXMudG90YWxGcmFtZXM7KXRoaXMucG9zdEZyYW1lKGUpO2UuY2xvc2UoKX1pc0ZyYW1lSW5SYW5nZShlKXtyZXR1cm4gZT49dGhpcy5maXJzdFRpbWVzdGFtcH1oYW5kbGVFcnJvcihlKXtjb25zb2xlLmVycm9yKCJlcnJvciBpbiB3b3JrZXIiLGUpLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImVycm9yIixtZXNzYWdlOmUubWVzc2FnZT8/IkFuIHVua25vd24gd29ya2VyIGVycm9yIG9jY3VycmVkIn0pLHNlbGYuY2xvc2UoKX19ZnVuY3Rpb24gSSh0KXtyZXR1cm4gYXN5bmMgZT0+e3RyeXthd2FpdCB0KGUpfWNhdGNoKHMpe3NlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImVycm9yIixtZXNzYWdlOnM/Lm1lc3NhZ2U/PyJBbiB1bmtvd24gd29ya2VyIGVycm9yIG9jY3VyZWQifSl9fX1mdW5jdGlvbiBXKHQpe3JldHVybiB0LmNvZGVjPT0idnAwOSImJih0LmNvZGVjPSJ2cDA5LjAwLjEwLjA4IiksdH1jb25zdCBaPTMwO2FzeW5jIGZ1bmN0aW9uIFAodCl7aWYodC5kYXRhPy50eXBlIT0iaW5pdCIpcmV0dXJuO2NvbnN0e2ZpbGU6ZSxyYW5nZTpzLGZwczphfT10LmRhdGEsaT1uZXcgcCh7d2FzbUxvYWRlclBhdGg6Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGRpZmZ1c2lvbnN0dWRpby9mZm1wZWctd2FzbUAxLjAuMC9kaXN0L2ZmbXBlZy5qcyJ9KTthd2FpdCBpLmxvYWQoZSk7Y29uc3Qgcj1hd2FpdCBpLmdldFZpZGVvRGVjb2RlckNvbmZpZygpO1cocik7Y29uc3QgZD1uZXcgayhzLGEpO2QudmlkZW8uY29uZmlndXJlKHIpO2NvbnN0IG49aS5yZWFkQVZQYWNrZXQoc1swXSxzWzFdKS5nZXRSZWFkZXIoKTtuLnJlYWQoKS50aGVuKGFzeW5jIGZ1bmN0aW9uIGgoe2RvbmU6bCx2YWx1ZTpmfSl7aWYobCl7YXdhaXQgZC52aWRlby5mbHVzaCgpLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImRvbmUifSksc2VsZi5jbG9zZSgpO3JldHVybn1jb25zdCBjPWkuZ2VuRW5jb2RlZFZpZGVvQ2h1bmsoZik7cmV0dXJuIGQudmlkZW8uZGVjb2RlUXVldWVTaXplPlomJmF3YWl0IG5ldyBQcm9taXNlKEw9PntkLnZpZGVvLm9uZGVxdWV1ZT0oKT0+TCgpfSksYy50aW1lc3RhbXA8PXNbMV0qMWU2JiZkLnZpZGVvLmRlY29kZShjKSxuLnJlYWQoKS50aGVuKGgpfSl9c2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixJKFApKX0pKCk7Cg==",Zy=a=>Uint8Array.from(atob(a),n=>n.charCodeAt(0)),ju=typeof self<"u"&&self.Blob&&new Blob([Zy(Gm)],{type:"text/javascript;charset=utf-8"});function Hy(a){let n;try{if(n=ju&&(self.URL||self.webkitURL).createObjectURL(ju),!n)throw"";const t=new Worker(n,{name:a==null?void 0:a.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(n)}),t}catch{return new Worker("data:text/javascript;base64,"+Gm,{name:a==null?void 0:a.name})}finally{n&&(self.URL||self.webkitURL).revokeObjectURL(n)}}class Gy{constructor(){ie(this,"frames",[]);ie(this,"state","active");ie(this,"onenqueue");ie(this,"onclose")}enqueue(n){var t;this.frames.unshift(n),(t=this.onenqueue)==null||t.call(this)}async dequeue(){if(this.frames.length==0&&this.state=="active"&&await this.waitFor(2e4),!(this.frames.length==0&&this.state=="closed"))return this.frames.pop()}close(){var n;this.state="closed",(n=this.onclose)==null||n.call(this)}terminate(){for(const n of this.frames)n.close()}async waitFor(n){await new Promise((t,o)=>{const i=setTimeout(()=>{o(`Promise timed out after ${n} ms`)},n);this.onenqueue=()=>{clearTimeout(i),t()},this.onclose=()=>{clearTimeout(i),t()}})}}function Xy(a,n,t){const o=t.value;return t.value=function(...i){var r,l,s,d;return(l=(r=this.track)==null?void 0:r.composition)!=null&&l.rendering&&this.sprite.texture.source.uid!=this.textrues.canvas.source.uid&&(this.sprite.texture=this.textrues.canvas),!((d=(s=this.track)==null?void 0:s.composition)!=null&&d.rendering)&&this.sprite.texture.source.uid!=this.textrues.html5.source.uid&&(this.sprite.texture=this.textrues.html5),o.apply(this,i)},t}var Ky=Object.defineProperty,Jy=Object.getOwnPropertyDescriptor,qy=(a,n,t,o)=>{for(var i=Jy(n,t),r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&Ky(n,t,i),i};const Xm=class Km extends yl(bl){constructor(t,o={}){super();ie(this,"source",new Mo);ie(this,"type","video");ie(this,"worker");ie(this,"buffer");ie(this,"canvas",document.createElement("canvas"));ie(this,"context",this.canvas.getContext("2d"));ie(this,"element",document.createElement("video"));ie(this,"textrues",{html5:zt.Texture.from(this.element),canvas:zt.Texture.from(this.canvas)});ie(this,"sprite",new zt.Sprite);this.element.controls=!1,this.element.playsInline=!0,this.element.style.display="hidden",this.element.crossOrigin="anonymous",this.textrues.html5.source.autoPlay=!1,this.textrues.html5.source.loop=!1,this.sprite.texture=this.textrues.html5,this.view.addChild(this.sprite),t instanceof Mo&&(this.source=t),t instanceof File&&this.source.from(t),this.element.addEventListener("play",()=>{this.playing=!0}),this.element.addEventListener("pause",()=>{this.playing=!1}),Object.assign(this,o)}async init(){const t=await this.source.createObjectURL();this.element.setAttribute("src",t),await new Promise((o,i)=>{this.element.oncanplay=()=>{this.duration.seconds=this.element.duration,this.state="READY",o()},this.element.onerror=()=>{this.state="ERROR";const r=new Un({code:"sourceNotProcessable",message:"An error occurred while processing the input medium."});i(this.element.error??r)}})}async connect(t){var i;super.connect(t);const o=((i=t.composition)==null?void 0:i.frame)??0;await this.seek(Ze.fromFrames(o))}enter(){var t,o,i;super.enter(),(o=(t=this.track)==null?void 0:t.composition)!=null&&o.rendering&&((i=this.buffer)==null?void 0:i.state)!="active"&&this.decodeVideo()}update(t){var o,i,r,l,s,d;if((i=(o=this.track)==null?void 0:o.composition)!=null&&i.playing&&!this.playing)this.element.play();else if(!((l=(r=this.track)==null?void 0:r.composition)!=null&&l.playing)&&this.playing)this.element.pause();else if((d=(s=this.track)==null?void 0:s.composition)!=null&&d.rendering)return this.nextFrame()}exit(){this.playing&&this.element.pause(),this.filters&&this.view.filters&&(this.view.filters=null)}copy(){const t=Km.fromJSON(JSON.parse(JSON.stringify(this)));return t.filters=this.filters,t.source=this.source,t}async decodeVideo(){var t,o;return this.buffer=new Gy,this.worker=new Hy,this.worker.addEventListener("message",i=>{var r,l;i.data.type=="frame"?(r=this.buffer)==null||r.enqueue(i.data.frame):i.data.type=="error"?this.cancelDecoding():i.data.type=="done"&&((l=this.buffer)==null||l.close())}),this.worker.postMessage({type:"init",file:await this.source.getFile(),range:this.demuxRange,fps:((o=(t=this.track)==null?void 0:t.composition)==null?void 0:o.fps)??Ji}),this.buffer}async nextFrame(){if(!this.buffer)return;const t=await this.buffer.dequeue();t&&(this.canvas.width=t.displayWidth,this.canvas.height=t.displayHeight,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.drawImage(t,0,0),this.textrues.canvas.source.update(),t.close())}get demuxRange(){var r;const t=(r=this.track)==null?void 0:r.composition;let o;this.start.millis<0?o=Math.abs(this.offset.seconds):o=this.range[0].seconds;let i;return t&&this.stop.millis>t.duration.millis?i=t.duration.subtract(this.offset).seconds:i=this.range[1].seconds,[o,i]}cancelDecoding(){var t,o;(t=this.worker)==null||t.terminate(),this.worker=void 0,(o=this.buffer)==null||o.terminate(),this.buffer=void 0}};qy([wl,Xy],Xm.prototype,"update");let Ps=Xm;class zi extends bl{constructor(t,o={}){super();ie(this,"type","audio");ie(this,"source",new oo);ie(this,"element",new Audio);t instanceof oo&&(this.source=t),t instanceof File&&this.source.from(t),this.element.addEventListener("play",()=>{this.playing=!0}),this.element.addEventListener("pause",()=>{this.playing=!1}),Object.assign(this,o)}async init(){const t=await this.source.createObjectURL();this.element.setAttribute("src",t),this.element.load(),await new Promise((o,i)=>{this.element.oncanplay=()=>{this.duration.seconds=this.element.duration,this.state="READY",o()},this.element.onerror=()=>{this.state="ERROR";const r=new Un({code:"sourceNotProcessable",message:"An error occurred while processing the input medium."});i(this.element.error??r)}})}update(){var t,o,i,r,l,s;if((o=(t=this.track)==null?void 0:t.composition)!=null&&o.rendering)return this.exit();(r=(i=this.track)==null?void 0:i.composition)!=null&&r.playing&&!this.playing?this.element.play():!((s=(l=this.track)==null?void 0:l.composition)!=null&&s.playing)&&this.playing&&this.element.pause()}exit(){this.playing&&this.element.pause()}copy(){const t=zi.fromJSON(JSON.parse(JSON.stringify(this)));return t.source=this.source,t}}const Yy={IMAGE:{"image/jpeg":"jpg","image/png":"png","image/webp":"webp","image/svg+xml":"svg"},VIDEO:{"video/mp4":"mp4","video/webm":"webm","video/quicktime":"mov"},AUDIO:{"audio/mp3":"mp3","audio/mpeg":"mp3","audio/aac":"aac","audio/wav":"wav","audio/x-wav":"wav"},DOCUMENT:{"text/html":"html"},get MIXED(){return{...this.IMAGE,...this.VIDEO,...this.AUDIO,...this.DOCUMENT}}};function Us(a){if(!Object.keys(Yy.MIXED).includes(a??""))throw new na({message:`${a} is not an accepted mime type`,code:"invalid_mimetype"});return a}var Qy=Object.defineProperty,e1=Object.getOwnPropertyDescriptor,t1=(a,n,t,o)=>{for(var i=e1(n,t),r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&Qy(n,t,i),i};const a1=class Jm extends yl(rr){constructor(t,o={}){super();ie(this,"type","html");ie(this,"source",new Uu);ie(this,"element",new Image);ie(this,"canvas",document.createElement("canvas"));ie(this,"context",this.canvas.getContext("2d"));ie(this,"sprite",new zt.Sprite);this.view.addChild(this.sprite),Object.assign(this,o),t instanceof Uu&&(this.source=t),t instanceof File&&this.source.from(t),this.element.addEventListener("load",()=>{var l,s,d,u;const i=(s=(l=this.source.document)==null?void 0:l.body)==null?void 0:s.scrollWidth,r=(u=(d=this.source.document)==null?void 0:d.body)==null?void 0:u.scrollHeight;!i||!r||(this.canvas.width=i,this.canvas.height=r,this.context.imageSmoothingEnabled=!1,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.drawImage(this.element,0,0),this.sprite.texture=zt.Texture.from(this.canvas,!0),this.trigger("load",void 0))}),this.element.addEventListener("error",i=>{this.state="ERROR",this.trigger("error",new Un({code:"sourceNotProcessable",message:"An error occurred while processing the input medium."})),this.track&&this.detach()}),this.on("update",async()=>{this.source.update(),this.element.setAttribute("src",await this.source.createObjectURL())})}async init(){this.element.setAttribute("src",await this.source.createObjectURL()),await new Promise((t,o)=>{this.element.onload=()=>{var l,s,d,u;const i=(s=(l=this.source.document)==null?void 0:l.body)==null?void 0:s.scrollWidth,r=(u=(d=this.source.document)==null?void 0:d.body)==null?void 0:u.scrollHeight;if(!i||!r)return o(new Un({code:"sourceNotProcessable",message:"Cannot display source with height or width at 0"}));this.state="READY",t()},this.element.onerror=i=>{o(new Un({code:"sourceNotProcessable",message:"An error occurred while processing the input medium."}))}})}update(t){}copy(){const t=Jm.fromJSON(JSON.parse(JSON.stringify(this)));return t.filters=this.filters,t.source=this.source,t}};t1([wl],a1.prototype,"update");const qm=["DEFAULT","STACK"];class Wu{constructor(){ie(this,"mode",qm[0]);ie(this,"pauseAlignmet",!1)}add(n,t){let o=!0;for(let i=0;i<t.clips.length&&(o=Gu(n,t.clips[i]),!!o);i++)Hu(n,t.clips[i]);o&&(t.clips.push(n),t.clips.sort(Zu))}update(n,t){if(!this.pauseAlignmet){t.clips.sort(Zu);for(let o=0;o<t.clips.length;o++)if(n.id!=t.clips[o].id){if(!Gu(n,t.clips[o]))break;Hu(n,t.clips[o])}}}offset(n,t){this.pauseAlignmet=!0;for(const o of t.clips)o.offsetBy(n);this.pauseAlignmet=!1}}class n1{constructor(){ie(this,"mode",qm[1])}add(n,t,o=void 0){var r;let i=-1;(o!=null&&o>0||o==null)&&(i=((r=t.clips.at((o??0)-1))==null?void 0:r.stop.millis)??-1),n.offsetBy(new Ze(i-n.start.millis+1)),o==null?t.clips.push(n):(t.clips.splice(o,0,n),t.clips.slice(o+1).forEach(l=>{l.offsetBy(n.stop.subtract(n.start))}))}update(n,t){let o=0;for(const i of t.clips){if(i.start.millis!=o){const r=o-i.start.millis;i.offsetBy(new Ze(r))}o=i.stop.millis+1}}offset(){}}function Zu(a,n){return a.start.millis-n.start.millis}function Hu(a,n){a.start.millis>=n.start.millis&&a.start.millis<=n.stop.millis&&(a.start=n.stop.copy().addMillis(1)),a.stop.millis>=n.start.millis&&a.stop.millis<=n.stop.millis&&(a.stop=n.start.copy().addMillis(-1))}function Gu(a,n){var t,o,i,r,l;if(a.start.millis>=n.start.millis&&a.stop.millis<=n.stop.millis){const s=(o=(t=n.track)==null?void 0:t.composition)==null?void 0:o.tracks.find(d=>d.type==a.type&&!d.clips.some(u=>a.id!=u.id&&a.start.millis>=u.start.millis&&a.stop.millis<=u.stop.millis));return s?(s.add(a.detach()),!1):((l=(r=(i=n.track)==null?void 0:i.composition)==null?void 0:r.createTrack(a.type))==null||l.add(a.detach()),!1)}return!0}class pi extends or(en){constructor(){super(...arguments);ie(this,"_disabled",!1);ie(this,"view",new zt.Container);ie(this,"clips",[]);ie(this,"pointer",0);ie(this,"composition");ie(this,"type","base");ie(this,"strategy",new Wu)}get disabled(){return this._disabled}set disabled(t){var o;t&&this.clipRef&&ss(this.clipRef)&&(this.view.removeChild(this.clipRef.view),(o=this.clipRef)==null||o.exit()),this._disabled=t,this.trigger("update",void 0)}connect(t){this.composition=t}stacked(t=!0){return t?(this.strategy=new n1,this.strategy.update(new rr,this)):this.strategy=new Wu,this.trigger("update",void 0),this}layer(t){var s,d;const o=((s=this.composition)==null?void 0:s.tracks)??[],i=o.findIndex(u=>u.id==this.id),r=o.length-1;if(i==-1)return this;let l=0;return t=="bottom"?l=r:t=="top"||t<0?l=0:t>r?l=r:l=t,my(o,i,l),(d=this.composition)==null||d.stage.setChildIndex(this.view,r-l),this.trigger("update",void 0),this}seek(t){}offsetBy(t){return typeof t=="number"?this.strategy.offset(Ze.fromFrames(t),this):this.strategy.offset(t,this),this}update(t){var i,r;if(this.disabled||!this.clips.length)return;const{millis:o}=t;if(ss(this.clipRef)&&(!ls(o,this.clipRef)||(i=this.clipRef)!=null&&i.disabled)&&(this.clipRef&&this.view.removeChild(this.clipRef.view),(r=this.clipRef)==null||r.exit()),!!ls(o,this))for(let l=0;l<this.clips.length;l++){const s=(this.pointer+l)%this.clips.length,d=this.clips[s],u=this.clips[s-1];if(ls(o,d)&&!d.disabled)return this.pointer=s,ss(d)||(d.enter(),this.view.addChild(d.view)),d.update(t);if(o<d.start.millis&&o>((u==null?void 0:u.stop.millis)??0)){this.pointer=s;return}}}async add(t,o){return this.composition&&!this.composition.renderer&&await new Promise(this.composition.resolve("init")),await t.init(),await t.connect(this),await this.strategy.add(t,this,o),t.on("frame",()=>{this.strategy.update(t,this)}),t.bubble(this),this.trigger("attach",void 0),t}remove(t){const o=this.clips.findIndex(i=>i.id==t.id);if(t.state=="ATTACHED"&&(t.state="READY"),t.view.parent&&this.view.removeChild(t.view),o!=null&&o>=0)return this.clips.splice(o,1),this.strategy.update(t,this),this.trigger("detach",void 0),t.off("*"),t}get stop(){var t;return((t=this.clips.at(-1))==null?void 0:t.stop)??new Ze}get start(){var t;return((t=this.clips.at(0))==null?void 0:t.start)??new Ze}apply(t){this.clips.forEach(t)}detach(){var t;return(t=this.composition)==null||t.removeTrack(this),this}get clipRef(){return this.clips[this.pointer]}}function ls(a,n){return n?a>=n.start.millis&&a<=n.stop.millis:!1}function ss(a){return a?!!a.view.parent:!1}class o1{static fromType(n){switch(n.type){case"video":return new i1;case"audio":return new l1;case"html":return new s1;case"image":return new r1;case"text":return new Xu;case"complex_text":return new Xu;case"caption":return new u1;default:return new pi}}}class Ym extends pi{constructor(){super(...arguments);ie(this,"clips",[])}async seek(t){for(const o of this.clips)await o.seek(t)}async removeSilences(t={}){const o=[];for(const i of this.clips.map(r=>r.detach()))o.push(...await i.removeSilences(t));for(const i of o)await this.add(i)}}class i1 extends Ym{constructor(){super(...arguments);ie(this,"type","video")}async seek(t){var o;(o=this.composition)!=null&&o.rendering?this.view.removeChildren():super.seek(t)}}class r1 extends pi{constructor(){super(...arguments);ie(this,"type","image")}}class l1 extends Ym{constructor(){super(...arguments);ie(this,"type","audio")}}class Xu extends pi{constructor(){super(...arguments);ie(this,"type","text")}}class s1 extends pi{constructor(){super(...arguments);ie(this,"type","html")}}var d1=Object.defineProperty,Md=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&d1(n,t,i),i};class sr extends en{constructor(t={}){super();ie(this,"generatorOptions");ie(this,"type","CLASSIC");ie(this,"position");this.generatorOptions=t.generatorOptions??{duration:[.2]},this.position=t.position??{x:"50%",y:"50%"}}async applyTo(t){var r,l,s;if(!((r=t.clip)!=null&&r.transcript)||!((l=t.composition)!=null&&l.width))throw new na({code:"referenceError",message:"Captions need to be applied with a defined transcript and composition"});const o=((s=t.clip)==null?void 0:s.offset)??new Ze,i=await ka.fromFamily({family:"Figtree",weight:"700"}).load();for(const d of t.clip.transcript.iter(this.generatorOptions))await t.add(new ci({text:d.words.map(u=>u.text).join(" "),textAlign:"center",textBaseline:"middle",fontSize:21,fillStyle:"#FFFFFF",font:i,stroke:{color:"#000000",width:4,join:"round"},maxWidth:t.composition.width*.85,shadow:{color:"#000000",blur:0,distance:1.1,angle:Math.PI*.4,alpha:1},position:this.position,stop:d.stop.add(o),start:d.start.add(o),scale:new qe([0,8],[.96,1],{easing:"easeOut"}),alpha:new qe([0,4],[0,1],{easing:"easeOut"})}))}}Md([je()],sr.prototype,"generatorOptions");Md([je()],sr.prototype,"type");Md([je()],sr.prototype,"position");class u1 extends pi{constructor(){super(...arguments);ie(this,"clip");ie(this,"type","caption");ie(this,"preset",new sr)}from(t){var o;return this.clip=t,(o=this.clip)==null||o.on("offsetBy",i=>this.offsetBy(i.detail)),this}async generate(t){let o=this.preset;return typeof t=="object"?o=t:t&&(o=new t),this.clips=[],this.trigger("update",void 0),this.preset=o,await o.applyTo(this),this.trigger("update",void 0),this}}var c1=Object.defineProperty,El=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&c1(n,t,i),i};class dr extends en{constructor(t={}){super();ie(this,"generatorOptions");ie(this,"type","SPOTLIGHT");ie(this,"color");ie(this,"position");this.generatorOptions=t.generatorOptions??{duration:[.2]},this.color=t.color??"#00FF4C",this.position=t.position??{x:"50%",y:"50%"}}async applyTo(t){var r,l,s;if(!((r=t.clip)!=null&&r.transcript)||!((l=t.composition)!=null&&l.width))throw new na({code:"referenceError",message:"Captions need to be applied with a defined transcript and composition"});const o=((s=t.clip)==null?void 0:s.offset)??new Ze,i=await ka.fromFamily({family:"The Bold Font",weight:"500"}).load();for(const d of t.clip.transcript.iter(this.generatorOptions))for(let u=0;u<d.words.length;u++){const c=d.words.map(m=>m.text);await t.add(new _l({text:c.join(" "),textAlign:"center",textBaseline:"middle",fillStyle:"#FFFFFF",fontSize:22,maxWidth:t.composition.width*.8,font:i,stroke:{width:5,color:"#000000"},shadow:{color:"#000000",blur:12,alpha:.7,angle:Math.PI/4,distance:2},position:this.position,styles:[{fillStyle:this.color}],segments:d.words.length>1?[{index:0,start:c.slice(0,u).join(" ").length,stop:c.slice(0,u+1).join(" ").length}]:void 0,stop:d.words[u].stop.add(o),start:d.words[u].start.add(o)}))}}}El([je()],dr.prototype,"generatorOptions");El([je()],dr.prototype,"type");El([je()],dr.prototype,"color");El([je()],dr.prototype,"position");var m1=Object.defineProperty,$d=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&m1(n,t,i),i};class Sl extends en{constructor(t={}){super();ie(this,"type","GUINEA");ie(this,"colors");ie(this,"position");this.colors=t.colors??["#1BD724","#FFEE0C","#FF2E17"],this.position=t.position??{x:"50%",y:"50%"}}async applyTo(t){var r,l,s,d,u,c,m;if(!((r=t.clip)!=null&&r.transcript)||!((l=t.composition)!=null&&l.width))throw new na({code:"referenceError",message:"Captions need to be applied with a defined transcript and composition"});const o=((s=t.clip)==null?void 0:s.offset)??new Ze,i=await ka.fromFamily({family:"The Bold Font",weight:"500"}).load();for(const p of t.clip.transcript.iter({length:[18]})){const{segments:f,words:v}=this.splitSequence(p);for(let h=0;h<p.words.length;h++){const k=(u=(d=v[h])==null?void 0:d.at(0))==null?void 0:u.start,E=(m=(c=v[h])==null?void 0:c.at(-1))==null?void 0:m.stop;!k||!E||await t.add(new _l({text:f.join(`
33
+ `),textAlign:"center",textBaseline:"middle",fontSize:20,fillStyle:"#FFFFFF",shadow:{color:"#000000",blur:16,alpha:.8,angle:Math.PI/4,distance:1},stroke:{width:4,color:"#000000"},maxWidth:t.composition.width*.8,leading:1.3,font:i,textCase:"upper",position:this.position,stop:E.add(o),start:k.add(o),styles:[{fillStyle:this.colors[0],fontSize:23},{fillStyle:this.colors[1],fontSize:23},{fillStyle:this.colors[2],fontSize:23}],segments:[{index:Ur(0,2),start:f.slice(0,h).join(" ").length,stop:f.slice(0,h+1).join(" ").length+h*2}]}))}}}splitSequence(t){const o=t.text,i=Math.ceil(o.length/2);let r=o.length;for(let d=i,u=i;d>0&&u<t.text.length-1;d--,u++){if(o[d].match(/ /)){r=d;break}if(o[u].match(/ /)){r=u;break}}const l=[...Iu(o,r).map(d=>d.trim())],s=Iu(t.words,l[0].split(/ /).length);return{segments:l,words:s}}}$d([je()],Sl.prototype,"type");$d([je()],Sl.prototype,"colors");$d([je()],Sl.prototype,"position");var p1=Object.defineProperty,Id=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&p1(n,t,i),i};class xl extends en{constructor(t={}){super();ie(this,"generatorOptions");ie(this,"type","CASCADE");ie(this,"position");this.generatorOptions=t.generatorOptions??{duration:[1.4]},this.position=t.position??{x:"12%",y:"44%"}}async applyTo(t){var r,l,s;if(!((r=t.clip)!=null&&r.transcript)||!((l=t.composition)!=null&&l.width))throw new na({code:"referenceError",message:"Captions need to be applied with a defined transcript and composition"});const o=((s=t.clip)==null?void 0:s.offset)??new Ze,i=await ka.fromFamily({family:"Geologica",weight:"400"}).load();for(const d of t.clip.transcript.iter(this.generatorOptions))for(let u=0;u<d.words.length;u++){const c=()=>d.words.length==1?d.text:d.words.map(m=>m.text).slice(0,u+1).join(" ");await t.add(new ci({text:c(),textAlign:"left",textBaseline:"top",fillStyle:"#FFFFFF",fontSize:16,font:i,maxWidth:t.composition.width*.7,stroke:{color:"#000000",width:4,join:"round"},shadow:{color:"#000000",blur:8,alpha:.4,angle:Math.PI/4,distance:2},position:this.position,stop:d.words[u].stop.add(o),start:d.words[u].start.add(o)}))}}}Id([je()],xl.prototype,"generatorOptions");Id([je()],xl.prototype,"type");Id([je()],xl.prototype,"position");var f1=Object.defineProperty,Dd=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&f1(n,t,i),i};class Cl extends en{constructor(t={}){super();ie(this,"generatorOptions");ie(this,"type","SOLAR");ie(this,"position");this.generatorOptions=t.generatorOptions??{duration:[.2]},this.position=t.position??{x:"50%",y:"50%"}}async applyTo(t){var l,s,d;if(!((l=t.clip)!=null&&l.transcript)||!((s=t.composition)!=null&&s.width))throw new na({code:"referenceError",message:"Captions need to be applied with a defined transcript and composition"});const o=await ka.fromFamily({family:"Urbanist",weight:"800"}).load(),i=((d=t.clip)==null?void 0:d.offset)??new Ze,r=new Cv.GlowFilter({color:"#fffe41",alpha:.25,distance:90,quality:.05});for(const u of t.clip.transcript.iter(this.generatorOptions))await t.add(new ci({text:u.words.map(c=>c.text).join(" "),textAlign:"center",textBaseline:"middle",fontSize:19,fillStyle:"#fffe41",font:o,maxWidth:t.composition.width*.85,textCase:"upper",shadow:{color:"#ab7a00",blur:0,distance:2.1,angle:Math.PI/2.5,alpha:1},position:this.position,stop:u.stop.add(i),start:u.start.add(i),scale:new qe([0,8],[.96,1],{easing:"easeOut"}),alpha:new qe([0,4],[0,1],{easing:"easeOut"}),filters:r}))}}Dd([je()],Cl.prototype,"generatorOptions");Dd([je()],Cl.prototype,"type");Dd([je()],Cl.prototype,"position");var v1=Object.defineProperty,Vl=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&v1(n,t,i),i};class ur extends en{constructor(t={}){super();ie(this,"generatorOptions");ie(this,"type","WHISPER");ie(this,"color");ie(this,"position");this.generatorOptions=t.generatorOptions??{length:[20]},this.color=t.color??"#8c8c8c",this.position=t.position??{x:"50%",y:"50%"}}async applyTo(t){var r,l,s;if(!((r=t.clip)!=null&&r.transcript)||!((l=t.composition)!=null&&l.width))throw new na({code:"referenceError",message:"Captions need to be applied with a defined transcript and composition"});const o=((s=t.clip)==null?void 0:s.offset)??new Ze,i=await ka.fromFamily({family:"Montserrat",weight:"300"}).load();for(const d of t.clip.transcript.iter(this.generatorOptions))for(let u=0;u<d.words.length;u++){const c=d.words.map(m=>m.text);await t.add(new _l({text:c.join(" "),textAlign:"center",textBaseline:"middle",fillStyle:"#FFFFFF",fontSize:13,background:{alpha:.3,padding:{x:50,y:30}},maxWidth:t.composition.width*.8,font:i,position:this.position,styles:[{fillStyle:this.color}],stop:d.words[u].stop.add(o),start:d.words[u].start.add(o),segments:c.length>1?[{index:0,start:c.slice(0,u+1).join(" ").length}]:void 0}))}}}Vl([je()],ur.prototype,"generatorOptions");Vl([je()],ur.prototype,"type");Vl([je()],ur.prototype,"color");Vl([je()],ur.prototype,"position");var h1=Object.defineProperty,Nl=(a,n,t,o)=>{for(var i=void 0,r=a.length-1,l;r>=0;r--)(l=a[r])&&(i=l(n,t,i)||i);return i&&h1(n,t,i),i};class Tl extends en{constructor(t={}){super();ie(this,"type","VERDANT");ie(this,"generatorOptions");ie(this,"color");ie(this,"position");this.generatorOptions=t.generatorOptions??{duration:[1]},this.color=t.color??"#69E34C",this.position=t.position??{x:"50%",y:"50%"}}async applyTo(t){var r,l,s;if(!((r=t.clip)!=null&&r.transcript)||!((l=t.composition)!=null&&l.width))throw new na({code:"referenceError",message:"Captions need to be applied with a defined transcript and composition"});const o=((s=t.clip)==null?void 0:s.offset)??new Ze,i=await ka.fromFamily({family:"Montserrat",weight:"800"}).load();for(const d of t.clip.transcript.iter(this.generatorOptions))for(let u=0;u<d.words.length;u++){const c=d.words.map(m=>m.text);await t.add(new _l({text:c.join(" "),textAlign:"center",textBaseline:"middle",fontSize:15,fillStyle:"#FFFFFF",shadow:{color:"#000000",blur:4,alpha:.7,angle:Math.PI/4,distance:2},stroke:{width:3,color:"#000000"},maxWidth:t.composition.width*.5,leading:1.1,font:i,textCase:"upper",styles:[{fillStyle:this.color,fontSize:19}],position:this.position,stop:d.words[u].stop.add(o),start:d.words[u].start.add(o),segments:[{index:0,start:c.slice(0,u).join(" ").length,stop:c.slice(0,u+1).join(" ").length}]}))}}}Nl([je()],Tl.prototype,"type");Nl([je()],Tl.prototype,"generatorOptions");Nl([je()],Tl.prototype,"color");Nl([je()],Tl.prototype,"position");class g1 extends or(en){constructor({height:t=1080,width:o=1920,background:i="#000000",backend:r="webgpu"}={}){super();ie(this,"_duration",new Ze);ie(this,"renderer");ie(this,"stage",new zt.Container);ie(this,"settings");ie(this,"tracks",[]);ie(this,"frame",0);ie(this,"fixedDuration");ie(this,"state","IDLE");ie(this,"fps",Ji);ie(this,"canvas");ie(this,"context");this.settings={height:t,width:o,background:i,backend:r},this.on("update",this.update.bind(this)),this.on("attach",this.update.bind(this)),this.on("detach",this.update.bind(this)),this.on("load",this.update.bind(this)),this.on("frame",this.update.bind(this)),this.on("error",this.update.bind(this)),zt.autoDetectRenderer({...this.settings,preference:r}).then(l=>{this.renderer=l,this.trigger("init",void 0)}).catch(l=>{this.trigger("error",new li({code:"backendDetectionError",message:`${l}`}))})}get playing(){return this.state=="PLAY"}get rendering(){return this.state=="RENDER"}get width(){return this.settings.width}get height(){return this.settings.height}get duration(){return this.fixedDuration?this.fixedDuration:this._duration}set duration(t){var o;t?t instanceof Ze?this.fixedDuration=t:this.fixedDuration=Ze.fromFrames(t):this.fixedDuration=void 0,this.trigger("frame",((o=this.fixedDuration)==null?void 0:o.frames)??0)}resize(t,o){var i;this.settings.width=t,this.settings.height=o,(i=this.renderer)==null||i.resize(t,o),this.canvas&&(this.canvas.height=o,this.canvas.width=t),this.trigger("resize",void 0),this.computeFrame()}attachPlayer(t){this.canvas||(this.canvas=document.createElement("canvas"),this.canvas.height=this.settings.height,this.canvas.width=this.settings.width,this.canvas.style.background="black",this.context=this.canvas.getContext("2d"),this.context.imageSmoothingEnabled=!1,this.computeFrame()),t.appendChild(this.canvas)}detachPlayer(t){this.canvas&&t.removeChild(this.canvas)}shiftTrack(t){const o=typeof t=="object"?t:new t;return o.connect(this),this.stage.addChild(o.view),this.tracks.unshift(o),o.bubble(this),this.trigger("update",void 0),o}createTrack(t){const o=o1.fromType({type:t});return this.shiftTrack(o),o}async add(t){return await this.createTrack(t.type).add(t),t}remove(t){for(const o of this.tracks)if(o.clips.find(i=>i.id==t.id))return o.remove(t)}removeTracks(t){const o=this.tracks.filter(i=>i instanceof t);return this.tracks=this.tracks.filter(i=>!(i instanceof t)),o.forEach(i=>this.removeTrack(i)),o}findTracks(t){return this.tracks.filter(o=>{let i;return Du(t)?i=o instanceof t:i=t(o),i})}findClips(t){const o=[];for(const i of this.tracks)for(const r of i.clips){let l;Du(t)?l=r instanceof t:l=t(r),l&&o.push(r)}return o}computeFrame(){var t,o;if(this.renderer){for(let i=0;i<this.tracks.length;i++)this.tracks[i].update(Ze.fromFrames(this.frame));this.renderer.render(this.stage),(t=this.context)==null||t.clearRect(0,0,this.settings.width,this.settings.height),(o=this.context)==null||o.drawImage(this.renderer.canvas,0,0),this.trigger("currentframe",this.frame),this.playing&&this.frame++}}screenshot(t="png",o=1){if(this.computeFrame(),!this.renderer)throw new li({code:"rendererNotDefined",message:"Please wait until the renderer is defined"});return this.renderer.canvas.toDataURL(`image/${t}`,o)}async seek(t){typeof t=="number"?this.frame=Math.round(t>0?t:0):this.frame=t.frames>0?t.frames:0,this.playing&&this.pause();for(const o of this.tracks)await o.seek(Ze.fromFrames(this.frame));this.rendering||this.computeFrame()}async play(){if(!this.rendering){this.state="PLAY",this.frame>=this.duration.frames&&(this.frame=0);for(const t of this.tracks)await t.seek(Ze.fromFrames(this.frame));this.ticker(),this.trigger("play",this.frame)}}async pause(){this.state="IDLE",this.computeFrame(),this.trigger("pause",this.frame)}async audio(t=2,o=48e3){var l;const i=this.duration.seconds*o,r=new OfflineAudioContext({sampleRate:o,length:i,numberOfChannels:t}).createBuffer(t,i,o);for(const s of this.findClips(bl)){if(s.disabled||s.muted||(l=s.track)!=null&&l.disabled)continue;const d=Math.round(s.offset.seconds*r.sampleRate),u=Math.round(s.range[0].seconds*r.sampleRate),c=Math.round(s.range[1].seconds*r.sampleRate);try{const m=await s.source.decode(t,o),p=m.numberOfChannels-1;for(let f=0;f<t;f++){const v=r.getChannelData(f),h=m.getChannelData(f>p?p:f);for(let k=0;k<v.length-1;k++)k<d+u||k>d+c||k-d<0||(v[k]+=(h[k-d]??0)*s.volume,v[k]>1&&(v[k]=1),v[k]<-1&&(v[k]=-1));r.getChannelData(f).set(v)}}catch{}}return r}time(t){const o=Qo(this.frame),i=t!=null&&t.hours?11:14,r=t!=null&&t.milliseconds?23:19;return new Date(o).toISOString().slice(i,r)+" / "+new Date(this.duration.millis).toISOString().slice(i,r)}removeTrack(t){const o=this.tracks.findIndex(i=>i.id==t.id);if(t.view.parent&&this.stage.removeChild(t.view),o!=null&&o>=0)return this.tracks.splice(o,1),this.trigger("detach",void 0),t.off("*"),t}async ticker(){const t=1e3/Ji;let o=performance.now(),i=0;do{const r=await new Promise(requestAnimationFrame);r-o<t-i||(i=Math.min(t,i+r-o-t),o=r,this.computeFrame())}while(this.frame<=this.duration.frames&&this.playing);this.playing&&this.seek(0)}update(){this._duration.frames=Math.max(...this.tracks.filter(t=>!t.disabled).map(t=>{var o;return((o=t.stop)==null?void 0:o.frames)??0}),0),this.computeFrame()}}function b1(a,n){const t=new Uint8Array(19);return t[0]=79,t[1]=112,t[2]=117,t[3]=115,t[4]=72,t[5]=101,t[6]=97,t[7]=100,t[8]=1,t[9]=n,t[10]=0,t[11]=0,t[12]=a&255,t[13]=a>>8&255,t[14]=a>>16&255,t[15]=a>>24&255,t[16]=0,t[17]=0,t[18]=0,t}const Os=[8e3,12e3,16e3,24e3,48e3],y1="https://cdn.jsdelivr.net/npm/@diffusionstudio/libopus-wasm@1.0.0/dist/opus.wasm",w1="https://cdn.jsdelivr.net/npm/@diffusionstudio/libopus-wasm@1.0.0/dist/opus.js";class k1{constructor(n){ie(this,"output");ie(this,"error");ie(this,"config");ie(this,"encoder");ie(this,"opus");ie(this,"meta");this.output=n.output,this.error=n.error}async configure(n){const t=await import(w1),{numberOfChannels:o,sampleRate:i}=this.config=n;if(!Os.includes(i))throw new tl({code:"sampleRateNotSupported",message:`Unsupported sample rate, supported: ${Os.join()}`});this.opus=await t.default({locateFile(r,l){return r.endsWith(".wasm")?y1:l+r}}),this.encoder=this.opus._opus_encoder_create(i,o,2048),this.meta={decoderConfig:{codec:"opus",description:b1(i,o).buffer,numberOfChannels:o,sampleRate:i}}}encode({data:n,numberOfFrames:t,timestamp:o=0}){if(!this.encoder||!this.opus||!this.config||!this.meta)throw new tl({code:"unconfiguredEncoder",message:"Cannot encode samples using an unconfigured encoder"});const{sampleRate:i,numberOfChannels:r}=this.config,l=Math.floor(i/1e3*20);let s=0;const d=l/i*1e6;for(;s<t;){const u=n.subarray(s*r,(s+l)*r),c=this.opus._malloc(u.length*2);this.opus.HEAP16.set(u,c>>1);const m=4e3,p=this.opus._malloc(m),f=this.opus._opus_encode(this.encoder,c,l,p,m);if(f>0){const v=new Uint8Array(this.opus.HEAPU8.subarray(p,p+f));this.output({data:v,timestamp:o,type:"key",duration:d},this.meta)}else this.error(new DOMException("PCM chunk could not be encoded"));this.opus._free(c),this.opus._free(p),s+=l,o+=d}}}function _1(a){const n=Os;let t=48e3;for(const o of n)Math.abs(a-o)<Math.abs(a-t)&&(t=o);return t}class E1{constructor(n,t){ie(this,"canvas");ie(this,"muxer");ie(this,"videoEncoder");ie(this,"frame",0);ie(this,"sampleRate");ie(this,"numberOfChannels");ie(this,"videoBitrate");ie(this,"gpuBatchSize");ie(this,"fps");ie(this,"height");ie(this,"width");ie(this,"audio");this.canvas=n,this.width=n.width,this.height=n.height,this.fps=(t==null?void 0:t.fps)??30,this.sampleRate=_1((t==null?void 0:t.sampleRate)??48e3),this.numberOfChannels=(t==null?void 0:t.numberOfChannels)??2,this.videoBitrate=(t==null?void 0:t.videoBitrate)??1e7,this.gpuBatchSize=(t==null?void 0:t.gpuBatchSize)??5,this.audio=(t==null?void 0:t.audio)??!1}async init(){const n=await vy({height:Math.round(this.height),width:Math.round(this.width),bitrate:this.videoBitrate,fps:this.fps});this.muxer=new Lm({target:new kd,video:{...n[0],codec:"avc"},firstTimestampBehavior:"offset",fastStart:"in-memory",audio:this.audio?{numberOfChannels:this.numberOfChannels,sampleRate:this.sampleRate,codec:"opus"}:void 0});const t={output:(o,i)=>{i&&this.muxer.addVideoChunk(o,i)},error:console.error};this.videoEncoder=new VideoEncoder(t),this.videoEncoder.configure(n[0])}async encodeVideo(n){var o;this.videoEncoder||await this.init(),this.videoEncoder.encodeQueueSize>this.gpuBatchSize&&await new Promise(i=>{this.videoEncoder.ondequeue=()=>i(null)});const t=new VideoFrame(n??this.canvas,{timestamp:Math.floor(this.frame/this.fps*1e6),duration:Math.floor(1e6/this.fps)});(o=this.videoEncoder)==null||o.encode(t,{keyFrame:this.frame%(3*this.fps)==0}),t.close(),this.frame++}async encodeAudio(n){if(!this.audio)throw new tl({code:"initializationError",message:"Encoder must be initialized using {audio: true} to use this method"});this.muxer||await this.init();const t=fy(n,this.sampleRate,this.numberOfChannels),o=new k1({output:(i,r)=>{var l;(l=this.muxer)==null||l.addAudioChunkRaw(i.data,i.type,i.timestamp,i.duration,r)},error:console.error});await o.configure({numberOfChannels:this.numberOfChannels,sampleRate:this.sampleRate}),o.encode({data:py(t),numberOfFrames:t.length})}async blob(){var t,o,i;await((t=this.videoEncoder)==null?void 0:t.flush()),(o=this.muxer)==null||o.finalize();const n=(i=this.muxer)==null?void 0:i.target.buffer;if(!n)throw new tl({code:"unexpectedRenderError",message:"Muxer could not be finalized because the target buffer is not defined"});return new Blob([n],{type:"video/mp4"})}async export(){return this.blob()}}async function S1(a){var o,i;const n=(o=a.metadata)==null?void 0:o.source_url;if(n)return n;const t=(i=a.source)==null?void 0:i.media_uuid;if(t){if(typeof window<"u"){const r=window;if(r.MEDIABLES_MEDIA_URLS&&r.MEDIABLES_MEDIA_URLS[t])return r.MEDIABLES_MEDIA_URLS[t]}if(!t.startsWith("temp-"))try{if(typeof fetch<"u"){const r=await fetch(`/api/media/${t}`);if(r.ok){const l=await r.json();return l.playback_url||l.url||void 0}}}catch{}}}const Xi=class Xi{constructor(n){this.transitions=new Map,this.nextId=0,this.composition=n}async applyTransition(n,t,o){const i=`transition-${this.nextId++}`,r=Math.round(o.duration*30),l=o.easing||"linear",s=this.findTrackForClip(n),d=this.findTrackForClip(t);if(!s||!d)throw new Error("Clips must be added to composition before applying transitions");const u=n.stop.frames-r,c=n.stop.frames;switch(o.type){case"fade":await this.applyFadeTransition(n,t,u,c,l);break;case"dissolve":case"cross-fade":await this.applyCrossFadeTransition(n,t,u,c,l);break;case"wipe-left":case"wipe-right":case"wipe-up":case"wipe-down":await this.applyWipeTransition(n,t,o.type,u,c,l);break;case"slide-left":case"slide-right":case"slide-up":case"slide-down":await this.applySlideTransition(n,t,o.type,u,c,l);break;case"zoom-in":case"zoom-out":await this.applyZoomTransition(n,t,o.type,u,c,l);break;case"dip-to-black":case"dip-to-white":await this.applyDipTransition(n,t,o.type,u,c,l);break}return this.transitions.set(i,o),i}async applyFadeTransition(n,t,o,i,r){if(!this.isVideoClip(n)||!this.isVideoClip(t))throw new Error("Fade transitions require VideoClip instances");n.alpha=new qe([o,i],[1,0],{easing:r}),t.alpha=new qe([o,i],[0,1],{easing:r}),t.start=Ze.fromFrames(o)}async applyCrossFadeTransition(n,t,o,i,r){if(!this.isVideoClip(n)||!this.isVideoClip(t))throw new Error("Cross-fade transitions require VideoClip instances");n.alpha=new qe([o,i],[1,0],{easing:r}),t.alpha=new qe([o,i],[0,1],{easing:r}),t.start=Ze.fromFrames(o)}async applyWipeTransition(n,t,o,i,r,l){if(!this.isVideoClip(n)||!this.isVideoClip(t))throw new Error("Wipe transitions require VideoClip instances");const s={x:0,y:0},d={x:0,y:0};switch(o){case"wipe-left":s.x=new qe([i,r],[0,-1920],{easing:l}),d.x=new qe([i,r],[1920,0],{easing:l});break;case"wipe-right":s.x=new qe([i,r],[0,1920],{easing:l}),d.x=new qe([i,r],[-1920,0],{easing:l});break;case"wipe-up":s.y=new qe([i,r],[0,-1080],{easing:l}),d.y=new qe([i,r],[1080,0],{easing:l});break;case"wipe-down":s.y=new qe([i,r],[0,1080],{easing:l}),d.y=new qe([i,r],[-1080,0],{easing:l});break}n.translate=s,t.translate=d,t.start=Ze.fromFrames(i)}async applySlideTransition(n,t,o,i,r,l){if(!this.isVideoClip(n)||!this.isVideoClip(t))throw new Error("Slide transitions require VideoClip instances");const s={x:0,y:0},d={x:0,y:0};switch(o){case"slide-left":s.x=new qe([i,r],[0,-1920],{easing:l}),d.x=new qe([i,r],[1920,0],{easing:l});break;case"slide-right":s.x=new qe([i,r],[0,1920],{easing:l}),d.x=new qe([i,r],[-1920,0],{easing:l});break;case"slide-up":s.y=new qe([i,r],[0,-1080],{easing:l}),d.y=new qe([i,r],[1080,0],{easing:l});break;case"slide-down":s.y=new qe([i,r],[0,1080],{easing:l}),d.y=new qe([i,r],[-1080,0],{easing:l});break}n.translate=s,t.translate=d,t.start=Ze.fromFrames(i)}async applyZoomTransition(n,t,o,i,r,l){if(!this.isVideoClip(n)||!this.isVideoClip(t))throw new Error("Zoom transitions require VideoClip instances");o==="zoom-in"?(n.scale=new qe([i,r],[1,2],{easing:l}),n.alpha=new qe([i,r],[1,0],{easing:l}),t.scale=new qe([i,r],[.5,1],{easing:l}),t.alpha=new qe([i,r],[0,1],{easing:l})):(n.scale=new qe([i,r],[1,.5],{easing:l}),n.alpha=new qe([i,r],[1,0],{easing:l}),t.scale=new qe([i,r],[2,1],{easing:l}),t.alpha=new qe([i,r],[0,1],{easing:l})),t.start=Ze.fromFrames(i)}async applyDipTransition(n,t,o,i,r,l){if(!this.isVideoClip(n)||!this.isVideoClip(t))throw new Error("Dip transitions require VideoClip instances");const s=Math.round((i+r)/2),d=o==="dip-to-black"?"#000000":"#ffffff",u=await Rs.fromColor(d),c=new Fy(u,{start:Ze.fromFrames(i),stop:Ze.fromFrames(r)});n.alpha=new qe([i,s],[1,0],{easing:l}),c.alpha=new qe([i,s,r],[0,1,0],{easing:l}),t.alpha=new qe([s,r],[0,1],{easing:l}),await this.composition.add(c),t.start=Ze.fromFrames(s)}findTrackForClip(n){for(const t of this.composition.tracks)if(t.clips.includes(n))return t}removeTransition(n){this.transitions.delete(n)}getTransitions(){return new Map(this.transitions)}static getAvailableTransitions(){return[...Xi.TRANSITIONS]}static previewTransition(n){return Xi.TRANSITIONS.find(t=>t.type===n)}isVideoClip(n){return"alpha"in n&&"scale"in n&&"translate"in n}};Xi.TRANSITIONS=[{type:"fade",name:"Fade",description:"Simple fade transition"},{type:"dissolve",name:"Dissolve",description:"Cross-dissolve between clips"},{type:"wipe-left",name:"Wipe Left",description:"Wipe from right to left"},{type:"wipe-right",name:"Wipe Right",description:"Wipe from left to right"},{type:"wipe-up",name:"Wipe Up",description:"Wipe from bottom to top"},{type:"wipe-down",name:"Wipe Down",description:"Wipe from top to bottom"},{type:"slide-left",name:"Slide Left",description:"Slide out to the left"},{type:"slide-right",name:"Slide Right",description:"Slide out to the right"},{type:"slide-up",name:"Slide Up",description:"Slide out upward"},{type:"slide-down",name:"Slide Down",description:"Slide out downward"},{type:"zoom-in",name:"Zoom In",description:"Zoom into the next clip"},{type:"zoom-out",name:"Zoom Out",description:"Zoom out to the next clip"},{type:"cross-fade",name:"Cross Fade",description:"Cross-fade between clips"},{type:"dip-to-black",name:"Dip to Black",description:"Fade through black"},{type:"dip-to-white",name:"Dip to White",description:"Fade through white"}];let qi=Xi;function qa(a,n){if(typeof a=="number"&&Number.isFinite(a))return a;if(typeof a=="string"){const t=Number(a);if(Number.isFinite(t))return t}return n}function ji(a){return a>5?a/100:a}function x1(a){if(a.value!==void 0){const n=qa(a.value,0);return n>=-1&&n<=1?1+n:ji(n)}return ji(qa(a.brightness,1))}function ln(a,n,t){return Math.min(t,Math.max(n,a))}function Ma(){return new aa.ColorMatrixFilter}function C1(a,n){switch(a){case"brightness":{const t=Ma();return t.brightness(ln(x1(n),0,5),!1),t}case"contrast":{const t=Ma(),o=qa(n.value??n.contrast,1);return t.contrast(ln(ji(o),0,5),!1),t}case"saturation":{const t=Ma(),o=qa(n.value??n.saturation,1);return t.saturate(ln(ji(o),0,5),!1),t}case"hue":{const t=Ma(),o=qa(n.degrees??n.value,0);return t.hue(ln(o,-180,180),!1),t}case"blur":case"softFocus":{const t=a==="softFocus"?1:0,o=qa(n.radius??n.blur??n.value,t);return new aa.BlurFilter({strength:ln(o,0,32),quality:4})}case"grayscale":{const t=Ma(),o=ln(qa(n.amount,100),0,100);return o<=0?null:(o>=100?t.desaturate():t.saturate(1-o/100,!1),t)}case"sepia":{if(ln(qa(n.amount,100),0,100)<=0)return null;const o=Ma();return o.sepia(!1),o}case"invert":{if(ln(qa(n.amount,100),0,100)<=0)return null;const o=Ma();return o.negative(!1),o}case"warmth":{const t=Ma(),o=ln(qa(n.value,0),-50,50);return o>0?(t.sepia(!1),t.saturate(1+o/100,!1)):o<0&&t.hue(Math.abs(o)/50*-20,!1),t}case"tint":{const t=Ma(),o=ln(qa(n.intensity,.3),0,1),i=typeof n.color=="string"?n.color:"#ff0000",r=i.startsWith("#")?i.slice(1):i;if(r.length===6){const l=parseInt(r.slice(0,2),16)/255,s=parseInt(r.slice(2,4),16)/255,d=parseInt(r.slice(4,6),16)/255;t.matrix=[1-o+o*l,0,0,0,0,0,1-o+o*s,0,0,0,0,0,1-o+o*d,0,0,0,0,0,1,0]}return t}case"vintage":{const t=Ma();return t.sepia(!1),t.saturate(1.4,!1),t.contrast(1.1,!1),t}case"blackAndWhite":{const t=Ma(),o=ln(ji(qa(n.contrast,120)),.5,3);return t.desaturate(),t.contrast(o,!1),t}case"cinematic":{const t=Ma();return t.contrast(1.2,!1),t.brightness(.95,!1),t.saturate(.85,!1),t}case"dramatic":{const t=Ma();return t.contrast(1.4,!1),t.brightness(.9,!1),t.saturate(1.1,!1),t.sepia(!1),t}case"dreamy":{const t=Ma();return t.brightness(1.05,!1),t.saturate(.9,!1),t.contrast(.95,!1),t}default:return null}}typeof window<"u"&&!window.PIXI&&(window.PIXI=aa);class Qm{constructor(n=1920,t=1080,o=30,i){this.player=null,this.clips=new Map,this.clipTimelineStart=new Map,this.resizeObserver=null,this.recipeSourceDimensions=null,this.filterCache=new Map,this.animationFrameId=null,this.lastRenderedFrame=-1,this.fps=o,this.fitMode=(i==null?void 0:i.fitMode)??"contain",this.composition=new g1({width:n,height:t,background:"#000000"}),this.initPromise=new Promise(r=>{const l=()=>{this.isDebug()&&this.dbg("init:renderer-ready"),r()};this.composition.on("init",l),queueMicrotask(()=>{var d,u,c,m;const s=this.composition;((u=(d=s==null?void 0:s.app)==null?void 0:d.renderer)!=null&&u.view||(c=s==null?void 0:s.renderer)!=null&&c.view||(m=s==null?void 0:s.renderer)!=null&&m.canvas)&&l()})}),this.setupEventHandlers()}isDebug(){try{if(typeof window<"u"&&window.MEDIABLES_DEBUG===1||typeof localStorage<"u"&&localStorage.getItem("mediables.debug")==="1")return!0}catch{}return!1}dbg(...n){this.isDebug()}setupEventHandlers(){this.composition.on("play",()=>this.onPlay()),this.composition.on("pause",()=>this.onPause()),this.composition.on("currentframe",()=>this.onFrameUpdate())}onPlay(){}onPause(){}onFrameUpdate(){}async attachPlayer(n){this.player=n,this.isDebug()&&this.dbg("attachPlayer:begin",{w:n.clientWidth,h:n.clientHeight}),this.composition.attachPlayer(n),await this.initPromise;const t=this.composition;this.isDebug()&&this.dbg("attachPlayer:ready",{hasRenderer:!!(t!=null&&t.renderer),hasCanvas:!!(t!=null&&t.canvas),canvasSize:t!=null&&t.canvas?{w:t.canvas.width,h:t.canvas.height}:null}),this.setupResponsiveScaling(),this.composition.seek(0),this.startRenderLoop()}setupResponsiveScaling(){this.player&&(this.player.style.position="absolute",this.player.style.top="50%",this.player.style.left="50%",this.resizeObserver=new ResizeObserver(()=>{var o;const n=(o=this.player)==null?void 0:o.parentElement;if(!this.player||!n)return;const t=Math.min(n.clientWidth/this.composition.width,n.clientHeight/this.composition.height);this.player.style.width=`${this.composition.width}px`,this.player.style.height=`${this.composition.height}px`,this.player.style.transform=`translate(-50%, -50%) scale(${t})`,this.player.style.transformOrigin="center"}),this.resizeObserver.observe(this.player.parentElement??this.player))}async loadFromRecipe(n){var o,i,r;await this.initPromise,this.clips.clear(),this.recipeSourceDimensions=Number.isFinite((o=n.source)==null?void 0:o.original_width)&&n.source.original_width>0&&Number.isFinite((i=n.source)==null?void 0:i.original_height)&&n.source.original_height>0?{width:n.source.original_width,height:n.source.original_height}:null;const t=await S1(n);for(const l of n.timeline)await this.addTimelineClip(l,t);if(n.textOverlays)for(const l of n.textOverlays)await this.addTextOverlay(l);await new Promise(l=>requestAnimationFrame(l));for(const l of n.timeline)(r=l.filters)!=null&&r.length&&this.applyFiltersToClip(l.id,l.filters);n.transitions&&n.transitions.length>0&&await this.applyTransitionsToClips(n.transitions),this.composition.seek(0),this.applyFitModeToClips(),this.composition.computeFrame()}async applyTransitionsToClips(n){const t=new qi(this.composition);for(const o of n){if(o.type==="cut")continue;const i=this.clips.get(o.fromClipId),r=this.clips.get(o.toClipId),l=this.mapTransitionType(o.type);if(!i||!r||!l)continue;const s={type:l,duration:o.duration,easing:this.mapTransitionEasing(o.easing)};try{await t.applyTransition(i,r,s)}catch{}}}mapTransitionType(n){switch(n){case"fade":return"fade";case"crossfade":return"cross-fade";case"dip-to-black":return"dip-to-black";case"wipe-left":return"wipe-left";case"wipe-right":return"wipe-right";case"slide-left":return"slide-left";case"slide-right":return"slide-right";case"zoom":return"zoom-in";case"cut":return null}}mapTransitionEasing(n){switch(n){case"ease-in":return"easeIn";case"ease-out":return"easeOut";case"ease-in-out":return"easeInOut";case"linear":return"linear"}}async addTimelineClip(n,t){var o,i;try{const r=n.url||t;if(!r)throw new Error("No video source URL available for clip");if(!r.startsWith("blob:")){if(!/^https?:/i.test(String(r)))return}const l=await((o=Mo.from)==null?void 0:o.call(Mo,r,{crossOrigin:"anonymous"}))??await Mo.from(r),s=new Ps(l,{muted:n.muted||!1,scale:n.scale||1,position:"center"});let d=0,u=null;if(n.sourceIn!==void 0||n.sourceOut!==void 0){const p=Math.max(0,Math.floor((n.sourceIn||0)*this.fps)),f=n.sourceOut!==void 0?Math.max(p+1,Math.floor(n.sourceOut*this.fps)):null;d=p,u=f;try{if(s.offset=s.offset||{frames:0},s.offset.frames=p,f!==null){const v=Math.max(1,f-p);s.duration=s.duration||{frames:v},s.duration.frames=v}}catch{}}const c=await this.composition.add(s);if(u!==null&&d>=0)try{const p=Math.max(1,u-d);c.offset=c.offset||{frames:0},c.offset.frames=d,c.duration=c.duration||{frames:p},c.duration.frames=p}catch{}const m=Math.floor(n.timelineStart*this.fps);m>0&&c.offsetBy(m),this.clipTimelineStart.set(n.id,n.timelineStart),this.applyFitToClip(c),this.clips.set(n.id,c),(i=n.filters)!=null&&i.length&&(await new Promise(p=>requestAnimationFrame(p)),this.applyFiltersToClip(n.id,n.filters))}catch{}}async addTextOverlay(n){try{const t=ka.fromFamily({family:n.fontFamily||"Arial",weight:n.fontWeight||"400"}),o=new ci({text:n.content,font:t,fontSize:n.fontSize||34,position:n.position||"center",fillStyle:n.color||"#FFFFFF",textAlign:n.textAlign||"center",textBaseline:n.textBaseline||"middle"});if(n.animation){const r=n.animation.duration||1,l=0,s=r*this.fps,d=n.animation.easing||"linear";n.animation.type==="rotate"&&n.animation.rotation?o.rotation=new qe([l,s],[n.animation.rotation.from,n.animation.rotation.to],{easing:d}):n.animation.type==="scale"&&n.animation.scale&&(o.scale=new qe([l,s],[n.animation.scale.from,n.animation.scale.to],{easing:d}))}n.startTime&&n.startTime>0&&o.offsetBy(n.startTime*this.fps),n.duration&&o.subclip(0,n.duration*this.fps);const i=await this.composition.add(o);this.clips.set(n.id||`text-${Date.now()}`,i)}catch{}}applyFiltersToClip(n,t){const o=this.clips.get(n);if(!o)return;const i=this.filterCache.get(n)??new Map,r=new Set(t.map(d=>d.id));for(const[d,u]of i.entries())if(!r.has(d)){try{typeof u.instance.destroy=="function"&&u.instance.destroy()}catch{}i.delete(d)}const l=[];for(const d of t){const u=this.buildFilterSignature(d),c=i.get(d.id);let m=null;if(c&&c.signature===u)m=c.instance;else{if(c)try{c.instance.destroy()}catch{}m=this.createPixiFilter(d),m?i.set(d.id,{instance:m,signature:u}):i.delete(d.id)}m&&l.push(m)}this.filterCache.set(n,i);const s=o.view??o.sprite??o.displayObject??null;if("filters"in o)try{o.filters=l}catch{}if(s&&"filters"in s)try{s.filters=l}catch{}typeof o.enter=="function"&&o.enter()}buildFilterSignature(n){const t=typeof n.params=="object"&&n.params!==null?n.params:{},o=Object.keys(t).sort((i,r)=>i.localeCompare(r)).map(i=>[i,t[i]]);return JSON.stringify({filterId:n.filterId,intensity:n.intensity??1,params:o})}setClipFilters(n,t){this.applyFiltersToClip(n,t),this.composition.computeFrame()}createPixiFilter(n){const t=n.intensity??1,o=n.params||{};if(Ea.getFilter(n.filterId)&&!Ea.isFilterCompatibleWithMedia(n.filterId,"video"))return null;let r=Mv(n.filterId,o);return r||(r=C1(n.filterId,o)),r?(t!==1&&r&&(n.filterId==="colorOverlay"||n.filterId==="alpha"||("alpha"in r&&!o.alpha&&(r.alpha*=t),"strength"in r&&(r.strength*=t))),r):null}play(){this.composition.play(),this.startRenderLoop()}pause(){this.composition.pause(),this.composition.computeFrame()}seek(n){this.composition.seek(n)}seekToTime(n){this.composition.seek(n*this.fps)}get currentFrame(){return this.composition.frame}get currentTime(){return this.composition.time().seconds.toFixed(2)}get currentTimeInSeconds(){return this.composition.frame/this.fps}get duration(){return this.composition.duration.frames}get durationInSeconds(){return this.composition.duration.frames/this.fps}async export(n={}){var l,s,d,u,c,m,p,f,v;const t=n.fps??this.fps,o=this.composition.canvas??((s=(l=this.composition)==null?void 0:l.renderer)==null?void 0:s.view)??((c=(u=(d=this.composition)==null?void 0:d.app)==null?void 0:u.renderer)==null?void 0:c.view)??((p=(m=this.composition)==null?void 0:m.renderer)==null?void 0:p.canvas);if(!o)throw new Error("Export failed: composition canvas is not initialized");(f=n.onProgress)==null||f.call(n,0);const i=new E1(o,{fps:t});await i.init();const r=await i.export();return(v=n.onProgress)==null||v.call(n,100),r}destroy(){if(this.stopRenderLoop(),this.composition.pause(),this.clips.clear(),this.clipTimelineStart.clear(),this.filterCache.clear(),this.player&&this.composition.detachPlayer(this.player),this.resizeObserver){try{this.resizeObserver.disconnect()}catch{}this.resizeObserver=null}this.player=null}startRenderLoop(){this.stopRenderLoop(),this.isDebug()&&this.dbg("renderLoop:start");const n=()=>{(this.composition.state==="PLAY"||this.composition.frame!==this.lastRenderedFrame)&&(this.composition.computeFrame(),this.lastRenderedFrame=this.composition.frame),this.animationFrameId=requestAnimationFrame(n)};n()}stopRenderLoop(){this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null,this.isDebug()&&this.dbg("renderLoop:stop"))}moveClip(n,t){const o=this.clips.get(n);if(!o)return;const i=this.clipTimelineStart.get(n)||0,r=t-i;r!==0&&(o.offsetBy(r*this.fps),this.clipTimelineStart.set(n,t),this.composition.computeFrame())}setFitMode(n){this.fitMode=n,this.applyFitModeToClips()}applyFitModeToClips(){for(const n of this.clips.values())"scale"in n&&typeof n.scale<"u"&&this.applyFitToClip(n);this.composition.computeFrame()}applyFitToClip(n){var t,o;if(this.fitMode!=="none")try{const i=this.composition.width,r=this.composition.height,l=n.source,s=(l==null?void 0:l.width)??(l==null?void 0:l.videoWidth)??((t=this.recipeSourceDimensions)==null?void 0:t.width),d=(l==null?void 0:l.height)??(l==null?void 0:l.videoHeight)??((o=this.recipeSourceDimensions)==null?void 0:o.height);if(!s||!d)return;const u=Math.min(i/s,r/d),c=Math.max(i/s,r/d),m=this.fitMode==="contain"?u:c;n.scale=m}catch{}}trimClip(n,t,o){const i=this.clips.get(n);if(!i)return;const r=Math.max(0,Math.floor(t*this.fps)),l=Math.max(r+1,Math.floor(o*this.fps));try{i.offset=i.offset||{frames:0},i.offset.frames=r,i.duration=i.duration||{frames:l-r},i.duration.frames=l-r,this.composition.computeFrame()}catch{}}resolveSourceFrame(n){var t,o;for(const[i,r]of this.clips.entries()){const l=this.clipTimelineStart.get(i)||0,s=Math.floor(l*this.fps),d=((t=r.duration)==null?void 0:t.frames)??Math.round(r.duration.seconds*this.fps),u=s+d;if(n>=s&&n<u){const c=n-s;return{sourceFrame:(((o=r.offset)==null?void 0:o.frames)??0)+c,clipId:i}}}return{sourceFrame:0,clipId:null}}}const V1=["src"],N1={class:"preview-controls"},T1=["aria-label"],B1={class:"time-display"},M1={class:"current-time"},$1={class:"total-time"},I1={key:2,class:"loading-overlay"},D1={key:3,class:"error-overlay"},F1=e.defineComponent({__name:"VideoPreviewEngine",props:{mediaUuid:{},recipe:{},media:{},autoPlay:{type:Boolean,default:!1},enableEngine:{type:Boolean,default:!0},fitMode:{default:"contain"}},emits:["time-update","duration-change","play-state-change","error","engine-ready"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(),r=e.ref(),l=e.ref(),s=e.ref(!1),d=e.ref("Initializing..."),u=e.ref(null),c=e.ref(!1),m=e.ref(0),p=e.ref(0);let f=null;const v=e.computed(()=>!!t.enableEngine&&!!t.recipe),h=e.computed(()=>{switch(t.fitMode){case"cover":return"cover";case"none":return"none";default:return"contain"}}),k=e.computed(()=>{var C,M;return(C=t.media)!=null&&C.url?t.media.url:(((M=t.media)==null?void 0:M.file)instanceof File,"")});async function E(){var C,M,_;if(!(!r.value||!t.recipe))try{s.value=!0,d.value="Initializing video engine...";const L=((C=t.recipe.source)==null?void 0:C.original_width)||1920,j=((M=t.recipe.source)==null?void 0:M.original_height)||1080,B=((_=t.recipe.output)==null?void 0:_.fps)||30;f=new Qm(L,j,B,{fitMode:t.fitMode}),f.attachPlayer(r.value),d.value="Loading composition...",await f.loadFromRecipe(t.recipe),p.value=f.durationInSeconds,o("duration-change",p.value),w(),s.value=!1,o("engine-ready",f),t.autoPlay&&(f.play(),c.value=!0)}catch(L){const j=L instanceof Error?L.message:String(L);u.value=`Failed to initialize: ${j}`,s.value=!1}}function w(){if(!f)return;const C=setInterval(()=>{f&&c.value&&(m.value=f.currentTimeInSeconds,o("time-update",m.value))},100);$.value=C}function b(){v.value&&f?(c.value?f.pause():f.play(),c.value=!c.value,o("play-state-change",c.value)):l.value&&(c.value?l.value.pause():l.value.play(),c.value=!c.value,o("play-state-change",c.value))}function g(C){const M=Math.floor(C/60),_=Math.floor(C%60);return`${M}:${_.toString().padStart(2,"0")}`}function D(){u.value=null,v.value&&E()}function T(){!v.value&&l.value&&(p.value=l.value.duration,o("duration-change",p.value))}function F(){!v.value&&l.value&&(m.value=l.value.currentTime,o("time-update",m.value))}function V(){c.value=!1,o("play-state-change",!1)}function I(C){u.value="Failed to load video",o("error",u.value)}e.onMounted(()=>{v.value&&t.recipe&&E()}),e.onUnmounted(()=>{f&&(f.destroy(),f=null),$.value&&(clearInterval($.value),$.value=null),l.value&&(l.value.pause(),l.value.removeAttribute("src"),l.value.load())}),e.watch(()=>t.recipe,async C=>{if(v.value&&C)if(C.timeline,f)try{await f.loadFromRecipe(C),p.value=f.durationInSeconds,o("duration-change",p.value)}catch{}else await E()}),e.watch(()=>t.enableEngine,async C=>{C?(await e.nextTick(),await E()):f&&($.value&&(clearInterval($.value),$.value=null),f.destroy(),f=null)}),e.watch(()=>t.fitMode,async C=>{if(!(!v.value||!f))try{f.setFitMode(C||"contain")}catch{}});const $=e.ref(null);return(C,M)=>(e.openBlock(),e.createElementBlock("div",{class:"video-preview-engine",ref_key:"containerRef",ref:i},[v.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"videoEnginePlayer",ref:r,class:"video-engine-player",style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"}},null,512)):(e.openBlock(),e.createElementBlock("video",{key:1,ref_key:"videoRef",ref:l,src:k.value,onLoadedmetadata:T,onTimeupdate:F,onEnded:V,onError:I,style:e.normalizeStyle({width:"100%",height:"100%",objectFit:h.value}),playsinline:"",controls:""},null,44,V1)),e.createElementVNode("div",N1,[e.createElementVNode("button",{class:"play-button",onClick:b,"aria-label":c.value?"Pause":"Play"},[e.createVNode(e.unref(G.IonIcon),{icon:c.value?e.unref(bm):e.unref(ym)},null,8,["icon"])],8,T1),e.createElementVNode("div",B1,[e.createElementVNode("span",M1,e.toDisplayString(g(m.value)),1),M[0]||(M[0]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",$1,e.toDisplayString(g(p.value)),1)])]),s.value?(e.openBlock(),e.createElementBlock("div",I1,[e.createVNode(e.unref(G.IonSpinner),{name:"crescent"}),e.createElementVNode("p",null,e.toDisplayString(d.value),1)])):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",D1,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(vd)},null,8,["icon"]),e.createElementVNode("p",null,e.toDisplayString(u.value),1),e.createElementVNode("button",{onClick:D},"Retry")])):e.createCommentVNode("",!0)],512))}}),zs=Ie(F1,[["__scopeId","data-v-e199ac48"]]),A1=["aria-label"],R1=["aria-label"],L1={class:"clip-content"},P1={key:0,class:"clip-thumbnail"},U1=["src","alt"],O1=["src"],z1=["data-visual-mode"],j1={class:"clip-info"},W1={class:"clip-label"},Z1={class:"clip-duration"},H1={key:3,class:"filter-indicators"},G1={key:4,class:"speed-indicator"},X1=["aria-label","data-testid"],K1={key:1,class:"selection-overlay"},J1=420,q1=8,Y1=48,Q1=32,Ku=1,ew=e.defineComponent({__name:"TimelineClip",props:{clip:{},scale:{},scrollOffset:{default:0},selected:{type:Boolean,default:!1},isMobile:{type:Boolean,default:!1},canDelete:{type:Boolean,default:!1}},emits:["select","delete","long-press","trim-start","trim-end","drag","trim-start-abs","trim-end-abs","drag-abs"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r=e.ref(!1),l=e.ref(null),s=e.ref(0),d=e.ref(0),u=e.ref(0),c=e.ref(0),m=e.ref(!1),p=e.ref(!1),f=e.ref(null),v=e.computed(()=>{const A=(t.clip.timelineEnd-t.clip.timelineStart)*t.scale;return{left:`${t.clip.timelineStart*t.scale-t.scrollOffset}px`,width:`${A}px`}}),h=e.computed(()=>t.clip.label||`Clip ${t.clip.id.slice(-4)}`),k=e.computed(()=>{const y=t.clip.timelineEnd-t.clip.timelineStart;return F(y)}),E=e.computed(()=>t.clip.filters&&t.clip.filters.length>0),w=e.computed(()=>t.clip.filters||[]),b=e.computed(()=>t.clip.waveformSamples??[]),g=e.computed(()=>t.clip.filmstripFrames??[]),D=e.computed(()=>b.value.length>0),T=e.computed(()=>g.value.length>0);function F(y){if(y<1)return`${Math.round(y*30)}f`;if(y<60)return`${y.toFixed(1)}s`;{const A=Math.floor(y/60),W=Math.floor(y%60);return`${A}:${W.toString().padStart(2,"0")}`}}function V(y){return!y||typeof y!="string"?Nu:y.includes("color")||y.includes("brightness")?no:y.includes("blur")?Ah:y.includes("style")?Mi:y.includes("effect")?ao:Nu}function I(){r.value||o("select")}function $(y){y.button===0&&(_("move",y.clientX),y.preventDefault())}function C(y){if(y.touches.length!==1)return;const A=y.touches[0];if(!t.isMobile){_("move",A.clientX),y.preventDefault();return}u.value=A.clientX,c.value=A.clientY,m.value=!1,p.value=!1,L(),j(),f.value=window.setTimeout(()=>{p.value=!0,j(),t.selected||o("select"),o("long-press")},J1),document.addEventListener("touchmove",B),document.addEventListener("touchend",U),document.addEventListener("touchcancel",U),y.preventDefault()}function M(y,A){const W="touches"in A?A.touches[0].clientX:A.clientX;l.value=y==="start"?"trim-start":"trim-end",_(l.value,W),A.preventDefault(),A.stopPropagation()}function _(y,A){L(),j(),r.value=!0,l.value=y,s.value=A,y==="move"?d.value=t.clip.timelineStart:y==="trim-start"?d.value=t.clip.sourceIn:y==="trim-end"&&(d.value=t.clip.sourceOut),document.addEventListener("mousemove",S),document.addEventListener("mouseup",O),document.addEventListener("touchmove",R),document.addEventListener("touchend",O),t.selected||o("select")}function L(){f.value!==null&&(window.clearTimeout(f.value),f.value=null)}function j(){document.removeEventListener("touchmove",B),document.removeEventListener("touchend",U),document.removeEventListener("touchcancel",U)}function B(y){if(y.touches.length!==1)return;const A=y.touches[0],W=A.clientX-u.value,q=A.clientY-c.value;Math.hypot(W,q)<q1||(m.value=!0,L(),j(),_("move",A.clientX),S(y),y.preventDefault())}function U(){const y=!m.value&&!p.value&&!r.value;L(),j(),m.value=!1,p.value=!1,y&&o("select")}function S(y){if(!r.value||!l.value)return;const A="touches"in y?y.touches[0].clientX:y.clientX,W="touches"in y?y.touches[0].clientY:y.clientY,de=A-s.value;l.value==="move"?(o("drag",de),o("drag-abs",A,W)):l.value==="trim-start"?(o("trim-start",de),o("trim-start-abs",A)):l.value==="trim-end"&&(o("trim-end",de),o("trim-end-abs",A))}function R(y){S(y)}function O(){r.value=!1,l.value=null,document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",O),document.removeEventListener("touchmove",R),document.removeEventListener("touchend",O)}function K(){e.nextTick(()=>{xe()})}function se(y){var ge,ke;const A=Math.max(0,t.clip.timelineEnd-t.clip.timelineStart),W=Math.max(1,Math.round(A*t.scale)),q=t.isMobile?Q1:Y1,de=Math.max(1,Math.round(y.clientWidth||((ge=y.parentElement)==null?void 0:ge.clientWidth)||W)),Pe=Math.max(1,Math.round(y.clientHeight||((ke=y.parentElement)==null?void 0:ke.clientHeight)||q));return{width:de,height:Pe}}function xe(){if(T.value||!i.value)return;const y=i.value,A=y.getContext("2d");if(!A)return;const{width:W,height:q}=se(y),de=window.devicePixelRatio||1;if(y.width=Math.max(1,Math.round(W*de)),y.height=Math.max(1,Math.round(q*de)),A.setTransform(de,0,0,de,0,0),A.clearRect(0,0,W,q),b.value.length>0){le(A,W,q,b.value);return}ue(A,W,q)}function ue(y,A,W){const q=W/2;y.strokeStyle="rgba(255, 255, 255, 0.3)",y.lineWidth=1,y.beginPath(),y.moveTo(0,q),y.lineTo(A,q);for(let de=0;de<A;de+=4){const Pe=Math.sin(de*.05)*(W*.3);y.moveTo(de,q-Pe),y.lineTo(de,q+Pe)}y.stroke()}function le(y,A,W,q){const de=t.clip.sourceIn,Pe=t.clip.sourceOut,ge=Math.max(.001,Pe-de),ke=q.filter(Ae=>Ae.endTime>=de&&Ae.time<=Pe);if(ke.length===0){ue(y,A,W);return}const be=W/2,Ce=W*.44,Ee=W*.32;y.fillStyle="rgba(255, 255, 255, 0.26)",ke.forEach(Ae=>{const Ue=Math.max(Ae.time,de),ot=Math.min(Ae.endTime,Pe),it=(Ue-de)/ge*A,Lt=Math.max(Ku,(ot-Ue)/ge*A),gt=H(Ae.rms)*Ee;y.fillRect(it,be-gt,Lt,gt*2)}),y.fillStyle="rgba(255, 255, 255, 0.72)",ke.forEach(Ae=>{const Ue=Math.max(Ae.time,de),ot=Math.min(Ae.endTime,Pe),it=(Ue-de)/ge*A,Lt=Math.max(Ku,(ot-Ue)/ge*A),gt=H(Ae.peak)*Ce;y.fillRect(it,be-gt,Lt,gt*2)})}function H(y){return Math.min(1,Math.max(0,y))}return e.watch(()=>[t.clip.id,t.clip.timelineStart,t.clip.timelineEnd,t.clip.sourceIn,t.clip.sourceOut,t.clip.waveformSamples,t.clip.filmstripFrames,t.scale,t.isMobile],K,{deep:!0,flush:"post"}),e.onMounted(()=>{K(),window.addEventListener("resize",xe)}),e.onUnmounted(()=>{O(),L(),j(),window.removeEventListener("resize",xe)}),(y,A)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["timeline-clip",{selected:y.selected,mobile:y.isMobile,"has-filters":E.value}]),style:e.normalizeStyle(v.value),onClick:I,onMousedown:$,onTouchstart:C},[e.createElementVNode("div",{class:"trim-handle trim-start",onMousedown:A[0]||(A[0]=e.withModifiers(W=>M("start",W),["stop"])),onTouchstart:A[1]||(A[1]=e.withModifiers(W=>M("start",W),["stop"])),"aria-label":`Trim start of ${y.clip.label||"clip"}`},[...A[7]||(A[7]=[e.createElementVNode("div",{class:"trim-grip"},null,-1)])],40,A1),e.createElementVNode("div",{class:"trim-handle trim-end",onMousedown:A[2]||(A[2]=e.withModifiers(W=>M("end",W),["stop"])),onTouchstart:A[3]||(A[3]=e.withModifiers(W=>M("end",W),["stop"])),"aria-label":`Trim end of ${y.clip.label||"clip"}`},[...A[8]||(A[8]=[e.createElementVNode("div",{class:"trim-grip"},null,-1)])],40,R1),e.createElementVNode("div",L1,[y.clip.thumbnail?(e.openBlock(),e.createElementBlock("div",P1,[e.createElementVNode("img",{src:y.clip.thumbnail,alt:y.clip.label||"Video clip"},null,8,U1)])):e.createCommentVNode("",!0),T.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["clip-analysis-strip clip-filmstrip",{compact:y.isMobile}]),"aria-hidden":"true"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,W=>(e.openBlock(),e.createElementBlock("img",{key:W.id,class:"clip-filmstrip-frame",src:W.uri,alt:"",draggable:"false"},null,8,O1))),128))],2)):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["clip-analysis-strip clip-waveform",{compact:y.isMobile}]),"data-visual-mode":D.value?"waveform":"placeholder","aria-hidden":"true"},[e.createElementVNode("canvas",{ref_key:"waveformCanvas",ref:i},null,512)],10,z1)),e.createElementVNode("div",j1,[e.createElementVNode("span",W1,e.toDisplayString(h.value),1),e.createElementVNode("span",Z1,e.toDisplayString(k.value),1)]),E.value?(e.openBlock(),e.createElementBlock("div",H1,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,W=>(e.openBlock(),e.createBlock(e.unref(G.IonIcon),{key:W.id||W.filterId,icon:V(W.filterId||W.id),title:`Filter: ${W.filterId||W.id}`},null,8,["icon","title"]))),128))])):e.createCommentVNode("",!0),y.clip.speed&&y.clip.speed!==1?(e.openBlock(),e.createElementBlock("div",G1,e.toDisplayString(y.clip.speed)+"x ",1)):e.createCommentVNode("",!0)]),y.selected&&y.canDelete?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"clip-delete-button","aria-label":`Delete ${y.clip.label||"clip"}`,"data-testid":`timeline-clip-delete-${y.clip.id}`,title:"Delete clip",onClick:A[4]||(A[4]=e.withModifiers(W=>o("delete"),["stop"])),onMousedown:A[5]||(A[5]=e.withModifiers(()=>{},["stop"])),onTouchstart:A[6]||(A[6]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Xr)},null,8,["icon"])],40,X1)):e.createCommentVNode("",!0),y.selected?(e.openBlock(),e.createElementBlock("div",K1)):e.createCommentVNode("",!0)],38))}}),Ju=Ie(ew,[["__scopeId","data-v-deeaa999"]]),tw={class:"timeline-track-header__meta"},aw=["data-testid"],nw=["data-testid","value","aria-label","onKeydown"],ow={class:"timeline-track-header__type"},iw=["aria-label"],rw=["aria-pressed","aria-label"],lw=["aria-pressed","aria-label"],sw=["aria-pressed","aria-label"],dw=["aria-pressed","aria-label"],uw={class:"timeline-track-header__menu-row"},cw=["data-testid","aria-label","aria-expanded"],mw=["aria-label"],pw=["data-testid"],fw=["data-testid"],vw=["data-testid"],hw=["data-testid"],gw=e.defineComponent({__name:"TimelineTrackHeader",props:{track:{}},emits:["toggle-lock","toggle-hidden","toggle-muted","toggle-solo","rename-track","delete-track","reorder-track"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(!1),r=e.ref(!1),l=e.ref(""),s=e.ref(null);function d(){i.value=!i.value}function u(){i.value=!1}function c(){u(),m()}async function m(){var E,w;l.value=t.track.name,r.value=!0,await e.nextTick(),(E=s.value)==null||E.focus(),(w=s.value)==null||w.select()}function p(E){const w=E.target;w&&(l.value=w.value)}function f(){if(!r.value)return;const E=l.value.trim();r.value=!1,!(E===""||E===t.track.name)&&o("rename-track",t.track.id,E)}function v(){r.value=!1}function h(E){u(),o("reorder-track",t.track.id,E)}function k(){u(),o("delete-track",t.track.id)}return(E,w)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["timeline-track-header",{"is-hidden":E.track.hidden===!0}])},[e.createElementVNode("div",tw,[r.value?(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"renameInput",ref:s,class:"timeline-track-header__rename-input","data-testid":`timeline-track-rename-${E.track.id}`,value:l.value,"aria-label":`Rename ${E.track.name}`,onInput:p,onKeydown:[e.withKeys(e.withModifiers(f,["prevent"]),["enter"]),e.withKeys(e.withModifiers(v,["prevent"]),["escape"])],onBlur:f},null,40,nw)):(e.openBlock(),e.createElementBlock("span",{key:0,class:"timeline-track-header__name","data-testid":`timeline-track-name-${E.track.id}`,onDblclick:m},e.toDisplayString(E.track.name),41,aw)),e.createElementVNode("span",ow,e.toDisplayString(E.track.type),1)]),e.createElementVNode("div",{class:"timeline-track-header__actions","aria-label":`Track controls for ${E.track.name}`},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["timeline-track-header__button",{"is-active":E.track.locked===!0}]),"aria-pressed":E.track.locked===!0,"aria-label":E.track.locked===!0?`Unlock ${E.track.name}`:`Lock ${E.track.name}`,title:"Lock",onClick:w[0]||(w[0]=b=>o("toggle-lock",E.track.id))}," Lock ",10,rw),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["timeline-track-header__button",{"is-active":E.track.hidden===!0}]),"aria-pressed":E.track.hidden===!0,"aria-label":E.track.hidden===!0?`Show ${E.track.name}`:`Hide ${E.track.name}`,title:"Hide",onClick:w[1]||(w[1]=b=>o("toggle-hidden",E.track.id))}," Hide ",10,lw),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["timeline-track-header__button",{"is-active":E.track.muted===!0}]),"aria-pressed":E.track.muted===!0,"aria-label":E.track.muted===!0?`Unmute ${E.track.name}`:`Mute ${E.track.name}`,title:"Mute",onClick:w[2]||(w[2]=b=>o("toggle-muted",E.track.id))}," Mute ",10,sw),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["timeline-track-header__button",{"is-active":E.track.solo===!0}]),"aria-pressed":E.track.solo===!0,"aria-label":E.track.solo===!0?`Disable solo for ${E.track.name}`:`Solo ${E.track.name}`,title:"Solo",onClick:w[3]||(w[3]=b=>o("toggle-solo",E.track.id))}," Solo ",10,dw)],8,iw),e.createElementVNode("div",uw,[e.createElementVNode("button",{type:"button",class:"timeline-track-header__menu-button","data-testid":`timeline-track-menu-${E.track.id}`,"aria-label":`More actions for ${E.track.name}`,"aria-expanded":i.value,"aria-haspopup":!0,onClick:d}," ⋯ ",8,cw),i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"timeline-track-header__menu",role:"menu","aria-label":`${E.track.name} actions`},[e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":`timeline-track-rename-action-${E.track.id}`,onClick:c}," Rename ",8,pw),e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":`timeline-track-move-up-${E.track.id}`,onClick:w[4]||(w[4]=b=>h("up"))}," Move up ",8,fw),e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":`timeline-track-move-down-${E.track.id}`,onClick:w[5]||(w[5]=b=>h("down"))}," Move down ",8,vw),e.createElementVNode("button",{type:"button",role:"menuitem",class:"timeline-track-header__menu-button--danger","data-testid":`timeline-track-delete-${E.track.id}`,onClick:k}," Delete track ",8,hw)],8,mw)):e.createCommentVNode("",!0)])],2))}}),bw=Ie(gw,[["__scopeId","data-v-54e2bc6a"]]);class ep{constructor(n=30){this.fps=30,this.fps=n}setFps(n){this.fps=n}async convertTimelineClipToEngine(n,t){const o=new Ps(t,{muted:n.muted||!1,scale:n.scale||1,position:"center"});if(n.sourceIn!==void 0||n.sourceOut!==void 0){const i=this.secondsToFrames(n.sourceIn||0),r=n.sourceOut?this.secondsToFrames(n.sourceOut):o.duration.frames;o.subclip(i,r)}return n.timelineStart&&n.timelineStart>0&&o.offsetBy(this.secondsToFrames(n.timelineStart)),n.transform&&this.applyTransformations(o,n.transform),o}convertEngineClipToTimeline(n,t,o){const i=this.framesToSeconds(n.duration.frames),r=n.offset?this.framesToSeconds(n.offset.frames):0;return{id:t,url:o,type:"video",timelineStart:r,timelineEnd:r+i,sourceIn:0,sourceOut:i,duration:i,muted:n.muted||!1,scale:n.scale.x||1}}async buildCompositionFromRecipe(n,t){var o;(o=t.clear)==null||o.call(t);for(const i of n.timeline)try{if(!i.url)continue;const r=await Mo.from(i.url),l=await this.convertTimelineClipToEngine(i,r);await t.add(l)}catch{}n.duration&&(t.duration=Ze.fromFrames(this.secondsToFrames(n.duration)))}extractTimelineFromComposition(n){const t=[];return(n.clips||[]).forEach((i,r)=>{var l,s;i instanceof Ps&&t.push(this.convertEngineClipToTimeline(i,`clip-${r}`,((l=i.source)==null?void 0:l.externalURL)||((s=i.source)==null?void 0:s.objectURL)||""))}),t}applyTransformations(n,t){(t.x!==void 0||t.y!==void 0)&&(n.x=t.x||0,n.y=t.y||0),t.rotation!==void 0&&(n.rotation=t.rotation),t.opacity!==void 0&&(n.alpha=t.opacity),t.scale!==void 0&&(n.scale={x:t.scale,y:t.scale})}secondsToFrames(n){return Math.round(n*this.fps)}framesToSeconds(n){return n/this.fps}framesToTime(n){const t=this.framesToSeconds(n),o=Math.floor(t/60),i=Math.floor(t%60),r=Math.floor(t%1*1e3);return`${o.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}.${r.toString().padStart(3,"0")}`}formatTime(n){const t=Math.floor(n/3600),o=Math.floor(n%3600/60),i=Math.floor(n%60);return`${t.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}parseTime(n){const t=n.split(":");let o=0;if(t.length===2){const[i,r]=t;o=parseInt(i)*60+parseFloat(r)}else if(t.length===3){const[i,r,l]=t;o=parseInt(i)*3600+parseInt(r)*60+parseFloat(l)}else o=parseFloat(n);return o}timeToFrames(n){const t=n.split(":");let o=0;if(t.length===2){const[i,r]=t;o=parseInt(i)*60+parseFloat(r)}else if(t.length===3){const[i,r,l]=t;o=parseInt(i)*3600+parseInt(r)*60+parseFloat(l)}else o=parseFloat(n);return this.secondsToFrames(o)}}const yw={class:"time-markers"},ww=["data-track-id"],kw=["data-track-id"],_w=["aria-label","title"],Ew={key:0,class:"timeline-scrollbar"},qu=152,Yu=80,Sw=e.defineComponent({__name:"VideoTimeline",props:{playhead:{},clips:{},tracks:{},duration:{},zoomLevel:{default:50},isMobile:{type:Boolean,default:!1},snapEnabled:{type:Boolean,default:!0},selectedClipId:{},fps:{default:30},useFrameMode:{type:Boolean,default:!1},sensitivity:{default:.25}},emits:["update:playhead","trim","split","clip-select","clip-delete","clip-move","clip-long-press","snap-state-change","toggle-frame-mode","toggle-lock","toggle-hidden","toggle-muted","toggle-solo","rename-track","delete-track","reorder-track"],setup(a,{expose:n,emit:t}){const o=a,i=e.computed(()=>o.isMobile===!0),r=t,l=e.ref(),s=e.ref(o.selectedClipId||null),d=e.ref(!1),u=e.ref(0),c=e.ref(),m=e.ref(0),p=e.computed(()=>o.selectedClipId??s.value);e.watch(()=>o.selectedClipId,ae=>{ae!==void 0&&(s.value=ae)});const f=new ep(o.fps);e.watch(()=>o.fps,ae=>{f.setFps(ae)});const v=e.ref(!1),h=e.ref(null),k=e.ref(0),E=e.ref(0),w=e.ref(null),b=e.ref(null),g=e.ref(0),D=e.ref(0),T=e.ref(0),F=e.ref(!1),V=e.ref(0),I=e.ref(o.zoomLevel),$=e.computed(()=>o.zoomLevel),C=e.computed(()=>o.tracks!==void 0&&o.tracks.length>0&&!i.value),M=e.computed(()=>C.value?qu:0),_=e.computed(()=>Math.max(0,H.value-M.value));function L(ae){return ae.trackId??`legacy-track-${ae.track??0}`}function j(ae,he){return{id:ae,type:"video",name:`Track ${he+1}`,order:he}}const B=e.computed(()=>{const ae=new Map;for(const he of o.clips){const me=L(he),ce=ae.get(me);if(ce){ce.push(he);continue}ae.set(me,[he])}return ae}),U=e.computed(()=>{if(!C.value)return[];const ae=[...o.tracks??[]].sort((ce,Te)=>ce.order-Te.order),he=new Set(ae.map(ce=>ce.id)),me=[];for(const ce of B.value.keys())he.has(ce)||me.push(j(ce,ae.length+me.length));return[...ae,...me].map(ce=>({track:ce,clips:B.value.get(ce.id)??[],height:ce.height??Yu}))}),S=e.computed(()=>new Set(U.value.filter(ae=>ae.track.locked===!0).map(ae=>ae.track.id)));function R(ae){const he=o.clips.find(me=>me.id===ae);return he?!S.value.has(L(he)):!1}function O(ae){const he=o.clips.find(Te=>Te.id===ae);if(!he)return null;const me=L(he),ce=o.clips.filter(Te=>Te.id!==ae&&L(Te)===me&&Te.timelineStart>=he.timelineEnd-1e-9).map(Te=>Te.timelineStart);return ce.length?Math.min(...ce):null}function K(ae){const he=ae.sourceMaxOut??o.duration,me=ae.timelineStart+(he-ae.sourceIn),ce=O(ae.id),Te=ce!=null?Math.max(ae.timelineStart,ce):1/0;return Math.min(me,Te)}function se(ae,he=Yu){const me=ae.sourceMinIn??0,Te=(ae.sourceMaxOut??o.duration)-me,We=ae.sourceIn-me;return{left:`${(ae.timelineStart-We)*$.value-u.value}px`,width:`${Te*$.value}px`,top:"0px",height:`${he}px`,opacity:p.value===ae.id?.25:.15}}const xe=e.computed(()=>o.useFrameMode?o.zoomLevel:o.zoomLevel/o.fps),ue=e.computed(()=>f.secondsToFrames(o.duration)),le=e.computed(()=>o.useFrameMode?ue.value*xe.value:o.duration*$.value),H=e.computed(()=>{var ae;return m.value||((ae=l.value)==null?void 0:ae.clientWidth)||800}),y=e.computed(()=>le.value>_.value),A=e.computed(()=>Math.max(0,le.value-_.value)),W=e.computed(()=>u.value>0),q=e.computed(()=>u.value<A.value),de=e.computed(()=>o.useFrameMode?f.secondsToFrames(o.playhead)*xe.value-u.value:o.playhead*$.value-u.value),Pe=e.computed(()=>w.value===null?null:o.useFrameMode?f.secondsToFrames(w.value)*xe.value-u.value:w.value*$.value-u.value),ge=e.computed(()=>{const ae=_.value,he=Math.max(50,ae/le.value*ae),me=u.value/A.value*(ae-he);return{width:`${he}px`,left:`${me}px`}}),ke=e.computed(()=>{const ae=[],he=be();for(let me=0;me<=o.duration;me+=he){const ce=me*$.value-u.value;ce>=-50&&ce<=_.value+50&&ae.push({position:ce+M.value,label:Ce(me),time:me})}return ae});function be(){const he=80/$.value;return he<=1?1:he<=5?5:he<=10?10:he<=30?30:he<=60?60:Math.ceil(he/60)*60}function Ce(ae){if(o.useFrameMode)return`F${f.secondsToFrames(ae)}`;{const he=Math.floor(ae/60),me=Math.floor(ae%60),ce=Math.floor(ae%1*o.fps);return $.value>100?`${he}:${me.toString().padStart(2,"0")}:${ce.toString().padStart(2,"0")}`:`${he}:${me.toString().padStart(2,"0")}`}}function Ee(ae){const he=l.value.getBoundingClientRect();let ce=(ae.clientX-he.left-M.value+u.value)/$.value;const Te=o.clips.find(We=>ce>=We.timelineStart&&ce<=We.timelineEnd);if(Te)ce=Math.max(Te.timelineStart,Math.min(Te.timelineEnd,ce));else if(o.selectedClipId){const We=o.clips.find(rt=>rt.id===o.selectedClipId);if(We){const rt=Math.abs(ce-We.timelineStart),Vt=Math.abs(ce-We.timelineEnd);ce=rt<Vt?We.timelineStart:We.timelineEnd}}else ce=Math.max(0,Math.min(ce,o.duration));r("update:playhead",ce)}function Ae(ae){if(!y.value)return;const he=Math.abs(ae.deltaX)>Math.abs(ae.deltaY)?ae.deltaX:ae.deltaY;he!==0&&(ae.preventDefault(),u.value=Math.max(0,Math.min(A.value,u.value+he)))}function Ue(ae){return[...ae===void 0?o.clips:o.clips.filter(me=>L(me)===ae)].sort((me,ce)=>me.timelineStart-ce.timelineStart)}function ot(ae){const he=o.clips.find(Te=>Te.id===ae),me=Ue(he?L(he):void 0),ce=me.findIndex(Te=>Te.id===ae);return{previous:ce>0?me[ce-1]:null,next:ce!==-1&&ce<me.length-1?me[ce+1]:null}}function it(ae){const he=ae.timelineEnd-ae.timelineStart,{previous:me,next:ce}=ot(ae.id),Te=me?me.timelineEnd:0,We=ce?ce.timelineStart-he:Math.max(ae.timelineStart,o.duration-he);return{minStart:Te,maxStart:Math.max(Te,We)}}function Lt(){return 12/Math.max($.value,1)}function gt(ae){return Array.from(new Set(ae.filter(he=>typeof he=="number"&&Number.isFinite(he))))}function St(ae,he,me,ce){const Te=Math.max(me,Math.min(ae,ce));if(!o.snapEnabled)return{value:Te,guideTime:null};const We=Lt();let rt=Te,Vt=null,Ut=Number.POSITIVE_INFINITY;for(const $t of gt(he)){if($t<me||$t>ce)continue;const lt=Math.abs($t-Te);lt<=We&&lt<Ut&&(rt=$t,Vt=$t,Ut=lt)}return{value:rt,guideTime:Vt}}function ct(ae){if(ae.touches.length===2){F.value=!0;const he=ae.touches[0],me=ae.touches[1];V.value=Math.hypot(me.clientX-he.clientX,me.clientY-he.clientY),I.value=o.zoomLevel}else ae.touches.length===1&&(g.value=ae.touches[0].clientX,D.value=ae.touches[0].clientY,T.value=g.value)}function mt(ae){if(F.value&&ae.touches.length===2){const he=ae.touches[0],me=ae.touches[1],Te=Math.hypot(me.clientX-he.clientX,me.clientY-he.clientY)/V.value;Math.max(10,Math.min(200,I.value*Te)),r("update:playhead",o.playhead)}else if(ae.touches.length===1&&!F.value){const he=ae.touches[0],me=T.value-he.clientX;Math.abs(me)>Math.abs(he.clientY-D.value)&&(ae.preventDefault(),u.value=Math.max(0,Math.min(A.value,u.value+me)),T.value=he.clientX)}}function Ct(){F.value=!1}function Se(ae){const he=ae.target;if(he.closest(".playhead-handle"))return;const me=ae.button===1,ce=!!he.closest(".video-track");(me||!ce&&y.value)&&Ve(ae)}function Ve(ae){v.value=!0,h.value="pan",k.value=ae.clientX,E.value=u.value,document.addEventListener("mousemove",He),document.addEventListener("mouseup",Je)}function Re(ae){ae.preventDefault(),ae.stopPropagation(),v.value=!0,h.value="playhead";const he="touches"in ae?ae.touches[0].clientX:ae.clientX;k.value=he,E.value=o.playhead,"touches"in ae?(document.addEventListener("touchmove",He),document.addEventListener("touchend",Je)):(document.addEventListener("mousemove",He),document.addEventListener("mouseup",Je))}function at(ae){ae.preventDefault(),ae.stopPropagation(),v.value=!0,h.value="scrollbar";const he="touches"in ae?ae.touches[0].clientX:ae.clientX;k.value=he,E.value=u.value,"touches"in ae?(document.addEventListener("touchmove",He),document.addEventListener("touchend",Je)):(document.addEventListener("mousemove",He),document.addEventListener("mouseup",Je))}function He(ae){if(!v.value)return;const me=("touches"in ae?ae.touches[0].clientX:ae.clientX)-k.value;if(h.value==="playhead"){const ce=me/$.value;let Te=E.value+ce;if(o.selectedClipId){const We=o.clips.find(rt=>rt.id===o.selectedClipId);We?Te=Math.max(We.timelineStart,Math.min(We.timelineEnd,Te)):Te=Math.max(0,Math.min(o.duration,Te))}else{const We=o.clips.find(rt=>o.playhead>=rt.timelineStart&&o.playhead<=rt.timelineEnd);We?Te=Math.max(We.timelineStart,Math.min(We.timelineEnd,Te)):Te=Math.max(0,Math.min(o.duration,Te))}r("update:playhead",Te)}else if(h.value==="scrollbar"){const ce=me/_.value*le.value;u.value=Math.max(0,Math.min(A.value,E.value+ce))}else if(h.value==="pan"){const ce=E.value-me;u.value=Math.max(0,Math.min(A.value,ce))}}function Je(){v.value=!1,h.value=null,w.value=null,b.value=null,document.removeEventListener("mousemove",He),document.removeEventListener("mouseup",Je),document.removeEventListener("touchmove",He),document.removeEventListener("touchend",Je)}function kt(ae){s.value=s.value===ae?null:ae,r("clip-select",s.value)}function ft(ae){R(ae)&&(s.value=ae,r("clip-select",ae),r("clip-long-press",ae))}function jt(ae){!R(ae)||o.clips.length<=1||(s.value=ae,r("clip-select",ae),r("clip-delete",ae))}function Le(ae,he){if(!R(ae))return;const me=o.clips.find(Te=>Te.id===ae);if(!me||Math.abs(he)<2)return;const ce=he/$.value*o.sensitivity;if(o.useFrameMode){const Te=f.secondsToFrames(me.sourceIn),We=f.secondsToFrames(ce),rt=Math.max(0,Te+We),Vt=f.framesToSeconds(rt);r("trim",ae,"start",Vt)}else{const Te=Math.max(0,me.sourceIn+ce);r("trim",ae,"start",Te)}}function Wt(ae,he){if(!R(ae))return;const me=o.clips.find(J=>J.id===ae);if(!me||!l.value)return;const ce=l.value.getBoundingClientRect(),Te=he-ce.left-M.value,We=80;Te<We?u.value=Math.max(0,u.value-8):Te>ce.width-M.value-We&&(u.value=Math.min(A.value,u.value+8));const rt=Te+u.value,Vt=1/o.fps;let Ut=rt/$.value;const{previous:$t}=ot(me.id),lt=St(Ut,[0,$t==null?void 0:$t.timelineEnd,o.playhead],0,me.timelineEnd-Vt);Ut=lt.value,w.value=lt.guideTime;let Jt=me.sourceIn+(Ut-me.timelineStart);Jt=Math.round(Jt*o.fps)/o.fps,r("trim",ae,"start",Jt)}function Zt(ae,he){if(!R(ae))return;const me=o.clips.find(we=>we.id===ae);if(!me||!l.value)return;const ce=l.value.getBoundingClientRect(),Te=he-ce.left-M.value,We=80;Te<We?u.value=Math.max(0,u.value-8):Te>ce.width-M.value-We&&(u.value=Math.min(A.value,u.value+8));const rt=Te+u.value,Vt=1/o.fps,Ut=K(me);let $t=rt/$.value;const{next:lt}=ot(me.id),Jt=St($t,[lt==null?void 0:lt.timelineStart,o.playhead],me.timelineStart+Vt,Ut);$t=Jt.value,w.value=Jt.guideTime;let J=me.sourceIn+($t-me.timelineStart);J=Math.round(J*o.fps)/o.fps,r("trim",ae,"end",J)}function Mt(ae){var me;if(!C.value||!l.value)return null;const he=Array.from(l.value.querySelectorAll(".timeline-track-lane__body"));for(const ce of he){const Te=ce.getBoundingClientRect();if(ae>=Te.top&&ae<=Te.bottom){const We=ce.getAttribute("data-track-id");if(!We)continue;return((me=o.tracks)==null?void 0:me.find(Vt=>Vt.id===We))??null}}return null}function Pt(ae,he,me){if(!R(ae))return;const ce=o.clips.find(we=>we.id===ae);if(!ce||!l.value)return;const Te=l.value.getBoundingClientRect(),We=he-Te.left-M.value,rt=80;We<rt?u.value=Math.max(0,u.value-8):We>Te.width-M.value-rt&&(u.value=Math.min(A.value,u.value+8));const Vt=We+u.value,Ut=ce.timelineEnd-ce.timelineStart,$t=it(ce);let lt=Vt/$.value;const Jt=St(lt,[$t.minStart,$t.maxStart,o.playhead,o.playhead-Ut],$t.minStart,$t.maxStart);lt=Jt.value,w.value=Jt.guideTime,lt=Math.round(lt*o.fps)/o.fps;let J;if(typeof me=="number"){const we=Mt(me);b.value=(we==null?void 0:we.id)??null,we&&we.id!==(ce.trackId??null)&&we.locked!==!0&&(J=we.id)}J!==void 0?r("clip-move",ae,lt,J):r("clip-move",ae,lt)}function Ht(ae,he){if(!R(ae))return;const me=o.clips.find(We=>We.id===ae);if(!me||Math.abs(he)<2)return;const ce=he/$.value*o.sensitivity,Te=We=>Math.max(0,Math.round(We*o.fps)/o.fps);if(o.useFrameMode){const We=f.secondsToFrames(me.sourceOut),rt=f.secondsToFrames(ce),Vt=K(me),Ut=me.sourceIn+(Vt-me.timelineStart),$t=f.secondsToFrames(Ut),lt=Math.min($t,We+rt),Jt=f.framesToSeconds(lt);r("trim",ae,"end",Jt)}else{const We=K(me),rt=me.sourceIn+(We-me.timelineStart),Vt=Math.min(rt,me.sourceOut+ce),Ut=Te(Vt);r("trim",ae,"end",Ut)}}function ra(ae,he){if(!R(ae))return;const me=o.clips.find(We=>We.id===ae);if(!me||Math.abs(he)<2)return;const ce=he/$.value*o.sensitivity,Te=We=>Math.max(0,Math.round(We*o.fps)/o.fps);if(o.useFrameMode){const We=f.secondsToFrames(me.timelineStart),rt=f.secondsToFrames(ce),Vt=Math.max(0,We+rt),Ut=f.framesToSeconds(Vt);r("clip-move",ae,Ut)}else{const We=Math.max(0,me.timelineStart+ce),rt=Te(We);r("clip-move",ae,rt)}}return n({handleTrimStart:Le,handleTrimEnd:Ht,handleClipDrag:ra,handleTrimStartAbs:Wt,handleTrimEndAbs:Zt,handleClipDragAbs:Pt,handleClipLongPress:ft}),e.watch(()=>o.playhead,ae=>{const he=ae*$.value;he<u.value+50?u.value=Math.max(0,he-50):he>u.value+_.value-50&&(u.value=Math.min(A.value,he-_.value+50))}),e.onMounted(()=>{const ae=new ResizeObserver(he=>{he[0]&&(m.value=Math.round(he[0].contentRect.width))});l.value&&ae.observe(l.value),e.onUnmounted(()=>ae.disconnect())}),e.onUnmounted(()=>{Je()}),e.watch([le,H],()=>{u.value>A.value&&(u.value=A.value)}),e.watch(w,(ae,he)=>{const me=ae!==null;me!==(he!==null)&&r("snap-state-change",me)}),(ae,he)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-timeline",{mobile:i.value}]),ref_key:"timelineRef",ref:l,onWheel:Ae},[e.createElementVNode("div",{class:"timeline-ruler",onClick:Ee},[e.createElementVNode("div",yw,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ke.value,me=>(e.openBlock(),e.createElementBlock("span",{key:me.position,class:"time-marker",style:e.normalizeStyle({left:`${me.position}px`})},e.toDisplayString(me.label),5))),128))])]),e.createElementVNode("div",{class:e.normalizeClass(["timeline-content",{"is-pannable":y.value,"is-panning":v.value&&h.value==="pan","overflow-left":W.value,"overflow-right":q.value}]),onTouchstart:ct,onTouchmove:mt,onTouchend:Ct,onMousedown:Se},[C.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"timeline-track-lanes",style:e.normalizeStyle({"--timeline-track-header-width":`${qu}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(U.value,me=>(e.openBlock(),e.createElementBlock("div",{key:me.track.id,class:e.normalizeClass(["timeline-track-lane",{"timeline-track-lane--locked":me.track.locked,"timeline-track-lane--hidden":me.track.hidden,"timeline-track-lane--drop-target":b.value===me.track.id&&me.track.locked!==!0,"timeline-track-lane--drop-rejected":b.value===me.track.id&&me.track.locked===!0}]),style:e.normalizeStyle({height:`${me.height}px`}),"data-track-id":me.track.id},[e.createVNode(bw,{class:"timeline-track-lane__header",track:me.track,onToggleLock:he[0]||(he[0]=ce=>r("toggle-lock",ce)),onToggleHidden:he[1]||(he[1]=ce=>r("toggle-hidden",ce)),onToggleMuted:he[2]||(he[2]=ce=>r("toggle-muted",ce)),onToggleSolo:he[3]||(he[3]=ce=>r("toggle-solo",ce)),onRenameTrack:he[4]||(he[4]=(ce,Te)=>r("rename-track",ce,Te)),onDeleteTrack:he[5]||(he[5]=ce=>r("delete-track",ce)),onReorderTrack:he[6]||(he[6]=(ce,Te)=>r("reorder-track",ce,Te))},null,8,["track"]),e.createElementVNode("div",{class:"video-track timeline-track-lane__body","data-track-id":me.track.id},[me.track.hidden?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(me.clips,ce=>(e.openBlock(),e.createElementBlock("div",{key:`${ce.id}-extent`,class:"clip-extent",style:e.normalizeStyle(se(ce,me.height)),"aria-hidden":"true"},null,4))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(me.clips,ce=>(e.openBlock(),e.createBlock(Ju,{key:ce.id,clip:ce,scale:$.value,"scroll-offset":u.value,selected:p.value===ce.id,"is-mobile":i.value,"can-delete":o.clips.length>1&&R(ce.id),"data-locked":me.track.locked===!0?"true":void 0,onSelect:Te=>kt(ce.id),onDelete:Te=>jt(ce.id),onLongPress:Te=>ft(ce.id),onTrimStartAbs:Te=>Wt(ce.id,Te),onTrimEndAbs:Te=>Zt(ce.id,Te),onDragAbs:(Te,We)=>Pt(ce.id,Te,We)},null,8,["clip","scale","scroll-offset","selected","is-mobile","can-delete","data-locked","onSelect","onDelete","onLongPress","onTrimStartAbs","onTrimEndAbs","onDragAbs"]))),128))],64))],8,kw)],14,ww))),128))],4)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"video-track",ref_key:"trackRef",ref:c},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ae.clips,me=>(e.openBlock(),e.createElementBlock("div",{key:`${me.id}-extent`,class:"clip-extent",style:e.normalizeStyle(se(me)),"aria-hidden":"true"},null,4))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ae.clips,me=>(e.openBlock(),e.createBlock(Ju,{key:me.id,clip:me,scale:$.value,"scroll-offset":u.value,selected:p.value===me.id,"is-mobile":i.value,"can-delete":o.clips.length>1&&R(me.id),onSelect:ce=>kt(me.id),onDelete:ce=>jt(me.id),onLongPress:ce=>ft(me.id),onTrimStartAbs:ce=>Wt(me.id,ce),onTrimEndAbs:ce=>Zt(me.id,ce),onDragAbs:(ce,Te)=>Pt(me.id,ce,Te)},null,8,["clip","scale","scroll-offset","selected","is-mobile","can-delete","onSelect","onDelete","onLongPress","onTrimStartAbs","onTrimEndAbs","onDragAbs"]))),128))],512)),e.createElementVNode("div",{class:"playhead",style:e.normalizeStyle({left:`${M.value+de.value}px`}),onMousedown:Re,onTouchstart:Re},[...he[8]||(he[8]=[e.createElementVNode("div",{class:"playhead-handle"},[e.createElementVNode("div",{class:"playhead-line"})],-1)])],36),d.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"split-indicator",style:e.normalizeStyle({left:`${M.value+de.value}px`})},null,4)):e.createCommentVNode("",!0),Pe.value!==null?(e.openBlock(),e.createElementBlock("div",{key:3,class:"snap-guide",style:e.normalizeStyle({left:`${M.value+Pe.value}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),i.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:4,class:"frame-mode-toggle",onClick:he[7]||(he[7]=me=>ae.$emit("toggle-frame-mode")),"aria-label":ae.useFrameMode?"Switch to time mode":"Switch to frame mode",title:ae.useFrameMode?"Switch to time mode":"Switch to frame mode"},e.toDisplayString(ae.useFrameMode?"F":"T"),9,_w))],34),y.value?(e.openBlock(),e.createElementBlock("div",Ew,[e.createElementVNode("div",{class:"scrollbar-thumb",style:e.normalizeStyle(ge.value),onMousedown:at,onTouchstart:at},null,36)])):e.createCommentVNode("",!0)],34))}}),js=Ie(Sw,[["__scopeId","data-v-2484f443"]]),xw={key:0,class:"control-group primary-controls"},Cw=["disabled"],Vw=["disabled"],Nw=["disabled"],Tw=["disabled"],Bw=["disabled"],Mw=["disabled"],$w={key:1,class:"control-group mobile-action-controls"},Iw=["aria-expanded"],Dw={key:0,class:"mobile-action-menu",role:"menu","aria-label":"Clip actions","data-testid":"timeline-mobile-action-menu"},Fw=["disabled"],Aw=["disabled"],Rw=["disabled"],Lw=["disabled"],Pw=["disabled"],Uw=["disabled"],Ow={class:"control-group zoom-controls"},zw={class:"zoom-slider"},jw=["value"],Ww={class:"control-group playback-controls"},Zw=["aria-label"],Hw={key:2,class:"control-group speed-control"},Gw=["value"],Xw=e.defineComponent({__name:"TimelineControls",props:{selectedClip:{},canSplit:{type:Boolean,default:!1},canDelete:{type:Boolean,default:!1},canAddTrack:{type:Boolean,default:!0},showAddTrack:{type:Boolean,default:!1},canUndo:{type:Boolean,default:!1},canRedo:{type:Boolean,default:!1},isPlaying:{type:Boolean,default:!1},zoomLevel:{default:50},playbackSpeed:{default:1},isMobile:{type:Boolean,default:!1}},emits:["split","delete","duplicate","add-track","undo","redo","zoom-in","zoom-out","zoom-change","fit-to-window","play-pause","frame-forward","frame-backward","skip-to-start","skip-to-end","speed-change"],setup(a,{emit:n}){const t=n,o=e.ref(!1);function i(p){switch(p){case"split":t("split");break;case"delete":t("delete");break;case"duplicate":t("duplicate");break;case"add-track":t("add-track");break;case"undo":t("undo");break;case"redo":t("redo");break}o.value=!1}function r(p){const f=p.target;t("zoom-change",Number(f.value))}function l(){t("fit-to-window")}function s(){t("frame-forward")}function d(){t("frame-backward")}function u(){t("skip-to-start")}function c(){t("skip-to-end")}function m(p){const f=p.target;t("speed-change",Number(f.value))}return(p,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["timeline-controls",{mobile:p.isMobile}])},[p.isMobile?(e.openBlock(),e.createElementBlock("div",$w,[e.createElementVNode("button",{class:"control-button","data-testid":"timeline-btn-mobile-actions","aria-expanded":o.value?"true":"false","aria-label":"Clip actions",onClick:f[6]||(f[6]=v=>o.value=!o.value)},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Ih)},null,8,["icon"]),f[20]||(f[20]=e.createElementVNode("span",{class:"control-label"},"Actions",-1))],8,Iw),o.value?(e.openBlock(),e.createElementBlock("div",Dw,[p.showAddTrack?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",role:"menuitem",disabled:!p.canAddTrack,"data-testid":"timeline-mobile-btn-add-track",onClick:f[7]||(f[7]=v=>i("add-track"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Dr)},null,8,["icon"]),f[21]||(f[21]=e.createTextVNode(" Add Track ",-1))],8,Fw)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",role:"menuitem",disabled:!p.canUndo,"data-testid":"timeline-mobile-btn-undo",onClick:f[8]||(f[8]=v=>i("undo"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(_u)},null,8,["icon"]),f[22]||(f[22]=e.createTextVNode(" Undo ",-1))],8,Aw),e.createElementVNode("button",{type:"button",role:"menuitem",disabled:!p.canRedo,"data-testid":"timeline-mobile-btn-redo",onClick:f[9]||(f[9]=v=>i("redo"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(ku)},null,8,["icon"]),f[23]||(f[23]=e.createTextVNode(" Redo ",-1))],8,Rw),e.createElementVNode("button",{type:"button",role:"menuitem",disabled:!p.canSplit,"data-testid":"timeline-mobile-btn-split",onClick:f[10]||(f[10]=v=>i("split"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Gr)},null,8,["icon"]),f[24]||(f[24]=e.createTextVNode(" Split ",-1))],8,Lw),e.createElementVNode("button",{type:"button",role:"menuitem",disabled:!p.selectedClip,"data-testid":"timeline-mobile-btn-duplicate",onClick:f[11]||(f[11]=v=>i("duplicate"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(xs)},null,8,["icon"]),f[25]||(f[25]=e.createTextVNode(" Duplicate ",-1))],8,Pw),e.createElementVNode("button",{type:"button",role:"menuitem",class:"danger-menu-item",disabled:!p.canDelete,"data-testid":"timeline-mobile-btn-delete",onClick:f[12]||(f[12]=v=>i("delete"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Xr)},null,8,["icon"]),f[26]||(f[26]=e.createTextVNode(" Delete ",-1))],8,Uw)])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",xw,[p.showAddTrack?(e.openBlock(),e.createElementBlock("button",{key:0,class:"control-button",disabled:!p.canAddTrack,"data-testid":"timeline-btn-add-track","aria-label":"Add video track",title:"Add Track",onClick:f[0]||(f[0]=v=>p.$emit("add-track"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Dr)},null,8,["icon"]),f[16]||(f[16]=e.createElementVNode("span",{class:"control-label"},"Add Track",-1))],8,Cw)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"control-button",disabled:!p.canUndo,"data-testid":"timeline-btn-undo","aria-label":"Undo",title:"Undo",onClick:f[1]||(f[1]=v=>p.$emit("undo"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(_u)},null,8,["icon"])],8,Vw),e.createElementVNode("button",{class:"control-button",disabled:!p.canRedo,"data-testid":"timeline-btn-redo","aria-label":"Redo",title:"Redo",onClick:f[2]||(f[2]=v=>p.$emit("redo"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(ku)},null,8,["icon"])],8,Nw),e.createElementVNode("button",{class:"control-button",disabled:!p.canSplit,"data-testid":"timeline-btn-split","aria-label":"Split selected clip at playhead",title:"Split",onClick:f[3]||(f[3]=v=>p.$emit("split"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Gr)},null,8,["icon"]),f[17]||(f[17]=e.createElementVNode("span",{class:"control-label"},"Split",-1))],8,Tw),e.createElementVNode("button",{class:"control-button",disabled:!p.selectedClip,"data-testid":"timeline-btn-duplicate","aria-label":"Duplicate selected clip",title:"Duplicate",onClick:f[4]||(f[4]=v=>p.$emit("duplicate"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(xs)},null,8,["icon"]),f[18]||(f[18]=e.createElementVNode("span",{class:"control-label"},"Duplicate",-1))],8,Bw),e.createElementVNode("button",{class:"control-button danger-button",disabled:!p.canDelete,"data-testid":"timeline-btn-delete","aria-label":"Delete selected clip",title:"Delete",onClick:f[5]||(f[5]=v=>p.$emit("delete"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Xr)},null,8,["icon"]),f[19]||(f[19]=e.createElementVNode("span",{class:"control-label"},"Delete",-1))],8,Mw)])),e.createElementVNode("div",Ow,[e.createElementVNode("button",{class:"control-button zoom-button",onClick:f[13]||(f[13]=v=>p.$emit("zoom-out")),"aria-label":"Zoom out"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(qh)},null,8,["icon"])]),e.createElementVNode("div",zw,[e.createElementVNode("input",{type:"range",value:p.zoomLevel,onInput:r,min:"10",max:"200",step:"5","aria-label":"Timeline zoom"},null,40,jw)]),e.createElementVNode("button",{class:"control-button zoom-button",onClick:f[14]||(f[14]=v=>p.$emit("zoom-in")),"aria-label":"Zoom in"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Dr)},null,8,["icon"])]),e.createElementVNode("button",{class:"control-button",onClick:l,"aria-label":"Fit timeline to window"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Fh)},null,8,["icon"]),f[27]||(f[27]=e.createElementVNode("span",{class:"control-label"},"Fit",-1))])]),e.createElementVNode("div",Ww,[e.createElementVNode("button",{class:"control-button",onClick:u,"aria-label":"Skip to start"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Kh)},null,8,["icon"])]),e.createElementVNode("button",{class:"control-button",onClick:d,"aria-label":"Previous frame"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Zh)},null,8,["icon"])]),e.createElementVNode("button",{class:"control-button play-button",onClick:f[15]||(f[15]=v=>p.$emit("play-pause")),"aria-label":p.isPlaying?"Pause":"Play"},[e.createVNode(e.unref(G.IonIcon),{icon:p.isPlaying?e.unref(hd):e.unref(gd)},null,8,["icon"])],8,Zw),e.createElementVNode("button",{class:"control-button",onClick:s,"aria-label":"Next frame"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Xh)},null,8,["icon"])]),e.createElementVNode("button",{class:"control-button",onClick:c,"aria-label":"Skip to end"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Jh)},null,8,["icon"])])]),p.isMobile?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Hw,[f[29]||(f[29]=e.createElementVNode("label",{class:"speed-label"},"Speed:",-1)),e.createElementVNode("select",{value:p.playbackSpeed,onChange:m,class:"speed-select","aria-label":"Playback speed"},[...f[28]||(f[28]=[e.createStaticVNode('<option value="0.25" data-v-c7b0395a>0.25x</option><option value="0.5" data-v-c7b0395a>0.5x</option><option value="1" data-v-c7b0395a>1x</option><option value="1.5" data-v-c7b0395a>1.5x</option><option value="2" data-v-c7b0395a>2x</option>',5)])],40,Gw)]))],2))}}),Ws=Ie(Xw,[["__scopeId","data-v-c7b0395a"]]),Kw={key:0,class:"category-section"},Jw={class:"category-carousel-wrapper"},qw=["disabled"],Yw=["onClick","data-testid","aria-label"],Qw={class:"category-name"},ek=["disabled"],tk={class:"filter-section"},ak={class:"filter-carousel-wrapper"},nk=["disabled"],ok=["onClick","onKeydown","data-testid","aria-label"],ik=["onClick"],rk={class:"filter-preview"},lk={class:"filter-placeholder"},sk={class:"filter-name"},dk=["disabled"],uk={class:"carousel-pagination"},ck=["onClick"],mk={key:1,class:"filter-adjustments"},pk={class:"adjustment-header"},fk={class:"adjustment-actions"},vk={key:0},hk={key:0,class:"slider-control"},gk={class:"control-label"},bk={class:"slider-wrapper"},yk={class:"slider-value"},wk={key:1,class:"color-control"},kk={class:"control-label"},_k={class:"color-wrapper"},Ek=["value","onInput","disabled"],Sk={class:"color-value"},xk={key:2,class:"toggle-control"},Ck={class:"control-label"},Vk={key:3,class:"select-control"},Nk={class:"control-label"},Tk=["value","onChange","disabled"],Bk=["value"],Mk={key:1,class:"no-params"},$k=e.defineComponent({__name:"VideoFilterCarousel",props:{filters:{},activeFilters:{},thumbnailUrl:{},showCategories:{type:Boolean,default:!0},compact:{type:Boolean,default:!1}},emits:["apply-filter","remove-filter","update-param","preview-filter"],setup(a,{emit:n}){const t=a,o=n,i=e.ref("all"),r=e.ref(null),l=e.ref(0),s=e.ref(0),d=e.ref(new Map),u=e.ref(),c=e.ref(),m={all:ao,adjust:_i,color:no,blur:br,light:Ei,effects:es,stylize:Mi,advanced:ao,distortion:$i,transform:$i};function p(S){return S.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function f(S){return S.replace(/[-_]/g," ").replace(/\b\w/g,R=>R.toUpperCase())}function v(S){return m[S.toLowerCase()]??ao}const h=e.computed(()=>{const S=Array.from(new Set(t.filters.map(R=>R.category).filter(R=>typeof R=="string"&&R.length>0))).sort((R,O)=>R.localeCompare(O));return[{id:"all",name:"All",icon:ao},...S.map(R=>({id:R,name:f(R),icon:v(R)}))]}),k=e.computed(()=>i.value==="all"?t.filters:t.filters.filter(S=>S.category===i.value));e.watch(h,S=>{new Set(S.map(K=>K.id)).has(i.value)||(i.value="all");const O=Math.max(0,S.length-3);l.value>O&&(l.value=O)},{immediate:!0});function E(S){var R;return((R=t.activeFilters)==null?void 0:R.has(S))||!1}function w(S){if(r.value=S,!E(S.id)&&(o("apply-filter",S),S.params&&S.params.length>0)){const R=new Map;S.params.forEach(O=>{R.set(O.id,O.default)}),d.value.set(S.id,R)}o("preview-filter",S)}function b(S){var R;o("remove-filter",S),d.value.delete(S),((R=r.value)==null?void 0:R.id)===S&&(r.value=null)}function g(S){if(typeof S=="number"&&Number.isFinite(S))return S;if(typeof S=="string"){const R=Number(S);return Number.isFinite(R)?R:null}return null}function D(S,R){var H;const O=t.filters.find(y=>y.id===S),K=O==null?void 0:O.params.find(y=>y.id===R),se=(K==null?void 0:K.default)??0,xe=y=>typeof se=="number"?g(y)??se:typeof se=="boolean"?typeof y=="boolean"?y:se:typeof y=="string"?y:se,ue=(H=t.activeFilters)==null?void 0:H.get(S);if(ue&&ue.params){const y=ue.params[R];if(y!=null)return xe(y)}const le=d.value.get(S);if(le){const y=le.get(R);if(y!=null)return xe(y)}return se}function T(S,R,O){var K;d.value.has(S)||d.value.set(S,new Map),(K=d.value.get(S))==null||K.set(R,O),o("update-param",S,R,O)}function F(S){if(typeof S=="boolean")return S?"On":"Off";if(typeof S=="string"){const O=g(S);return O===null?"0":Number.isInteger(O)?O.toString():O.toFixed(2)}const R=g(S);return R===null?"0":Number.isInteger(R)?R.toString():R.toFixed(2)}function V(){if(r.value&&(o("apply-filter",r.value),r.value.params&&r.value.params.length>0)){const S=new Map;r.value.params.forEach(R=>{S.set(R.id,R.default)}),d.value.set(r.value.id,S)}}function I(S){const R=t.filters.find(O=>O.id===S);R&&R.params&&R.params.forEach(O=>{T(S,O.id,O.default)})}function $(S){return{basic:_i,color:no,blur:br,light:Ei,effects:es,stylize:Mi,adjustment:_i,"color-matrix":no,glow:ao,distortion:$i}[S]||ao}function C(S){return{adjustment:_i,brightness:Ei,contrast:_i,saturation:no,blur:br,"gaussian-blur":br,"color-matrix":no,grayscale:Mi,sepia:Mi,vignette:$i,glow:ao,glitch:es,godray:Ei,lightmap:Ei}[S.id]||$(S.category)}function M(){l.value>0&&(l.value--,U(u.value,l.value))}function _(){l.value<h.value.length-3&&(l.value++,U(u.value,l.value))}function L(){s.value>0&&(s.value--,U(c.value,s.value))}function j(){s.value<k.value.length-4&&(s.value++,U(c.value,s.value))}function B(S){s.value=S*4,U(c.value,s.value)}function U(S,R){var O;if(S){const K=((O=S.querySelector(".category-chip, .filter-card"))==null?void 0:O.clientWidth)||100;S.scrollTo({left:R*(K+8),behavior:"smooth"})}}return(S,R)=>{var O;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-filter-carousel-container",{compact:S.compact}])},[S.showCategories?(e.openBlock(),e.createElementBlock("div",Kw,[e.createElementVNode("div",Jw,[e.createElementVNode("button",{onClick:M,class:"carousel-nav carousel-nav-left",disabled:l.value===0,"aria-label":"Previous categories","data-testid":"btn-filter-category-prev"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Eu)},null,8,["icon"])],8,qw),e.createElementVNode("div",{ref_key:"categoryCarouselRef",ref:u,class:"category-carousel"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,K=>(e.openBlock(),e.createElementBlock("button",{key:K.id,onClick:se=>i.value=K.id,class:e.normalizeClass(["category-chip",{active:i.value===K.id}]),"data-testid":`btn-filter-category-${p(K.id)}`,"aria-label":`Filter category ${K.name}`},[e.createVNode(e.unref(G.IonIcon),{icon:K.icon,class:"category-icon"},null,8,["icon"]),e.createElementVNode("span",Qw,e.toDisplayString(K.name),1)],10,Yw))),128))],512),e.createElementVNode("button",{onClick:_,class:"carousel-nav carousel-nav-right",disabled:l.value>=h.value.length-3,"aria-label":"Next categories","data-testid":"btn-filter-category-next"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Su)},null,8,["icon"])],8,ek)])])):e.createCommentVNode("",!0),e.createElementVNode("div",tk,[e.createElementVNode("div",ak,[e.createElementVNode("button",{onClick:L,class:"carousel-nav carousel-nav-left",disabled:s.value===0,"aria-label":"Previous filters","data-testid":"btn-filter-carousel-prev"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Eu)},null,8,["icon"])],8,nk),e.createElementVNode("div",{ref_key:"filterCarouselRef",ref:c,class:"filter-carousel"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,K=>{var se;return e.openBlock(),e.createElementBlock("div",{key:K.id,class:e.normalizeClass(["filter-card",{active:E(K.id),selected:((se=r.value)==null?void 0:se.id)===K.id}]),onClick:xe=>w(K),onKeydown:[e.withKeys(xe=>w(K),["enter"]),e.withKeys(e.withModifiers(xe=>w(K),["prevent"]),["space"])],role:"button",tabindex:"0","data-testid":`btn-video-filter-${p(K.id)}`,"aria-label":`Select filter ${K.name}`},[E(K.id)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-checkmark",onClick:e.withModifiers(xe=>b(K.id),["stop"])},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(hm)},null,8,["icon"])],8,ik)):e.createCommentVNode("",!0),e.createElementVNode("div",rk,[e.createElementVNode("div",lk,[e.createVNode(e.unref(G.IonIcon),{icon:C(K),class:"filter-icon"},null,8,["icon"])])]),e.createElementVNode("span",sk,e.toDisplayString(K.name),1)],42,ok)}),128))],512),e.createElementVNode("button",{onClick:j,class:"carousel-nav carousel-nav-right",disabled:s.value>=Math.max(0,k.value.length-4),"aria-label":"Next filters","data-testid":"btn-filter-carousel-next"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Su)},null,8,["icon"])],8,dk)]),e.createElementVNode("div",uk,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Math.ceil(k.value.length/4),(K,se)=>(e.openBlock(),e.createElementBlock("span",{key:se,class:e.normalizeClass(["pagination-dot",{active:Math.floor(s.value/4)===se}]),onClick:xe=>B(se)},null,10,ck))),128))])]),r.value?(e.openBlock(),e.createElementBlock("div",mk,[e.createElementVNode("div",pk,[e.createElementVNode("h4",null,e.toDisplayString(r.value.name),1),e.createElementVNode("div",fk,[E(r.value.id)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,onClick:V,class:"apply-btn","data-testid":"btn-apply-selected-filter"}," Apply Filter ")),E(r.value.id)?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:R[0]||(R[0]=K=>b(r.value.id)),class:"remove-btn","data-testid":"btn-remove-selected-filter"}," Remove Filter ")):e.createCommentVNode("",!0),E(r.value.id)&&((O=r.value.params)==null?void 0:O.length)>0?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:R[1]||(R[1]=K=>I(r.value.id)),class:"reset-btn","data-testid":"btn-reset-selected-filter"}," Reset ")):e.createCommentVNode("",!0)])]),r.value.params&&r.value.params.length>0?(e.openBlock(),e.createElementBlock("div",vk,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value.params,K=>(e.openBlock(),e.createElementBlock("div",{key:K.id,class:"adjustment-control"},[!K.type||K.type==="slider"?(e.openBlock(),e.createElementBlock("div",hk,[e.createElementVNode("label",gk,e.toDisplayString(K.label||K.id),1),e.createElementVNode("div",bk,[e.createVNode(e.unref(G.IonRange),{value:D(r.value.id,K.id),onIonChange:se=>T(r.value.id,K.id,se.detail.value),min:K.min,max:K.max,step:K.step||.01,color:"primary",class:"compact-slider",disabled:!E(r.value.id),"data-testid":`range-filter-${p(r.value.id)}-${p(K.id)}`,"aria-label":`Adjust ${K.label||K.id} for ${r.value.name}`},null,8,["value","onIonChange","min","max","step","disabled","data-testid","aria-label"]),e.createElementVNode("span",yk,e.toDisplayString(F(D(r.value.id,K.id))),1)])])):K.type==="color"?(e.openBlock(),e.createElementBlock("div",wk,[e.createElementVNode("label",kk,e.toDisplayString(K.label||K.id),1),e.createElementVNode("div",_k,[e.createElementVNode("input",{type:"color",value:D(r.value.id,K.id),onInput:se=>T(r.value.id,K.id,se.target.value),disabled:!E(r.value.id),class:"color-input"},null,40,Ek),e.createElementVNode("span",Sk,e.toDisplayString(D(r.value.id,K.id)),1)])])):K.type==="toggle"?(e.openBlock(),e.createElementBlock("div",xk,[e.createElementVNode("label",Ck,e.toDisplayString(K.label||K.id),1),e.createVNode(e.unref(G.IonToggle),{checked:!!D(r.value.id,K.id),onIonChange:se=>T(r.value.id,K.id,se.detail.checked),disabled:!E(r.value.id),color:"primary"},null,8,["checked","onIonChange","disabled"])])):K.type==="select"?(e.openBlock(),e.createElementBlock("div",Vk,[e.createElementVNode("label",Nk,e.toDisplayString(K.label||K.id),1),e.createElementVNode("select",{value:D(r.value.id,K.id),onChange:se=>T(r.value.id,K.id,se.target.value),disabled:!E(r.value.id),class:"select-input"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(K.options,se=>(e.openBlock(),e.createElementBlock("option",{key:String(se.value),value:se.value},e.toDisplayString(se.label),9,Bk))),128))],40,Tk)])):e.createCommentVNode("",!0)]))),128))])):(e.openBlock(),e.createElementBlock("div",Mk," This filter has no adjustable parameters "))])):e.createCommentVNode("",!0)],2)}}}),Zs=Ie($k,[["__scopeId","data-v-9efd15d9"]]);class Ik{constructor(n){this.pixiFilters=new Map,this.filterParams=new Map,this.filterTypes=new Map,this.filterIntensity=new Map,this.composition=n}setComposition(n){this.composition=n}mapMediablesToPIXI(n){switch(n.filterId){case"blur":return this.createBlurFilter(n.params);case"brightness":return this.createBrightnessFilter(n.params);case"contrast":return this.createContrastFilter(n.params);case"saturation":return this.createSaturationFilter(n.params);case"hue":return this.createHueFilter(n.params);case"vintage":return this.createVintageFilter(n.params);case"grayscale":return this.createGrayscaleFilter();case"sepia":return this.createSepiaFilter();default:return null}}createBlurFilter(n){var t,o;try{const i=(o=(t=window.PIXI)==null?void 0:t.filters)==null?void 0:o.BlurFilter;if(!i)return null;const r=new i;return r.blur=n.intensity||5,r.quality=n.quality||4,r}catch{return null}}createBrightnessFilter(n){var t,o;try{const i=(o=(t=window.PIXI)==null?void 0:t.filters)==null?void 0:o.ColorMatrixFilter;if(!i)return null;const r=new i;return r.brightness(n.value||1,!1),r}catch{return null}}createContrastFilter(n){var t,o;try{const i=(o=(t=window.PIXI)==null?void 0:t.filters)==null?void 0:o.ColorMatrixFilter;if(!i)return null;const r=new i;return r.contrast(n.value||1,!1),r}catch{return null}}createSaturationFilter(n){var t,o;try{const i=(o=(t=window.PIXI)==null?void 0:t.filters)==null?void 0:o.ColorMatrixFilter;if(!i)return null;const r=new i;return r.saturate(n.value||1,!1),r}catch{return null}}createHueFilter(n){var t,o;try{const i=(o=(t=window.PIXI)==null?void 0:t.filters)==null?void 0:o.ColorMatrixFilter;if(!i)return null;const r=new i;return r.hue(n.rotation||0,!1),r}catch{return null}}createVintageFilter(n){var t,o;try{const i=(o=(t=window.PIXI)==null?void 0:t.filters)==null?void 0:o.ColorMatrixFilter;if(!i)return null;const r=new i;return r.vintage(!1),n.intensity&&(r.contrast(1.2,!1),r.saturate(.8,!1)),r}catch{return null}}createGrayscaleFilter(){var n,t;try{const o=(t=(n=window.PIXI)==null?void 0:n.filters)==null?void 0:t.ColorMatrixFilter;if(!o)return null;const i=new o;return i.desaturate(),i}catch{return null}}createSepiaFilter(){var n,t;try{const o=(t=(n=window.PIXI)==null?void 0:n.filters)==null?void 0:t.ColorMatrixFilter;if(!o)return null;const i=new o;return i.sepia(!1),i}catch{return null}}async applyFilters(n){if(this.composition){this.clearFilters();for(const t of n){const o=this.mapMediablesToPIXI(t);o&&(this.pixiFilters.set(t.id,o),this.filterParams.set(t.id,t.params),this.filterTypes.set(t.id,t.filterId),this.filterIntensity.set(t.id,t.intensity),await this.applyToComposition(t.id,o))}}}async applyToComposition(n,t){try{this.composition.applyFilter&&await this.composition.applyFilter(n,t)}catch{}}updateFilterParams(n,t){var i;const o=this.pixiFilters.get(n);o&&(this.filterParams.set(n,t),"blur"in o&&(o.blur=t.intensity||o.blur),"brightness"in o&&o.brightness(t.value||1,!1),"contrast"in o&&o.contrast(t.value||1,!1),"saturate"in o&&o.saturate(t.value||1,!1),"hue"in o&&o.hue(t.rotation||0,!1),(i=this.composition)!=null&&i.update&&this.composition.update())}getFilterParams(n){return this.filterParams.get(n)||{}}removeFilter(n){var t;this.pixiFilters.delete(n),this.filterParams.delete(n),this.filterTypes.delete(n),this.filterIntensity.delete(n),(t=this.composition)!=null&&t.removeFilter&&this.composition.removeFilter(n)}clearFilters(){var n;this.pixiFilters.clear(),this.filterParams.clear(),this.filterTypes.clear(),this.filterIntensity.clear(),(n=this.composition)!=null&&n.clearFilters&&this.composition.clearFilters()}getActiveFilters(){return Array.from(this.pixiFilters.values())}exportFilterConfig(){const n=[];return this.pixiFilters.forEach((t,o)=>{const i=this.filterParams.get(o)??{},r=this.filterTypes.get(o)??"unknown",l=this.filterIntensity.get(o)??1;n.push({id:o,filterId:r,params:i,intensity:l})}),n}async importFilterConfig(n){await this.applyFilters(n)}destroy(){this.clearFilters(),this.composition=null}}const Dk={class:"video-filter-preview"},Fk={class:"preview-title"},Ak={class:"filter-controls"},Rk={class:"control-input"},Lk=["value","onInput","min","max","step"],Pk={class:"param-value"},Uk={class:"preview-container"},Ok={key:0,class:"filter-presets"},zk=["onClick"],jk={class:"preview-actions"},Wk=e.defineComponent({__name:"VideoFilterPreview",props:{filter:{},currentFrame:{},useVideoEngine:{type:Boolean,default:!1},composition:{}},emits:["update-params","apply"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(),r=e.ref(!1),l=e.ref({});let s,d,u=null,c=null;const m=e.computed(()=>{var V;return((V=t.filter)==null?void 0:V.paramRanges)||{}}),p=e.computed(()=>f.value.length>0),f=e.computed(()=>t.filter?{brightness:[{name:"Subtle",params:{value:.1}},{name:"Medium",params:{value:.3}},{name:"Strong",params:{value:.5}}],contrast:[{name:"Low",params:{value:.8}},{name:"Normal",params:{value:1}},{name:"High",params:{value:1.5}}],"gaussian-blur":[{name:"Subtle",params:{value:1}},{name:"Medium",params:{value:3}},{name:"Strong",params:{value:5}}]}[t.filter.id]||[]:[]);async function v(){var V;if(i.value){t.useVideoEngine&&t.composition&&(c=new Ik(t.composition));try{if(s=new aa.Application,await s.init({width:i.value.clientWidth,height:i.value.clientHeight,background:0,resolution:window.devicePixelRatio||1,autoDensity:!0,canvas:i.value}),(V=t.currentFrame)!=null&&V.dataUrl){const I=await aa.Assets.load(t.currentFrame.dataUrl);d=new aa.Sprite(I);const $=Math.min(s.screen.width/d.texture.width,s.screen.height/d.texture.height);d.scale.set($),d.anchor.set(.5),d.position.set(s.screen.width/2,s.screen.height/2),s.stage.addChild(d)}h()}catch{}}}function h(){if(!(!d||!t.filter))if(t.useVideoEngine&&c){const V={id:t.filter.id,filterId:t.filter.id,params:l.value,intensity:l.value.value??l.value.intensity??1};c.applyFilters([V]).then(()=>{}).catch(I=>{}),u&&(u.destroy(),u=null),u=k(t.filter.id,l.value),u&&(d.filters=r.value?null:[u])}else u&&(u.destroy(),u=null),u=k(t.filter.id,l.value),u&&(d.filters=r.value?null:[u])}function k(V,I){switch(V){case"brightness":{const $=new aa.ColorMatrixFilter,C=1+(I.value??0);return typeof $.brightness=="function"&&$.brightness(C,!1),$}case"contrast":{const $=new aa.ColorMatrixFilter,C=I.value??1;return typeof $.contrast=="function"&&$.contrast(C,!1),$}case"saturation":{const $=new aa.ColorMatrixFilter,C=I.value??1;return typeof $.saturate=="function"&&$.saturate(C,!1),$}case"hue":{const $=new aa.ColorMatrixFilter,C=I.value??0;return typeof $.hue=="function"&&$.hue(C,!1),$}case"gaussian-blur":{const $=I.value??5;return new aa.BlurFilter({strength:$,quality:4})}case"sepia":{const $=new aa.ColorMatrixFilter;return typeof $.sepia=="function"&&$.sepia(!1),$}case"grayscale":{const $=new aa.ColorMatrixFilter;return typeof $.desaturate=="function"&&$.desaturate(),$}default:return null}}function E(V,I){const $=I.target,C=Number.parseFloat($.value),M=Number.isFinite(C)?C:0;l.value={...l.value,[V]:M},t.useVideoEngine&&c&&t.filter&&c.updateFilterParams(t.filter.id,l.value),o("update-params",l.value),h()}function w(V){return V.charAt(0).toUpperCase()+V.slice(1).replace(/_/g," ")}function b(V,I){var C;const $=typeof V=="number"?V:Number(V);return Number.isFinite($)?I==="hue"||I==="angle"?`${$}°`:I==="value"&&((C=t.filter)==null?void 0:C.id)==="brightness"?`${Math.round((1+$)*100)}%`:Number.isInteger($)?$.toString():$.toFixed(2):"0"}function g(){var V;l.value=((V=t.filter)==null?void 0:V.defaultParams)||{},o("update-params",l.value),h()}function D(V){l.value={...V.params},o("update-params",l.value),h()}function T(V){return JSON.stringify(V.params)===JSON.stringify(l.value)}function F(){o("apply")}return e.watch(()=>t.filter,V=>{V&&(l.value={...V.defaultParams},h())}),e.watch(()=>t.currentFrame,async V=>{if(V!=null&&V.dataUrl&&d){const I=await aa.Assets.load(V.dataUrl);d.texture=I}}),e.watch(r,h),e.onMounted(()=>{t.filter&&(l.value={...t.filter.defaultParams}),v()}),e.onUnmounted(()=>{s&&s.destroy(!0,{children:!0,texture:!0}),u&&u.destroy(),c&&c.destroy()}),(V,I)=>{var $;return e.openBlock(),e.createElementBlock("div",Dk,[e.createElementVNode("h4",Fk,e.toDisplayString(($=V.filter)==null?void 0:$.name)+" Settings",1),e.createElementVNode("div",Ak,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,(C,M)=>(e.openBlock(),e.createElementBlock("div",{key:M,class:"control-group"},[e.createElementVNode("label",null,e.toDisplayString(w(M)),1),e.createElementVNode("div",Rk,[e.createElementVNode("input",{type:"range",value:l.value[M],onInput:_=>E(M,_),min:C.min,max:C.max,step:C.step,class:"param-slider"},null,40,Lk),e.createElementVNode("span",Pk,e.toDisplayString(b(l.value[M],M)),1)])]))),128))]),e.createElementVNode("div",Uk,[e.createElementVNode("canvas",{ref_key:"previewCanvas",ref:i,class:"preview-canvas"},null,512),e.createElementVNode("button",{class:"compare-button",onMousedown:I[0]||(I[0]=C=>r.value=!0),onMouseup:I[1]||(I[1]=C=>r.value=!1),onTouchstart:I[2]||(I[2]=C=>r.value=!0),onTouchend:I[3]||(I[3]=C=>r.value=!1)},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref($i)},null,8,["icon"]),I[4]||(I[4]=e.createTextVNode(" Hold to compare ",-1))],32)]),p.value?(e.openBlock(),e.createElementBlock("div",Ok,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,C=>(e.openBlock(),e.createElementBlock("button",{key:C.name,class:e.normalizeClass(["preset-button",{active:T(C)}]),onClick:M=>D(C)},e.toDisplayString(C.name),11,zk))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",jk,[e.createElementVNode("button",{class:"action-button",onClick:g},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(zo)},null,8,["icon"]),I[5]||(I[5]=e.createTextVNode(" Reset ",-1))]),e.createElementVNode("button",{class:"action-button primary",onClick:F},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(gm)},null,8,["icon"]),I[6]||(I[6]=e.createTextVNode(" Apply Filter ",-1))])])])}}}),Hs=Ie(Wk,[["__scopeId","data-v-3de3dd04"]]),tp={id:"mobile-share",label:"Mobile share",description:"Fast H.264 MP4 export for short social clips and mobile uploads.",settings:{format:"mp4",codec:"h264",quality:"720p",fps:30,bitrate:45e5,routePreference:"client",maxClientDurationSeconds:90,mobileSuitable:!0,advancedVisibility:"standard"}},ap={id:"hd-web",label:"HD web",description:"Balanced 1080p H.264 MP4 export for web playback.",settings:{format:"mp4",codec:"h264",quality:"1080p",fps:30,bitrate:8e6,routePreference:"auto",maxClientDurationSeconds:180,mobileSuitable:!0,advancedVisibility:"standard"}},np={id:"original",label:"Original",description:"Server-rendered MP4 export that preserves the editor output quality target.",settings:{format:"mp4",codec:"h264",quality:"1080p",fps:30,routePreference:"server",maxClientDurationSeconds:null,mobileSuitable:!1,advancedVisibility:"standard"}},op={id:"server-master",label:"Server master",description:"High-bitrate master render for archival and downstream transcodes.",settings:{format:"mov",codec:"h265",quality:"2160p",fps:60,bitrate:32e6,routePreference:"server",maxClientDurationSeconds:null,mobileSuitable:!1,advancedVisibility:"advanced"}},ip=[tp,ap,np,op],Fd={"mobile-share":tp,"hd-web":ap,original:np,"server-master":op},Zk=["mobile-share","hd-web"],Hk=["hd-web","original","mobile-share"],Gk=["server-master","hd-web","original","mobile-share"];function Bl(a){return typeof a=="string"?Fd[a]:a}function Xk(a){const{bitrate:n,codec:t,format:o,fps:i,quality:r}=Bl(a).settings,l={format:o,codec:t,quality:r,fps:i};return typeof n=="number"&&(l.bitrate=n),l}function Kk(a){const n=Bl(a);return n.settings.mobileSuitable&&n.settings.advancedVisibility==="standard"}function Jk(a=ip){return a.filter(n=>Kk(n))}function qk(a,n){const t=Bl(a).settings.maxClientDurationSeconds;return t!==null&&Number.isFinite(n)&&n>=0&&n<=t}function Yk(a,n){const t=Bl(a),o=n.endpoints.client&&qk(t,n.durationSeconds),i=n.endpoints.server;return t.settings.routePreference==="client"?o?"client":i?"server":null:t.settings.routePreference==="server"?i?"server":o?"client":null:o?"client":i?"server":null}function Qk(a,n){return Yk(a,n)!==null}function e2(a){const n=t2(a);for(const t of n){const o=Fd[t];if(a2(o,a.includeAdvanced===!0)&&!(a.device==="mobile"&&!o.settings.mobileSuitable)&&Qk(o,a))return o}return null}function t2(a){return a.device==="mobile"?Zk:a.includeAdvanced===!0?Gk:Hk}function a2(a,n){return a.settings.advancedVisibility==="hidden"?!1:a.settings.advancedVisibility==="standard"||n}const n2={class:"export-settings"},o2={class:"setting-group preset-setting"},i2={class:"setting-copy"},r2={class:"setting-description"},l2=["value"],s2={key:0,class:"advanced-toggle","data-testid":"export-advanced-toggle"},d2={class:"preset-summary","data-testid":"export-preset-summary"},u2={class:"estimated-size"},c2={key:0,class:"export-progress"},m2={class:"progress-header"},p2={class:"progress-percentage"},f2={class:"progress-time"},v2={class:"action-buttons"},h2=["disabled"],g2=["disabled"],b2=["disabled"],y2={class:"export-options"},w2="hd-web",k2=e.defineComponent({__name:"EditorControls",props:{canExport:{type:Boolean,default:!1},isExporting:{type:Boolean,default:!1},exportProgress:{default:0},isMobile:{type:Boolean,default:!1},duration:{default:0}},emits:["export","save-draft","reset","cancel-export"],setup(a,{emit:n}){const t=a,o=n,i={client:!0,server:!0},r=ip,l={"360p":1,"480p":2.5,"720p":5,"1080p":8,"1440p":16,"2160p":35},s=e.ref(!1),d=e.ref(g()),u=e.ref(!0),c=e.ref(!1),m=e.ref(0),p=e.ref(0),f=e.ref(0);let v=null;const h=e.computed(()=>t.isMobile?Jk():r.filter(C=>C.settings.advancedVisibility==="hidden"?!1:C.settings.advancedVisibility==="standard"||s.value)),k=e.computed(()=>h.value.find(C=>C.id===d.value)??Fd[g()]),E=e.computed(()=>Xk(k.value)),w=e.computed(()=>{const C=E.value,M=[C.quality,C.format.toUpperCase(),C.codec.toUpperCase(),`${C.fps} fps`],_=D(C.bitrate);return _!==null&&M.push(_),M.join(" / ")}),b=e.computed(()=>{const C=E.value,_=(typeof C.bitrate=="number"?C.bitrate/1e6:l[C.quality])*t.duration/8;return _<1e3?`~${Math.round(_)} MB`:`~${(_/1e3).toFixed(1)} GB`});function g(){var C;return((C=e2({durationSeconds:t.duration,device:t.isMobile?"mobile":"desktop",endpoints:i,includeAdvanced:s.value}))==null?void 0:C.id)??w2}function D(C){return typeof C!="number"?null:`${Number((C/1e6).toFixed(1))} Mbps`}function T(){t.isExporting?(o("cancel-export"),I()):F()}function F(){const C=E.value,M={quality:C.quality,format:C.format,optimizeForWeb:u.value,includeWatermark:c.value,presetId:k.value.id,codec:C.codec,fps:C.fps};typeof C.bitrate=="number"&&(M.bitrate=C.bitrate),o("export",M),V()}function V(){m.value=Date.now(),p.value=0,v=window.setInterval(()=>{if(p.value=Math.floor((Date.now()-m.value)/1e3),t.exportProgress>0){const C=p.value/t.exportProgress*100;f.value=Math.max(0,C-p.value)}},1e3)}function I(){v&&(clearInterval(v),v=null)}function $(C){const M=Math.floor(C/60),_=Math.floor(C%60);return`${M}:${_.toString().padStart(2,"0")}`}return e.watch([()=>t.isMobile,()=>s.value],()=>{h.value.some(M=>M.id===d.value)||(d.value=g())},{immediate:!0}),e.watch(()=>t.isExporting,C=>{C||I()}),e.onUnmounted(()=>{I()}),(C,M)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["editor-controls",{mobile:C.isMobile}])},[e.createElementVNode("div",n2,[M[8]||(M[8]=e.createElementVNode("h3",{class:"section-title"},"Export Settings",-1)),e.createElementVNode("div",o2,[e.createElementVNode("div",i2,[M[6]||(M[6]=e.createElementVNode("label",{for:"export-preset-select"},"Preset",-1)),e.createElementVNode("span",r2,e.toDisplayString(k.value.description),1)]),e.withDirectives(e.createElementVNode("select",{id:"export-preset-select","onUpdate:modelValue":M[0]||(M[0]=_=>d.value=_),class:"setting-select preset-select","data-testid":"export-preset-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,_=>(e.openBlock(),e.createElementBlock("option",{key:_.id,value:_.id},e.toDisplayString(_.label),9,l2))),128))],512),[[e.vModelSelect,d.value]])]),C.isMobile?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("label",s2,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":M[1]||(M[1]=_=>s.value=_),type:"checkbox","data-testid":"export-advanced-toggle-input"},null,512),[[e.vModelCheckbox,s.value]]),M[7]||(M[7]=e.createElementVNode("span",null,"Advanced presets",-1))])),e.createElementVNode("div",d2,e.toDisplayString(w.value),1),e.createElementVNode("div",u2,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Ph)},null,8,["icon"]),e.createElementVNode("span",null,"Estimated size: "+e.toDisplayString(b.value),1)])]),C.isExporting?(e.openBlock(),e.createElementBlock("div",c2,[e.createElementVNode("div",m2,[M[9]||(M[9]=e.createElementVNode("span",null,"Exporting...",-1)),e.createElementVNode("span",p2,e.toDisplayString(C.exportProgress??0)+"%",1)]),e.createVNode(e.unref(G.IonProgressBar),{value:(C.exportProgress??0)/100},null,8,["value"]),e.createElementVNode("div",f2,[e.createElementVNode("span",null,e.toDisplayString($(p.value))+" elapsed",1),e.createElementVNode("span",null,e.toDisplayString($(f.value))+" remaining",1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",v2,[e.createElementVNode("button",{class:"control-button secondary",onClick:M[2]||(M[2]=_=>C.$emit("save-draft")),disabled:!C.canExport||C.isExporting},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(fl)},null,8,["icon"]),M[10]||(M[10]=e.createTextVNode(" Save Draft ",-1))],8,h2),e.createElementVNode("button",{class:"control-button secondary",onClick:M[3]||(M[3]=_=>C.$emit("reset")),disabled:C.isExporting},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(zo)},null,8,["icon"]),M[11]||(M[11]=e.createTextVNode(" Reset ",-1))],8,g2),e.createElementVNode("button",{class:"control-button primary",onClick:T,disabled:!C.canExport&&!C.isExporting,"data-testid":"video-export-button"},[e.createVNode(e.unref(G.IonIcon),{icon:C.isExporting?e.unref(Fo):e.unref(oi)},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(C.isExporting?"Cancel":"Export Video"),1)],8,b2)]),e.createElementVNode("div",y2,[e.createVNode(e.unref(G.IonItem),{lines:"none"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonCheckbox),{modelValue:u.value,"onUpdate:modelValue":M[4]||(M[4]=_=>u.value=_)},null,8,["modelValue"]),e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...M[12]||(M[12]=[e.createTextVNode("Optimize for web streaming",-1)])]),_:1})]),_:1}),e.createVNode(e.unref(G.IonItem),{lines:"none"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonCheckbox),{modelValue:c.value,"onUpdate:modelValue":M[5]||(M[5]=_=>c.value=_)},null,8,["modelValue"]),e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...M[13]||(M[13]=[e.createTextVNode("Include watermark",-1)])]),_:1})]),_:1})])],2))}}),Gs=Ie(k2,[["__scopeId","data-v-d26ca1bc"]]),_2={class:"thumbnail-picker"},E2={class:"thumbnail-grid"},S2=["onClick"],x2=["src","alt"],C2={key:1,class:"thumbnail-placeholder"},V2={class:"thumbnail-time"},N2={class:"custom-selector"},T2={class:"time-input-group"},B2=["max"],M2={class:"time-value"},$2=["disabled"],I2={class:"picker-actions"},D2=["disabled"],F2=e.defineComponent({__name:"ThumbnailPicker",props:{mediaUuid:{},duration:{},currentTime:{default:0}},emits:["select","cancel"],setup(a,{emit:n}){const t=a,o=n,i=e.ref([]),r=e.ref(-1),l=e.ref(t.currentTime),s=e.ref(!1);function d(){const E=[];if(t.duration<=10)for(let b=0;b<Math.min(9,t.duration);b++)E.push(b);else{const b=t.duration/10;for(let g=1;g<=9;g++)E.push(b*g)}return E}async function u(E){try{const w=document.createElement("video");return w.crossOrigin="anonymous",w.src=await c(),new Promise(b=>{w.addEventListener("loadedmetadata",()=>{w.currentTime=E}),w.addEventListener("seeked",()=>{const g=document.createElement("canvas");g.width=w.videoWidth,g.height=w.videoHeight;const D=g.getContext("2d");D?(D.drawImage(w,0,0),b(g.toDataURL("image/jpeg",.8))):b(null),w.remove()}),w.addEventListener("error",()=>{b(null),w.remove()})})}catch{return null}}async function c(){try{return(await(await fetch(`/api/media/${t.mediaUuid}/playback`)).json()).playback_url}catch{return`/media/${t.mediaUuid}/video`}}async function m(){const E=d();i.value=E.map(b=>({time:b,loading:!0}));const w=3;for(let b=0;b<i.value.length;b+=w){const g=i.value.slice(b,b+w);await Promise.all(g.map(async D=>{const T=await u(D.time);T&&(D.dataUrl=T),D.loading=!1}))}}function p(E){r.value=E,l.value=i.value[E].time}function f(){r.value=-1}async function v(){s.value=!0;try{const E=await u(l.value);if(E){const w=i.value.findIndex(b=>Math.abs(b.time-l.value)<.1);w>=0?(i.value[w].dataUrl=E,r.value=w):(i.value.push({time:l.value,dataUrl:E}),r.value=i.value.length-1,i.value.sort((b,g)=>b.time-g.time),r.value=i.value.findIndex(b=>b.time===l.value))}}finally{s.value=!1}}function h(){const E=r.value>=0?i.value[r.value].time:l.value;o("select",E)}function k(E){const w=Math.floor(E/60),b=Math.floor(E%60),g=Math.floor(E%1*100);return w>0?`${w}:${b.toString().padStart(2,"0")}.${g.toString().padStart(2,"0")}`:`${b}.${g.toString().padStart(2,"0")}s`}return e.onMounted(()=>{m()}),(E,w)=>(e.openBlock(),e.createElementBlock("div",_2,[w[5]||(w[5]=e.createElementVNode("h4",{class:"picker-title"},"Select Video Thumbnail",-1)),e.createElementVNode("div",E2,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(b,g)=>(e.openBlock(),e.createElementBlock("div",{key:g,class:e.normalizeClass(["thumbnail-item",{selected:r.value===g}]),onClick:D=>p(g)},[b.dataUrl?(e.openBlock(),e.createElementBlock("img",{key:0,src:b.dataUrl,alt:`Frame at ${k(b.time)}`},null,8,x2)):(e.openBlock(),e.createElementBlock("div",C2,[e.createVNode(e.unref(G.IonSpinner),{name:"crescent"})])),e.createElementVNode("div",V2,e.toDisplayString(k(b.time)),1)],10,S2))),128))]),e.createElementVNode("div",N2,[w[3]||(w[3]=e.createElementVNode("label",null,"Custom time:",-1)),e.createElementVNode("div",T2,[e.withDirectives(e.createElementVNode("input",{type:"range","onUpdate:modelValue":w[0]||(w[0]=b=>l.value=b),min:0,max:E.duration,step:.1,onInput:f,class:"time-slider"},null,40,B2),[[e.vModelText,l.value]]),e.createElementVNode("span",M2,e.toDisplayString(k(l.value)),1)]),e.createElementVNode("button",{class:"capture-button",onClick:v,disabled:s.value},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Vh)},null,8,["icon"]),w[2]||(w[2]=e.createTextVNode(" Capture Frame ",-1))],8,$2)]),e.createElementVNode("div",I2,[e.createElementVNode("button",{class:"action-button",onClick:w[1]||(w[1]=b=>E.$emit("cancel"))}," Cancel "),e.createElementVNode("button",{class:"action-button primary",onClick:h,disabled:r.value===-1},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(gm)},null,8,["icon"]),w[4]||(w[4]=e.createTextVNode(" Set Thumbnail ",-1))],8,D2)])]))}}),A2=Ie(F2,[["__scopeId","data-v-336c322c"]]),R2={class:"text-overlay-panel p-4 bg-white dark:bg-gray-800 rounded-lg shadow-lg"},L2={class:"mb-4"},P2={class:"space-y-2 max-h-64 overflow-y-auto"},U2={class:"flex items-center justify-between"},O2={class:"flex-1"},z2={class:"font-medium text-gray-900 dark:text-white"},j2={class:"text-sm text-gray-500 dark:text-gray-400"},W2={class:"flex items-center space-x-2"},Z2=["onClick"],H2=["onClick"],G2={key:0,class:"text-center py-8 text-gray-500 dark:text-gray-400"},X2={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl p-6 w-full max-w-lg mx-4"},K2={class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"},J2={class:"space-y-4"},q2={class:"grid grid-cols-2 gap-4"},Y2={class:"grid grid-cols-2 gap-4"},Q2={key:0,class:"p-3 bg-gray-50 dark:bg-gray-700 rounded-lg"},e_={class:"grid grid-cols-2 gap-3"},t_={class:"flex justify-end space-x-3 mt-6"},a_=e.defineComponent({__name:"TextOverlayPanel",props:{overlays:{}},emits:["add-overlay","update-overlay","remove-overlay"],setup(a,{emit:n}){const t=n,o=e.ref(!1),i=e.ref(null),r=()=>({id:"",text:"",fontSize:24,color:"#ffffff",position:"center",startTime:0,duration:5,animationType:"",animationDuration:1,animationEasing:"linear"}),l=e.reactive(r());function s(p){Object.assign(l,p),i.value=p}function d(){o.value=!1,i.value=null,Object.assign(l,r())}function u(){const p={text:l.text,fontSize:l.fontSize,color:l.color,position:l.position,startTime:l.startTime,duration:l.duration};if(l.animationType&&(p.animation={type:l.animationType},l.animationDuration!==void 0&&(p.animation.duration=l.animationDuration),l.animationEasing&&(p.animation.easing=l.animationEasing),p.animation))switch(l.animationType){case"rotate":p.animation.rotation={from:0,to:360};break;case"scale":p.animation.scale={from:.5,to:1};break;case"slide":p.animation.translate={fromX:-100,toX:0,fromY:0,toY:0};break}i.value?t("update-overlay",i.value.id,p):t("add-overlay",p),d()}function c(p){confirm("Are you sure you want to remove this text overlay?")&&t("remove-overlay",p)}function m(p){const f=Math.floor(p/60),v=Math.floor(p%60);return`${f}:${v.toString().padStart(2,"0")}`}return(p,f)=>(e.openBlock(),e.createElementBlock("div",R2,[e.createElementVNode("div",L2,[f[11]||(f[11]=e.createElementVNode("h3",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-2"}," Text Overlays ",-1)),e.createElementVNode("button",{onClick:f[0]||(f[0]=v=>o.value=!0),class:"w-full px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors"},[...f[10]||(f[10]=[e.createElementVNode("svg",{class:"w-5 h-5 inline-block mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Add Text Overlay ",-1)])])]),e.createElementVNode("div",P2,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.overlays,v=>(e.openBlock(),e.createElementBlock("div",{key:v.id,class:"p-3 border border-gray-200 dark:border-gray-700 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"},[e.createElementVNode("div",U2,[e.createElementVNode("div",O2,[e.createElementVNode("div",z2,e.toDisplayString(v.text.substring(0,30))+e.toDisplayString(v.text.length>30?"...":""),1),e.createElementVNode("div",j2,e.toDisplayString(m(v.startTime??0))+" - "+e.toDisplayString(m((v.startTime||0)+(v.duration||5))),1)]),e.createElementVNode("div",W2,[e.createElementVNode("button",{onClick:h=>s(v),class:"p-1 text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-900 rounded",title:"Edit"},[...f[12]||(f[12]=[e.createElementVNode("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])],8,Z2),e.createElementVNode("button",{onClick:h=>c(v.id),class:"p-1 text-red-600 hover:bg-red-50 dark:hover:bg-red-900 rounded",title:"Remove"},[...f[13]||(f[13]=[e.createElementVNode("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])],8,H2)])])]))),128)),p.overlays.length===0?(e.openBlock(),e.createElementBlock("div",G2," No text overlays added yet ")):e.createCommentVNode("",!0)]),o.value||i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",onClick:e.withModifiers(d,["self"])},[e.createElementVNode("div",X2,[e.createElementVNode("h4",K2,e.toDisplayString(i.value?"Edit":"Add")+" Text Overlay ",1),e.createElementVNode("div",J2,[e.createElementVNode("div",null,[f[14]||(f[14]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Text ",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":f[1]||(f[1]=v=>l.text=v),rows:"3",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white",placeholder:"Enter your text..."},null,512),[[e.vModelText,l.text]])]),e.createElementVNode("div",q2,[e.createElementVNode("div",null,[f[15]||(f[15]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Font Size ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[2]||(f[2]=v=>l.fontSize=v),type:"number",min:"10",max:"200",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,l.fontSize,void 0,{number:!0}]])]),e.createElementVNode("div",null,[f[16]||(f[16]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Color ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[3]||(f[3]=v=>l.color=v),type:"color",class:"w-full h-10 border border-gray-300 dark:border-gray-600 rounded-lg cursor-pointer"},null,512),[[e.vModelText,l.color]])])]),e.createElementVNode("div",null,[f[18]||(f[18]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Position ",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":f[4]||(f[4]=v=>l.position=v),class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},[...f[17]||(f[17]=[e.createStaticVNode('<option value="center" data-v-f86e688c>Center</option><option value="top" data-v-f86e688c>Top</option><option value="bottom" data-v-f86e688c>Bottom</option><option value="left" data-v-f86e688c>Left</option><option value="right" data-v-f86e688c>Right</option>',5)])],512),[[e.vModelSelect,l.position]])]),e.createElementVNode("div",Y2,[e.createElementVNode("div",null,[f[19]||(f[19]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Start Time (seconds) ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[5]||(f[5]=v=>l.startTime=v),type:"number",min:"0",step:"0.1",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,l.startTime,void 0,{number:!0}]])]),e.createElementVNode("div",null,[f[20]||(f[20]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Duration (seconds) ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[6]||(f[6]=v=>l.duration=v),type:"number",min:"0.1",step:"0.1",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,l.duration,void 0,{number:!0}]])])]),e.createElementVNode("div",null,[f[22]||(f[22]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Animation ",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":f[7]||(f[7]=v=>l.animationType=v),class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},[...f[21]||(f[21]=[e.createStaticVNode('<option value="" data-v-f86e688c>None</option><option value="fade-in" data-v-f86e688c>Fade In</option><option value="fade-out" data-v-f86e688c>Fade Out</option><option value="slide" data-v-f86e688c>Slide</option><option value="scale" data-v-f86e688c>Scale</option><option value="rotate" data-v-f86e688c>Rotate</option><option value="typewriter" data-v-f86e688c>Typewriter</option>',7)])],512),[[e.vModelSelect,l.animationType]])]),l.animationType?(e.openBlock(),e.createElementBlock("div",Q2,[f[26]||(f[26]=e.createElementVNode("div",{class:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"}," Animation Settings ",-1)),e.createElementVNode("div",e_,[e.createElementVNode("div",null,[f[23]||(f[23]=e.createElementVNode("label",{class:"block text-xs text-gray-600 dark:text-gray-400 mb-1"}," Duration (s) ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[8]||(f[8]=v=>l.animationDuration=v),type:"number",min:"0.1",step:"0.1",class:"w-full px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded focus:ring-2 focus:ring-blue-500 dark:bg-gray-600 dark:text-white"},null,512),[[e.vModelText,l.animationDuration,void 0,{number:!0}]])]),e.createElementVNode("div",null,[f[25]||(f[25]=e.createElementVNode("label",{class:"block text-xs text-gray-600 dark:text-gray-400 mb-1"}," Easing ",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":f[9]||(f[9]=v=>l.animationEasing=v),class:"w-full px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded focus:ring-2 focus:ring-blue-500 dark:bg-gray-600 dark:text-white"},[...f[24]||(f[24]=[e.createElementVNode("option",{value:"linear"},"Linear",-1),e.createElementVNode("option",{value:"easeIn"},"Ease In",-1),e.createElementVNode("option",{value:"easeOut"},"Ease Out",-1),e.createElementVNode("option",{value:"easeInOut"},"Ease In Out",-1)])],512),[[e.vModelSelect,l.animationEasing]])])])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",t_,[e.createElementVNode("button",{onClick:d,class:"px-4 py-2 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors"}," Cancel "),e.createElementVNode("button",{onClick:u,class:"px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors"},e.toDisplayString(i.value?"Save":"Add"),1)])])])):e.createCommentVNode("",!0)]))}}),Xs=Ie(a_,[["__scopeId","data-v-f86e688c"]]),n_={class:"transition-selector p-4 bg-white dark:bg-gray-800 rounded-lg shadow-lg"},o_={class:"grid grid-cols-3 gap-3 max-h-96 overflow-y-auto"},i_=["onClick"],r_={class:"w-full h-16 bg-gradient-to-r from-gray-300 to-gray-400 dark:from-gray-600 dark:to-gray-700 rounded mb-2 flex items-center justify-center"},l_={key:0,class:"w-8 h-8 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},s_={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"},d_={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14 5l7 7m0 0l-7 7m7-7H3"},u_={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4"},c_={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"},m_={key:4,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 5a1 1 0 011-1h14a1 1 0 011 1v14a1 1 0 01-1 1H5a1 1 0 01-1-1V5z"},p_={class:"text-sm font-medium text-gray-900 dark:text-white text-center"},f_={key:0,class:"mt-4 p-3 bg-gray-50 dark:bg-gray-700 rounded-lg"},v_={class:"space-y-3"},h_={class:"flex items-center space-x-2"},g_=["disabled"],b_=["disabled"],y_={key:1,class:"mt-4"},w_={class:"space-y-2 max-h-32 overflow-y-auto"},k_={class:"text-sm text-gray-700 dark:text-gray-300"},__=["onClick"],E_=e.defineComponent({__name:"TransitionSelector",props:{selectedClips:{},appliedTransitions:{}},emits:["apply-transition","remove-transition","preview-transition"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(qi.getAvailableTransitions()),r=e.ref(null),l=e.ref(.5),s=e.ref("linear"),d=e.computed(()=>r.value&&t.selectedClips&&t.selectedClips.length>=2);function u(v){r.value=v}function c(){if(!r.value||!d.value)return;const v={type:r.value.type,duration:l.value,easing:s.value};o("apply-transition",v),r.value=null}function m(){if(!r.value)return;const v={type:r.value.type,duration:l.value,easing:s.value};o("preview-transition",v)}function p(v){o("remove-transition",v)}function f(v){return["fade","wipe","slide","zoom"].some(h=>v.includes(h))}return(v,h)=>(e.openBlock(),e.createElementBlock("div",n_,[h[9]||(h[9]=e.createElementVNode("h3",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"}," Transitions ",-1)),e.createElementVNode("div",o_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,k=>{var E;return e.openBlock(),e.createElementBlock("div",{key:k.type,onClick:w=>u(k),class:e.normalizeClass(["transition-item cursor-pointer rounded-lg p-3 border-2 transition-all",((E=r.value)==null?void 0:E.type)===k.type?"border-blue-500 bg-blue-50 dark:bg-blue-900":"border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600"])},[e.createElementVNode("div",r_,[f(k.type)?(e.openBlock(),e.createElementBlock("svg",l_,[k.type.includes("fade")?(e.openBlock(),e.createElementBlock("path",s_)):k.type.includes("wipe")?(e.openBlock(),e.createElementBlock("path",d_)):k.type.includes("slide")?(e.openBlock(),e.createElementBlock("path",u_)):k.type.includes("zoom")?(e.openBlock(),e.createElementBlock("path",c_)):(e.openBlock(),e.createElementBlock("path",m_))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",p_,e.toDisplayString(k.name),1)],10,i_)}),128))]),r.value?(e.openBlock(),e.createElementBlock("div",f_,[h[6]||(h[6]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-3"}," Transition Settings ",-1)),e.createElementVNode("div",v_,[e.createElementVNode("div",null,[h[3]||(h[3]=e.createElementVNode("label",{class:"block text-xs text-gray-600 dark:text-gray-400 mb-1"}," Duration (seconds) ",-1)),e.createElementVNode("div",h_,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[0]||(h[0]=k=>l.value=k),type:"range",min:"0.1",max:"3",step:"0.1",class:"flex-1"},null,512),[[e.vModelText,l.value,void 0,{number:!0}]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":h[1]||(h[1]=k=>l.value=k),type:"number",min:"0.1",max:"3",step:"0.1",class:"w-16 px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded focus:ring-2 focus:ring-blue-500 dark:bg-gray-600 dark:text-white"},null,512),[[e.vModelText,l.value,void 0,{number:!0}]])])]),e.createElementVNode("div",null,[h[5]||(h[5]=e.createElementVNode("label",{class:"block text-xs text-gray-600 dark:text-gray-400 mb-1"}," Easing ",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[2]||(h[2]=k=>s.value=k),class:"w-full px-2 py-1 text-sm border border-gray-300 dark:border-gray-600 rounded focus:ring-2 focus:ring-blue-500 dark:bg-gray-600 dark:text-white"},[...h[4]||(h[4]=[e.createElementVNode("option",{value:"linear"},"Linear",-1),e.createElementVNode("option",{value:"easeIn"},"Ease In",-1),e.createElementVNode("option",{value:"easeOut"},"Ease Out",-1),e.createElementVNode("option",{value:"easeInOut"},"Ease In Out",-1)])],512),[[e.vModelSelect,s.value]])]),e.createElementVNode("button",{onClick:c,disabled:!d.value,class:e.normalizeClass(["w-full px-3 py-2 rounded-lg font-medium transition-colors",d.value?"bg-blue-600 text-white hover:bg-blue-700":"bg-gray-300 dark:bg-gray-600 text-gray-500 dark:text-gray-400 cursor-not-allowed"])}," Apply Transition ",10,g_),e.createElementVNode("button",{onClick:m,disabled:!r.value,class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-600 transition-colors"}," Preview ",8,b_)])])):e.createCommentVNode("",!0),v.appliedTransitions.length>0?(e.openBlock(),e.createElementBlock("div",y_,[h[8]||(h[8]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"}," Applied Transitions ",-1)),e.createElementVNode("div",w_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.appliedTransitions,(k,E)=>(e.openBlock(),e.createElementBlock("div",{key:E,class:"flex items-center justify-between p-2 bg-gray-50 dark:bg-gray-700 rounded"},[e.createElementVNode("div",k_,e.toDisplayString(k.name)+" ("+e.toDisplayString(k.duration)+"s) ",1),e.createElementVNode("button",{onClick:w=>p(E),class:"p-1 text-red-600 hover:bg-red-50 dark:hover:bg-red-900 rounded"},[...h[7]||(h[7]=[e.createElementVNode("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])],8,__)]))),128))])])):e.createCommentVNode("",!0),h[10]||(h[10]=e.createElementVNode("div",{class:"mt-4 text-xs text-gray-500 dark:text-gray-400"},[e.createElementVNode("p",null,"Select clips in the timeline, then choose a transition to apply between them.")],-1))]))}}),Ks=Ie(E_,[["__scopeId","data-v-ffcc612d"]]),S_={class:"audio-track-manager p-4 bg-white dark:bg-gray-800 rounded-lg shadow-lg"},x_={class:"mb-4"},C_={class:"mb-4 p-3 bg-gray-50 dark:bg-gray-700 rounded-lg"},V_={class:"flex items-center justify-between mb-2"},N_={class:"text-sm text-gray-600 dark:text-gray-400"},T_={class:"flex items-center space-x-2"},B_={class:"space-y-3 max-h-64 overflow-y-auto"},M_={class:"flex items-center justify-between mb-2"},$_={class:"font-medium text-gray-900 dark:text-white"},I_={class:"flex items-center space-x-2"},D_=["onClick","title"],F_={key:0,class:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},A_={key:1,class:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},R_=["onClick"],L_=["onClick"],P_={class:"flex items-center space-x-2"},U_={class:"text-xs text-gray-500 dark:text-gray-400 w-10"},O_=["value","onInput","disabled"],z_={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},j_={key:0,class:"ml-2"},W_={key:1,class:"ml-2"},Z_={key:0,class:"text-center py-8 text-gray-500 dark:text-gray-400"},H_={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl p-6 w-full max-w-lg mx-4"},G_={class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"},X_={class:"space-y-4"},K_={class:"space-y-2"},J_={class:"flex items-center"},q_={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},Y_={class:"grid grid-cols-2 gap-4"},Q_={class:"grid grid-cols-2 gap-4"},eE={class:"flex items-center"},tE={class:"flex justify-end space-x-3 mt-6"},aE=["disabled"],nE=e.defineComponent({__name:"AudioTrackManager",props:{audioLayers:{},masterVolume:{}},emits:["add-track","update-track","remove-track","update-volume","toggle-mute","update-master-volume"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(!1),r=e.ref(null),l=e.ref(t.masterVolume),s=()=>({id:"",source:"",sourceUrl:"",name:"Background Music",volume:.7,startTime:0,fadeIn:0,fadeOut:0,loop:!1}),d=e.reactive(s()),u=e.computed(()=>d.sourceUrl||d.sourceFile);function c(b){const g=b.target;g.files&&g.files[0]&&(d.sourceFile=g.files[0],d.name=d.name||g.files[0].name.replace(/\.[^/.]+$/,""))}function m(b){Object.assign(d,b),r.value=b}function p(){i.value=!1,r.value=null,Object.assign(d,s())}function f(){if(!u.value)return;const b={source:d.sourceFile??d.sourceUrl??"",name:d.name,volume:d.volume,startTime:d.startTime,loop:d.loop};d.duration!==void 0&&(b.duration=d.duration),d.fadeIn>0&&(b.fadeIn=d.fadeIn),d.fadeOut>0&&(b.fadeOut=d.fadeOut),r.value?o("update-track",r.value.id,b):o("add-track",b),p()}function v(b){confirm("Are you sure you want to remove this audio track?")&&o("remove-track",b)}function h(b,g){const D=g.target,T=parseFloat(D.value);o("update-volume",b.id,T)}function k(b){o("toggle-mute",b.id,!b.muted)}function E(){o("update-master-volume",l.value)}function w(b){const g=Math.floor(b/60),D=Math.floor(b%60);return`${g}:${D.toString().padStart(2,"0")}`}return(b,g)=>(e.openBlock(),e.createElementBlock("div",S_,[e.createElementVNode("div",x_,[g[11]||(g[11]=e.createElementVNode("h3",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-2"}," Audio Tracks ",-1)),e.createElementVNode("button",{onClick:g[0]||(g[0]=D=>i.value=!0),class:"w-full px-4 py-2 bg-green-600 text-white rounded-lg hover:bg-green-700 transition-colors"},[...g[10]||(g[10]=[e.createElementVNode("svg",{class:"w-5 h-5 inline-block mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),e.createTextVNode(" Add Audio Track ",-1)])])]),e.createElementVNode("div",C_,[e.createElementVNode("div",V_,[g[12]||(g[12]=e.createElementVNode("label",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," Master Volume ",-1)),e.createElementVNode("span",N_,e.toDisplayString(Math.round(l.value*100))+"% ",1)]),e.createElementVNode("div",T_,[g[13]||(g[13]=e.createElementVNode("svg",{class:"w-4 h-4 text-gray-500",fill:"currentColor",viewBox:"0 0 20 20"},[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM12.293 7.293a1 1 0 011.414 0L15 8.586l1.293-1.293a1 1 0 111.414 1.414L16.414 10l1.293 1.293a1 1 0 01-1.414 1.414L15 11.414l-1.293 1.293a1 1 0 01-1.414-1.414L13.586 10l-1.293-1.293a1 1 0 010-1.414z","clip-rule":"evenodd"})],-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[1]||(g[1]=D=>l.value=D),onInput:E,type:"range",min:"0",max:"1",step:"0.01",class:"flex-1"},null,544),[[e.vModelText,l.value,void 0,{number:!0}]]),g[14]||(g[14]=e.createElementVNode("svg",{class:"w-4 h-4 text-gray-500",fill:"currentColor",viewBox:"0 0 20 20"},[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM14.657 2.929a1 1 0 011.414 0l3 3a1 1 0 010 1.414l-3 3a1 1 0 01-1.414-1.414L16.586 7l-1.929-1.929a1 1 0 010-1.414z","clip-rule":"evenodd"})],-1))])]),e.createElementVNode("div",B_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.audioLayers,D=>(e.openBlock(),e.createElementBlock("div",{key:D.id,class:"p-3 border border-gray-200 dark:border-gray-700 rounded-lg"},[e.createElementVNode("div",M_,[e.createElementVNode("div",$_,e.toDisplayString(D.name),1),e.createElementVNode("div",I_,[e.createElementVNode("button",{onClick:T=>k(D),class:e.normalizeClass(["p-1 rounded",D.muted?"text-red-600 bg-red-50 dark:bg-red-900":"text-gray-600 hover:bg-gray-100 dark:hover:bg-gray-700"]),title:D.muted?"Unmute":"Mute"},[D.muted?(e.openBlock(),e.createElementBlock("svg",A_,[...g[16]||(g[16]=[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM12.293 7.293a1 1 0 011.414 0L15 8.586l1.293-1.293a1 1 0 111.414 1.414L16.414 10l1.293 1.293a1 1 0 01-1.414 1.414L15 11.414l-1.293 1.293a1 1 0 01-1.414-1.414L13.586 10l-1.293-1.293a1 1 0 010-1.414z","clip-rule":"evenodd"},null,-1)])])):(e.openBlock(),e.createElementBlock("svg",F_,[...g[15]||(g[15]=[e.createElementVNode("path",{"fill-rule":"evenodd",d:"M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM14.657 2.929a1 1 0 011.414 0l3 3a1 1 0 010 1.414l-3 3a1 1 0 01-1.414-1.414L16.586 7l-1.929-1.929a1 1 0 010-1.414z","clip-rule":"evenodd"},null,-1)])]))],10,D_),e.createElementVNode("button",{onClick:T=>m(D),class:"p-1 text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-900 rounded",title:"Settings"},[...g[17]||(g[17]=[e.createElementVNode("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1)])],8,R_),e.createElementVNode("button",{onClick:T=>v(D.id),class:"p-1 text-red-600 hover:bg-red-50 dark:hover:bg-red-900 rounded",title:"Remove"},[...g[18]||(g[18]=[e.createElementVNode("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])],8,L_)])]),e.createElementVNode("div",P_,[e.createElementVNode("span",U_,e.toDisplayString(Math.round((D.volume||1)*100))+"% ",1),e.createElementVNode("input",{value:D.volume||1,onInput:T=>h(D,T),type:"range",min:"0",max:"1",step:"0.01",class:"flex-1",disabled:D.muted},null,40,O_)]),e.createElementVNode("div",z_,[e.createTextVNode(e.toDisplayString(w(D.startTime||0))+" - "+e.toDisplayString(w((D.startTime||0)+(D.duration||0)))+" ",1),D.fadeIn?(e.openBlock(),e.createElementBlock("span",j_,"Fade In: "+e.toDisplayString(D.fadeIn)+"s",1)):e.createCommentVNode("",!0),D.fadeOut?(e.openBlock(),e.createElementBlock("span",W_,"Fade Out: "+e.toDisplayString(D.fadeOut)+"s",1)):e.createCommentVNode("",!0)])]))),128)),b.audioLayers.length===0?(e.openBlock(),e.createElementBlock("div",Z_," No audio tracks added yet ")):e.createCommentVNode("",!0)]),i.value||r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",onClick:e.withModifiers(p,["self"])},[e.createElementVNode("div",H_,[e.createElementVNode("h4",G_,e.toDisplayString(r.value?"Edit":"Add")+" Audio Track ",1),e.createElementVNode("div",X_,[e.createElementVNode("div",null,[g[20]||(g[20]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Audio Source ",-1)),e.createElementVNode("div",K_,[e.createElementVNode("input",{type:"file",accept:"audio/*",onChange:c,class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,32),e.createElementVNode("div",J_,[g[19]||(g[19]=e.createElementVNode("span",{class:"text-sm text-gray-500 dark:text-gray-400 mr-2"},"or URL:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[2]||(g[2]=D=>d.sourceUrl=D),type:"url",placeholder:"https://example.com/audio.mp3",class:"flex-1 px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,d.sourceUrl]])])])]),e.createElementVNode("div",null,[g[21]||(g[21]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Track Name ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[3]||(g[3]=D=>d.name=D),type:"text",placeholder:"Background Music",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,d.name]])]),e.createElementVNode("div",null,[e.createElementVNode("label",q_," Volume: "+e.toDisplayString(Math.round(d.volume*100))+"% ",1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[4]||(g[4]=D=>d.volume=D),type:"range",min:"0",max:"1",step:"0.01",class:"w-full"},null,512),[[e.vModelText,d.volume,void 0,{number:!0}]])]),e.createElementVNode("div",Y_,[e.createElementVNode("div",null,[g[22]||(g[22]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Start Time (seconds) ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[5]||(g[5]=D=>d.startTime=D),type:"number",min:"0",step:"0.1",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,d.startTime,void 0,{number:!0}]])]),e.createElementVNode("div",null,[g[23]||(g[23]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Duration (seconds) ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[6]||(g[6]=D=>d.duration=D),type:"number",min:"0.1",step:"0.1",placeholder:"Auto",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,d.duration,void 0,{number:!0}]])])]),e.createElementVNode("div",Q_,[e.createElementVNode("div",null,[g[24]||(g[24]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Fade In (seconds) ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[7]||(g[7]=D=>d.fadeIn=D),type:"number",min:"0",max:"10",step:"0.1",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,d.fadeIn,void 0,{number:!0}]])]),e.createElementVNode("div",null,[g[25]||(g[25]=e.createElementVNode("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Fade Out (seconds) ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[8]||(g[8]=D=>d.fadeOut=D),type:"number",min:"0",max:"10",step:"0.1",class:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"},null,512),[[e.vModelText,d.fadeOut,void 0,{number:!0}]])])]),e.createElementVNode("div",eE,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[9]||(g[9]=D=>d.loop=D),type:"checkbox",id:"loop-checkbox",class:"mr-2 rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-blue-500"},null,512),[[e.vModelCheckbox,d.loop]]),g[26]||(g[26]=e.createElementVNode("label",{for:"loop-checkbox",class:"text-sm text-gray-700 dark:text-gray-300"}," Loop audio track ",-1))])]),e.createElementVNode("div",tE,[e.createElementVNode("button",{onClick:p,class:"px-4 py-2 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors"}," Cancel "),e.createElementVNode("button",{onClick:f,disabled:!u.value,class:e.normalizeClass(["px-4 py-2 rounded-lg transition-colors",u.value?"bg-green-600 text-white hover:bg-green-700":"bg-gray-300 dark:bg-gray-600 text-gray-500 dark:text-gray-400 cursor-not-allowed"])},e.toDisplayString(r.value?"Save":"Add"),11,aE)])])])):e.createCommentVNode("",!0)]))}}),Js=Ie(nE,[["__scopeId","data-v-593719ac"]]);function xt(a,n={},...t){const o=document.createElement(a);for(const[i,r]of Object.entries(n))r!=null&&(i==="className"?o.className=r:i==="style"&&typeof r=="object"?Object.assign(o.style,r):i.startsWith("on")&&typeof r=="function"?o.addEventListener(i.slice(2).toLowerCase(),r):i==="dataset"&&typeof r=="object"?Object.assign(o.dataset,r):o.setAttribute(i,r));for(const i of t)typeof i=="string"?o.appendChild(document.createTextNode(i)):i instanceof HTMLElement&&o.appendChild(i);return o}function Qu(a){return typeof a=="boolean"?a?"On":"Off":typeof a=="number"?Number.isInteger(a)?String(a):a.toFixed(2):String(a??"")}let ec=!1;function oE(){if(ec)return;ec=!0;const a=`
34
+ /* ── MobileVideoFilterPanel — global (not scoped) ── */
35
+ .mvfp {
36
+ display: flex;
37
+ flex-direction: column;
38
+ width: 100%;
39
+ position: relative;
40
+ background: var(--app-surface, var(--ion-background-color, #1a1a1a));
41
+ }
42
+
43
+ /* ── Horizontal scroll rows ── */
44
+ .mvfp-row {
45
+ display: flex;
46
+ gap: 8px;
47
+ padding: 8px 12px;
48
+ overflow-x: auto;
49
+ -webkit-overflow-scrolling: touch;
50
+ scrollbar-width: none;
51
+ flex-shrink: 0;
52
+ }
53
+ .mvfp-row::-webkit-scrollbar { display: none; }
54
+
55
+ /* ── Category chips ── */
56
+ .mvfp-cat {
57
+ display: flex;
58
+ align-items: center;
59
+ gap: 6px;
60
+ min-height: 36px;
61
+ padding: 8px 14px;
62
+ border-radius: 20px;
63
+ border: 1.5px solid var(--app-border, var(--ion-color-step-300, #444));
64
+ background: var(--app-surface-variant, var(--ion-color-step-50, #222));
65
+ color: var(--app-text, var(--ion-text-color, #eee));
66
+ font-size: 13px;
67
+ font-weight: 500;
68
+ white-space: nowrap;
69
+ cursor: pointer;
70
+ flex-shrink: 0;
71
+ transition: all 0.15s;
72
+ -webkit-tap-highlight-color: transparent;
73
+ }
74
+ .mvfp-cat.active {
75
+ background: var(--app-accent, var(--ion-color-primary, #3880ff));
76
+ border-color: var(--app-accent, var(--ion-color-primary, #3880ff));
77
+ color: #fff;
78
+ }
79
+
80
+ /* ── Filter cards ── */
81
+ .mvfp-filter {
82
+ display: flex;
83
+ flex-direction: column;
84
+ align-items: center;
85
+ justify-content: center;
86
+ min-width: 72px;
87
+ max-width: 100px;
88
+ min-height: 48px;
89
+ padding: 10px 12px;
90
+ border-radius: 12px;
91
+ border: 2px solid var(--app-border, var(--ion-color-step-300, #444));
92
+ background: var(--app-surface-variant, var(--ion-color-step-50, #222));
93
+ color: var(--app-text, var(--ion-text-color, #eee));
94
+ font-size: 12px;
95
+ text-align: center;
96
+ line-height: 1.3;
97
+ cursor: pointer;
98
+ flex-shrink: 0;
99
+ position: relative;
100
+ transition: all 0.15s;
101
+ -webkit-tap-highlight-color: transparent;
102
+ }
103
+ .mvfp-filter.active {
104
+ border-color: var(--app-success, var(--ion-color-success, #2dd36f));
105
+ }
106
+ .mvfp-filter.selected {
107
+ background: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.15);
108
+ border-color: var(--app-accent, var(--ion-color-primary, #3880ff));
109
+ }
110
+ .mvfp-filter .mvfp-check {
111
+ position: absolute;
112
+ top: -5px;
113
+ right: -5px;
114
+ width: 18px;
115
+ height: 18px;
116
+ border-radius: 50%;
117
+ background: var(--app-success, var(--ion-color-success, #2dd36f));
118
+ color: #fff;
119
+ display: flex;
120
+ align-items: center;
121
+ justify-content: center;
122
+ font-size: 11px;
123
+ cursor: pointer;
124
+ }
125
+
126
+ /* ── Active filter chips ── */
127
+ .mvfp-active-row {
128
+ display: flex;
129
+ gap: 6px;
130
+ padding: 6px 12px;
131
+ overflow-x: auto;
132
+ -webkit-overflow-scrolling: touch;
133
+ scrollbar-width: none;
134
+ flex-shrink: 0;
135
+ }
136
+ .mvfp-active-row::-webkit-scrollbar { display: none; }
137
+
138
+ .mvfp-achip {
139
+ display: flex;
140
+ align-items: center;
141
+ gap: 6px;
142
+ padding: 6px 10px 6px 12px;
143
+ background: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.12);
144
+ border: 1px solid var(--app-accent, var(--ion-color-primary, #3880ff));
145
+ border-radius: 20px;
146
+ white-space: nowrap;
147
+ flex-shrink: 0;
148
+ font-size: 12px;
149
+ color: var(--app-text, var(--ion-text-color, #eee));
150
+ cursor: pointer;
151
+ transition: all 0.15s;
152
+ }
153
+ .mvfp-achip.selected {
154
+ background: var(--app-accent, var(--ion-color-primary, #3880ff));
155
+ color: #fff;
156
+ }
157
+ .mvfp-achip-x {
158
+ width: 20px;
159
+ height: 20px;
160
+ border-radius: 50%;
161
+ border: 1.5px solid currentColor;
162
+ background: transparent;
163
+ color: inherit;
164
+ display: flex;
165
+ align-items: center;
166
+ justify-content: center;
167
+ cursor: pointer;
168
+ padding: 0;
169
+ opacity: 0.7;
170
+ flex-shrink: 0;
171
+ }
172
+ .mvfp-achip-x:hover, .mvfp-achip-x:active {
173
+ background: var(--ion-color-danger, #ef4444);
174
+ border-color: var(--ion-color-danger, #ef4444);
175
+ color: #fff;
176
+ opacity: 1;
177
+ }
178
+
179
+ .mvfp-placeholder {
180
+ font-size: 12px;
181
+ color: var(--app-text-secondary, var(--ion-color-medium, #888));
182
+ padding: 6px 12px;
183
+ }
184
+
185
+ /* ── Drawer ── */
186
+ .mvfp-drawer {
187
+ position: absolute;
188
+ bottom: 0;
189
+ left: 0;
190
+ right: 0;
191
+ background: var(--app-surface, var(--ion-background-color, #1a1a1a));
192
+ border-top: 1px solid var(--app-border, var(--ion-color-step-300, #444));
193
+ transform: translateY(100%);
194
+ z-index: 20;
195
+ display: flex;
196
+ flex-direction: column;
197
+ overflow: hidden;
198
+ border-radius: 14px 14px 0 0;
199
+ }
200
+ .mvfp-drawer-hdr {
201
+ display: flex;
202
+ justify-content: space-between;
203
+ align-items: center;
204
+ padding: 8px 14px;
205
+ border-bottom: 1px solid var(--app-border, var(--ion-color-step-200, #333));
206
+ flex-shrink: 0;
207
+ }
208
+ .mvfp-drawer-title {
209
+ font-weight: 600;
210
+ font-size: 14px;
211
+ color: var(--app-text, var(--ion-text-color, #eee));
212
+ }
213
+ .mvfp-drawer-actions {
214
+ display: flex;
215
+ align-items: center;
216
+ gap: 10px;
217
+ }
218
+ .mvfp-drawer-btn {
219
+ background: none;
220
+ border: none;
221
+ font-size: 13px;
222
+ font-weight: 500;
223
+ cursor: pointer;
224
+ padding: 4px 6px;
225
+ color: var(--app-accent, var(--ion-color-primary, #3880ff));
226
+ }
227
+ .mvfp-drawer-btn.danger {
228
+ color: var(--ion-color-danger, #ef4444);
229
+ }
230
+ .mvfp-drawer-close {
231
+ width: 28px;
232
+ height: 28px;
233
+ border: none;
234
+ border-radius: 50%;
235
+ background: var(--app-surface-sunken, var(--ion-color-step-100, #2a2a2a));
236
+ color: var(--app-text-secondary, var(--ion-color-medium, #888));
237
+ display: flex;
238
+ align-items: center;
239
+ justify-content: center;
240
+ cursor: pointer;
241
+ padding: 0;
242
+ }
243
+ .mvfp-drawer-body {
244
+ flex: 1 1 auto;
245
+ overflow-y: auto;
246
+ -webkit-overflow-scrolling: touch;
247
+ padding: 10px 14px 16px;
248
+ }
249
+
250
+ /* ── Drawer slider controls ── */
251
+ .mvfp-ctl {
252
+ margin-bottom: 12px;
253
+ }
254
+ .mvfp-ctl-label {
255
+ display: block;
256
+ font-size: 11px;
257
+ font-weight: 600;
258
+ color: var(--app-text-secondary, var(--ion-color-medium, #888));
259
+ text-transform: uppercase;
260
+ letter-spacing: 0.5px;
261
+ margin-bottom: 4px;
262
+ }
263
+ .mvfp-slider-row {
264
+ display: flex;
265
+ align-items: center;
266
+ gap: 10px;
267
+ }
268
+ .mvfp-range {
269
+ flex: 1;
270
+ height: 6px;
271
+ -webkit-appearance: none;
272
+ appearance: none;
273
+ background: var(--app-border, var(--ion-color-step-200, #333));
274
+ border-radius: 3px;
275
+ outline: none;
276
+ }
277
+ .mvfp-range::-webkit-slider-thumb {
278
+ -webkit-appearance: none;
279
+ width: 22px;
280
+ height: 22px;
281
+ border-radius: 50%;
282
+ background: var(--app-accent, var(--ion-color-primary, #3880ff));
283
+ cursor: pointer;
284
+ border: 2px solid #fff;
285
+ box-shadow: 0 1px 4px rgba(0,0,0,0.3);
286
+ }
287
+ .mvfp-range-val {
288
+ min-width: 3rem;
289
+ text-align: right;
290
+ font-size: 12px;
291
+ font-weight: 500;
292
+ color: var(--app-text-secondary, var(--ion-color-medium, #888));
293
+ }
294
+ .mvfp-toggle-row {
295
+ display: flex;
296
+ align-items: center;
297
+ justify-content: space-between;
298
+ gap: 10px;
299
+ }
300
+ .mvfp-color-row {
301
+ display: flex;
302
+ align-items: center;
303
+ justify-content: space-between;
304
+ gap: 10px;
305
+ }
306
+ .mvfp-color-input {
307
+ width: 36px;
308
+ height: 36px;
309
+ border: 1px solid var(--app-border, var(--ion-color-step-300, #444));
310
+ border-radius: 8px;
311
+ padding: 2px;
312
+ cursor: pointer;
313
+ background: transparent;
314
+ }
315
+ .mvfp-select-row {
316
+ display: flex;
317
+ align-items: center;
318
+ justify-content: space-between;
319
+ gap: 10px;
320
+ }
321
+ .mvfp-select {
322
+ padding: 6px 10px;
323
+ border: 1px solid var(--app-border, var(--ion-color-step-300, #444));
324
+ border-radius: 8px;
325
+ background: var(--app-surface, var(--ion-background-color, #1a1a1a));
326
+ color: var(--app-text, var(--ion-text-color, #eee));
327
+ font-size: 13px;
328
+ }
329
+ .mvfp-no-params {
330
+ text-align: center;
331
+ color: var(--app-text-secondary, var(--ion-color-medium, #888));
332
+ font-style: italic;
333
+ font-size: 13px;
334
+ padding: 12px 0;
335
+ }
336
+ `,n=document.createElement("style");n.textContent=a,document.head.appendChild(n)}class iE{constructor({filters:n=[],callbacks:t={}}){oE(),this._filters=n,this._cb=t,this._selectedCategory="all",this._selectedFilterId=null,this._activeFilters=new Map,this._drawerOpen=!1,this._drawerFilterId=null,this._root=null,this._catRow=null,this._filterRow=null,this._activeRow=null,this._drawer=null,this._drawerTitle=null,this._drawerBody=null}mount(n){return this._root=xt("div",{className:"mvfp"}),this._catRow=xt("div",{className:"mvfp-row"}),this._root.appendChild(this._catRow),this._filterRow=xt("div",{className:"mvfp-row"}),this._root.appendChild(this._filterRow),this._activeRow=xt("div",{className:"mvfp-active-row"}),this._root.appendChild(this._activeRow),this._buildDrawer(),this._root.appendChild(this._drawer),this._renderCategories(),this._renderFilters(),this._renderActiveChips(),n.appendChild(this._root),this._root}setFilters(n){this._filters=n,this._renderCategories(),this._renderFilters()}setActiveFilters(n){this._activeFilters.clear(),n&&n.forEach((t,o)=>{this._activeFilters.set(o,t)}),this._renderFilters(),this._renderActiveChips(),this._drawerOpen&&this._drawerFilterId&&!this._activeFilters.has(this._drawerFilterId)&&this.closeDrawer()}destroy(){var n;this.closeDrawer(),(n=this._root)==null||n.remove(),this._root=null}_getCategories(){const n=new Map;n.set("all","All");for(const t of this._filters){const o=t.category||"other";n.has(o)||n.set(o,o.charAt(0).toUpperCase()+o.slice(1))}return n}_renderCategories(){this._catRow.innerHTML="",this._getCategories().forEach((t,o)=>{const i=xt("div",{className:`mvfp-cat${this._selectedCategory===o?" active":""}`,onClick:()=>{this._selectedCategory=o,this._renderCategories(),this._renderFilters()}},t);this._catRow.appendChild(i)})}_currentFilters(){return this._selectedCategory==="all"?this._filters:this._filters.filter(n=>(n.category||"other")===this._selectedCategory)}_renderFilters(){this._filterRow.innerHTML="";for(const n of this._currentFilters()){const t=this._activeFilters.has(n.id),o=this._selectedFilterId===n.id,i=xt("div",{className:`mvfp-filter${t?" active":""}${o?" selected":""}`,onClick:()=>this._selectFilter(n)});if(t){const r=xt("div",{className:"mvfp-check",onClick:l=>{l.stopPropagation(),this._removeFilter(n.id)}});r.innerHTML="✓",i.appendChild(r)}i.appendChild(xt("span",{},n.name)),this._filterRow.appendChild(i)}}_selectFilter(n){var t,o,i,r;this._selectedFilterId=n.id,this._activeFilters.has(n.id)||(o=(t=this._cb).onApplyFilter)==null||o.call(t,n),(r=(i=this._cb).onPreviewFilter)==null||r.call(i,n),this._renderFilters(),n.params&&n.params.length>0&&this.openDrawer(n.id)}_removeFilter(n){var t,o;(o=(t=this._cb).onRemoveFilter)==null||o.call(t,n),this._selectedFilterId===n&&(this._selectedFilterId=null)}_renderActiveChips(){if(this._activeRow.innerHTML="",this._activeFilters.size===0){this._activeRow.appendChild(xt("div",{className:"mvfp-placeholder"},"No active filters"));return}this._activeFilters.forEach((n,t)=>{const o=this._filters.find(d=>d.id===t);if(!o)return;const i=this._drawerOpen&&this._drawerFilterId===t,r=xt("div",{className:`mvfp-achip${i?" selected":""}`}),l=xt("span",{style:{cursor:"pointer"},onClick:()=>{this._selectedFilterId=t,this._renderFilters(),o.params&&o.params.length>0&&this.openDrawer(t)}},o.name),s=xt("button",{className:"mvfp-achip-x","aria-label":`Remove ${o.name}`,onClick:d=>{d.stopPropagation(),this._removeFilter(t)}});s.innerHTML='<svg width="10" height="10" viewBox="0 0 12 12"><path d="M3 3l6 6M9 3l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',r.appendChild(l),r.appendChild(s),this._activeRow.appendChild(r)})}_buildDrawer(){this._drawer=xt("div",{className:"mvfp-drawer"});const n=xt("div",{className:"mvfp-drawer-hdr"});this._drawerTitle=xt("span",{className:"mvfp-drawer-title"},"Filter");const t=xt("div",{className:"mvfp-drawer-actions"});t.appendChild(xt("button",{className:"mvfp-drawer-btn",onClick:()=>this._resetDrawerFilter()},"Reset")),t.appendChild(xt("button",{className:"mvfp-drawer-btn danger",onClick:()=>{this._drawerFilterId&&(this._removeFilter(this._drawerFilterId),this.closeDrawer())}},"Remove"));const o=xt("button",{className:"mvfp-drawer-close","aria-label":"Close",onClick:()=>this.closeDrawer()});o.innerHTML='<svg width="14" height="14" viewBox="0 0 14 14"><path d="M3 3l8 8M11 3l-8 8" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',t.appendChild(o),n.appendChild(this._drawerTitle),n.appendChild(t),this._drawer.appendChild(n),this._drawerBody=xt("div",{className:"mvfp-drawer-body"}),this._drawer.appendChild(this._drawerBody)}openDrawer(n){const t=this._filters.find(o=>o.id===n);if(t&&(this._drawerFilterId=n,this._drawerTitle.textContent=t.name,this._renderDrawerControls(t),this._renderActiveChips(),!this._drawerOpen)){this._drawerOpen=!0;const o=this._root.offsetHeight;o>0&&(this._drawer.style.height=o+"px"),this._drawer.style.transition="none",this._drawer.style.transform="translateY(100%)",this._drawer.offsetHeight,this._drawer.style.transition="transform 0.25s cubic-bezier(0.33, 1, 0.68, 1)",this._drawer.style.transform="translateY(0)"}}closeDrawer(){this._drawerOpen&&(this._drawerOpen=!1,this._drawerFilterId=null,this._drawer.style.transition="transform 0.2s cubic-bezier(0.32, 0, 0.67, 0)",this._drawer.style.transform="translateY(100%)",this._renderActiveChips())}_renderDrawerControls(n){if(this._drawerBody.innerHTML="",!n.params||n.params.length===0){this._drawerBody.appendChild(xt("div",{className:"mvfp-no-params"},"No adjustable parameters"));return}const t=this._activeFilters.get(n.id),o=(t==null?void 0:t.params)||{};for(const i of n.params){const r=o[i.id]??i.default,l=xt("div",{className:"mvfp-ctl"}),s=xt("label",{className:"mvfp-ctl-label"},i.label||i.id);l.appendChild(s);const d=i.type||"slider";if(d==="slider"||d==="range"){const u=xt("div",{className:"mvfp-slider-row"}),c=xt("span",{className:"mvfp-range-val"},Qu(r)),m=xt("input",{type:"range",className:"mvfp-range",min:String(i.min??0),max:String(i.max??1),step:String(i.step??.01),value:String(typeof r=="number"?r:i.default??0),onInput:p=>{var v,h;const f=parseFloat(p.target.value);c.textContent=Qu(f),(h=(v=this._cb).onUpdateParam)==null||h.call(v,n.id,i.id,f)}});u.appendChild(m),u.appendChild(c),l.appendChild(u)}else if(d==="toggle"||d==="checkbox"){const u=xt("div",{className:"mvfp-toggle-row"}),c=xt("input",{type:"checkbox",checked:r?"checked":void 0,onChange:m=>{var p,f;return(f=(p=this._cb).onUpdateParam)==null?void 0:f.call(p,n.id,i.id,m.target.checked)}});u.appendChild(c),l.appendChild(u)}else if(d==="color"){const u=xt("div",{className:"mvfp-color-row"}),c=xt("input",{type:"color",className:"mvfp-color-input",value:typeof r=="string"?r:"#000000",onInput:m=>{var p,f;return(f=(p=this._cb).onUpdateParam)==null?void 0:f.call(p,n.id,i.id,m.target.value)}});u.appendChild(c),l.appendChild(u)}else if(d==="select"||d==="dropdown"){const u=xt("div",{className:"mvfp-select-row"}),c=xt("select",{className:"mvfp-select",onChange:m=>{var p,f;return(f=(p=this._cb).onUpdateParam)==null?void 0:f.call(p,n.id,i.id,m.target.value)}});for(const m of i.options||[]){const p=xt("option",{value:m.value},m.label||String(m.value));m.value===r&&(p.selected=!0),c.appendChild(p)}u.appendChild(c),l.appendChild(u)}this._drawerBody.appendChild(l)}}_resetDrawerFilter(){var t,o;if(!this._drawerFilterId)return;const n=this._filters.find(i=>i.id===this._drawerFilterId);if(n!=null&&n.params){for(const i of n.params)(o=(t=this._cb).onUpdateParam)==null||o.call(t,this._drawerFilterId,i.id,i.default);this._renderDrawerControls(n)}}}const rE=[200,500,1e3];function lE(a){return{"360p":[640,360],"480p":[854,480],"720p":[1280,720],"1080p":[1920,1080],"1440p":[2560,1440],"2160p":[3840,2160]}[a??""]??[1920,1080]}function tc(a){if(!a)return null;const n=a.duration;if(typeof n=="number"&&Number.isFinite(n)&&n>0)return n;if(n&&typeof n=="object"&&"value"in n){const t=n.value;if(typeof t=="number"&&Number.isFinite(t)&&t>0)return t}return null}function sE(a){return new Promise(n=>{window.setTimeout(n,a)})}async function ac(){return await Promise.resolve().then(()=>require("./PixiFrameExporter-CLC3hJuN.cjs"))}function nc(a,n=0){var r;const t=a.timeline[0],o=t?Math.max(0,t.sourceIn):0,i=(t==null?void 0:t.sourceOut)??((r=a.source)==null?void 0:r.duration)??n;return Math.max(0,i-o)}function rp(a){let n=null;return{canExportClientSide:async()=>{try{const{isWebCodecsSupported:i}=await ac();return i()}catch{return!1}},renderRecipeWithPixi:async(i,r,l)=>{var f,v,h,k;const s=i.timeline[0],d=s?Math.max(0,s.sourceIn):0,u=s?s.sourceOut:void 0,[c,m]=lE((r==null?void 0:r.quality)??((f=i.output)==null?void 0:f.quality)),p=((v=i.output)==null?void 0:v.fps)||30;a.setPlaying(!1),a.forcePixiPreview.value=!0,await e.nextTick();try{let E=!1;for(const L of rE){await sE(L);const j=a.getPreviewRef();if(!(!j||typeof j.captureFrameAt!="function")){if(typeof j.ensureReadyForCapture=="function"){if(E=await j.ensureReadyForCapture(),E)break;continue}E=!0;break}}const w=a.getPreviewRef();if(!w||typeof w.captureFrameAt!="function")throw new Error("PIXI preview not available for export. Ensure the preview is mounted.");if(!E)throw new Error("PIXI preview not ready for frame capture after retries. The video may still be loading.");const{exportWithPixiFrames:b,isWebCodecsSupported:g}=await ac();if(!g())throw new Error("WebCodecs is not supported in this browser. Export requires Chrome 94+ or equivalent.");n=new AbortController;const D={width:c,height:m,fps:p,trimStart:d,signal:n.signal};u!==void 0&&(D.trimEnd=u),l&&(D.onProgress=l);const T=a.getSourceUrl();T!==""&&(D.sourceUrl=T);const F=tc(w)??((h=i.source)==null?void 0:h.duration)??u??0,V=await b({captureFrameAt:L=>{var j;return((j=w.captureFrameAt)==null?void 0:j.call(w,L))??Promise.resolve(null)},duration:{value:F}},D),I=new File([V],`edited-video-${Date.now()}.mp4`,{type:"video/mp4"}),$=tc(w),C=((k=i.source)==null?void 0:k.duration)??0,_=Math.max(0,(u??$??C)-d);return{file:I,recipe:i,meta:{duration:_,width:c,height:m,format:"mp4",sizeBytes:I.size,size_bytes:I.size}}}finally{a.forcePixiPreview.value=!1,n=null}},cancelClientExport:()=>{n==null||n.abort(),n=null},resetClientExport:()=>{n=null}}}const si="default-video-track",io="default-media-source";function lp(a){var r,l;const n=uE(a),t=cE(a),o=mE(a.timeline,((r=t[0])==null?void 0:r.id)??si,((l=n[0])==null?void 0:l.id)??io),i={version:a.version,source:{...a.source},mediaSources:n,tracks:pE(t,o),clips:o,markers:a.markers?a.markers.map(s=>({...s})):[],transitions:a.transitions?a.transitions.map(up):[],filters:a.filters.map(s=>({...s,params:{...s.params}})),audio:{...a.audio},output:{...a.output}};return typeof a.duration=="number"&&(i.duration=a.duration),a.snapSettings&&(i.snapSettings={...a.snapSettings}),a.textOverlays&&(i.textOverlays=[...a.textOverlays]),a.captionTracks&&(i.captionTracks=a.captionTracks.map(cp)),a.visualLayers&&(i.visualLayers=a.visualLayers.map(mp)),a.audioTracks&&(i.audioTracks=[...a.audioTracks]),a.posterFrame&&(i.posterFrame=a.posterFrame),a.metadata&&(i.metadata={...a.metadata}),i}function dE(a){const n={version:"1.0",source:{...a.source},timeline:a.clips.map(t=>({...t})),mediaSources:a.mediaSources.map(sp),tracks:a.tracks.map(dp),markers:a.markers.map(t=>({...t})),transitions:a.transitions.map(up),filters:a.filters.map(t=>({...t,params:{...t.params}})),audio:{...a.audio},output:{...a.output}};return typeof a.duration=="number"&&(n.duration=a.duration),a.snapSettings&&(n.snapSettings={...a.snapSettings}),a.textOverlays&&(n.textOverlays=[...a.textOverlays]),a.captionTracks&&(n.captionTracks=a.captionTracks.map(cp)),a.visualLayers&&(n.visualLayers=a.visualLayers.map(mp)),a.audioTracks&&(n.audioTracks=[...a.audioTracks]),a.posterFrame&&(n.posterFrame=a.posterFrame),a.metadata&&(n.metadata={...a.metadata}),n}function uE(a){var t,o;if(a.mediaSources&&a.mediaSources.length>0)return a.mediaSources.map(sp);const n={id:((t=a.timeline.find(i=>i.sourceRefId))==null?void 0:t.sourceRefId)??io,type:"media",mediaUuid:a.source.media_uuid,duration:a.source.duration,width:a.source.original_width,height:a.source.original_height};return(o=a.metadata)!=null&&o.source_url&&(n.url=a.metadata.source_url),[n]}function cE(a){var n;return a.tracks&&a.tracks.length>0?a.tracks.map(dp):[{id:((n=a.timeline.find(t=>t.trackId))==null?void 0:n.trackId)??si,type:"video",name:"Video",order:0}]}function mE(a,n,t){return a.map(o=>{const i={...o,trackId:o.trackId??n,sourceRefId:o.sourceRefId??t};return o.filters&&(i.filters=o.filters.map(r=>({...r,params:{...r.params}}))),o.transform&&(i.transform={...o.transform}),o.keyframes&&(i.keyframes=o.keyframes.map(r=>({...r}))),i})}function pE(a,n){return a.map(t=>{const o=n.filter(i=>i.trackId===t.id).map(i=>i.id);return{...t,clipIds:o}})}function sp(a){const n={...a};return a.metadata&&(n.metadata={...a.metadata}),n}function dp(a){const n={...a};return a.clipIds&&(n.clipIds=[...a.clipIds]),n}function up(a){const n={...a};return a.params&&(n.params={...a.params}),n}function cp(a){return{...a,segments:a.segments.map(t=>{const o={...t};return t.words&&(o.words=t.words.map(i=>({...i}))),o})}}function mp(a){return{...a,transform:{...a.transform,position:{...a.transform.position},anchor:{...a.transform.anchor},scale:{...a.transform.scale}},keyframes:a.keyframes?a.keyframes.map(n=>({...n})):void 0}}const pp="video-project-draft-snapshot:v1",qs="mediables:video-project-drafts",fE=(a,n={})=>{var p,f;const t=On(n.now)??Date.now(),o=On(n.createdAt)??t,i=On(n.updatedAt)??t,r=CE(a),l={id:Qa(n.id)??BE(i),payloadKind:r,createdAt:new Date(o).toISOString(),updatedAt:new Date(i).toISOString(),deviceKind:n.deviceKind??"unknown"},s=Qa(n.projectId),d=Qa(n.sourceMediaUuid)??Qa(a.source.media_uuid),u=Ys(n.durationSeconds)??VE(a),c=Qa(n.editorVersion)??Qa((p=a.metadata)==null?void 0:p.editor_version),m=Qa(n.title)??Qa((f=a.metadata)==null?void 0:f.title);return s!==null&&(l.projectId=s),d!==null&&(l.sourceMediaUuid=d),u!==null&&(l.durationSeconds=u),c!==null&&(l.editorVersion=c),m!==null&&(l.title=m),n.saveReason!==void 0&&(l.saveReason=n.saveReason),{schemaVersion:pp,metadata:l,payload:a}},fp=(a,n=qs)=>{const t=Qa(n)??qs,o=sc(a.metadata.projectId??"unsaved-project"),i=sc(a.metadata.id);return`${t}:${o}:${i}`},vE=a=>JSON.stringify(a),hE=a=>{if(typeof a!="string"||a.trim().length===0)return null;try{const n=JSON.parse(a);return EE(n)?n:null}catch{return null}},gE=a=>{const n=[];for(const t of a){const o=Qa(t.key),i=hE(t.value);o===null||i===null||n.push({key:o,snapshot:i})}return Wi(n)},bE=(a,n)=>{const t=TE(n.maxCount),o=On(n.now)??Date.now(),i=yp(n.maxAgeMs),r=[],l=[];let s=0;for(const d of Wi(a)){if(!gp(d,n.projectId)){r.push(d);continue}if(bp(d.snapshot,o,i)||s>=t){l.push(d);continue}r.push(d),s+=1}return{retained:Wi(r),removed:Wi(l)}},yE=(a,n={})=>{const t={key:fp(a),snapshot:a};if(!gp(t,n.projectId))return!1;const o=On(n.now)??Date.now(),i=yp(n.maxAgeMs);if(bp(a,o,i))return!1;const r=n.savedAt===null?null:On(n.savedAt);return r===null?!0:al(a)>r},wE=(a,n={})=>Wi(a).filter(t=>yE(t.snapshot,n)),kE=(a,n,t={})=>{const o=wE(a,t);if(n==="mobile"){const i=o[0]??null;return i===null?[]:[i]}return o},_E=async(a,n,t=fp(n))=>(await a.setItem(t,vE(n)),{key:t,snapshot:n}),oc=async(a,n=qs)=>{const t=await a.listKeys(n),o=[];for(const i of t)o.push({key:i,value:await a.getItem(i)});return gE(o)},ic=async(a,n)=>{for(const t of n)await a.removeItem(t.key)},EE=a=>!zn(a)||a.schemaVersion!==pp||!SE(a.metadata)?!1:a.metadata.payloadKind==="project"?vp(a.payload):xE(a.payload),SE=a=>zn(a)?Ad(a.id)&&$E(a.payloadKind)&&lc(a.createdAt)&&lc(a.updatedAt)&&IE(a.deviceKind)&&Er(a.projectId)&&Er(a.sourceMediaUuid)&&ME(a.durationSeconds)&&Er(a.editorVersion)&&Er(a.title)&&DE(a.saveReason):!1,xE=a=>zn(a)?a.version==="1.0"&&hp(a.source)&&Array.isArray(a.timeline)&&Array.isArray(a.filters)&&zn(a.audio)&&zn(a.output):!1,vp=a=>zn(a)?a.version==="1.0"&&hp(a.source)&&Array.isArray(a.mediaSources)&&Array.isArray(a.tracks)&&Array.isArray(a.clips)&&Array.isArray(a.markers)&&Array.isArray(a.filters)&&zn(a.audio)&&zn(a.output):!1,hp=a=>zn(a)?Ad(a.media_uuid)&&Zi(a.duration)&&Zi(a.original_width)&&Zi(a.original_height):!1,CE=a=>vp(a)?"project":"recipe",VE=a=>Ys(a.duration)??Ys(a.source.duration),gp=(a,n)=>{const t=Qa(n);return t===null?!0:a.snapshot.metadata.projectId===t},bp=(a,n,t)=>t===null?!1:n-al(a)>t,Wi=a=>[...a].sort(NE),NE=(a,n)=>{const t=al(n.snapshot)-al(a.snapshot);if(t!==0)return t;const o=rc(n.snapshot)-rc(a.snapshot);return o!==0?o:a.snapshot.metadata.id.localeCompare(n.snapshot.metadata.id)},al=a=>On(a.metadata.updatedAt)??0,rc=a=>On(a.metadata.createdAt)??0,TE=a=>!Number.isFinite(a)||a<0?0:Math.floor(a),yp=a=>a===void 0||!Number.isFinite(a)||a<0?null:Math.floor(a),On=a=>{if(a==null)return null;if(a instanceof Date)return Number.isFinite(a.getTime())?a.getTime():null;if(typeof a=="number")return Number.isFinite(a)?a:null;const n=a.trim();if(n.length===0)return null;const t=Date.parse(n);return Number.isFinite(t)?t:null},lc=a=>typeof a=="string"&&On(a)!==null,BE=a=>{var t;const n=typeof((t=globalThis.crypto)==null?void 0:t.randomUUID)=="function"?globalThis.crypto.randomUUID():Math.random().toString(36).slice(2,12);return`draft-${a}-${n}`},sc=a=>encodeURIComponent(a.trim()),Qa=a=>{if(typeof a!="string")return null;const n=a.trim();return n.length>0?n:null},Ad=a=>Qa(a)!==null,Er=a=>a===void 0||Ad(a),Ys=a=>{if(!Zi(a))return null;const n=Number(a.toFixed(6));return Object.is(n,-0)?0:n},Zi=a=>typeof a=="number"&&Number.isFinite(a)&&a>=0,ME=a=>a===void 0||Zi(a),$E=a=>a==="recipe"||a==="project",IE=a=>a==="desktop"||a==="mobile"||a==="tablet"||a==="unknown",DE=a=>a===void 0||a==="autosave"||a==="manual"||a==="before-export"||a==="before-close",zn=a=>typeof a=="object"&&a!==null&&!Array.isArray(a),FE=1,AE="master",Yi=-60,Qs=12,Rd=0,ro=-90,nl=6,RE=4,wp=8;function kp(){return{mobile:{canAdjustTrackFaders:!0,canAdjustMasterFader:!0,canMuteTracks:!0,canSoloTracks:!0,canAdjustPan:!1,canViewMeters:!0,canEditEffectSlots:!1,canEditRouting:!1,canEditAutomation:!1,meterMode:"basic",maxEffectSlots:0},desktop:{canAdjustTrackFaders:!0,canAdjustMasterFader:!0,canMuteTracks:!0,canSoloTracks:!0,canAdjustPan:!0,canViewMeters:!0,canEditEffectSlots:!0,canEditRouting:!0,canEditAutomation:!0,meterMode:"full",maxEffectSlots:wp}}}function LE(a,n=kp()){return td(n[a])}function _p(a){return Number.isNaN(a)?Rd:a<=0||a===Number.NEGATIVE_INFINITY?Yi:Qi(20*Math.log10(a))}function ed(a){const n=Qi(a);return n<=Yi?0:so(Math.pow(10,n/20),6)}function Qi(a){return Number.isNaN(a)?Rd:a===Number.NEGATIVE_INFINITY?Yi:a===Number.POSITIVE_INFINITY?Qs:so(cr(a,Yi,Qs),3)}function Ep(a){return Number.isFinite(a)?so(cr(a,-1,1),3):0}function PE(a,n=!1){const t=a.some(o=>o.controls.solo);return a.map(o=>{const i=o.controls.muted,r=t&&!o.controls.solo,l=n||i||r,s=l?0:o.controls.fader.linearGain;return{trackId:o.id,soloed:o.controls.solo,mutedByTrack:i,mutedBySolo:r,mutedByMaster:n,effectivelyMuted:l,audible:!l,effectiveGainLinear:s}})}function UE(a,n={}){const t=qE(n.effectSlotCount),o=new Set;return{schemaVersion:FE,capabilities:n.capabilities?tS(n.capabilities):kp(),tracks:a.map((i,r)=>zE(i,r,t,o)),master:jE(n.master,t)}}function Sp(a){const n=Qi(a);return{valueDb:n,minDb:Yi,maxDb:Qs,unityDb:Rd,linearGain:ed(n)}}function OE(a,n="constant-power"){return{value:Ep(a),mode:n}}function xp(a=ro,n=ro,t=a){const o=ds(a),i=ds(n),r=ds(t);return{peakDb:o,rmsDb:i,peakHoldDb:r,clipping:o>=0||r>=0}}function Cp(a){const n=Tp(a);return{id:`empty-effect-slot-${n}`,index:n,kind:"empty",label:"Empty",enabled:!1,bypassed:!0,wetMix:0,parameters:{}}}function zE(a,n,t,o){const i=Np(a.id),l={id:JE(i??`legacy-audio-track-${n+1}`,o),kind:"legacy-url",name:GE(a.name,n),order:n,source:WE(a.source),controls:{fader:Sp(a.faderDb??_p(a.volume??1)),pan:OE(a.pan??0),muted:a.muted??!1,solo:a.solo??!1,meter:xp(a.peakDb,a.rmsDb,a.peakHoldDb)},timeline:ZE(a),effectSlots:Vp(a.effectSlots,t)};return i!==void 0&&(l.legacyTrackId=i),l}function jE(a,n){return{id:AE,name:XE(a==null?void 0:a.name),fader:Sp((a==null?void 0:a.faderDb)??_p((a==null?void 0:a.volume)??1)),muted:(a==null?void 0:a.muted)??!1,meter:xp(a==null?void 0:a.peakDb,a==null?void 0:a.rmsDb,a==null?void 0:a.peakHoldDb),effectSlots:Vp(a==null?void 0:a.effectSlots,n)}}function WE(a){const n=a.trim();return n===""?{type:"missing"}:{type:"url",url:n}}function ZE(a){const n={startTime:QE(a.startTime??0),loop:a.loop??!1},t=YE(a.duration);t!==void 0&&(n.duration=t);const o=dc(a.fadeIn);o!==void 0&&(n.fadeIn=o);const i=dc(a.fadeOut);return i!==void 0&&(n.fadeOut=i),n}function Vp(a,n){const t=new Map;for(const o of a??[]){const i=HE(o,n);t.set(i.index,i)}return Array.from({length:n},(o,i)=>t.get(i)??Cp(i))}function HE(a,n){const t=Tp(a.index),o=n>0?Math.min(t,n-1):0,i=a.kind;return i==="empty"?Cp(o):{id:Np(a.id)??`${i}-effect-slot-${o}`,index:o,kind:i,label:KE(a.label,i),enabled:a.enabled,bypassed:a.bypassed,wetMix:eS(a.wetMix),parameters:{...a.parameters}}}function GE(a,n){const t=a==null?void 0:a.trim();return t&&t!==""?t:`Audio ${n+1}`}function XE(a){const n=a==null?void 0:a.trim();return n&&n!==""?n:"Master"}function KE(a,n){const t=a.trim();return t!==""?t:n}function JE(a,n){if(!n.has(a))return n.add(a),a;let t=2,o=`${a}-${t}`;for(;n.has(o);)t+=1,o=`${a}-${t}`;return n.add(o),o}function Np(a){const n=a==null?void 0:a.trim();if(!(!n||n===""))return n}function qE(a){return a===void 0||!Number.isFinite(a)?RE:Math.trunc(cr(a,0,wp))}function Tp(a){return!Number.isFinite(a)||a<0?0:Math.trunc(a)}function YE(a){if(!(a===void 0||!Number.isFinite(a)||a<=0))return so(a,3)}function dc(a){if(!(a===void 0||!Number.isFinite(a)||a<0))return so(a,3)}function QE(a){return!Number.isFinite(a)||a<0?0:so(a,3)}function eS(a){return Number.isFinite(a)?so(cr(a,0,1),3):1}function ds(a){return Number.isNaN(a)||a===Number.NEGATIVE_INFINITY?ro:a===Number.POSITIVE_INFINITY?nl:so(cr(a,ro,nl),3)}function tS(a){return{mobile:td(a.mobile),desktop:td(a.desktop)}}function td(a){return{...a}}function cr(a,n,t){return Math.min(t,Math.max(n,a))}function so(a,n){const t=10**n;return Math.round(a*t)/t}const aS=/^(\d{2,}:[0-5]\d:[0-5]\d,\d{3})\s+-->\s+(\d{2,}:[0-5]\d:[0-5]\d,\d{3})$/,nS=/^(\d{2,}):([0-5]\d):([0-5]\d),(\d{3})$/,oS="srt-cue";class lo extends Error{constructor(n,t,o={}){super(t),this.name="CaptionSrtError",this.code=n,this.context=o}}function iS(a,n={}){var l,s;const t=rS(n.idPrefix),o=a.replace(/^\uFEFF/,"").replace(/\r\n?/g,`
337
+ `).split(`
338
+ `),i=[];let r=0;for(;r<o.length;){for(;r<o.length&&fc(o[r]);)r+=1;if(r>=o.length)break;const d=r+1,u=lS(((l=o[r])==null?void 0:l.trim())??"",d);if(r+=1,r>=o.length)throw new lo("missing-timing",`Cue ${u} is missing its timing line.`,{cueIndex:i.length,cueNumber:u,lineNumber:d});const c=r+1,m=sS(((s=o[r])==null?void 0:s.trim())??"",u,c);r+=1;const p=[];for(;r<o.length&&!fc(o[r]);)p.push(o[r]??""),r+=1;i.push({cueNumber:u,id:`${t}-${i.length+1}`,startTime:m.startTime,endTime:m.endTime,text:p.join(`
339
+ `)})}return Bp(i),i}function uc(a){return Bp(a),a.length===0?"":`${a.map((n,t)=>uS(n,t+1)).join(`
340
+
341
+ `)}
342
+ `}function Bp(a){const n=a.map((t,o)=>{const i=pc(t,o),r=ad(t.startTime,"startTime",i),l=ad(t.endTime,"endTime",i);if(l<=r)throw new lo("invalid-duration",`Caption cue "${t.id}" must end after it starts.`,i);return{cue:t,cueIndex:o,startMilliseconds:r,endMilliseconds:l}}).sort((t,o)=>t.startMilliseconds-o.startMilliseconds||t.cueIndex-o.cueIndex);for(let t=1;t<n.length;t+=1){const o=n[t-1],i=n[t];if(!(o===void 0||i===void 0)&&i.startMilliseconds<o.endMilliseconds)throw new lo("overlapping-cues",`Caption cue "${i.cue.id}" overlaps cue "${o.cue.id}".`,pc(i.cue,i.cueIndex))}}function cc(a){const n=ad(a,"timestamp",{}),t=Math.floor(n/36e5),o=Math.floor(n%36e5/6e4),i=Math.floor(n%6e4/1e3),r=n%1e3;return[t.toString().padStart(2,"0"),o.toString().padStart(2,"0"),i.toString().padStart(2,"0")].join(":")+`,${r.toString().padStart(3,"0")}`}function rS(a){return a===void 0||a.trim()===""?oS:a.trim()}function lS(a,n){if(!/^[1-9]\d*$/.test(a))throw new lo("invalid-cue-number",`Invalid SRT cue number at line ${n}.`,{lineNumber:n});return Number.parseInt(a,10)}function sS(a,n,t){const o=aS.exec(a),i=o==null?void 0:o[1],r=o==null?void 0:o[2];if(i===void 0||r===void 0)throw new lo("invalid-timing",`Invalid SRT timing line for cue ${n} at line ${t}.`,{cueNumber:n,lineNumber:t});return{startTime:mc(i,n,t),endTime:mc(r,n,t)}}function mc(a,n,t){const o=nS.exec(a),i=o==null?void 0:o[1],r=o==null?void 0:o[2],l=o==null?void 0:o[3],s=o==null?void 0:o[4];if(i===void 0||r===void 0||l===void 0||s===void 0)throw new lo("invalid-time",`Invalid SRT timestamp for cue ${n} at line ${t}.`,{cueNumber:n,lineNumber:t});const d=Number.parseInt(i,10),u=Number.parseInt(r,10),c=Number.parseInt(l,10),m=Number.parseInt(s,10);return d*60*60+u*60+c+m/1e3}function ad(a,n,t){if(!Number.isFinite(a)||a<0)throw new lo("invalid-time",`Caption cue ${n} must be a finite, non-negative number.`,t);return Math.round(a*1e3)}function pc(a,n){const t={cueIndex:n,segmentId:a.id},o=dS(a);return o!==void 0&&(t.cueNumber=o),t}function dS(a){if(!(!("cueNumber"in a)||typeof a.cueNumber!="number"))return a.cueNumber}function uS(a,n){return[n.toString(),`${cc(a.startTime)} --> ${cc(a.endTime)}`,cS(a.text)].join(`
343
+ `)}function cS(a){return a.replace(/\r\n?/g,`
344
+ `)}function fc(a){return a===void 0||a.trim()===""}const mS=["linear","ease-in","ease-out","ease-in-out"];class ol extends Error{constructor(n,t="Invalid keyframe automation."){super(t),this.name="KeyframeAutomationError",this.issues=n}}const pS={opacity:{min:0,max:1},scale:{min:0,max:10},x:{min:0,max:1},y:{min:0,max:1},rotation:{},audioVolume:{min:0,max:1}};function fS(a){return typeof a=="string"&&mS.includes(a)}function vS(a){return a==="mobile"?{platform:a,editingMode:"preset-only",canApplyPresets:!0,canEditKeyframes:!1}:{platform:a,editingMode:"detailed",canApplyPresets:!0,canEditKeyframes:!0}}function hS(a){return[...a].sort((n,t)=>n.target!==t.target?n.target.localeCompare(t.target):n.time!==t.time?n.time-t.time:n.id.localeCompare(t.id))}function Mp(a,n={}){const t=[],o=new Set,i={...pS,...n.ranges};return a.forEach((r,l)=>{if(r.id.trim()===""&&t.push({code:"empty-id",message:"Keyframe id cannot be empty.",index:l,target:r.target,time:r.time}),n.target!==void 0&&r.target!==n.target&&t.push({code:"target-mismatch",message:`Expected ${n.target} keyframe target but received ${r.target}.`,index:l,keyframeId:r.id,target:r.target,time:r.time}),!Number.isFinite(r.time)||r.time<(n.minTime??0))t.push({code:"invalid-time",message:"Keyframe time must be a finite non-negative number.",index:l,keyframeId:r.id,target:r.target,time:r.time});else if(n.maxTime!==void 0&&r.time>n.maxTime)t.push({code:"invalid-time",message:`Keyframe time must be less than or equal to ${n.maxTime}.`,index:l,keyframeId:r.id,target:r.target,time:r.time});else{const s=`${r.target}:${r.time}`;o.has(s)&&t.push({code:"duplicate-time",message:`Keyframe target ${r.target} already has a point at ${r.time}.`,index:l,keyframeId:r.id,target:r.target,time:r.time}),o.add(s)}if(!Number.isFinite(r.value))t.push({code:"invalid-value",message:"Keyframe value must be a finite number.",index:l,keyframeId:r.id,target:r.target,time:r.time});else{const s=i[r.target];s.min!==void 0&&r.value<s.min&&t.push({code:"invalid-value",message:`Keyframe value for ${r.target} must be greater than or equal to ${s.min}.`,index:l,keyframeId:r.id,target:r.target,time:r.time}),s.max!==void 0&&r.value>s.max&&t.push({code:"invalid-value",message:`Keyframe value for ${r.target} must be less than or equal to ${s.max}.`,index:l,keyframeId:r.id,target:r.target,time:r.time})}fS(r.easing)||t.push({code:"invalid-easing",message:`Unsupported keyframe easing "${String(r.easing)}".`,index:l,keyframeId:r.id,target:r.target,time:r.time})}),{valid:t.length===0,issues:t}}function gS(a,n={}){const t=hS(a),o=Mp(t,n);if(!o.valid)throw new ol(o.issues);return t}function bS(a={}){return Ld({id:"fade-in",label:"Fade in",target:"opacity",startValue:a.fromOpacity??0,endValue:a.toOpacity??1,timing:Pd(a,"ease-out")})}function yS(a={}){return Ld({id:"fade-out",label:"Fade out",target:"opacity",startValue:a.fromOpacity??1,endValue:a.toOpacity??0,timing:Pd(a,"ease-in")})}function wS(a={}){return Ld({id:"zoom-in",label:"Zoom in",target:"scale",startValue:a.fromScale??1,endValue:a.toScale??1.1,timing:Pd(a,"ease-out")})}function Ld(a){const n=[{id:`${a.id}:start`,target:a.target,time:a.timing.startTime,value:a.startValue,easing:"linear"},{id:`${a.id}:end`,target:a.target,time:a.timing.endTime,value:a.endValue,easing:a.timing.easing}],t=Mp(n,{target:a.target});if(!t.valid)throw new ol(t.issues);return{id:a.id,label:a.label,target:a.target,editingMode:"preset-only",keyframes:n}}function Pd(a,n){const t=a.startTime??0,o=a.duration??1;if(!Number.isFinite(t)||t<0)throw new ol([{code:"invalid-time",message:"Preset start time must be a finite non-negative number.",time:t}]);if(!Number.isFinite(o)||o<=0)throw new ol([{code:"invalid-time",message:"Preset duration must be a finite number greater than zero."}]);return{startTime:t,endTime:t+o,easing:a.easing??n}}class Ro extends Error{constructor(n,t){super(t),this.name="VisualLayerSchemaError",this.code=n}}function kS(a){Od(a.id,"caption track id");const n={id:a.id,source:a.source,stylePreset:a.stylePreset??"default",animation:a.animation??"none",segments:_S(a.segments)};return a.language!==void 0&&(n.language=a.language),n}function _S(a){const n=a.map(t=>{Od(t.id,"caption segment id");const o=Ud(t.startTime,"caption segment startTime"),i=$p(t.endTime,"caption segment endTime");if(i<=o)throw new Ro("invalid-caption-segment",`Caption segment "${t.id}" must end after it starts.`);const r={id:t.id,startTime:o,endTime:i,text:t.text};return t.words!==void 0&&(r.words=ES(t.id,t.words)),r}).sort((t,o)=>t.startTime-o.startTime);for(let t=1;t<n.length;t+=1){const o=n[t-1],i=n[t];if(!(o===void 0||i===void 0)&&i.startTime<o.endTime)throw new Ro("invalid-caption-segment",`Caption segment "${i.id}" overlaps segment "${o.id}".`)}return n}function ES(a,n){return n.map(t=>{Od(t.id,"caption word id");const o=Ud(t.startTime,"caption word startTime"),i=$p(t.endTime,"caption word endTime");if(i<=o)throw new Ro("invalid-caption-segment",`Caption word "${t.id}" in segment "${a}" must end after it starts.`);return{id:t.id,startTime:o,endTime:i,text:t.text}}).sort((t,o)=>t.startTime-o.startTime)}function Ud(a,n){const t=SS(a,n);if(t<0)throw new Ro("invalid-time",`${n} must be non-negative.`);return Math.round(t*1e3)/1e3}function $p(a,n){const t=Ud(a,n);if(t<=0)throw new Ro("invalid-duration",`${n} must be greater than zero.`);return t}function SS(a,n){if(!xS(a))throw new Ro("invalid-time",`${n} must be a finite number.`);return a}function Od(a,n){if(a.trim()==="")throw new Ro("empty-id",`${n} cannot be empty.`)}function xS(a){return Number.isFinite(a)}function vc(a){var m,p,f,v;CS(a);const n=TS(a),t=BS(a),o=((m=n[0])==null?void 0:m.id)??io,i=((p=t[0])==null?void 0:p.id)??si,r=VS(a.clips,i,o),l=MS(t,r),s=[],d=FS(a),u=AS(a),c={version:"1.0",source:{media_uuid:a.mediaUuid,duration:a.originalDuration,original_width:((f=a.media)==null?void 0:f.width)||1920,original_height:((v=a.media)==null?void 0:v.height)||1080},timeline:r,mediaSources:n,tracks:l,filters:s,audio:d,output:u,metadata:{created_at:new Date().toISOString(),editor_version:"2.0.0"}};return a.textOverlays&&(c.textOverlays=a.textOverlays),a.captionTracks&&(c.captionTracks=a.captionTracks.map(h=>({...h,segments:h.segments.map(k=>{const E={...k};return k.words&&(E.words=k.words.map(w=>({...w}))),E})}))),a.visualLayers&&(c.visualLayers=a.visualLayers.map(h=>({...h}))),a.audioTracks&&(c.audioTracks=a.audioTracks.filter(h=>typeof h.source=="string")),a.transitions&&(c.transitions=a.transitions.map(DS)),c}function CS(a){if(!a.mediaUuid)throw new Error("Media UUID is required");if(!a.clips||a.clips.length===0)throw new Error("At least one clip is required");const n=new Map;for(const t of a.clips){const o=NS(t),i=n.get(o)??[];i.push(t),n.set(o,i)}for(const t of n.values()){t.sort((o,i)=>o.timelineStart-i.timelineStart);for(let o=1;o<t.length;o++){const i=t[o],r=t[o-1];if(i.timelineStart<r.timelineEnd)throw new Error(`Clips ${r.id} and ${i.id} overlap on timeline`)}}}function VS(a,n,t){return a.map(o=>{const i=o.speed||1,r=typeof o.sourceIn=="number"&&!Number.isNaN(o.sourceIn),l=typeof o.sourceOut=="number"&&!Number.isNaN(o.sourceOut),s=Math.max(0,o.timelineEnd-o.timelineStart),d=o,u=d.sourceOffset??d.trimStart??0;let c=Number(r?o.sourceIn:u),m=l?Number(o.sourceOut):Number(u)+s/i;m>c||(m=c+Math.max(.033,s/Math.max(1e-6,i)));const p={id:o.id,type:o.type??"clip",trackId:o.trackId??n,sourceRefId:o.sourceRefId??t,timelineStart:o.timelineStart,timelineEnd:o.timelineEnd,sourceIn:c,sourceOut:m,speed:i,filters:o.filters?[...o.filters]:[]};return o.keyframes&&(p.keyframes=o.keyframes.map(f=>({...f}))),p})}function NS(a){return a.trackId??`legacy-track-${a.track??0}`}function TS(a){var t,o,i,r,l,s,d,u;if(a.mediaSources&&a.mediaSources.length>0)return a.mediaSources.map($S);const n={id:((t=a.clips.find(c=>c.sourceRefId))==null?void 0:t.sourceRefId)??io,type:"media",mediaUuid:a.mediaUuid,duration:a.originalDuration,width:((o=a.media)==null?void 0:o.width)??1920,height:((i=a.media)==null?void 0:i.height)??1080};return(r=a.media)!=null&&r.filename&&(n.filename=a.media.filename),(l=a.media)!=null&&l.mime_type&&(n.mimeType=a.media.mime_type),typeof((s=a.media)==null?void 0:s.frame_rate)=="number"&&(n.frameRate=a.media.frame_rate),typeof((d=a.media)==null?void 0:d.has_audio)=="boolean"&&(n.hasAudio=a.media.has_audio),(u=a.media)!=null&&u.thumbnail_url&&(n.thumbnailUrl=a.media.thumbnail_url),[n]}function BS(a){var n;return a.tracks&&a.tracks.length>0?a.tracks.map(IS):[{id:((n=a.clips.find(t=>t.trackId))==null?void 0:n.trackId)??si,type:"video",name:"Video",order:0}]}function MS(a,n){return a.map(t=>({...t,clipIds:n.filter(o=>o.trackId===t.id).map(o=>o.id)}))}function $S(a){const n={...a};return a.metadata&&(n.metadata={...a.metadata}),n}function IS(a){const n={...a};return a.clipIds&&(n.clipIds=[...a.clipIds]),n}function DS(a){const n={...a};return a.params&&(n.params={...a.params}),n}function FS(a){const n={volume:a.audioVolume,muted:a.audioVolume===0};return a.audioFadeIn>0&&(n.fadeIn=a.audioFadeIn),a.audioFadeOut>0&&(n.fadeOut=a.audioFadeOut),n}function AS(a){var r;const n={"360p":{bitrate:1e6},"480p":{bitrate:25e5},"720p":{bitrate:5e6},"1080p":{bitrate:8e6},"1440p":{bitrate:16e6},"2160p":{bitrate:35e6}},t=n[a.exportQuality]||n["1080p"],o=(r=a.media)==null?void 0:r.frame_rate,i=o&&Number.isFinite(o)&&o>0?o:30;return{format:a.exportFormat||"mp4",codec:"h264",quality:a.exportQuality||"1080p",fps:i,bitrate:t.bitrate}}function hn(a){return arguments.length===0?{ok:!0,value:void 0}:{ok:!0,value:a}}function ea(a,n){return{ok:!1,reason:a,message:n}}const RS={last_clip:"Can't delete the last clip — leave the timeline empty or use Reset.",no_selection:"Select a clip first.",track_locked:"Target track is locked. Unlock it or pick another track.",track_missing:"That track no longer exists.",track_type_mismatch:"Clip can't be placed on that track type.",overlap:"No room on this track. Move neighboring clips or use a different track.",asset_not_ready:"Asset is still uploading or processing.",invariant_violation:"Editor state would be invalid — change rejected.",source_not_found:"Asset source not found.",source_in_use:"This asset is in use on the timeline. Remove its clips before deleting."};function wa(a){return RS[a]}const Hi=1e-6;function us(a){if(!Number.isFinite(a.desiredDuration)||a.desiredDuration<=0)return{ok:!1};const n=Math.max(0,a.preferredStart),t=[...a.trackClips].filter(i=>i.id!==a.ignoreClipId).sort((i,r)=>i.timelineStart-r.timelineStart);if(t.length===0)return{ok:!0,start:n};if(LS(n,a.desiredDuration,t))return{ok:!0,start:n};let o=n;for(const i of t)if(!(i.timelineEnd<=o+Hi)){if(i.timelineStart-o>=a.desiredDuration-Hi&&o+Hi>=n)return{ok:!0,start:o};o=Math.max(o,i.timelineEnd)}return{ok:!0,start:o}}function LS(a,n,t){const o=a+n;for(const i of t)if(!(i.timelineEnd<=a+Hi)&&!(i.timelineStart>=o-Hi))return!1;return!0}const PS={video:new Set(["clip","video","image"]),image:new Set(["image"]),audio:new Set(["audio"]),text:new Set(["text"]),graphics:new Set(["graphics"]),caption:new Set([])};function hc(a,n){return PS[n].has(a)}function US(a){const n=new Set;for(const t of a.clips)typeof t.sourceRefId=="string"&&t.sourceRefId!==""&&n.add(t.sourceRefId);return n}function OS(a,n){return US(a).has(n)}function Sr(a,n=30){const t=typeof a=="number"?a:Number(a);return Number.isFinite(t)&&t>0?t:n}function Ip(a,n,t){var _t,Xt,Sa;const o=typeof a=="string"&&a.trim()!==""?a.trim():`temp-${Date.now()}`,i=e.reactive({mediaUuid:o,clips:[],playheadPosition:0,totalDuration:0,originalDuration:0,filters:[],audioVolume:1,audioFadeIn:0,audioFadeOut:0,exportQuality:"1080p",exportFormat:"mp4",hasChanges:!1,isPlaying:!1,zoomLevel:100}),r=e.ref(null),l=e.ref([]),s=e.ref([]),d=e.ref(void 0);let u=typeof(t==null?void 0:t.duration)=="number"&&t.duration>0&&t.duration!==1;const c=e.ref(!1),m=Sr(((_t=n==null?void 0:n.output)==null?void 0:_t.fps)??(t==null?void 0:t.frame_rate)),p=e.shallowRef(null),f=new ep(m),v=e.ref(m),h=e.ref(!1),k=e.ref(!1);n&&n.timeline&&n.timeline.length>0?(M(n),(Xt=n.output)!=null&&Xt.fps&&(v.value=Sr(n.output.fps,v.value),f.setFps(v.value))):(D(),n&&((Sa=n.output)!=null&&Sa.fps&&(v.value=Sr(n.output.fps,v.value),f.setFps(v.value)),n.audio&&(i.audioVolume=n.audio.volume||1,i.audioFadeIn=n.audio.fadeIn||0,i.audioFadeOut=n.audio.fadeOut||0),n.output&&(i.exportFormat=n.output.format||"mp4",i.exportQuality=n.output.quality||"1080p")));const E=e.ref(1),w=e.computed(()=>i.selectedClipId?i.clips.find(X=>X.id===i.selectedClipId)??null:null);e.watch(w,X=>{E.value=(X==null?void 0:X.speed)??1},{immediate:!0});const b=e.computed(()=>l.value.length>0),g=e.computed(()=>s.value.length>0);function D(){const X=typeof(t==null?void 0:t.duration)=="number"&&t.duration>0?t.duration:1;t&&(i.media=t),i.originalDuration=X,i.totalDuration=X;const Y=Mt();i.mediaSources=[T(X)],i.tracks=[F([Y])];const pe={id:Y,type:"clip",trackId:si,sourceRefId:io,timelineStart:0,timelineEnd:X,sourceIn:0,sourceOut:X,sourceMinIn:0,sourceMaxOut:X,speed:1};i.clips=[pe],i.selectedClipId=Y,d.value=Y,!(t||o.startsWith("temp-"))&&(async()=>{try{const fe=await fetch(`/api/v1/video/${encodeURIComponent(o)}`);if(!fe.ok)throw new Error(`Failed to fetch media: ${fe.status}`);const Ne=await fe.json(),Xe=typeof Ne=="object"&&Ne!==null&&"data"in Ne?Ne.data:Ne;if(!Xe||typeof Xe!="object")throw new Error("Failed to parse media payload");const dt=Xe;i.media=dt,n||(v.value=Sr(dt.frame_rate,v.value),f.setFps(v.value));const et=typeof dt.duration=="number"&&dt.duration>0?dt.duration:X;if(i.hasChanges||i.clips.length!==1||i.clips[0].id!==Y)return;i.originalDuration=et,i.totalDuration=et,i.mediaSources=[T(et,dt)],i.tracks=[F([Y])];const Ke=i.clips[0];Ke.timelineStart=0,Ke.timelineEnd=et,Ke.sourceIn=0,Ke.sourceOut=et,Ke.sourceMinIn=0,Ke.sourceMaxOut=et,Ve(),u=!0}catch{}})()}function T(X,Y=t){const pe={id:io,type:"media",mediaUuid:o,duration:X,width:(Y==null?void 0:Y.width)??1920,height:(Y==null?void 0:Y.height)??1080};return Y!=null&&Y.filename&&(pe.filename=Y.filename),Y!=null&&Y.mime_type&&(pe.mimeType=Y.mime_type),typeof(Y==null?void 0:Y.frame_rate)=="number"&&(pe.frameRate=Y.frame_rate),typeof(Y==null?void 0:Y.has_audio)=="boolean"&&(pe.hasAudio=Y.has_audio),Y!=null&&Y.thumbnail_url&&(pe.thumbnailUrl=Y.thumbnail_url),pe}function F(X){return{id:si,type:"video",name:"Video",order:0,clipIds:X}}function V(X){return`track-${X}-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function I(X,Y){const pe=X.charAt(0).toUpperCase()+X.slice(1),fe=Y.filter(Ne=>Ne.type===X).length;return fe===0?pe:`${pe} ${fe+1}`}function $(X,Y){if(X.originalDuration!==1)return;X.originalDuration=Y,X.totalDuration===1&&(X.totalDuration=Y);const pe=X.clips[0],fe=!n&&X.clips.length===1&&pe!==void 0&&pe.timelineStart===0&&pe.timelineEnd===1&&pe.sourceIn===0&&pe.sourceOut===1;for(const Ne of X.clips)(Ne.sourceMaxOut===1||Ne.sourceMaxOut===void 0)&&(Ne.sourceMaxOut=Y);if(X.mediaSources)for(const Ne of X.mediaSources)Ne.id===io&&(Ne.duration===1||Ne.duration===void 0)&&(Ne.duration=Y);fe&&pe!==void 0&&(pe.sourceOut=Y,pe.timelineEnd=Y)}function C(X){if(!Number.isFinite(X)||X<=0||u)return;const Y=i.hasChanges;i.originalDuration=X,i.totalDuration=Math.max(i.totalDuration,X),i.media&&(i.media.duration=X);for(const Ne of i.clips)Ne.sourceMaxOut=X;if(i.mediaSources)for(const Ne of i.mediaSources)(Ne.id===io||Ne.mediaUuid===o)&&(Ne.duration=X);const pe=i.clips[0];!n&&i.clips.length===1&&pe!==void 0&&pe.timelineStart===0&&pe.timelineEnd===1&&pe.sourceIn===0&&pe.sourceOut===1&&pe!==void 0&&(pe.sourceOut=X,pe.timelineEnd=pe.timelineStart+(pe.sourceOut-pe.sourceIn)),Ve();for(const Ne of l.value)$(Ne,X);for(const Ne of s.value)$(Ne,X);u=!0,e.nextTick(()=>{Y||(i.hasChanges=!1)})}function M(X){const Y=lp(X);i.mediaSources=Y.mediaSources,i.tracks=Y.tracks,i.transitions=Y.transitions,i.clips=Y.clips.map(pe=>({...pe,sourceMinIn:pe.sourceMinIn??0,sourceMaxOut:pe.sourceMaxOut??X.source.duration})),i.filters=[],i.audioVolume=X.audio.volume,i.audioFadeIn=X.audio.fadeIn||0,i.audioFadeOut=X.audio.fadeOut||0,i.exportFormat=X.output.format,i.exportQuality=X.output.quality,i.originalDuration=X.source.duration,i.textOverlays=X.textOverlays?[...X.textOverlays]:[],i.audioTracks=X.audioTracks?[...X.audioTracks]:[],i.captionTracks=X.captionTracks?X.captionTracks.map(oe):[],i.visualLayers=X.visualLayers?X.visualLayers.map(pe=>({...pe})):[],i.clips.length>0?(i.selectedClipId=i.clips[0].id,d.value=i.selectedClipId):(delete i.selectedClipId,d.value=void 0),Ve()}function _(){l.value.push(JSON.parse(JSON.stringify(i))),s.value=[],i.hasChanges=!0}function L(){if(!b.value)return;const X=l.value.pop();s.value.push(JSON.parse(JSON.stringify(i))),Object.assign(i,X)}function j(){if(!g.value)return;const X=s.value.pop();l.value.push(JSON.parse(JSON.stringify(i))),Object.assign(i,X)}function B(X,Y,pe){_();const fe=i.clips.find(et=>et.id===X);if(!fe)return;const Ne=1/v.value,Xe=fe.sourceMinIn??0,dt=fe.sourceMaxOut??i.originalDuration;if(Y==="start"){const et=fe.sourceIn,Ke=Math.max(Xe,Math.min(pe,fe.sourceOut-Ne));fe.sourceIn=Ke;const vt=Ke-et;fe.timelineStart+=vt}else{const et=Math.max(fe.sourceIn+Ne,Math.min(pe,dt));fe.sourceOut=et;const Ke=fe.sourceOut-fe.sourceIn;fe.timelineEnd=fe.timelineStart+Ke}Ve(),p.value&&p.value.trimClip(X,fe.sourceIn,fe.sourceOut)}function U(X){_();const Y=i.clips.find(dt=>X>dt.timelineStart&&X<dt.timelineEnd);if(!Y)return;const pe=X-Y.timelineStart,fe=Y.sourceIn+pe,Ne={id:Mt(),type:"clip",timelineStart:X,timelineEnd:Y.timelineEnd,sourceIn:fe,sourceOut:Y.sourceOut,speed:Y.speed??1,sourceMinIn:Y.sourceMinIn??0,sourceMaxOut:Y.sourceMaxOut??i.originalDuration,filters:[...Y.filters||[]]};Y.trackId&&(Ne.trackId=Y.trackId),Y.sourceRefId&&(Ne.sourceRefId=Y.sourceRefId),Y.timelineEnd=X,Y.sourceOut=fe;const Xe=i.clips.indexOf(Y);i.clips.splice(Xe+1,0,Ne),ue(),i.selectedClipId=Ne.id}function S(){U(i.playheadPosition)}function R(X){var pe;const Y=X??i.selectedClipId??d.value??((pe=i.clips[0])==null?void 0:pe.id);Y&&(i.selectedClipId=Y,d.value=Y)}function O(){return i.selectedClipId?K(i.selectedClipId):ea("no_selection",wa("no_selection"))}function K(X){const Y=i.clips.findIndex(pe=>pe.id===X);return Y===-1?ea("source_not_found","Clip not found."):(_(),i.clips.splice(Y,1),ue(),se(Y),Ve(),hn())}function se(X){if(!i.clips.length){delete i.selectedClipId,d.value=void 0;return}const Y=Math.max(0,Math.min(X,i.clips.length-1)),pe=i.clips[Y];pe&&(i.selectedClipId=pe.id,d.value=pe.id)}function xe(X){return X.trackId??`legacy-track-${X.track??0}`}function ue(){const X=i.tracks;if(X)for(const Y of X)Y.clipIds=i.clips.filter(pe=>xe(pe)===Y.id).map(pe=>pe.id)}function le(X="video"){_();const Y=i.tracks??[],pe=Y.reduce((Ne,Xe)=>Math.max(Ne,Xe.order),-1),fe={id:V(X),type:X,name:I(X,Y),order:pe+1,clipIds:[]};return i.tracks=[...Y,fe],i.hasChanges=!0,fe}function H(X){if(X.length===0)return;const Y=new Set(X),pe=i.clips.findIndex(fe=>Y.has(fe.id));i.clips=i.clips.filter(fe=>!Y.has(fe.id)),i.transitions&&i.transitions.length>0&&(i.transitions=i.transitions.filter(fe=>!Y.has(fe.fromClipId)&&!Y.has(fe.toClipId))),ue(),i.selectedClipId!==void 0&&Y.has(i.selectedClipId)&&se(pe>=0?pe:0),Ve()}function y(X){const Y=i.tracks??[],pe=Y.find(Ne=>Ne.id===X);if(!pe)return ea("track_missing",wa("track_missing"));if(Y.length<=1)return ea("invariant_violation","Can't delete the last remaining track. Add another track first.");_();const fe=i.clips.filter(Ne=>xe(Ne)===pe.id).map(Ne=>Ne.id);return H(fe),i.tracks=Y.filter(Ne=>Ne.id!==pe.id),i.hasChanges=!0,hn()}function A(X,Y){const fe=(i.tracks??[]).find(Xe=>Xe.id===X);if(!fe)return ea("track_missing",wa("track_missing"));const Ne=Y.trim();return Ne===""?ea("invariant_violation","Track name cannot be empty."):(fe.name===Ne||(_(),fe.name=Ne,i.hasChanges=!0),hn())}function W(X,Y){const pe=i.tracks??[],fe=pe.find(vt=>vt.id===X);if(!fe)return ea("track_missing",wa("track_missing"));const Ne=[...pe].sort((vt,ht)=>vt.order-ht.order),Xe=Ne.findIndex(vt=>vt.id===fe.id),dt=Y==="up"?Xe+1:Xe-1,et=Ne[dt];if(!et)return ea("invariant_violation","Track is already at the edge.");_();const Ke=fe.order;return fe.order=et.order,et.order=Ke,i.hasChanges=!0,hn()}function q(X){let Y=i.tracks??[];if(Y.length===0){const fe=F([]);i.tracks=[fe],Y=i.tracks}if(X){const fe=Y.find(Ne=>Ne.id===X);return fe?fe.locked===!0?{ok:!1,reason:"track_locked"}:{ok:!0,track:fe}:{ok:!1,reason:"track_missing"}}const pe=Y.find(fe=>fe.type==="video"&&fe.locked!==!0)??Y.find(fe=>fe.locked!==!0);return pe?{ok:!0,track:pe}:{ok:!1,reason:"no_editable_track"}}function de(X){const Y=1/v.value;return typeof X.duration=="number"&&Number.isFinite(X.duration)&&X.duration>Y?X.duration:i.originalDuration>Y?i.originalDuration:Math.max(Y,i.totalDuration)}function Pe(X){const Y=i.clips.filter(pe=>xe(pe)===X);return Y.length>0?Y.reduce((pe,fe)=>Math.max(pe,fe.timelineEnd),0):Math.max(0,Math.min(i.playheadPosition,i.totalDuration))}function ge(X){const Y=i.mediaSources??[],pe=Y.find(fe=>fe.id===X.id);return pe||(i.mediaSources=[...Y,X],i.hasChanges=!0,X)}function ke(X,Y){return Ce(X,"clip",Y)}function be(X,Y){if(!(i.mediaSources??[]).find(Ne=>Ne.id===X))return ea("source_not_found",wa("source_not_found"));let fe=Y;if(!fe){const Ne=(i.tracks??[]).find(Xe=>Xe.type==="audio"&&Xe.locked!==!0);fe=(Ne==null?void 0:Ne.id)??le("audio").id}return Ce(X,"audio",fe)}function Ce(X,Y,pe){const fe=(i.mediaSources??[]).find(Yt=>Yt.id===X);if(!fe)return ea("source_not_found",wa("source_not_found"));const Ne=q(pe);if(!Ne.ok){const Yt=Ne.reason==="no_editable_track"?"track_missing":Ne.reason;return ea(Yt,wa(Yt))}const Xe=Ne.track;if(!hc(Y,Xe.type))return ea("track_type_mismatch",wa("track_type_mismatch"));const dt=i.clips.filter(Yt=>xe(Yt)===Xe.id),et=de(fe),Ke=Pe(Xe.id),vt=us({trackClips:dt,desiredDuration:et,preferredStart:Ke});if(!vt.ok)return ea("overlap",wa("overlap"));_();const ht=Mt(),nt={id:ht,type:Y,trackId:Xe.id,sourceRefId:fe.id,timelineStart:vt.start,timelineEnd:vt.start+et,sourceIn:0,sourceOut:et,sourceMinIn:0,sourceMaxOut:et,speed:1};return i.clips.push(nt),i.selectedClipId=ht,d.value=ht,ue(),Ve(),hn(nt)}function Ee(X){const Y=w.value,pe=(i.mediaSources??[]).find(et=>et.id===X);if(!Y||!pe)return!1;_();const fe=1/v.value,Ne=de(pe),Xe=Math.max(fe,Y.timelineEnd-Y.timelineStart),dt=Math.max(fe,Math.min(Xe,Ne));return Y.sourceRefId=pe.id,Y.sourceIn=0,Y.sourceOut=dt,Y.sourceMinIn=0,Y.sourceMaxOut=Ne,Y.timelineEnd=Y.timelineStart+dt,Ve(),!0}function Ae(X){const Y=i.mediaSources??[];return Y.length<=1||OS({clips:i.clips},X)?!1:(_(),i.mediaSources=Y.filter(pe=>pe.id!==X),!0)}function Ue(X,Y){const pe=(i.tracks??[]).find(fe=>fe.id===X);return pe?(_(),pe[Y]=pe[Y]!==!0,!0):!1}function ot(X){return Ue(X,"locked")}function it(X){return Ue(X,"hidden")}function Lt(X){return Ue(X,"muted")}function gt(X){return Ue(X,"solo")}function St(X){if(i.clips.length<=1)return!1;const Y=i.clips.findIndex(Xe=>Xe.id===X),pe=Y===-1?void 0:i.clips[Y];if(!pe)return!1;const fe=Math.max(0,pe.timelineEnd-pe.timelineStart),Ne=xe(pe);if(_(),i.clips.splice(Y,1),ue(),fe>0)for(const Xe of i.clips)xe(Xe)!==Ne||Xe.timelineStart<pe.timelineEnd||(Xe.timelineStart=Math.max(0,Xe.timelineStart-fe),Xe.timelineEnd=Math.max(Xe.timelineStart,Xe.timelineEnd-fe));return i.playheadPosition>=pe.timelineEnd?i.playheadPosition=Math.max(0,i.playheadPosition-fe):i.playheadPosition>pe.timelineStart&&(i.playheadPosition=pe.timelineStart),se(Y),Ve(),i.hasChanges=!0,!0}function ct(){return i.selectedClipId?St(i.selectedClipId):!1}function mt(){return[...i.clips].sort((X,Y)=>X.timelineStart-Y.timelineStart)}function Ct(X){const Y=i.clips.find(nt=>nt.id===X);if(!Y)return null;const pe=xe(Y),fe=mt().filter(nt=>xe(nt)===pe),Ne=fe.findIndex(nt=>nt.id===X);if(Ne===-1)return null;const Xe=fe[Ne],dt=Xe.timelineEnd-Xe.timelineStart,et=Ne>0?fe[Ne-1]:null,Ke=Ne<fe.length-1?fe[Ne+1]:null,vt=et?et.timelineEnd:0,ht=Ke?Ke.timelineStart-dt:Math.max(Xe.timelineStart,i.totalDuration-dt);return{minStart:vt,maxStart:Math.max(vt,ht)}}function Se(X,Y,pe){const fe=i.clips.find(ht=>ht.id===X);if(!fe)return ea("source_not_found","Clip not found.");if(pe===void 0||pe===fe.trackId){const ht=Ct(X),nt=ht?Math.min(ht.maxStart,Math.max(ht.minStart,Y)):Math.max(0,Y);if(nt===fe.timelineStart)return hn();_();const Yt=nt-fe.timelineStart;return fe.timelineStart=nt,fe.timelineEnd+=Yt,Ve(),p.value&&p.value.moveClip(X,nt),hn()}const Xe=(i.tracks??[]).find(ht=>ht.id===pe);if(!Xe)return ea("track_missing",wa("track_missing"));if(Xe.locked===!0)return ea("track_locked",wa("track_locked"));if(!hc(fe.type,Xe.type))return ea("track_type_mismatch",wa("track_type_mismatch"));const dt=i.clips.filter(ht=>xe(ht)===Xe.id&&ht.id!==fe.id),et=fe.timelineEnd-fe.timelineStart,Ke=us({trackClips:dt,desiredDuration:et,preferredStart:Math.max(0,Y),ignoreClipId:fe.id});if(!Ke.ok)return ea("overlap",wa("overlap"));_(),fe.trackId=Xe.id;const vt=fe.timelineStart;return fe.timelineStart=Ke.start,fe.timelineEnd=Ke.start+et,ue(),Ve(),p.value&&vt!==Ke.start&&p.value.moveClip(X,Ke.start),hn()}function Ve(){if(i.clips.length===0){i.totalDuration=0;return}const X=i.clips.reduce((Y,pe)=>pe.timelineEnd>Y.timelineEnd?pe:Y);i.totalDuration=X.timelineEnd}function Re(){i.zoomLevel=Math.min(200,i.zoomLevel*1.2)}function at(){i.zoomLevel=Math.max(10,i.zoomLevel/1.2)}function He(X){i.zoomLevel=Math.max(10,Math.min(600,Math.round(X)))}function Je(){i.isPlaying=!i.isPlaying}function kt(X){i.isPlaying=X}function ft(X){i.playheadPosition=Math.max(0,Math.min(X,i.totalDuration))}function jt(){const X=vc(i);try{localStorage.setItem(`video-draft-${o}`,JSON.stringify(X))}catch{}return X}function Le(){i.hasChanges=!1}function Wt(){return confirm("Are you sure you want to reset all changes?")?(_(),D(),i.hasChanges=!1,!0):!1}function Zt(){return vc(i)}function Mt(){return`clip-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async function Pt(X=1920,Y=1080){if(c.value)try{p.value=new Qm(X,Y,v.value),await Ht()}catch{p.value=null}}async function Ht(){if(!(!p.value||k.value)){k.value=!0;try{const X=Zt();await p.value.loadFromRecipe(X);const Y=f.secondsToFrames(i.playheadPosition);p.value.seek(Y)}catch{}finally{k.value=!1}}}function ra(X){}function ae(X){return f.secondsToFrames(X)}function he(X){return f.framesToSeconds(X)}function me(X){const Y=he(X);ft(Y),p.value&&p.value.seek(X)}function ce(){h.value=!h.value}function Te(){Ht()}function We(X){c.value=!1,p.value=null}e.watch(()=>i.clips,()=>{i.hasChanges=!0,c.value&&p.value&&Ht()},{deep:!0}),e.watch(()=>i.filters,()=>{i.hasChanges=!0,c.value&&p.value&&Ht()},{deep:!0}),e.watch(()=>i.clips.map(X=>X.id),()=>{var Y;if(!i.clips.length){delete i.selectedClipId,d.value=void 0;return}if(!i.clips.some(pe=>pe.id===i.selectedClipId)){const pe=d.value&&((Y=i.clips.find(fe=>fe.id===d.value))==null?void 0:Y.id);i.selectedClipId=pe??i.clips[0].id,d.value=i.selectedClipId}},{deep:!0});function rt(X){const Y=i.selectedClipId?i.clips.find(pe=>pe.id===i.selectedClipId):i.clips[0];Y&&(Y.filters=[...X],i.hasChanges=!0)}function Vt(X){i.textOverlays=[...X]}function Ut(X){i.audioTracks=[...X]}function $t(X){i.captionTracks=X.map(oe),i.hasChanges=!0}function lt(X){i.visualLayers=X.map(Y=>({...Y})),i.hasChanges=!0}function Jt(X){i.transitions=X.map(Y=>{const pe={...Y};return Y.params&&(pe.params={...Y.params}),pe}),i.hasChanges=!0}function J(X,Y){const pe=i.clips.find(fe=>fe.id===X);pe&&(pe.keyframes=Y.map(fe=>({...fe})),i.hasChanges=!0)}function we(X){_(),M(X),i.hasChanges=!0}function oe(X){return{...X,segments:X.segments.map(Y=>{const pe={...Y};return Y.words&&(pe.words=Y.words.map(fe=>({...fe}))),pe})}}e.watch(c,X=>{X?Pt():p.value&&(p.value.destroy(),p.value=null)}),e.watch(h,()=>{}),e.watch(v,X=>{f.setFps(X)});function $e(){if(!i.selectedClipId)return ea("no_selection",wa("no_selection"));const X=i.clips.find(et=>et.id===i.selectedClipId);if(!X)return ea("no_selection",wa("no_selection"));const Y=xe(X),pe=i.clips.filter(et=>xe(et)===Y),fe=X.timelineEnd-X.timelineStart,Ne=us({trackClips:pe,desiredDuration:fe,preferredStart:X.timelineEnd});if(!Ne.ok)return ea("overlap",wa("overlap"));_();const Xe={...X,id:Mt(),timelineStart:Ne.start,timelineEnd:Ne.start+fe,filters:[...X.filters||[]]},dt=i.clips.indexOf(X);return i.clips.splice(dt+1,0,Xe),ue(),i.selectedClipId=Xe.id,i.hasChanges=!0,hn(Xe)}function Ft(X){const Y=X??800,pe=i.totalDuration;if(pe<=0){i.zoomLevel=50;return}const fe=Y*.8/pe;i.zoomLevel=Math.max(10,Math.min(600,Math.round(fe)))}function Ot(){const X=1/v.value;ft(Math.min(i.playheadPosition+X,i.totalDuration))}function It(){const X=1/v.value;ft(Math.max(i.playheadPosition-X,0))}function yt(){ft(0)}function bt(){ft(i.totalDuration)}function qt(X){if(!Number.isFinite(X)||X<=0)return;const Y=w.value??i.clips[0];if(!Y){E.value=X;return}const pe=Y.speed??1;if(pe===X){E.value=X;return}_();const fe=Math.max(1/v.value,Y.sourceOut-Y.sourceIn),Ne=fe/pe,Xe=fe/X,dt=Xe-Ne;Y.speed=X,Y.timelineEnd=Y.timelineStart+Xe;const et=i.clips.findIndex(Ke=>Ke.id===Y.id);if(et!==-1&&dt!==0)for(let Ke=et+1;Ke<i.clips.length;Ke+=1){const vt=i.clips[Ke];vt.timelineStart+=dt,vt.timelineEnd+=dt}Ve(),i.playheadPosition=Math.max(0,Math.min(i.playheadPosition,i.totalDuration)),i.hasChanges=!0,E.value=X}return{currentFrame:r,playheadPosition:e.computed(()=>i.playheadPosition),timelineClips:e.computed(()=>i.clips),tracks:e.computed(()=>i.tracks??[]),mediaSources:e.computed(()=>i.mediaSources??[]),transitions:e.computed(()=>i.transitions??[]),totalDuration:e.computed(()=>i.totalDuration),hasChanges:e.computed(()=>i.hasChanges),isPlaying:e.computed(()=>i.isPlaying),selectedClip:w,zoomLevel:e.computed(()=>i.zoomLevel),playbackSpeed:E,useVideoEngine:c,compositionAdapter:e.computed(()=>p.value),fps:v,useFrameMode:h,handleTrim:B,handleSplit:U,handleClipSelect:R,splitAtPlayhead:S,deleteSelectedClip:O,deleteClip:K,rippleDeleteClip:St,rippleDeleteSelectedClip:ct,duplicateSelectedClip:$e,addTimelineTrack:le,deleteTimelineTrack:y,renameTimelineTrack:A,reorderTimelineTrack:W,appendMediaSourceToTimeline:ke,appendAudioSourceToTimeline:be,registerMediaSource:ge,replaceSelectedClipSource:Ee,removeMediaSource:Ae,toggleTrackLock:ot,toggleTrackHidden:it,toggleTrackMuted:Lt,toggleTrackSolo:gt,setFilters:rt,setTextOverlays:Vt,setAudioTracks:Ut,setCaptionTracks:$t,setVisualLayers:lt,setTransitions:Jt,setClipKeyframes:J,loadRecipe:we,moveClip:Se,saveDraft:jt,clearHasChanges:Le,resetChanges:Wt,generateRecipe:Zt,zoomIn:Re,zoomOut:at,setZoomLevel:He,fitToWindow:Ft,togglePlayback:Je,setPlaying:kt,seekTo:ft,frameForward:Ot,frameBackward:It,skipToStart:yt,skipToEnd:bt,setPlaybackSpeed:qt,updateSourceDuration:C,undo:L,redo:j,canUndo:b,canRedo:g,initializeComposition:Pt,syncCompositionWithState:Ht,syncWithComposition:ra,convertToFrames:ae,convertToSeconds:he,seekToFrame:me,toggleFrameMode:ce,onCompositionReady:Te,onCompositionError:We}}const zS=[{id:"brightness",name:"Brightness",category:"color",ffmpeg:"eq=brightness={value}",pixiFilter:"AdjustmentFilter",defaultParams:{value:0},paramRanges:{value:{min:-1,max:1,step:.05}}},{id:"contrast",name:"Contrast",category:"color",ffmpeg:"eq=contrast={value}",pixiFilter:"AdjustmentFilter",defaultParams:{value:1},paramRanges:{value:{min:.5,max:2,step:.05}}},{id:"saturation",name:"Saturation",category:"color",ffmpeg:"eq=saturation={value}",pixiFilter:"AdjustmentFilter",defaultParams:{value:1},paramRanges:{value:{min:0,max:2,step:.05}}},{id:"hue",name:"Hue Shift",category:"color",ffmpeg:"hue=h={value}",pixiFilter:"HueRotateFilter",defaultParams:{value:0},paramRanges:{value:{min:-180,max:180,step:5}}},{id:"gaussian-blur",name:"Gaussian Blur",category:"blur",ffmpeg:"gblur=sigma={value}",pixiFilter:"BlurFilter",defaultParams:{value:2},paramRanges:{value:{min:0,max:10,step:.5}}},{id:"motion-blur",name:"Motion Blur",category:"blur",ffmpeg:"minterpolate=fps=60:mi_mode=mci:mc_mode=aobmc:me_mode=bidir:me=epzs:vsbmc=1",pixiFilter:"MotionBlurFilter",defaultParams:{velocity:5,angle:0},paramRanges:{velocity:{min:0,max:20,step:1},angle:{min:0,max:360,step:15}}},{id:"vintage",name:"Vintage",category:"stylize",ffmpeg:"curves=preset=vintage",pixiFilter:"ColorMatrixFilter",defaultParams:{preset:"vintage"},paramRanges:{}},{id:"sepia",name:"Sepia",category:"stylize",ffmpeg:"colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131",pixiFilter:"ColorMatrixFilter",defaultParams:{preset:"sepia"},paramRanges:{}},{id:"grayscale",name:"Black & White",category:"stylize",ffmpeg:"colorchannelmixer=0.3:0.59:0.11:0:0.3:0.59:0.11:0:0.3:0.59:0.11",pixiFilter:"ColorMatrixFilter",defaultParams:{preset:"grayscale"},paramRanges:{}},{id:"vignette",name:"Vignette",category:"effects",ffmpeg:"vignette=a={value}",pixiFilter:"VignetteFilter",defaultParams:{value:.3},paramRanges:{value:{min:0,max:1,step:.05}}},{id:"sharpen",name:"Sharpen",category:"effects",ffmpeg:"unsharp=5:5:{value}:5:5:0",pixiFilter:"SharpenFilter",defaultParams:{value:1},paramRanges:{value:{min:0,max:5,step:.25}}},{id:"denoise",name:"Noise Reduction",category:"effects",ffmpeg:"nlmeans=s={value}",pixiFilter:"NoiseFilter",defaultParams:{value:1},paramRanges:{value:{min:.1,max:5,step:.1}}},{id:"motion-blur",name:"Motion Blur",category:"effects",ffmpeg:"minterpolate=fps=30:mi_mode=blend",pixiFilter:"MotionBlurFilter",defaultParams:{velocity:[0,0],kernelSize:5},paramRanges:{velocityX:{min:-100,max:100,step:1},velocityY:{min:-100,max:100,step:1},kernelSize:{min:3,max:15,step:2}}},{id:"radial-blur",name:"Radial Blur",category:"effects",ffmpeg:"boxblur={radius}:{radius}",pixiFilter:"RadialBlurFilter",defaultParams:{radius:.1,angle:0,kernelSize:5},paramRanges:{radius:{min:0,max:1,step:.01},angle:{min:-180,max:180,step:1},kernelSize:{min:3,max:15,step:2}}},{id:"kawase-blur",name:"Kawase Blur",category:"effects",ffmpeg:"gblur=sigma={blur}:steps={quality}",pixiFilter:"KawaseBlurFilter",defaultParams:{blur:4,quality:3},paramRanges:{blur:{min:0,max:20,step:.5},quality:{min:1,max:10,step:1}}},{id:"flip-horizontal",name:"Flip Horizontal",category:"transform",ffmpeg:"hflip",pixiFilter:"FlipFilter",defaultParams:{horizontal:!0},paramRanges:{}},{id:"flip-vertical",name:"Flip Vertical",category:"transform",ffmpeg:"vflip",pixiFilter:"FlipFilter",defaultParams:{vertical:!0},paramRanges:{}},{id:"rotate",name:"Rotate",category:"transform",ffmpeg:"rotate={value}*PI/180",pixiFilter:"RotateFilter",defaultParams:{value:0},paramRanges:{value:{min:-180,max:180,step:15}}}],jS={dropShadow:"drop-shadow",softFocus:"blur",blackAndWhite:"grayscale",gaussianBlur:"blur","gaussian-blur":"blur"};function Ml(a){return typeof a=="object"&&a!==null}function WS(a,n){if(typeof a=="number"&&Number.isFinite(a))return a;if(typeof a=="string"){const t=Number(a);if(Number.isFinite(t))return t}return n}function $l(a){if(typeof a=="number"||typeof a=="string"||typeof a=="boolean")return a}function ZS(a){const n={id:a.id,type:a.type,label:a.label};a.property!==void 0&&(n.property=a.property),a.min!==void 0&&(n.min=a.min),a.max!==void 0&&(n.max=a.max),a.step!==void 0&&(n.step=a.step);const t=$l(a.default);return t!==void 0&&(n.default=t),a.options!==void 0&&(n.options=a.options),n}function Dp(a,n,t){const o=Ea.getFilter(a),i={},r=(o==null?void 0:o.defaultParams)??t;if(r&&Ml(r))for(const[l,s]of Object.entries(r))i[l]=$l(s)??null;for(const l of n){const s=l.property??l.id;i[s]===void 0&&l.default!==void 0&&(i[s]=l.default)}return i}function Fp(a){const n={};for(const t of a){if(t.type!=="slider")continue;const o=t.property??t.id;n[o]={min:t.min??0,max:t.max??100,step:t.step??1}}return n}function HS(a,n,t,o){const i=o.map(ZS);return{id:a,name:n,category:t,controls:i,params:i,defaultParams:Dp(a,i),paramRanges:Fp(i)}}function GS(a){const n=a.paramRanges??{},t=Object.entries(n).map(([o,i])=>{var s;const r={id:o,type:"slider",label:o.replace(/[-_]/g," ").replace(/\b\w/g,d=>d.toUpperCase()),property:o,min:i.min,max:i.max,step:i.step},l=$l((s=a.defaultParams)==null?void 0:s[o]);return l!==void 0&&(r.default=l),r});return{id:a.id,name:a.name,category:a.category,controls:t,params:t,defaultParams:Dp(a.id,t,a.defaultParams),paramRanges:Fp(t)}}function XS(a,n){return n.toLowerCase()==="unlisted"?!1:Ea.isFilterCompatibleWithMedia(a,"video")}function cs(a){return jS[a]??a}function Fi(a){const n=WS(a,1);return Math.max(0,Math.min(1,n))}function Ai(a){if(!Ml(a))return{};const n={};for(const[t,o]of Object.entries(a))n[t]=$l(o)??null;return n}function KS(a){return!Ml(a)||typeof a.filterId!="string"?null:{filterId:a.filterId,params:Ai(a.params),intensity:Fi(a.intensity)}}function JS(a){if(!Ml(a)||typeof a.id!="string"||typeof a.name!="string")return null;const t=(Array.isArray(a.filters)?a.filters:[]).map(i=>KS(i)).filter(i=>i!==null),o=typeof a.created_at=="string"?a.created_at:new Date().toISOString();return{id:a.id,name:a.name,filters:t,created_at:o}}function Ap(){Ea.initializeFilterRegistry();const a=e.ref([]),n=e.ref(null),t=e.ref(null),o=e.ref([]),i=e.ref(null),r=e.reactive({}),l=e.computed(()=>{const _=new Map,L=Ea.getRegisteredFilters();for(const j of L)XS(j.id,j.category)&&_.set(j.id,HS(j.id,j.name,j.category,j.controls));for(const j of zS)_.has(j.id)||_.set(j.id,GS(j));return Array.from(_.values())}),s=e.computed(()=>{const _=new Map;for(const L of l.value)_.set(L.id,L);return _}),d=e.computed(()=>a.value.length>0),u=e.computed(()=>{const _={};for(const L of l.value)_[L.category]||(_[L.category]=[]),_[L.category].push(L);return _});function c(_){const L=s.value.get(_);if(L)return L;const j=cs(_);return s.value.get(j)??null}function m(_){const L=s.value.get(_);if(L)return L.id;const j=cs(_),B=s.value.get(j);return B?B.id:null}function p(_){const L=_?c(_):n.value;if(!L)return;const j=L.defaultParams||{},B={id:I(),filterId:L.id,params:{...j},intensity:1};return a.value.push(B),i.value=B.id,n.value=L,Object.keys(r).forEach(U=>delete r[U]),Object.assign(r,B.params),t.value=null,B}function f(_){const L=c(_);if(!L)return;n.value=L;const j=L.defaultParams||C(_);Object.assign(r,j),t.value={id:"preview",filterId:L.id,params:{...j},intensity:1}}function v(_){if(Object.assign(r,_),t.value&&(t.value.params={...r}),i.value){const L=a.value.find(j=>j.id===i.value);L&&(L.params={...r})}}function h(_){const L=a.value.findIndex(j=>j.id===_);L!==-1&&a.value.splice(L,1)}function k(_,L){if(_<0||_>=a.value.length||L<0||L>=a.value.length)return;const[j]=a.value.splice(_,1);a.value.splice(L,0,j)}function E(_,L){const j=a.value.find(B=>B.id===_);j&&(j.intensity=Math.max(0,Math.min(1,L)))}function w(_){const L=a.value.find(j=>j.id===_);L&&(L.intensity=L.intensity>0?0:1)}function b(){a.value=[],t.value=null,n.value=null,i.value=null,Object.keys(r).forEach(_=>delete r[_])}function g(_){const L={id:$(),name:_,filters:a.value.map(B=>({filterId:B.filterId,params:Ai(B.params),intensity:Fi(B.intensity)})),created_at:new Date().toISOString()};o.value.push(L);const j=o.value.map(B=>({...B}));return localStorage.setItem("video-filter-presets",JSON.stringify(j)),L}function D(_){const L=o.value.find(j=>j.id===_);if(L){b();for(const j of L.filters){const B=c(j.filterId);B&&a.value.push({id:I(),filterId:B.id,params:{...j.params},intensity:Fi(j.intensity)})}}}function T(_){const L=o.value.findIndex(j=>j.id===_);L!==-1&&(o.value.splice(L,1),localStorage.setItem("video-filter-presets",JSON.stringify(o.value)))}function F(){try{const _=localStorage.getItem("video-filter-presets");if(!_)return;const L=JSON.parse(_);if(!Array.isArray(L))return;o.value=L.map(j=>JS(j)).filter(j=>j!==null)}catch{}}function V(){if(a.value.length===0)return"No filters applied";const _=a.value.map(L=>{const j=M(L.filterId);return(j==null?void 0:j.name)||L.filterId});return _.length===1?_[0]:_.length===2?`${_[0]} + ${_[1]}`:`${_[0]} + ${_.length-1} more`}function I(){return`filter-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}function $(){return`preset-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}function C(_){const L=c(_);return L?L.defaultParams||{}:{}}function M(_){return c(_)}return F(),{videoCompatibleFilters:l,activeFilters:a,selectedFilter:n,previewFilter:t,filterPresets:o,filterParams:r,hasActiveFilters:d,filtersByCategory:u,applyFilter:p,previewFilterEffect:f,updateFilterParams:v,removeFilter:h,reorderFilters:k,updateFilterIntensity:E,toggleFilter:w,clearAllFilters:b,saveFilterPreset:g,loadFilterPreset:D,deleteFilterPreset:T,getFilterSummary:V,setActiveFilters(_){var j;const L=[];for(const B of _){const U=m(B.filterId);if(!U){const S=cs(B.filterId);L.push({...B,filterId:S,params:Ai(B.params),intensity:Fi(B.intensity)});continue}L.push({...B,filterId:U,params:Ai(B.params),intensity:Fi(B.intensity)})}a.value=L,i.value=((j=a.value[0])==null?void 0:j.id)??null,Object.keys(r).forEach(B=>delete r[B]),a.value[0]&&Object.assign(r,Ai(a.value[0].params))}}}class Rp{constructor(n){this.textClips=new Map,this.overlayConfigs=new Map,this.fonts=new Map,this.nextId=0,this.composition=n,this.initializeDefaultFonts()}initializeDefaultFonts(){try{this.fonts.set("default",new ka({source:"https://fonts.googleapis.com/css2?family=Inter:wght@400",family:"Inter",weight:"400"})),this.fonts.set("bold",new ka({source:"https://fonts.googleapis.com/css2?family=Inter:wght@700",family:"Inter",weight:"700"})),this.fonts.set("serif",new ka({source:"https://fonts.googleapis.com/css2?family=Merriweather:wght@400",family:"Merriweather",weight:"400"}))}catch{}}async loadWebFont(n,t,o,i="400"){const r=new ka({source:t,family:o,weight:i});this.fonts.set(n,r)}loadLocalFont(n,t,o="400"){const i=new ka({source:`local('${t}')`,family:t,weight:o});this.fonts.set(n,i)}async addTextOverlay(n){const t=`text-overlay-${this.nextId++}`,o=this.buildTextClipConfig(n),i=new ci(o);return await this.composition.add(i),this.textClips.set(t,i),this.overlayConfigs.set(t,{...n}),t}buildTextClipConfig(n){const t={text:n.text,fontSize:n.fontSize||24,fillStyle:n.color||"#ffffff",textAlign:n.textAlign||"center",textBaseline:n.textBaseline||"middle"},o=n.fontFamily||"default",i=this.fonts.get(o)||this.fonts.get("default");if(i&&(t.font=i),this.applyPosition(t,n.position),n.startTime!==void 0&&(t.start=Ze.fromSeconds(n.startTime)),n.duration!==void 0){const r=n.startTime||0;t.stop=Ze.fromSeconds(r+n.duration)}return n.animation&&this.applyAnimation(t,n.animation,n),t}applyPosition(n,t){if(!t){n.position="center";return}if(typeof t!="string"){n.x=t.x,n.y=t.y;return}switch(t){case"center":n.position="center";break;case"top":n.x="50%",n.y="10%";break;case"bottom":n.x="50%",n.y="90%";break;case"left":n.x="10%",n.y="50%";break;case"right":n.x="90%",n.y="50%";break}}applyAnimation(n,t,o){if(!t)return;const i=o.startTime?Math.round(o.startTime*30):0,r=t.duration||1,l=Math.round(r*30),s=i+l,d=t.easing||"linear";switch(t.type){case"fade-in":n.alpha=new qe([i,s],[0,1],{easing:d});break;case"fade-out":n.alpha=new qe([i,s],[1,0],{easing:d});break;case"rotate":t.rotation&&(n.rotation=new qe([i,s],[t.rotation.from,t.rotation.to],{easing:d}));break;case"scale":t.scale&&(n.scale=new qe([i,s],[t.scale.from,t.scale.to],{easing:d}));break;case"slide":t.translate&&(n.translate={x:new qe([i,s],[t.translate.fromX,t.translate.toX],{easing:d}),y:new qe([i,s],[t.translate.fromY,t.translate.toY],{easing:d})});break;case"typewriter":n.alpha=new qe([i,s],[0,1],{easing:"linear"});break;case"custom":t.rotation&&(n.rotation=new qe([i,s],[t.rotation.from,t.rotation.to],{easing:d})),t.scale&&(n.scale=new qe([i,s],[t.scale.from,t.scale.to],{easing:d})),t.translate&&(n.translate={x:new qe([i,s],[t.translate.fromX,t.translate.toX],{easing:d}),y:new qe([i,s],[t.translate.fromY,t.translate.toY],{easing:d})});break}}async updateTextOverlay(n,t){const o=this.textClips.get(n);if(!o)throw new Error(`Text overlay with id ${n} not found`);const i=this.overlayConfigs.get(n);if(!i)throw new Error(`Text overlay with id ${n} is missing config`);const r={...i,...t};o.set(this.buildTextClipConfig(r)),this.overlayConfigs.set(n,r)}async removeTextOverlay(n){const t=this.textClips.get(n);if(!t)throw new Error(`Text overlay with id ${n} not found`);const o=this.composition.tracks;for(const i of o){const r=i.clips.indexOf(t);if(r!==-1){i.clips.splice(r,1);break}}this.textClips.delete(n),this.overlayConfigs.delete(n)}getTextOverlays(){return new Map(this.textClips)}async clearAllTextOverlays(){const n=Array.from(this.textClips.keys());for(const t of n)await this.removeTextOverlay(t)}getOverlays(){return Array.from(this.overlayConfigs.entries()).map(([n,t])=>({id:n,config:{...t}}))}async addCaptions(n,t="classic",o){var d;const r={classic:sr,cascade:xl,guinea:Sl,solar:Cl,spotlight:dr,whisper:ur}[t],l=await this.composition.createTrack("caption"),s=new bl({transcript:n});if(await l.add(s),await((d=l.generate)==null?void 0:d.call(l,r)),o&&l.clips.length>0){const u=l.clips[0];u==null||u.set(o)}}}class Lp{constructor(n){this.audioLayers=new Map,this.audioSources=new Map,this.nextId=0,this.masterVolume=1,this.composition=n}async loadAudioSource(n,t){try{const o=await oo.from(n),i=t||`audio-source-${this.nextId++}`;return this.audioSources.set(i,o),o}catch(o){throw o instanceof Error?o:new Error("Failed to load audio source")}}async addBackgroundMusic(n){return this.addAudioTrack({...n,name:n.name||"Background Music"})}async addAudioTrack(n){const t=`audio-track-${this.nextId++}`,o=await this.resolveAudioSource(n.source),i=this.createAudioClipConfig(n,o),r=new zi(i);let l=this.findAudioTrack();l||(l=await this.composition.createTrack("audio")),await l.add(r);const s={id:t,name:n.name||`Audio Track ${this.audioLayers.size+1}`,clip:r,track:l,config:n};return this.audioLayers.set(t,s),t}async resolveAudioSource(n){try{if(n instanceof oo)return n;if(typeof n=="string"&&n.trim()!=="")return await oo.from(n);if(n instanceof File)return await oo.from(URL.createObjectURL(n));throw new Error("Invalid audio source")}catch(t){throw t instanceof Error?t:new Error("Failed to create audio source")}}createAudioClipConfig(n,t){const o={source:t,volume:(n.volume??1)*this.masterVolume};if(n.startTime!==void 0&&(o.start=Ze.fromSeconds(n.startTime)),n.duration!==void 0){const i=n.startTime||0;o.stop=Ze.fromSeconds(i+n.duration)}return(n.fadeIn||n.fadeOut)&&(o.volume=this.createVolumeKeyframes(n)),o}findAudioTrack(){return this.composition.tracks.find(n=>n.kind==="audio")}removeClipFromTrack(n,t){const o=n.clips.indexOf(t);o!==-1&&n.clips.splice(o,1)}createVolumeKeyframes(n){const t=(n.volume??1)*this.masterVolume,o=n.startTime?Math.round(n.startTime*30):0,i=n.duration,r=[],l=[];if(n.fadeIn){const s=Math.round(n.fadeIn*30);r.push(o,o+s),l.push(0,t)}else r.push(o),l.push(t);if(n.fadeOut&&i){const s=o+Math.round(i*30),d=Math.round(n.fadeOut*30);n.fadeIn||(r.push(s-d),l.push(t)),r.push(s),l.push(0)}return new qe(r,l,{easing:"linear"})}async updateVolume(n,t){const o=this.audioLayers.get(n);if(!o)throw new Error(`Audio track with id ${n} not found`);const i=Math.max(0,Math.min(1,t));o.config.volume=i,o.clip.set({volume:this.resolveLayerVolume(o.config)})}async updateAudioTrack(n,t){const o=this.audioLayers.get(n);if(!o)throw new Error(`Audio track with id ${n} not found`);const i={...o.config,...t,source:t.source??o.config.source},r=await this.resolveAudioSource(i.source),l=new zi(this.createAudioClipConfig(i,r));this.removeClipFromTrack(o.track,o.clip),await o.track.add(l),o.clip=l,o.config=i,o.name=i.name||o.name}async applyFadeIn(n,t){const o=this.audioLayers.get(n);if(!o)throw new Error(`Audio track with id ${n} not found`);o.config.fadeIn=t,o.clip.set({volume:this.resolveLayerVolume(o.config)})}async applyFadeOut(n,t){const o=this.audioLayers.get(n);if(!o)throw new Error(`Audio track with id ${n} not found`);o.config.fadeOut=t,o.clip.set({volume:this.resolveLayerVolume(o.config)})}async removeAudioTrack(n){const t=this.audioLayers.get(n);if(!t)throw new Error(`Audio track with id ${n} not found`);this.removeClipFromTrack(t.track,t.clip),this.audioLayers.delete(n)}async muteTrack(n,t){const o=this.audioLayers.get(n);if(!o)throw new Error(`Audio track with id ${n} not found`);t?o.clip.set({volume:0}):o.clip.set({volume:this.resolveLayerVolume(o.config)})}setMasterVolume(n){this.masterVolume=Math.max(0,Math.min(1,n));for(const t of this.audioLayers.values())t.clip.set({volume:this.resolveLayerVolume(t.config)})}resolveLayerVolume(n){return n.fadeIn||n.fadeOut?this.createVolumeKeyframes(n):(n.volume??1)*this.masterVolume}getMasterVolume(){return this.masterVolume}getAudioLayers(){return Array.from(this.audioLayers.values())}getAudioLayer(n){return this.audioLayers.get(n)}async clearAllAudioTracks(){const n=Array.from(this.audioLayers.keys());for(const t of n)await this.removeAudioTrack(t)}async syncWithVideo(n,t){for(const o of this.audioLayers.values()){const i=o.config.startTime||0,r=o.config.duration||t-n;if(i+r>t){o.config.duration=t-i;const l=new zi(this.createAudioClipConfig(o.config,o.clip.source)),s=o.track.clips.indexOf(o.clip);s!==-1&&(o.track.clips[s]=l,o.clip=l)}}}exportConfiguration(){return Array.from(this.audioLayers.values()).map(n=>({id:n.id,name:n.name,config:{...n.config,source:n.config.source&&typeof n.config.source=="object"&&"type"in n.config.source?"[AudioSource]":n.config.source}}))}async importConfiguration(n){for(const{name:t,config:o}of n)await this.addAudioTrack({...o,name:t})}}function Pp(a,n){return function(){return a.apply(n,arguments)}}const{toString:qS}=Object.prototype,{getPrototypeOf:zd}=Object,{iterator:Il,toStringTag:Up}=Symbol,Dl=(a=>n=>{const t=qS.call(n);return a[t]||(a[t]=t.slice(8,-1).toLowerCase())})(Object.create(null)),dn=a=>(a=a.toLowerCase(),n=>Dl(n)===a),Fl=a=>n=>typeof n===a,{isArray:fi}=Array,er=Fl("undefined");function mr(a){return a!==null&&!er(a)&&a.constructor!==null&&!er(a.constructor)&&Ia(a.constructor.isBuffer)&&a.constructor.isBuffer(a)}const Op=dn("ArrayBuffer");function YS(a){let n;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?n=ArrayBuffer.isView(a):n=a&&a.buffer&&Op(a.buffer),n}const QS=Fl("string"),Ia=Fl("function"),zp=Fl("number"),pr=a=>a!==null&&typeof a=="object",ex=a=>a===!0||a===!1,zr=a=>{if(Dl(a)!=="object")return!1;const n=zd(a);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Up in a)&&!(Il in a)},tx=a=>{if(!pr(a)||mr(a))return!1;try{return Object.keys(a).length===0&&Object.getPrototypeOf(a)===Object.prototype}catch{return!1}},ax=dn("Date"),nx=dn("File"),ox=dn("Blob"),ix=dn("FileList"),rx=a=>pr(a)&&Ia(a.pipe),lx=a=>{let n;return a&&(typeof FormData=="function"&&a instanceof FormData||Ia(a.append)&&((n=Dl(a))==="formdata"||n==="object"&&Ia(a.toString)&&a.toString()==="[object FormData]"))},sx=dn("URLSearchParams"),[dx,ux,cx,mx]=["ReadableStream","Request","Response","Headers"].map(dn),px=a=>a.trim?a.trim():a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function fr(a,n,{allOwnKeys:t=!1}={}){if(a===null||typeof a>"u")return;let o,i;if(typeof a!="object"&&(a=[a]),fi(a))for(o=0,i=a.length;o<i;o++)n.call(null,a[o],o,a);else{if(mr(a))return;const r=t?Object.getOwnPropertyNames(a):Object.keys(a),l=r.length;let s;for(o=0;o<l;o++)s=r[o],n.call(null,a[s],s,a)}}function jp(a,n){if(mr(a))return null;n=n.toLowerCase();const t=Object.keys(a);let o=t.length,i;for(;o-- >0;)if(i=t[o],n===i.toLowerCase())return i;return null}const $o=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Wp=a=>!er(a)&&a!==$o;function nd(){const{caseless:a}=Wp(this)&&this||{},n={},t=(o,i)=>{const r=a&&jp(n,i)||i;zr(n[r])&&zr(o)?n[r]=nd(n[r],o):zr(o)?n[r]=nd({},o):fi(o)?n[r]=o.slice():n[r]=o};for(let o=0,i=arguments.length;o<i;o++)arguments[o]&&fr(arguments[o],t);return n}const fx=(a,n,t,{allOwnKeys:o}={})=>(fr(n,(i,r)=>{t&&Ia(i)?a[r]=Pp(i,t):a[r]=i},{allOwnKeys:o}),a),vx=a=>(a.charCodeAt(0)===65279&&(a=a.slice(1)),a),hx=(a,n,t,o)=>{a.prototype=Object.create(n.prototype,o),a.prototype.constructor=a,Object.defineProperty(a,"super",{value:n.prototype}),t&&Object.assign(a.prototype,t)},gx=(a,n,t,o)=>{let i,r,l;const s={};if(n=n||{},a==null)return n;do{for(i=Object.getOwnPropertyNames(a),r=i.length;r-- >0;)l=i[r],(!o||o(l,a,n))&&!s[l]&&(n[l]=a[l],s[l]=!0);a=t!==!1&&zd(a)}while(a&&(!t||t(a,n))&&a!==Object.prototype);return n},bx=(a,n,t)=>{a=String(a),(t===void 0||t>a.length)&&(t=a.length),t-=n.length;const o=a.indexOf(n,t);return o!==-1&&o===t},yx=a=>{if(!a)return null;if(fi(a))return a;let n=a.length;if(!zp(n))return null;const t=new Array(n);for(;n-- >0;)t[n]=a[n];return t},wx=(a=>n=>a&&n instanceof a)(typeof Uint8Array<"u"&&zd(Uint8Array)),kx=(a,n)=>{const o=(a&&a[Il]).call(a);let i;for(;(i=o.next())&&!i.done;){const r=i.value;n.call(a,r[0],r[1])}},_x=(a,n)=>{let t;const o=[];for(;(t=a.exec(n))!==null;)o.push(t);return o},Ex=dn("HTMLFormElement"),Sx=a=>a.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(t,o,i){return o.toUpperCase()+i}),gc=(({hasOwnProperty:a})=>(n,t)=>a.call(n,t))(Object.prototype),xx=dn("RegExp"),Zp=(a,n)=>{const t=Object.getOwnPropertyDescriptors(a),o={};fr(t,(i,r)=>{let l;(l=n(i,r,a))!==!1&&(o[r]=l||i)}),Object.defineProperties(a,o)},Cx=a=>{Zp(a,(n,t)=>{if(Ia(a)&&["arguments","caller","callee"].indexOf(t)!==-1)return!1;const o=a[t];if(Ia(o)){if(n.enumerable=!1,"writable"in n){n.writable=!1;return}n.set||(n.set=()=>{throw Error("Can not rewrite read-only method '"+t+"'")})}})},Vx=(a,n)=>{const t={},o=i=>{i.forEach(r=>{t[r]=!0})};return fi(a)?o(a):o(String(a).split(n)),t},Nx=()=>{},Tx=(a,n)=>a!=null&&Number.isFinite(a=+a)?a:n;function Bx(a){return!!(a&&Ia(a.append)&&a[Up]==="FormData"&&a[Il])}const Mx=a=>{const n=new Array(10),t=(o,i)=>{if(pr(o)){if(n.indexOf(o)>=0)return;if(mr(o))return o;if(!("toJSON"in o)){n[i]=o;const r=fi(o)?[]:{};return fr(o,(l,s)=>{const d=t(l,i+1);!er(d)&&(r[s]=d)}),n[i]=void 0,r}}return o};return t(a,0)},$x=dn("AsyncFunction"),Ix=a=>a&&(pr(a)||Ia(a))&&Ia(a.then)&&Ia(a.catch),Hp=((a,n)=>a?setImmediate:n?((t,o)=>($o.addEventListener("message",({source:i,data:r})=>{i===$o&&r===t&&o.length&&o.shift()()},!1),i=>{o.push(i),$o.postMessage(t,"*")}))(`axios@${Math.random()}`,[]):t=>setTimeout(t))(typeof setImmediate=="function",Ia($o.postMessage)),Dx=typeof queueMicrotask<"u"?queueMicrotask.bind($o):typeof process<"u"&&process.nextTick||Hp,Fx=a=>a!=null&&Ia(a[Il]),ve={isArray:fi,isArrayBuffer:Op,isBuffer:mr,isFormData:lx,isArrayBufferView:YS,isString:QS,isNumber:zp,isBoolean:ex,isObject:pr,isPlainObject:zr,isEmptyObject:tx,isReadableStream:dx,isRequest:ux,isResponse:cx,isHeaders:mx,isUndefined:er,isDate:ax,isFile:nx,isBlob:ox,isRegExp:xx,isFunction:Ia,isStream:rx,isURLSearchParams:sx,isTypedArray:wx,isFileList:ix,forEach:fr,merge:nd,extend:fx,trim:px,stripBOM:vx,inherits:hx,toFlatObject:gx,kindOf:Dl,kindOfTest:dn,endsWith:bx,toArray:yx,forEachEntry:kx,matchAll:_x,isHTMLForm:Ex,hasOwnProperty:gc,hasOwnProp:gc,reduceDescriptors:Zp,freezeMethods:Cx,toObjectSet:Vx,toCamelCase:Sx,noop:Nx,toFiniteNumber:Tx,findKey:jp,global:$o,isContextDefined:Wp,isSpecCompliantForm:Bx,toJSONObject:Mx,isAsyncFn:$x,isThenable:Ix,setImmediate:Hp,asap:Dx,isIterable:Fx};function st(a,n,t,o,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=a,this.name="AxiosError",n&&(this.code=n),t&&(this.config=t),o&&(this.request=o),i&&(this.response=i,this.status=i.status?i.status:null)}ve.inherits(st,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ve.toJSONObject(this.config),code:this.code,status:this.status}}});const Gp=st.prototype,Xp={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(a=>{Xp[a]={value:a}});Object.defineProperties(st,Xp);Object.defineProperty(Gp,"isAxiosError",{value:!0});st.from=(a,n,t,o,i,r)=>{const l=Object.create(Gp);return ve.toFlatObject(a,l,function(d){return d!==Error.prototype},s=>s!=="isAxiosError"),st.call(l,a.message,n,t,o,i),l.cause=a,l.name=a.name,r&&Object.assign(l,r),l};const Ax=null;function od(a){return ve.isPlainObject(a)||ve.isArray(a)}function Kp(a){return ve.endsWith(a,"[]")?a.slice(0,-2):a}function bc(a,n,t){return a?a.concat(n).map(function(i,r){return i=Kp(i),!t&&r?"["+i+"]":i}).join(t?".":""):n}function Rx(a){return ve.isArray(a)&&!a.some(od)}const Lx=ve.toFlatObject(ve,{},null,function(n){return/^is[A-Z]/.test(n)});function Al(a,n,t){if(!ve.isObject(a))throw new TypeError("target must be an object");n=n||new FormData,t=ve.toFlatObject(t,{metaTokens:!0,dots:!1,indexes:!1},!1,function(h,k){return!ve.isUndefined(k[h])});const o=t.metaTokens,i=t.visitor||c,r=t.dots,l=t.indexes,d=(t.Blob||typeof Blob<"u"&&Blob)&&ve.isSpecCompliantForm(n);if(!ve.isFunction(i))throw new TypeError("visitor must be a function");function u(v){if(v===null)return"";if(ve.isDate(v))return v.toISOString();if(ve.isBoolean(v))return v.toString();if(!d&&ve.isBlob(v))throw new st("Blob is not supported. Use a Buffer instead.");return ve.isArrayBuffer(v)||ve.isTypedArray(v)?d&&typeof Blob=="function"?new Blob([v]):Buffer.from(v):v}function c(v,h,k){let E=v;if(v&&!k&&typeof v=="object"){if(ve.endsWith(h,"{}"))h=o?h:h.slice(0,-2),v=JSON.stringify(v);else if(ve.isArray(v)&&Rx(v)||(ve.isFileList(v)||ve.endsWith(h,"[]"))&&(E=ve.toArray(v)))return h=Kp(h),E.forEach(function(b,g){!(ve.isUndefined(b)||b===null)&&n.append(l===!0?bc([h],g,r):l===null?h:h+"[]",u(b))}),!1}return od(v)?!0:(n.append(bc(k,h,r),u(v)),!1)}const m=[],p=Object.assign(Lx,{defaultVisitor:c,convertValue:u,isVisitable:od});function f(v,h){if(!ve.isUndefined(v)){if(m.indexOf(v)!==-1)throw Error("Circular reference detected in "+h.join("."));m.push(v),ve.forEach(v,function(E,w){(!(ve.isUndefined(E)||E===null)&&i.call(n,E,ve.isString(w)?w.trim():w,h,p))===!0&&f(E,h?h.concat(w):[w])}),m.pop()}}if(!ve.isObject(a))throw new TypeError("data must be an object");return f(a),n}function yc(a){const n={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(a).replace(/[!'()~]|%20|%00/g,function(o){return n[o]})}function jd(a,n){this._pairs=[],a&&Al(a,this,n)}const Jp=jd.prototype;Jp.append=function(n,t){this._pairs.push([n,t])};Jp.toString=function(n){const t=n?function(o){return n.call(this,o,yc)}:yc;return this._pairs.map(function(i){return t(i[0])+"="+t(i[1])},"").join("&")};function Px(a){return encodeURIComponent(a).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function qp(a,n,t){if(!n)return a;const o=t&&t.encode||Px;ve.isFunction(t)&&(t={serialize:t});const i=t&&t.serialize;let r;if(i?r=i(n,t):r=ve.isURLSearchParams(n)?n.toString():new jd(n,t).toString(o),r){const l=a.indexOf("#");l!==-1&&(a=a.slice(0,l)),a+=(a.indexOf("?")===-1?"?":"&")+r}return a}class wc{constructor(){this.handlers=[]}use(n,t,o){return this.handlers.push({fulfilled:n,rejected:t,synchronous:o?o.synchronous:!1,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(n){this.handlers[n]&&(this.handlers[n]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(n){ve.forEach(this.handlers,function(o){o!==null&&n(o)})}}const Yp={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ux=typeof URLSearchParams<"u"?URLSearchParams:jd,Ox=typeof FormData<"u"?FormData:null,zx=typeof Blob<"u"?Blob:null,jx={isBrowser:!0,classes:{URLSearchParams:Ux,FormData:Ox,Blob:zx},protocols:["http","https","file","blob","url","data"]},Wd=typeof window<"u"&&typeof document<"u",id=typeof navigator=="object"&&navigator||void 0,Wx=Wd&&(!id||["ReactNative","NativeScript","NS"].indexOf(id.product)<0),Zx=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Hx=Wd&&window.location.href||"http://localhost",Gx=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Wd,hasStandardBrowserEnv:Wx,hasStandardBrowserWebWorkerEnv:Zx,navigator:id,origin:Hx},Symbol.toStringTag,{value:"Module"})),_a={...Gx,...jx};function Xx(a,n){return Al(a,new _a.classes.URLSearchParams,{visitor:function(t,o,i,r){return _a.isNode&&ve.isBuffer(t)?(this.append(o,t.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...n})}function Kx(a){return ve.matchAll(/\w+|\[(\w*)]/g,a).map(n=>n[0]==="[]"?"":n[1]||n[0])}function Jx(a){const n={},t=Object.keys(a);let o;const i=t.length;let r;for(o=0;o<i;o++)r=t[o],n[r]=a[r];return n}function Qp(a){function n(t,o,i,r){let l=t[r++];if(l==="__proto__")return!0;const s=Number.isFinite(+l),d=r>=t.length;return l=!l&&ve.isArray(i)?i.length:l,d?(ve.hasOwnProp(i,l)?i[l]=[i[l],o]:i[l]=o,!s):((!i[l]||!ve.isObject(i[l]))&&(i[l]=[]),n(t,o,i[l],r)&&ve.isArray(i[l])&&(i[l]=Jx(i[l])),!s)}if(ve.isFormData(a)&&ve.isFunction(a.entries)){const t={};return ve.forEachEntry(a,(o,i)=>{n(Kx(o),i,t,0)}),t}return null}function qx(a,n,t){if(ve.isString(a))try{return(n||JSON.parse)(a),ve.trim(a)}catch(o){if(o.name!=="SyntaxError")throw o}return(t||JSON.stringify)(a)}const vr={transitional:Yp,adapter:["xhr","http","fetch"],transformRequest:[function(n,t){const o=t.getContentType()||"",i=o.indexOf("application/json")>-1,r=ve.isObject(n);if(r&&ve.isHTMLForm(n)&&(n=new FormData(n)),ve.isFormData(n))return i?JSON.stringify(Qp(n)):n;if(ve.isArrayBuffer(n)||ve.isBuffer(n)||ve.isStream(n)||ve.isFile(n)||ve.isBlob(n)||ve.isReadableStream(n))return n;if(ve.isArrayBufferView(n))return n.buffer;if(ve.isURLSearchParams(n))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),n.toString();let s;if(r){if(o.indexOf("application/x-www-form-urlencoded")>-1)return Xx(n,this.formSerializer).toString();if((s=ve.isFileList(n))||o.indexOf("multipart/form-data")>-1){const d=this.env&&this.env.FormData;return Al(s?{"files[]":n}:n,d&&new d,this.formSerializer)}}return r||i?(t.setContentType("application/json",!1),qx(n)):n}],transformResponse:[function(n){const t=this.transitional||vr.transitional,o=t&&t.forcedJSONParsing,i=this.responseType==="json";if(ve.isResponse(n)||ve.isReadableStream(n))return n;if(n&&ve.isString(n)&&(o&&!this.responseType||i)){const l=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(n)}catch(s){if(l)throw s.name==="SyntaxError"?st.from(s,st.ERR_BAD_RESPONSE,this,null,this.response):s}}return n}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:_a.classes.FormData,Blob:_a.classes.Blob},validateStatus:function(n){return n>=200&&n<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ve.forEach(["delete","get","head","post","put","patch"],a=>{vr.headers[a]={}});const Yx=ve.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Qx=a=>{const n={};let t,o,i;return a&&a.split(`
345
+ `).forEach(function(l){i=l.indexOf(":"),t=l.substring(0,i).trim().toLowerCase(),o=l.substring(i+1).trim(),!(!t||n[t]&&Yx[t])&&(t==="set-cookie"?n[t]?n[t].push(o):n[t]=[o]:n[t]=n[t]?n[t]+", "+o:o)}),n},kc=Symbol("internals");function xi(a){return a&&String(a).trim().toLowerCase()}function jr(a){return a===!1||a==null?a:ve.isArray(a)?a.map(jr):String(a)}function eC(a){const n=Object.create(null),t=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let o;for(;o=t.exec(a);)n[o[1]]=o[2];return n}const tC=a=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(a.trim());function ms(a,n,t,o,i){if(ve.isFunction(o))return o.call(this,n,t);if(i&&(n=t),!!ve.isString(n)){if(ve.isString(o))return n.indexOf(o)!==-1;if(ve.isRegExp(o))return o.test(n)}}function aC(a){return a.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(n,t,o)=>t.toUpperCase()+o)}function nC(a,n){const t=ve.toCamelCase(" "+n);["get","set","has"].forEach(o=>{Object.defineProperty(a,o+t,{value:function(i,r,l){return this[o].call(this,n,i,r,l)},configurable:!0})})}let Da=class{constructor(n){n&&this.set(n)}set(n,t,o){const i=this;function r(s,d,u){const c=xi(d);if(!c)throw new Error("header name must be a non-empty string");const m=ve.findKey(i,c);(!m||i[m]===void 0||u===!0||u===void 0&&i[m]!==!1)&&(i[m||d]=jr(s))}const l=(s,d)=>ve.forEach(s,(u,c)=>r(u,c,d));if(ve.isPlainObject(n)||n instanceof this.constructor)l(n,t);else if(ve.isString(n)&&(n=n.trim())&&!tC(n))l(Qx(n),t);else if(ve.isObject(n)&&ve.isIterable(n)){let s={},d,u;for(const c of n){if(!ve.isArray(c))throw TypeError("Object iterator must return a key-value pair");s[u=c[0]]=(d=s[u])?ve.isArray(d)?[...d,c[1]]:[d,c[1]]:c[1]}l(s,t)}else n!=null&&r(t,n,o);return this}get(n,t){if(n=xi(n),n){const o=ve.findKey(this,n);if(o){const i=this[o];if(!t)return i;if(t===!0)return eC(i);if(ve.isFunction(t))return t.call(this,i,o);if(ve.isRegExp(t))return t.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(n,t){if(n=xi(n),n){const o=ve.findKey(this,n);return!!(o&&this[o]!==void 0&&(!t||ms(this,this[o],o,t)))}return!1}delete(n,t){const o=this;let i=!1;function r(l){if(l=xi(l),l){const s=ve.findKey(o,l);s&&(!t||ms(o,o[s],s,t))&&(delete o[s],i=!0)}}return ve.isArray(n)?n.forEach(r):r(n),i}clear(n){const t=Object.keys(this);let o=t.length,i=!1;for(;o--;){const r=t[o];(!n||ms(this,this[r],r,n,!0))&&(delete this[r],i=!0)}return i}normalize(n){const t=this,o={};return ve.forEach(this,(i,r)=>{const l=ve.findKey(o,r);if(l){t[l]=jr(i),delete t[r];return}const s=n?aC(r):String(r).trim();s!==r&&delete t[r],t[s]=jr(i),o[s]=!0}),this}concat(...n){return this.constructor.concat(this,...n)}toJSON(n){const t=Object.create(null);return ve.forEach(this,(o,i)=>{o!=null&&o!==!1&&(t[i]=n&&ve.isArray(o)?o.join(", "):o)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([n,t])=>n+": "+t).join(`
346
+ `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(n){return n instanceof this?n:new this(n)}static concat(n,...t){const o=new this(n);return t.forEach(i=>o.set(i)),o}static accessor(n){const o=(this[kc]=this[kc]={accessors:{}}).accessors,i=this.prototype;function r(l){const s=xi(l);o[s]||(nC(i,l),o[s]=!0)}return ve.isArray(n)?n.forEach(r):r(n),this}};Da.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);ve.reduceDescriptors(Da.prototype,({value:a},n)=>{let t=n[0].toUpperCase()+n.slice(1);return{get:()=>a,set(o){this[t]=o}}});ve.freezeMethods(Da);function ps(a,n){const t=this||vr,o=n||t,i=Da.from(o.headers);let r=o.data;return ve.forEach(a,function(s){r=s.call(t,r,i.normalize(),n?n.status:void 0)}),i.normalize(),r}function ef(a){return!!(a&&a.__CANCEL__)}function vi(a,n,t){st.call(this,a??"canceled",st.ERR_CANCELED,n,t),this.name="CanceledError"}ve.inherits(vi,st,{__CANCEL__:!0});function tf(a,n,t){const o=t.config.validateStatus;!t.status||!o||o(t.status)?a(t):n(new st("Request failed with status code "+t.status,[st.ERR_BAD_REQUEST,st.ERR_BAD_RESPONSE][Math.floor(t.status/100)-4],t.config,t.request,t))}function oC(a){const n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(a);return n&&n[1]||""}function iC(a,n){a=a||10;const t=new Array(a),o=new Array(a);let i=0,r=0,l;return n=n!==void 0?n:1e3,function(d){const u=Date.now(),c=o[r];l||(l=u),t[i]=d,o[i]=u;let m=r,p=0;for(;m!==i;)p+=t[m++],m=m%a;if(i=(i+1)%a,i===r&&(r=(r+1)%a),u-l<n)return;const f=c&&u-c;return f?Math.round(p*1e3/f):void 0}}function rC(a,n){let t=0,o=1e3/n,i,r;const l=(u,c=Date.now())=>{t=c,i=null,r&&(clearTimeout(r),r=null),a(...u)};return[(...u)=>{const c=Date.now(),m=c-t;m>=o?l(u,c):(i=u,r||(r=setTimeout(()=>{r=null,l(i)},o-m)))},()=>i&&l(i)]}const il=(a,n,t=3)=>{let o=0;const i=iC(50,250);return rC(r=>{const l=r.loaded,s=r.lengthComputable?r.total:void 0,d=l-o,u=i(d),c=l<=s;o=l;const m={loaded:l,total:s,progress:s?l/s:void 0,bytes:d,rate:u||void 0,estimated:u&&s&&c?(s-l)/u:void 0,event:r,lengthComputable:s!=null,[n?"download":"upload"]:!0};a(m)},t)},_c=(a,n)=>{const t=a!=null;return[o=>n[0]({lengthComputable:t,total:a,loaded:o}),n[1]]},Ec=a=>(...n)=>ve.asap(()=>a(...n)),lC=_a.hasStandardBrowserEnv?((a,n)=>t=>(t=new URL(t,_a.origin),a.protocol===t.protocol&&a.host===t.host&&(n||a.port===t.port)))(new URL(_a.origin),_a.navigator&&/(msie|trident)/i.test(_a.navigator.userAgent)):()=>!0,sC=_a.hasStandardBrowserEnv?{write(a,n,t,o,i,r){const l=[a+"="+encodeURIComponent(n)];ve.isNumber(t)&&l.push("expires="+new Date(t).toGMTString()),ve.isString(o)&&l.push("path="+o),ve.isString(i)&&l.push("domain="+i),r===!0&&l.push("secure"),document.cookie=l.join("; ")},read(a){const n=document.cookie.match(new RegExp("(^|;\\s*)("+a+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove(a){this.write(a,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function dC(a){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(a)}function uC(a,n){return n?a.replace(/\/?\/$/,"")+"/"+n.replace(/^\/+/,""):a}function af(a,n,t){let o=!dC(n);return a&&(o||t==!1)?uC(a,n):n}const Sc=a=>a instanceof Da?{...a}:a;function Lo(a,n){n=n||{};const t={};function o(u,c,m,p){return ve.isPlainObject(u)&&ve.isPlainObject(c)?ve.merge.call({caseless:p},u,c):ve.isPlainObject(c)?ve.merge({},c):ve.isArray(c)?c.slice():c}function i(u,c,m,p){if(ve.isUndefined(c)){if(!ve.isUndefined(u))return o(void 0,u,m,p)}else return o(u,c,m,p)}function r(u,c){if(!ve.isUndefined(c))return o(void 0,c)}function l(u,c){if(ve.isUndefined(c)){if(!ve.isUndefined(u))return o(void 0,u)}else return o(void 0,c)}function s(u,c,m){if(m in n)return o(u,c);if(m in a)return o(void 0,u)}const d={url:r,method:r,data:r,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,withXSRFToken:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:s,headers:(u,c,m)=>i(Sc(u),Sc(c),m,!0)};return ve.forEach(Object.keys({...a,...n}),function(c){const m=d[c]||i,p=m(a[c],n[c],c);ve.isUndefined(p)&&m!==s||(t[c]=p)}),t}const nf=a=>{const n=Lo({},a);let{data:t,withXSRFToken:o,xsrfHeaderName:i,xsrfCookieName:r,headers:l,auth:s}=n;n.headers=l=Da.from(l),n.url=qp(af(n.baseURL,n.url,n.allowAbsoluteUrls),a.params,a.paramsSerializer),s&&l.set("Authorization","Basic "+btoa((s.username||"")+":"+(s.password?unescape(encodeURIComponent(s.password)):"")));let d;if(ve.isFormData(t)){if(_a.hasStandardBrowserEnv||_a.hasStandardBrowserWebWorkerEnv)l.setContentType(void 0);else if((d=l.getContentType())!==!1){const[u,...c]=d?d.split(";").map(m=>m.trim()).filter(Boolean):[];l.setContentType([u||"multipart/form-data",...c].join("; "))}}if(_a.hasStandardBrowserEnv&&(o&&ve.isFunction(o)&&(o=o(n)),o||o!==!1&&lC(n.url))){const u=i&&r&&sC.read(r);u&&l.set(i,u)}return n},cC=typeof XMLHttpRequest<"u",mC=cC&&function(a){return new Promise(function(t,o){const i=nf(a);let r=i.data;const l=Da.from(i.headers).normalize();let{responseType:s,onUploadProgress:d,onDownloadProgress:u}=i,c,m,p,f,v;function h(){f&&f(),v&&v(),i.cancelToken&&i.cancelToken.unsubscribe(c),i.signal&&i.signal.removeEventListener("abort",c)}let k=new XMLHttpRequest;k.open(i.method.toUpperCase(),i.url,!0),k.timeout=i.timeout;function E(){if(!k)return;const b=Da.from("getAllResponseHeaders"in k&&k.getAllResponseHeaders()),D={data:!s||s==="text"||s==="json"?k.responseText:k.response,status:k.status,statusText:k.statusText,headers:b,config:a,request:k};tf(function(F){t(F),h()},function(F){o(F),h()},D),k=null}"onloadend"in k?k.onloadend=E:k.onreadystatechange=function(){!k||k.readyState!==4||k.status===0&&!(k.responseURL&&k.responseURL.indexOf("file:")===0)||setTimeout(E)},k.onabort=function(){k&&(o(new st("Request aborted",st.ECONNABORTED,a,k)),k=null)},k.onerror=function(){o(new st("Network Error",st.ERR_NETWORK,a,k)),k=null},k.ontimeout=function(){let g=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const D=i.transitional||Yp;i.timeoutErrorMessage&&(g=i.timeoutErrorMessage),o(new st(g,D.clarifyTimeoutError?st.ETIMEDOUT:st.ECONNABORTED,a,k)),k=null},r===void 0&&l.setContentType(null),"setRequestHeader"in k&&ve.forEach(l.toJSON(),function(g,D){k.setRequestHeader(D,g)}),ve.isUndefined(i.withCredentials)||(k.withCredentials=!!i.withCredentials),s&&s!=="json"&&(k.responseType=i.responseType),u&&([p,v]=il(u,!0),k.addEventListener("progress",p)),d&&k.upload&&([m,f]=il(d),k.upload.addEventListener("progress",m),k.upload.addEventListener("loadend",f)),(i.cancelToken||i.signal)&&(c=b=>{k&&(o(!b||b.type?new vi(null,a,k):b),k.abort(),k=null)},i.cancelToken&&i.cancelToken.subscribe(c),i.signal&&(i.signal.aborted?c():i.signal.addEventListener("abort",c)));const w=oC(i.url);if(w&&_a.protocols.indexOf(w)===-1){o(new st("Unsupported protocol "+w+":",st.ERR_BAD_REQUEST,a));return}k.send(r||null)})},pC=(a,n)=>{const{length:t}=a=a?a.filter(Boolean):[];if(n||t){let o=new AbortController,i;const r=function(u){if(!i){i=!0,s();const c=u instanceof Error?u:this.reason;o.abort(c instanceof st?c:new vi(c instanceof Error?c.message:c))}};let l=n&&setTimeout(()=>{l=null,r(new st(`timeout ${n} of ms exceeded`,st.ETIMEDOUT))},n);const s=()=>{a&&(l&&clearTimeout(l),l=null,a.forEach(u=>{u.unsubscribe?u.unsubscribe(r):u.removeEventListener("abort",r)}),a=null)};a.forEach(u=>u.addEventListener("abort",r));const{signal:d}=o;return d.unsubscribe=()=>ve.asap(s),d}},fC=function*(a,n){let t=a.byteLength;if(t<n){yield a;return}let o=0,i;for(;o<t;)i=o+n,yield a.slice(o,i),o=i},vC=async function*(a,n){for await(const t of hC(a))yield*fC(t,n)},hC=async function*(a){if(a[Symbol.asyncIterator]){yield*a;return}const n=a.getReader();try{for(;;){const{done:t,value:o}=await n.read();if(t)break;yield o}}finally{await n.cancel()}},xc=(a,n,t,o)=>{const i=vC(a,n);let r=0,l,s=d=>{l||(l=!0,o&&o(d))};return new ReadableStream({async pull(d){try{const{done:u,value:c}=await i.next();if(u){s(),d.close();return}let m=c.byteLength;if(t){let p=r+=m;t(p)}d.enqueue(new Uint8Array(c))}catch(u){throw s(u),u}},cancel(d){return s(d),i.return()}},{highWaterMark:2})},Rl=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",of=Rl&&typeof ReadableStream=="function",gC=Rl&&(typeof TextEncoder=="function"?(a=>n=>a.encode(n))(new TextEncoder):async a=>new Uint8Array(await new Response(a).arrayBuffer())),rf=(a,...n)=>{try{return!!a(...n)}catch{return!1}},bC=of&&rf(()=>{let a=!1;const n=new Request(_a.origin,{body:new ReadableStream,method:"POST",get duplex(){return a=!0,"half"}}).headers.has("Content-Type");return a&&!n}),Cc=64*1024,rd=of&&rf(()=>ve.isReadableStream(new Response("").body)),rl={stream:rd&&(a=>a.body)};Rl&&(a=>{["text","arrayBuffer","blob","formData","stream"].forEach(n=>{!rl[n]&&(rl[n]=ve.isFunction(a[n])?t=>t[n]():(t,o)=>{throw new st(`Response type '${n}' is not supported`,st.ERR_NOT_SUPPORT,o)})})})(new Response);const yC=async a=>{if(a==null)return 0;if(ve.isBlob(a))return a.size;if(ve.isSpecCompliantForm(a))return(await new Request(_a.origin,{method:"POST",body:a}).arrayBuffer()).byteLength;if(ve.isArrayBufferView(a)||ve.isArrayBuffer(a))return a.byteLength;if(ve.isURLSearchParams(a)&&(a=a+""),ve.isString(a))return(await gC(a)).byteLength},wC=async(a,n)=>{const t=ve.toFiniteNumber(a.getContentLength());return t??yC(n)},kC=Rl&&(async a=>{let{url:n,method:t,data:o,signal:i,cancelToken:r,timeout:l,onDownloadProgress:s,onUploadProgress:d,responseType:u,headers:c,withCredentials:m="same-origin",fetchOptions:p}=nf(a);u=u?(u+"").toLowerCase():"text";let f=pC([i,r&&r.toAbortSignal()],l),v;const h=f&&f.unsubscribe&&(()=>{f.unsubscribe()});let k;try{if(d&&bC&&t!=="get"&&t!=="head"&&(k=await wC(c,o))!==0){let D=new Request(n,{method:"POST",body:o,duplex:"half"}),T;if(ve.isFormData(o)&&(T=D.headers.get("content-type"))&&c.setContentType(T),D.body){const[F,V]=_c(k,il(Ec(d)));o=xc(D.body,Cc,F,V)}}ve.isString(m)||(m=m?"include":"omit");const E="credentials"in Request.prototype;v=new Request(n,{...p,signal:f,method:t.toUpperCase(),headers:c.normalize().toJSON(),body:o,duplex:"half",credentials:E?m:void 0});let w=await fetch(v,p);const b=rd&&(u==="stream"||u==="response");if(rd&&(s||b&&h)){const D={};["status","statusText","headers"].forEach(I=>{D[I]=w[I]});const T=ve.toFiniteNumber(w.headers.get("content-length")),[F,V]=s&&_c(T,il(Ec(s),!0))||[];w=new Response(xc(w.body,Cc,F,()=>{V&&V(),h&&h()}),D)}u=u||"text";let g=await rl[ve.findKey(rl,u)||"text"](w,a);return!b&&h&&h(),await new Promise((D,T)=>{tf(D,T,{data:g,headers:Da.from(w.headers),status:w.status,statusText:w.statusText,config:a,request:v})})}catch(E){throw h&&h(),E&&E.name==="TypeError"&&/Load failed|fetch/i.test(E.message)?Object.assign(new st("Network Error",st.ERR_NETWORK,a,v),{cause:E.cause||E}):st.from(E,E&&E.code,a,v)}}),ld={http:Ax,xhr:mC,fetch:kC};ve.forEach(ld,(a,n)=>{if(a){try{Object.defineProperty(a,"name",{value:n})}catch{}Object.defineProperty(a,"adapterName",{value:n})}});const Vc=a=>`- ${a}`,_C=a=>ve.isFunction(a)||a===null||a===!1,lf={getAdapter:a=>{a=ve.isArray(a)?a:[a];const{length:n}=a;let t,o;const i={};for(let r=0;r<n;r++){t=a[r];let l;if(o=t,!_C(t)&&(o=ld[(l=String(t)).toLowerCase()],o===void 0))throw new st(`Unknown adapter '${l}'`);if(o)break;i[l||"#"+r]=o}if(!o){const r=Object.entries(i).map(([s,d])=>`adapter ${s} `+(d===!1?"is not supported by the environment":"is not available in the build"));let l=n?r.length>1?`since :
347
+ `+r.map(Vc).join(`
348
+ `):" "+Vc(r[0]):"as no adapter specified";throw new st("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return o},adapters:ld};function fs(a){if(a.cancelToken&&a.cancelToken.throwIfRequested(),a.signal&&a.signal.aborted)throw new vi(null,a)}function Nc(a){return fs(a),a.headers=Da.from(a.headers),a.data=ps.call(a,a.transformRequest),["post","put","patch"].indexOf(a.method)!==-1&&a.headers.setContentType("application/x-www-form-urlencoded",!1),lf.getAdapter(a.adapter||vr.adapter)(a).then(function(o){return fs(a),o.data=ps.call(a,a.transformResponse,o),o.headers=Da.from(o.headers),o},function(o){return ef(o)||(fs(a),o&&o.response&&(o.response.data=ps.call(a,a.transformResponse,o.response),o.response.headers=Da.from(o.response.headers))),Promise.reject(o)})}const sf="1.11.0",Ll={};["object","boolean","number","function","string","symbol"].forEach((a,n)=>{Ll[a]=function(o){return typeof o===a||"a"+(n<1?"n ":" ")+a}});const Tc={};Ll.transitional=function(n,t,o){function i(r,l){return"[Axios v"+sf+"] Transitional option '"+r+"'"+l+(o?". "+o:"")}return(r,l,s)=>{if(n===!1)throw new st(i(l," has been removed"+(t?" in "+t:"")),st.ERR_DEPRECATED);return t&&!Tc[l]&&(Tc[l]=!0),n?n(r,l,s):!0}};Ll.spelling=function(n){return(t,o)=>!0};function EC(a,n,t){if(typeof a!="object")throw new st("options must be an object",st.ERR_BAD_OPTION_VALUE);const o=Object.keys(a);let i=o.length;for(;i-- >0;){const r=o[i],l=n[r];if(l){const s=a[r],d=s===void 0||l(s,r,a);if(d!==!0)throw new st("option "+r+" must be "+d,st.ERR_BAD_OPTION_VALUE);continue}if(t!==!0)throw new st("Unknown option "+r,st.ERR_BAD_OPTION)}}const Wr={assertOptions:EC,validators:Ll},gn=Wr.validators;let Do=class{constructor(n){this.defaults=n||{},this.interceptors={request:new wc,response:new wc}}async request(n,t){try{return await this._request(n,t)}catch(o){if(o instanceof Error){let i={};Error.captureStackTrace?Error.captureStackTrace(i):i=new Error;const r=i.stack?i.stack.replace(/^.+\n/,""):"";try{o.stack?r&&!String(o.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(o.stack+=`
349
+ `+r):o.stack=r}catch{}}throw o}}_request(n,t){typeof n=="string"?(t=t||{},t.url=n):t=n||{},t=Lo(this.defaults,t);const{transitional:o,paramsSerializer:i,headers:r}=t;o!==void 0&&Wr.assertOptions(o,{silentJSONParsing:gn.transitional(gn.boolean),forcedJSONParsing:gn.transitional(gn.boolean),clarifyTimeoutError:gn.transitional(gn.boolean)},!1),i!=null&&(ve.isFunction(i)?t.paramsSerializer={serialize:i}:Wr.assertOptions(i,{encode:gn.function,serialize:gn.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Wr.assertOptions(t,{baseUrl:gn.spelling("baseURL"),withXsrfToken:gn.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let l=r&&ve.merge(r.common,r[t.method]);r&&ve.forEach(["delete","get","head","post","put","patch","common"],v=>{delete r[v]}),t.headers=Da.concat(l,r);const s=[];let d=!0;this.interceptors.request.forEach(function(h){typeof h.runWhen=="function"&&h.runWhen(t)===!1||(d=d&&h.synchronous,s.unshift(h.fulfilled,h.rejected))});const u=[];this.interceptors.response.forEach(function(h){u.push(h.fulfilled,h.rejected)});let c,m=0,p;if(!d){const v=[Nc.bind(this),void 0];for(v.unshift(...s),v.push(...u),p=v.length,c=Promise.resolve(t);m<p;)c=c.then(v[m++],v[m++]);return c}p=s.length;let f=t;for(m=0;m<p;){const v=s[m++],h=s[m++];try{f=v(f)}catch(k){h.call(this,k);break}}try{c=Nc.call(this,f)}catch(v){return Promise.reject(v)}for(m=0,p=u.length;m<p;)c=c.then(u[m++],u[m++]);return c}getUri(n){n=Lo(this.defaults,n);const t=af(n.baseURL,n.url,n.allowAbsoluteUrls);return qp(t,n.params,n.paramsSerializer)}};ve.forEach(["delete","get","head","options"],function(n){Do.prototype[n]=function(t,o){return this.request(Lo(o||{},{method:n,url:t,data:(o||{}).data}))}});ve.forEach(["post","put","patch"],function(n){function t(o){return function(r,l,s){return this.request(Lo(s||{},{method:n,headers:o?{"Content-Type":"multipart/form-data"}:{},url:r,data:l}))}}Do.prototype[n]=t(),Do.prototype[n+"Form"]=t(!0)});let SC=class df{constructor(n){if(typeof n!="function")throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(r){t=r});const o=this;this.promise.then(i=>{if(!o._listeners)return;let r=o._listeners.length;for(;r-- >0;)o._listeners[r](i);o._listeners=null}),this.promise.then=i=>{let r;const l=new Promise(s=>{o.subscribe(s),r=s}).then(i);return l.cancel=function(){o.unsubscribe(r)},l},n(function(r,l,s){o.reason||(o.reason=new vi(r,l,s),t(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(n){if(this.reason){n(this.reason);return}this._listeners?this._listeners.push(n):this._listeners=[n]}unsubscribe(n){if(!this._listeners)return;const t=this._listeners.indexOf(n);t!==-1&&this._listeners.splice(t,1)}toAbortSignal(){const n=new AbortController,t=o=>{n.abort(o)};return this.subscribe(t),n.signal.unsubscribe=()=>this.unsubscribe(t),n.signal}static source(){let n;return{token:new df(function(i){n=i}),cancel:n}}};function xC(a){return function(t){return a.apply(null,t)}}function CC(a){return ve.isObject(a)&&a.isAxiosError===!0}const sd={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(sd).forEach(([a,n])=>{sd[n]=a});function uf(a){const n=new Do(a),t=Pp(Do.prototype.request,n);return ve.extend(t,Do.prototype,n,{allOwnKeys:!0}),ve.extend(t,n,null,{allOwnKeys:!0}),t.create=function(i){return uf(Lo(a,i))},t}const ta=uf(vr);ta.Axios=Do;ta.CanceledError=vi;ta.CancelToken=SC;ta.isCancel=ef;ta.VERSION=sf;ta.toFormData=Al;ta.AxiosError=st;ta.Cancel=ta.CanceledError;ta.all=function(n){return Promise.all(n)};ta.spread=xC;ta.isAxiosError=CC;ta.mergeConfig=Lo;ta.AxiosHeaders=Da;ta.formToJSON=a=>Qp(ve.isHTMLForm(a)?new FormData(a):a);ta.getAdapter=lf.getAdapter;ta.HttpStatusCode=sd;ta.default=ta;const{Axios:eO,AxiosError:tO,CanceledError:aO,isCancel:nO,CancelToken:oO,VERSION:iO,all:rO,Cancel:lO,isAxiosError:sO,spread:dO,toFormData:uO,AxiosHeaders:cO,HttpStatusCode:mO,formToJSON:pO,getAdapter:fO,mergeConfig:vO}=ta;class Pl{constructor(n="/api/v1"){this.eventSource=null,this.progressCallbacks=new Map,this.api=ta.create({baseURL:n,headers:{"Content-Type":"application/json",Accept:"application/json"}}),this.api.interceptors.request.use(t=>{const o=this.getAuthToken();return o&&(t.headers.Authorization=`Bearer ${o}`),t}),this.api.interceptors.response.use(t=>t,t=>{var o;return(o=t.response)==null||o.status,Promise.reject(t)})}async createJob(n){try{const t=await this.api.post("/video/jobs",n);return this.normalizeJob(t.data.data)}catch(t){throw t}}async createRenderJob(n){try{const t=await this.api.post("/video/jobs/render",n);return this.normalizeJob(t.data.data)}catch(t){throw t}}async pollRenderJob(n,t,o=3e3,i=6e5){const r=Date.now();return new Promise((l,s)=>{const d=setInterval(async()=>{try{const u=await this.getJob(n);t==null||t(u.progress,u.status),u.status==="completed"?(clearInterval(d),l(u)):u.status==="failed"?(clearInterval(d),s(new Error(u.error_message??"Render job failed"))):u.status==="cancelled"?(clearInterval(d),s(new Error("Render job cancelled"))):Date.now()-r>i&&(clearInterval(d),s(new Error("Render job timed out")))}catch(u){clearInterval(d),s(u)}},o)})}async getJob(n){try{const t=await this.api.get(`/video/jobs/${n}`);return this.normalizeJob(t.data.data)}catch(t){throw t}}async listJobs(n){try{return(await this.api.get("/video/jobs",{params:n})).data}catch(t){throw t}}async cancelJob(n){try{const t=await this.api.delete(`/video/jobs/${n}`);return this.unsubscribeFromProgress(n),this.normalizeJob(t.data.data)}catch(t){throw t}}async retryJob(n){try{const t=await this.api.post(`/video/jobs/${n}/retry`);return this.normalizeJob(t.data.data)}catch(t){throw t}}subscribeToProgress(n,t){this.progressCallbacks.set(n,t),this.eventSource||this.initializeEventSource(),this.eventSource||this.pollProgress(n)}unsubscribeFromProgress(n){this.progressCallbacks.delete(n),this.progressCallbacks.size===0&&this.eventSource&&(this.eventSource.close(),this.eventSource=null)}initializeEventSource(){try{const n=this.getAuthToken(),t=`/api/v1/video/jobs/events${n?`?token=${n}`:""}`;this.eventSource=new EventSource(t),this.eventSource.addEventListener("progress",o=>{const i=JSON.parse(o.data),r=this.progressCallbacks.get(i.jobId);r&&r(i.progress)}),this.eventSource.addEventListener("complete",o=>{const i=JSON.parse(o.data),r=this.progressCallbacks.get(i.jobId);r&&(r(100),this.unsubscribeFromProgress(i.jobId))}),this.eventSource.addEventListener("error",o=>{this.progressCallbacks.forEach((i,r)=>{this.pollProgress(r)})})}catch{}}async pollProgress(n){const t=setInterval(async()=>{try{const o=await this.getJob(n),i=this.progressCallbacks.get(n);i&&i(o.progress),(o.status==="completed"||o.status==="failed"||o.status==="cancelled")&&(clearInterval(t),this.unsubscribeFromProgress(n))}catch{clearInterval(t)}},2e3)}getAuthToken(){const n=localStorage.getItem("auth_token");if(n)return n;const t=document.cookie.split(";");for(const o of t){const[i,r]=o.trim().split("=");if(i==="auth_token")return decodeURIComponent(r)}return null}async downloadVideo(n){try{return(await this.api.get(`/video/jobs/${n}/download`,{responseType:"blob"})).data}catch(t){throw t}}async getThumbnail(n,t=0){try{const o=await this.api.get(`/video/jobs/${n}/thumbnail`,{params:{time:t},responseType:"blob"});return URL.createObjectURL(o.data)}catch(o){throw o}}normalizeJob(n){const t=n,o={...t,user_id:t.user_id??t.userId??"",source_media_id:t.source_media_id??t.sourceMediaId??"",created_at:t.created_at??t.createdAt??"",updated_at:t.updated_at??t.updatedAt??""},i=t.output_media_id??t.outputMediaId;typeof i=="string"&&i!==""&&(o.output_media_id=i);const r=t.error_message??t.errorMessage;typeof r=="string"&&r!==""&&(o.error_message=r);const l=t.progress_message??t.progressMessage;typeof l=="string"&&l!==""&&(o.progress_message=l);const s=t.progress_detail??t.progressDetail;s&&typeof s=="object"&&(o.progress_detail=s);const d=t.started_at??t.startedAt;typeof d=="string"&&d!==""&&(o.started_at=d);const u=t.completed_at??t.completedAt;typeof u=="string"&&u!==""&&(o.completed_at=u);const c=t.cancelled_at??t.cancelledAt;return typeof c=="string"&&c!==""&&(o.cancelled_at=c),o}}new Pl;const VC={key:0,class:"mobile-layout"},NC={class:"mobile-toolbar"},TC={class:"mobile-toolbar-left"},BC=["aria-label"],MC={class:"mobile-toolbar-right"},$C=["disabled"],IC=["disabled"],DC={class:"preview-section"},FC={key:0,class:"mobile-export-overlay"},AC={class:"mobile-export-progress"},RC={class:"mobile-export-bar"},LC={class:"mobile-timeline-zoom"},PC={class:"mobile-edit-strip"},UC={class:"mobile-selection-summary"},OC={class:"mobile-selection-title"},zC={class:"mobile-selection-meta"},jC={class:"mobile-readout-row"},WC=["disabled"],ZC={class:"mobile-readout-grid"},HC={class:"mobile-readout-chip","data-testid":"mobile-playhead-readout"},GC={class:"mobile-readout-chip","data-testid":"mobile-clip-in-readout"},XC={class:"mobile-readout-chip","data-testid":"mobile-clip-out-readout"},KC={class:"mobile-readout-chip","data-testid":"mobile-duration-readout"},JC=["disabled"],qC={class:"mobile-speed-strip"},YC={class:"mobile-speed-chips"},QC=["data-testid","onClick"],eV={class:"mobile-edit-actions"},tV=["disabled"],aV=["disabled"],nV=["disabled"],oV=["disabled"],iV=["disabled"],rV={class:"mobile-action-sheet-header"},lV={class:"mobile-action-sheet-title"},sV={class:"mobile-action-sheet-subtitle"},dV={class:"mobile-action-sheet-actions"},uV=["disabled"],cV=["disabled"],mV=["disabled"],pV=["disabled"],fV=["disabled"],vV={key:1,class:"desktop-layout"},hV={class:"desktop-main-row"},gV={class:"preview-panel"},bV={class:"fit-toggle"},yV={class:"editor-content"},wV={class:"editor-tabs"},kV={class:"tab-header"},_V=["onClick"],EV={class:"tab-content-area"},SV={class:"filter-controls"},xV={class:"text-controls"},CV={class:"transition-controls"},VV={class:"audio-controls"},NV={class:"adjustments-controls"},TV={key:1,class:"no-filter-selected"},BV={class:"export-controls"},MV={key:0,"data-testid":"video-export-status-completed"},$V={key:1,"data-testid":"video-export-status-message",class:"export-status-message"},IV={class:"desktop-timeline-row"},DV={class:"timeline-zoom"},FV=["value"],AV={class:"zoom-readout"},RV={key:0,class:"dev-editor-controls","data-testid":"video-editor-dev-controls"},LV={class:"dev-editor-row"},PV={class:"dev-editor-field"},UV={class:"dev-editor-field"},OV=["disabled"],zV=["disabled"],jV=["disabled"],WV={class:"dev-editor-row"},ZV={class:"dev-editor-field dev-editor-field--wide"},HV=["value"],GV=["disabled"],XV=["disabled"],KV=["disabled"],JV=["disabled"],qV=e.defineComponent({__name:"VideoEditor",props:{mediaUuid:{},initialRecipe:{},media:{},showThumbnailPicker:{type:Boolean,default:!1},workflowMode:{default:"full"},featureFlags:{},clientExportThreshold:{default:20},maxDuration:{default:300},serverRenderEndpoint:{default:null}},emits:["recipe-generated","export-started","draft-saved","video-exported","thumbnail-selected","server-render-started","server-render-progress","server-render-completed","server-render-failed","close"],setup(a,{expose:n,emit:t}){const o=a,i=t,r=e.computed(()=>{if(!o.media||typeof o.media!="object")return;const N=o.media.uuid??o.media.id;return typeof N=="string"&&N.trim()!==""?N.trim():void 0}),l=e.computed(()=>{const N=typeof o.mediaUuid=="string"?o.mediaUuid.trim():"";return N!==""?N:r.value??`temp-${Date.now()}`}),s=e.ref(typeof window<"u"?window.innerWidth<768:!1),d=e.ref("filters"),u=e.ref("filters"),c=e.computed(()=>{const N=o.workflowMode==="uploader"?{filters:!0,adjustments:!0,text:!1,transitions:!1,audio:!1,export:!1}:{filters:!0,adjustments:!0,text:!0,transitions:!0,audio:!0,export:!0},z=o.featureFlags;return z?{filters:typeof z.filters=="boolean"?z.filters:N.filters,adjustments:typeof z.adjustments=="boolean"?z.adjustments:N.adjustments,text:typeof z.text=="boolean"?z.text:N.text,transitions:typeof z.transitions=="boolean"?z.transitions:N.transitions,audio:typeof z.audio=="boolean"?z.audio:N.audio,export:typeof z.export=="boolean"?z.export:N.export}:N}),m=e.computed(()=>s.value?d.value:u.value),p=e.computed(()=>m.value==="filters"||k.value),f=e.computed(()=>m.value!=="filters"&&!k.value),v=e.ref(null),h=e.ref(null),k=e.ref(!1),E=e.computed(()=>s.value?v.value:h.value);function w(N){return N==="contain"||N==="cover"||N==="none"}function b(N){if(!(N!=null&&N.metadata))return null;const z=N.metadata.fit_mode;return w(z)?z:null}const g=e.shallowRef(null),D=e.ref(null),T=e.ref(b(o.initialRecipe)??"contain"),F=e.ref(null),V=e.ref(null),I=e.ref(null),$=e.ref(!1),C=new Map,M=e.ref([]),_=e.ref([]),L=e.ref([]),j=e.ref([]),B=e.ref(1),U=()=>{s.value=window.innerWidth<768},S=[{id:"filters",label:"Filters",icon:no},{id:"adjustments",label:"Adjust",icon:Uh},{id:"text",label:"Text",icon:"text-outline"},{id:"transitions",label:"Transitions",icon:"swap-horizontal-outline"},{id:"audio",label:"Audio",icon:"musical-notes-outline"},{id:"export",label:"Export",icon:oi}],R=[{id:"filters",label:"Filters"},{id:"adjustments",label:"Adjustments"},{id:"text",label:"Text"},{id:"transitions",label:"Transitions"},{id:"audio",label:"Audio"},{id:"export",label:"Export"}],O=e.computed(()=>S.filter(N=>c.value[N.id])),K=e.computed(()=>R.filter(N=>c.value[N.id])),se=e.computed(()=>{var N,z;return((N=K.value[0])==null?void 0:N.id)??((z=O.value[0])==null?void 0:z.id)??"filters"});e.watch(c,N=>{N[d.value]||(d.value=se.value),N[u.value]||(u.value=se.value)},{immediate:!0,deep:!0}),e.watch(se,N=>{c.value[d.value]||(d.value=N),c.value[u.value]||(u.value=N)},{immediate:!0}),e.watch(c,N=>{N.export||(d.value==="export"&&(d.value=se.value),u.value==="export"&&(u.value=se.value))},{immediate:!0,deep:!0});const xe=e.computed(()=>typeof window>"u"?!1:window.__MEDIABLES_EDITOR_DEV__===!0),ue=_m(),{currentFrame:le,playheadPosition:H,timelineClips:y,totalDuration:A,hasChanges:W,isPlaying:q,selectedClip:de,zoomLevel:Pe,playbackSpeed:ge,fps:ke,handleTrim:be,handleSplit:Ce,handleClipSelect:Ee,splitAtPlayhead:Ae,deleteSelectedClip:Ue,duplicateSelectedClip:ot,setZoomLevel:it,moveClip:Lt,setFilters:gt,setTextOverlays:St,setAudioTracks:ct,saveDraft:mt,clearHasChanges:Ct,resetChanges:Se,generateRecipe:Ve,zoomIn:Re,zoomOut:at,fitToWindow:He,togglePlayback:Je,setPlaying:kt,seekTo:ft,frameForward:jt,frameBackward:Le,skipToStart:Wt,skipToEnd:Zt,setPlaybackSpeed:Mt,updateSourceDuration:Pt,undo:Ht,redo:ra,canUndo:ae,canRedo:he}=Ip(l.value,o.initialRecipe,o.media),{videoCompatibleFilters:me,activeFilters:ce,selectedFilter:Te,previewFilter:We,previewFilterEffect:rt,applyFilter:Vt,updateFilterParams:Ut,removeFilter:$t,clearAllFilters:lt,setActiveFilters:Jt}=Ap();function J(N){var re,_e;const z=((re=de.value)==null?void 0:re.id)??((_e=y.value[0])==null?void 0:_e.id);z&&($.value=!0,typeof N=="object"&&N.id?Vt(N.id):typeof N=="string"&&Vt(N),gt(ce.value),g.value?g.value.setClipFilters(z,ce.value):C.set(z,[...ce.value]),Ee(z),$.value=!1,vn())}function we(){var z,re;const N=((z=de.value)==null?void 0:z.id)??((re=y.value[0])==null?void 0:re.id);N&&Ee(N)}function oe(N){const z=ce.value.find(re=>re.filterId===N);z&&$t(z.id)}const $e=e.computed(()=>me.value.map(z=>{var _e;const re=[];if(z.controls&&z.controls.length>0)for(const Fe of z.controls){const Be=Fe.type;if(Be==="button"||Be==="text"||Be==="range")continue;const Me={id:Fe.property||Fe.id,label:Fe.label||Fe.id,type:Be,default:Fe.default??(Be==="toggle"?!1:Be==="color"?"#ffffff":0)};Be==="slider"&&(Me.min=Fe.min??0,Me.max=Fe.max??1,Me.step=Fe.step??.01),Be==="select"&&Fe.options&&(Me.options=Fe.options),re.push(Me)}else if(z.paramRanges){const Fe=Object.entries(z.paramRanges);for(const[Be,Me]of Fe){const Rt=Be.replace(/[-_]/g," ").replace(/\b\w/g,_o=>_o.toUpperCase()),Oa=(_e=z.defaultParams)==null?void 0:_e[Be],Go=(Me.min+Me.max)/2;re.push({id:Be,label:Rt,min:Me.min,max:Me.max,step:Me.step??.01,default:typeof Oa=="number"?Oa:Go})}}return{id:z.id,name:z.name,category:z.category,params:re}})),Ft=e.ref("0.00"),Ot=e.ref("0.00"),It=e.ref("");e.watch($e,N=>{if(N.length===0){It.value="";return}N.some(re=>re.id===It.value)||(It.value=N[0].id)},{immediate:!0});const yt=e.ref(!1),bt=e.ref(0),qt=e.ref(!1),_t=e.ref(null),Xt=e.ref(null);let Sa=null,X=!1;const Y=e.computed(()=>{const N=new Map;return ce.value.forEach(z=>N.set(z.filterId,z)),N}),pe=e.computed(()=>{var N,z;return le.value?le.value:((N=o.media)==null?void 0:N.thumbnail_url)||((z=o.media)==null?void 0:z.url)}),fe=e.ref("");e.watch(()=>{var N,z;return{file:(N=o.media)==null?void 0:N.file,url:(z=o.media)==null?void 0:z.url}},(N,z,re)=>{var Fe,Be;const _e=fe.value;re(()=>{_e&&_e.startsWith("blob:")&&URL.revokeObjectURL(_e)}),(Fe=o.media)!=null&&Fe.file?fe.value=URL.createObjectURL(o.media.file):(Be=o.media)!=null&&Be.url?fe.value=o.media.url:fe.value=""},{immediate:!0}),e.onUnmounted(()=>{fe.value&&fe.value.startsWith("blob:")&&URL.revokeObjectURL(fe.value)});const Ne=e.computed(()=>fe.value),Xe=rp({forcePixiPreview:k,getPreviewRef:()=>E.value,getSourceUrl:()=>fe.value,setPlaying:kt}),dt=e.computed(()=>{if(!o.media)return null;const{file:N,...z}=o.media;return{...z,url:fe.value}}),et=e.computed(()=>{var z;const N=(z=o.media)==null?void 0:z.url;return!!(N&&/^https?:/i.test(N))}),Ke=e.computed(()=>ce.value),vt=e.computed(()=>H.value),ht=e.computed(()=>!!de.value&&H.value>0),nt=e.computed(()=>!!de.value&&y.value.length>1),Yt=e.computed(()=>!!de.value),At=e.ref(!0),Ha=[.5,1,1.5,2],pa=e.computed(()=>{const N=new Set([0,ha.value]);for(const z of y.value)N.add(z.timelineStart),N.add(z.timelineEnd);return Array.from(N).filter(z=>Number.isFinite(z)).sort((z,re)=>z-re)}),Vn=e.computed(()=>pa.value.some(N=>N<H.value-.001)),Ta=e.computed(()=>pa.value.some(N=>N>H.value+.001)),xa=e.ref(!1),Aa=e.ref(null);function fa(N){if(!Number.isFinite(N)||N<0)return"0:00";const z=Math.floor(N/60),re=Math.floor(N%60);return`${z}:${re.toString().padStart(2,"0")}`}const tn=e.computed(()=>{var re;const N=de.value??y.value[0];if(!N)return"No clip selected";const z=(re=N.label)==null?void 0:re.trim();return z&&z.length>0?z:`Clip ${N.id.slice(-4)}`}),jn=e.computed(()=>{const N=de.value??y.value[0];if(!N)return"Tap a clip to start editing";const z=Math.max(0,N.timelineEnd-N.timelineStart);return`${fa(N.timelineStart)} - ${fa(N.timelineEnd)} • ${z.toFixed(1)}s`});function Ga(N){return!Number.isFinite(N)||N<0?"0.0s":N<60?`${N.toFixed(1)}s`:fa(N)}const Wn=e.computed(()=>fa(H.value)),va=e.computed(()=>{const N=de.value??y.value[0];return N?fa(N.sourceIn):"0:00"}),Ra=e.computed(()=>{const N=de.value??y.value[0];return N?fa(N.sourceOut):"0:00"}),Ho=e.computed(()=>{const N=de.value??y.value[0];return N?Ga(N.timelineEnd-N.timelineStart):"0.0s"}),uo=e.computed(()=>Aa.value===null?de.value??y.value[0]??null:y.value.find(N=>N.id===Aa.value)??null),hi=e.computed(()=>{var re;const N=uo.value;if(!N)return"Clip actions";const z=(re=N.label)==null?void 0:re.trim();return z&&z.length>0?z:`Clip ${N.id.slice(-4)}`}),gi=e.computed(()=>{const N=uo.value;return N?`${fa(N.timelineStart)} - ${fa(N.timelineEnd)} • ${Ga(N.timelineEnd-N.timelineStart)}`:"Choose an action"}),Nn=e.ref(0),ha=e.computed(()=>{try{const N=A.value??A;return N&&typeof N=="number"&&N>0?N:Nn.value}catch{return Nn.value}}),un=e.ref(),co=e.ref(),Zn=e.ref(),an=e.ref(),Hn=e.ref(0),Xa=e.ref(!1);let la=null,Ba=null;e.watch(ha,N=>{var re;if(Xa.value||!N||N<=0)return;const z=Hn.value||((re=un.value)==null?void 0:re.clientWidth)||0;z>0&&(Xa.value=!0,He(z))}),e.watch(Hn,N=>{if(Xa.value||!N||N<=0)return;ha.value>0&&(Xa.value=!0,He(N))}),e.watch(s,N=>{N||Pa()}),e.watch(()=>{var N;return(N=uo.value)==null?void 0:N.id},N=>{xa.value&&!N&&Pa()});function nn(N){return Number.isFinite(N)?N.toFixed(2):"0.00"}function mo(N){const z=Number(N);return Number.isFinite(z)?z:null}function Z(N){N&&(Ft.value=nn(N.sourceIn),Ot.value=nn(N.sourceOut))}e.watch(()=>{var N,z,re;return[(N=de.value)==null?void 0:N.id,(z=de.value)==null?void 0:z.sourceIn,(re=de.value)==null?void 0:re.sourceOut]},()=>{Z(de.value)},{immediate:!0});function Q(N){const z=de.value;if(!z)return;const re=1/30,_e=z.sourceMinIn??0,Fe=z.sourceMaxOut??ha.value,Be=z.sourceIn+(H.value-z.timelineStart);if(N==="start"){const Rt=Math.max(_e,Math.min(Be,z.sourceOut-re));Ft.value=nn(Rt);return}const Me=Math.max(z.sourceIn+re,Math.min(Be,Fe));Ot.value=nn(Me)}function De(){const N=de.value;if(!N)return;const z=mo(Ft.value),re=mo(Ot.value);if(z===null||re===null)return;const _e=1/30,Fe=N.sourceMinIn??0,Be=N.sourceMaxOut??ha.value,Me=Math.max(Fe,Math.min(z,Be-_e)),Rt=Math.max(Me+_e,Math.min(re,Be));be(N.id,"start",Me),be(N.id,"end",Rt),Ft.value=nn(Me),Ot.value=nn(Rt),de.value&&ft(de.value.timelineStart)}function ne(){It.value.trim()!==""&&J(It.value)}function Ye(){var N;lt(),gt(ce.value),(N=de.value)!=null&&N.id&&(g.value?g.value.setClipFilters(de.value.id,ce.value):C.set(de.value.id,[...ce.value])),vn()}function Nt(N,z,re){var Fe,Be;const _e=ce.value.find(Me=>Me.filterId===N);_e?(_e.params={..._e.params,[z]:re},gt(ce.value),g.value&&((Fe=de.value)!=null&&Fe.id)?g.value.setClipFilters(de.value.id,ce.value):(Be=de.value)!=null&&Be.id&&C.set(de.value.id,[...ce.value]),vn(),we()):We.value&&We.value.filterId===N&&(We.value.params={...We.value.params||{},[z]:re})}function cn(N){ft(N)}function La(N){!N||!Number.isFinite(N.timestamp)||ft(N.timestamp)}function Gn(N){kt(N)}function Tn(N){!Number.isFinite(N)||N<=0||(Nn.value=N,Pt(N))}function Pa(){xa.value=!1,Aa.value=null}function ga(N){s.value&&(Aa.value=N,xa.value=!0)}function Xn(N){var _e,Fe,Be,Me;const z=((_e=de.value)==null?void 0:_e.id)??((Fe=y.value[0])==null?void 0:Fe.id)??null;Ee(N),(((Be=de.value)==null?void 0:Be.id)??((Me=y.value[0])==null?void 0:Me.id)??null)!==z&&ue.selection()}function po(N){Xn(N),ga(N)}function mn(N){N&&ue.selection()}function Bn(){At.value=!At.value,ue.selection()}function Ua(){const N=pa.value.filter(re=>re<H.value-.001),z=N.length>0?N[N.length-1]:0;ft(z)}function fo(){const N=pa.value.find(z=>z>H.value+.001);ft(N??ha.value)}function Mn(){Ht()}function $n(){ra()}function on(){const N=y.value.length;Ae(),y.value.length>N&&(ue.success(),Pa())}function Kn(N){const z=y.value.length;Ce(N),y.value.length>z&&ue.success()}function pn(){const N=y.value.length;ot(),y.value.length>N&&(ue.selection(),Pa())}function In(){const N=y.value.length;Ue(),y.value.length<N&&(ue.error(),Pa())}function fn(N){const z=ge.value;Mt(N),ge.value!==z&&ue.selection()}function Dn(N){return N instanceof HTMLElement?N.closest('input, textarea, select, button, [contenteditable="true"]')!==null:!1}function rn(N){if(s.value||Dn(N.target))return;const z=N.key.toLowerCase(),re=N.metaKey||N.ctrlKey;if(N.code==="Space"){N.preventDefault(),Je();return}if(!re&&z==="s"){N.preventDefault(),on();return}if(z==="arrowleft"){N.preventDefault(),Le();return}if(z==="arrowright"){N.preventDefault(),jt();return}if(z==="home"){N.preventDefault(),Wt();return}if(z==="end"){N.preventDefault(),Zt();return}if(!re&&z==="["){N.preventDefault(),Ua();return}if(!re&&z==="]"){N.preventDefault(),fo();return}if(re&&z==="z"&&N.shiftKey){N.preventDefault(),$n();return}re&&z==="z"&&(N.preventDefault(),Mn())}function vo(){var z;const N=Hn.value||((z=un.value)==null?void 0:z.clientWidth)||800;He(N)}function Jn(N){Xa.value=!0,it(N)}function bi(){Xa.value=!0,Re()}function yi(){Xa.value=!0,at()}function Fn(N){const z=N.target,re=Number(z.value);Jn(re)}function qn(N){const z=Math.min(600,Math.max(10,Pe.value+N));Jn(z)}function Yn(){Ba==null||Ba(),Ba=null;const N=Zn.value,z=an.value;if(!s.value||!N||!z)return;const re=()=>{qn(-20)},_e=()=>{qn(20)};N.addEventListener("click",re),z.addEventListener("click",_e),Ba=()=>{N.removeEventListener("click",re),z.removeEventListener("click",_e)}}e.watch([s,Zn,an],()=>{Yn()},{flush:"post"});function ho(N){var z;g.value=N,(z=g.value)!=null&&z.composition&&(F.value=new Rp(g.value.composition),V.value=new qi(g.value.composition),I.value=new Lp(g.value.composition));try{C.size&&(C.forEach((re,_e)=>{g.value.setClipFilters(_e,re)}),C.clear(),g.value.composition.computeFrame())}catch{}}function go(N){N!=null&&N.id&&rt(N.id)}function bo(N){Ut(N),vn()}async function yo(N){if(!F.value)return;const z=await F.value.addTextOverlay(N);M.value.push({id:z,...N})}async function wo(N,z){if(!F.value)return;await F.value.updateTextOverlay(N,z);const re=M.value.findIndex(_e=>_e.id===N);re!==-1&&(M.value[re]={...M.value[re],...z})}async function x(N){F.value&&(await F.value.removeTextOverlay(N),M.value=M.value.filter(z=>z.id!==N))}async function P(N){if(!V.value||j.value.length<2)return;const[z,re]=j.value,_e=await V.value.applyTransition(z,re,N);_.value.push({id:_e,...N,name:N.type})}function te(N){if(!V.value)return;const z=_.value[N];z&&(V.value.removeTransition(z.id),_.value.splice(N,1))}function ye(N){}async function Oe(N){if(!I.value)return;const z=await I.value.addAudioTrack(N);L.value.push({id:z,...N})}async function ze(N,z){if(!I.value)return;const re=L.value.findIndex(_e=>_e.id===N);re!==-1&&(L.value[re]={...L.value[re],...z})}async function ut(N){I.value&&(await I.value.removeAudioTrack(N),L.value=L.value.filter(z=>z.id!==N))}async function Tt(N,z){if(!I.value)return;await I.value.updateVolume(N,z);const re=L.value.find(_e=>_e.id===N);re&&(re.volume=z)}async function Kt(N,z){if(!I.value)return;await I.value.muteTrack(N,z);const re=L.value.find(_e=>_e.id===N);re&&(re.muted=z)}function sa(N){I.value&&(I.value.setMasterVolume(N),B.value=N)}function Ca(N){i("thumbnail-selected",N)}function Qn(){Sa!==null&&(clearInterval(Sa),Sa=null)}function iv(N,z){return z?{...N,output:{...N.output,format:z.format,quality:z.quality}}:N}function wi(N){var z;return N.metadata||(N.metadata={created_at:new Date().toISOString(),editor_version:"2.0.0"}),N.metadata.fit_mode=T.value,(z=o.media)!=null&&z.url&&/^https?:/i.test(o.media.url)?N.metadata.source_url=o.media.url:delete N.metadata.source_url,N}function Qt(N,z,re){return Math.min(re,Math.max(z,N))}function Hl(N,z){if(typeof N=="number"&&Number.isFinite(N))return N;if(typeof N=="string"){const re=Number(N);if(Number.isFinite(re))return re}return z}function ba(N,z,re){for(const _e of z)if(_e in N)return Hl(N[_e],re);return re}function rv(N){const z=typeof N.params=="object"&&N.params!==null?N.params:{};switch(N.filterId.trim().toLowerCase()){case"brightness":return[{type:"brightness",value:Qt(ba(z,["value","brightness"],0),-1,1)}];case"contrast":return[{type:"contrast",value:Qt(ba(z,["value","contrast"],1),.1,3)}];case"saturation":return[{type:"saturation",value:Qt(ba(z,["value","saturation"],1),0,3)}];case"blur":case"gaussian-blur":case"kawase-blur":case"radial-blur":return[{type:"blur",value:Qt(ba(z,["value","blur","radius"],0),0,25)}];case"sharpen":return[{type:"sharpen",value:Qt(ba(z,["value","amount"],1),0,5)}];case"sepia":return[{type:"sepia",value:1}];case"grayscale":return[{type:"grayscale",value:1}];case"adjustment":{const _e=Qt(ba(z,["brightness"],1)-1,-1,1),Fe=Qt(ba(z,["contrast"],1),.1,3),Be=Qt(ba(z,["saturation"],1),0,3);return[{type:"brightness",value:_e},{type:"contrast",value:Fe},{type:"saturation",value:Be}]}default:return[]}}function lv(N){const z=N.timeline[0],re=Array.isArray(z==null?void 0:z.filters)?z.filters:[],_e=[];for(const Be of re)if(_e.push(...rv(Be)),_e.length>=12)break;const Fe={...N,filters:_e.slice(0,12)};if(N.timeline.length===1&&z){const Be=Math.max(0,Hl(z.sourceIn,0)),Me=Hl(z.sourceOut,Be);Me>Be&&(Fe.trim={start:Be,end:Me})}return Fe}async function su(N,z,re){return Xe.renderRecipeWithPixi(N,z,re)}async function sv(N,z){var ki;Qn(),X=!1,Xe.resetClientExport(),Xt.value=null,_t.value=null,qt.value=!1,bt.value=0;const re=wi(N??Ve()),_e=vu(re),Fe=Array.isArray(_e.filters)&&_e.filters.length>0,Be=Kl(_e);if(!(W.value||Fe||Be))return Ct(),i("video-exported",null),null;const Rt=_e.timeline[0],Oa=Rt?Math.max(0,Rt.sourceIn):0,_o=((Rt==null?void 0:Rt.sourceOut)??((ki=_e.source)==null?void 0:ki.duration)??ha.value)-Oa,Yl=o.serverRenderEndpoint!=null&&o.clientExportThreshold>0&&_o>o.clientExportThreshold;if(Yl){yt.value=!0;try{return await dv(_e),null}catch(ya){const za=ya instanceof Error?ya.message:"Server render failed";throw _t.value=za,i("server-render-failed",za),ya}finally{yt.value=!1}}if(o.maxDuration>0&&_o>o.maxDuration&&!Yl){const ya=`This video is too long for in-browser export (${Math.round(_o)}s). Server rendering is not available. Try a shorter clip.`;return _t.value=ya,i("video-exported",null),null}yt.value=!0;try{const ya=await su(_e,z,za=>{X||(bt.value=za)});return X?(_t.value="Export canceled.",bt.value=0,i("video-exported",null),null):(Ct(),i("recipe-generated",_e),i("video-exported",ya),bt.value=100,qt.value=!0,ya)}catch(ya){if(X)return _t.value="Export canceled.",bt.value=0,i("video-exported",null),null;const za=ya instanceof Error?ya.message:"Local WebGL export failed.";throw _t.value=za,new Error(`Video export failed: ${za}`)}finally{yt.value=!1}}function gr(){return new Pl(o.serverRenderEndpoint??"/api/v1")}async function dv(N){const z=gr();_t.value="Starting server render...",bt.value=0;const re=await z.createRenderJob({source_media_uuid:l.value,recipe:N});Xt.value=re.id,i("server-render-started",re.id),i("export-started",re.id),_t.value="Rendering on server...";const _e=await z.pollRenderJob(re.id,(Be,Me)=>{bt.value=Be,Me==="processing"&&(_t.value=`Server rendering: ${Be}%`)},3e3,(o.maxDuration>0?o.maxDuration*3:1800)*1e3);bt.value=100,qt.value=!0,_t.value="Server render complete!",Ct(),i("recipe-generated",N);const Fe={id:_e.id};typeof _e.output_media_id=="string"&&_e.output_media_id!==""&&(Fe.output_media_id=_e.output_media_id),i("server-render-completed",Fe)}async function du(){if(!yt.value)return;X=!0,k.value=!1,Xe.cancelClientExport(),Qn();const N=Xt.value;if(N)try{await gr().cancelJob(N)}catch(z){const re=z instanceof Error?z.message:"Failed to cancel export";_t.value=re,yt.value=!1,Xt.value=null;return}yt.value=!1,bt.value=0,qt.value=!1,Xt.value=null,_t.value="Export canceled."}async function uu(N){Qn(),X=!1,Xe.resetClientExport(),Xt.value=null,_t.value=null,qt.value=!1,yt.value=!0,bt.value=0;try{const z=wi(iv(Ve(),N));i("recipe-generated",z);const re=l.value.startsWith("temp-"),_e=z.timeline[0],Fe=Array.isArray(_e==null?void 0:_e.filters)?_e.filters:[],Be=!0,Me=typeof window<"u"&&window.MEDIABLES_ALLOW_SERVER_EXPORT_FALLBACK===1||typeof localStorage<"u"&&localStorage.getItem("mediables.export.allowServerFallback")==="1";if(Be)try{const za=await su(z,N,_v=>{X||(bt.value=_v)});if(X){_t.value="Export canceled.",yt.value=!1,bt.value=0;return}i("video-exported",za);const gu=URL.createObjectURL(za.file),Ql=document.createElement("a");Ql.href=gu,Ql.download=`edited-video-${Date.now()}.mp4`,Ql.click(),setTimeout(()=>URL.revokeObjectURL(gu),100),yt.value=!1,bt.value=100,qt.value=!0;return}catch(za){if(X){_t.value="Export canceled.",yt.value=!1,bt.value=0;return}if(re||!Me)throw za;bt.value=0,_t.value="Local filter export failed, falling back to server render."}const Rt={"360p":"low","480p":"low","720p":"medium","1080p":"high","1440p":"ultra","2160p":"ultra"},Oa=(N==null?void 0:N.quality)??z.output.quality,Go=Rt[Oa]??"high",_o={...lv(z),export:{format:(N==null?void 0:N.format)??z.output.format,quality:Go,resolution:Oa,framerate:z.output.fps}},ki=await gr().createJob({source_media_id:l.value,recipe:_o}),ya=typeof ki.id=="string"?ki.id:null;if(!ya)throw new Error("Export failed: missing job id");Xt.value=ya,i("export-started",ya),wv(ya)}catch(z){if(k.value=!1,Xe.resetClientExport(),X){_t.value="Export canceled.",yt.value=!1,bt.value=0,Xt.value=null;return}try{const re=wi(Ve()),_e=new Blob([JSON.stringify(re,null,2)],{type:"application/json"}),Fe=URL.createObjectURL(_e),Be=document.createElement("a");Be.href=Fe,Be.download=`video-recipe-${Date.now()}.json`,Be.click(),setTimeout(()=>URL.revokeObjectURL(Fe),100)}finally{yt.value=!1,bt.value=0,Xt.value=null,_t.value=z instanceof Error?z.message:"Export failed"}}}const Gl=async N=>{await new Promise(z=>{window.setTimeout(z,N)})},Xl=N=>{if(!N||N.width<=0||N.height<=0)return null;try{return N.toDataURL("image/jpeg",.85)}catch{return null}},uv=N=>{if(!N||typeof N!="object")return null;const re=N.pixiCanvas;if(re&&typeof re=="object"&&"value"in re){const _e=re.value;return _e instanceof HTMLCanvasElement?_e:null}return re instanceof HTMLCanvasElement?re:null},cv=N=>{if(!N||typeof N!="object")return null;const z=N.duration;if(typeof z=="number"&&Number.isFinite(z))return z;if(z&&typeof z=="object"&&"value"in z){const re=z.value;if(typeof re=="number"&&Number.isFinite(re))return re}return null},mv=N=>{if(!N||typeof N!="object")return null;const re=N.videoElement;if(re&&typeof re=="object"&&"value"in re){const _e=re.value;return _e instanceof HTMLVideoElement?_e:null}return re instanceof HTMLVideoElement?re:null},cu=N=>typeof N.params=="object"&&N.params!==null?N.params:{},pv=N=>{const z=[];for(const re of N){const _e=cu(re),Fe=re.filterId.trim().toLowerCase();if(Fe==="brightness"){const Me=(Qt(ba(_e,["value","brightness"],0),-1,1)+1)*100;z.push(`brightness(${Me.toFixed(2)}%)`);continue}if(Fe==="contrast"){const Be=Qt(ba(_e,["value","contrast"],1),.1,4);z.push(`contrast(${(Be*100).toFixed(2)}%)`);continue}if(Fe==="saturation"||Fe==="saturate"){const Be=Qt(ba(_e,["value","saturation"],1),0,4);z.push(`saturate(${(Be*100).toFixed(2)}%)`);continue}if(Fe==="grayscale"){z.push("grayscale(100%)");continue}if(Fe==="sepia"){z.push("sepia(100%)");continue}if(Fe==="blur"||Fe==="gaussian-blur"||Fe==="kawase-blur"){const Be=Qt(ba(_e,["value","blur","radius"],0),0,30);Be>.01&&z.push(`blur(${Be.toFixed(2)}px)`);continue}if(Fe==="adjustment"){const Be=ba(_e,["brightness"],1),Me=ba(_e,["contrast"],1),Rt=ba(_e,["saturation"],1);Math.abs(Be-1)>.01&&z.push(`brightness(${(Qt(Be,0,5)*100).toFixed(2)}%)`),Math.abs(Me-1)>.01&&z.push(`contrast(${(Qt(Me,.1,5)*100).toFixed(2)}%)`),Math.abs(Rt-1)>.01&&z.push(`saturate(${(Qt(Rt,0,5)*100).toFixed(2)}%)`);continue}if(Fe==="cinematic"){z.push("contrast(120%) brightness(95%) saturate(85%)");continue}if(Fe==="dramatic"){z.push("contrast(140%) brightness(90%) saturate(110%) sepia(10%)");continue}if(Fe==="dreamy"){z.push("blur(0.5px) brightness(105%) saturate(90%) contrast(95%)");continue}}return z.join(" ")},fv=N=>{const z=N.find(Fe=>Fe.filterId.trim().toLowerCase()==="noise");if(!z)return 0;const re=cu(z),_e=ba(re,["noise","value","amount","intensity"],.2);return _e<=1?Qt(_e,0,1):Qt(_e/100,0,1)},vv=(N,z,re,_e)=>{if(_e<=0)return;const Fe=N.getImageData(0,0,z,re),Be=255*_e;for(let Me=0;Me<Fe.data.length;Me+=4){const Rt=(Math.random()*2-1)*Be;Fe.data[Me]=Qt(Fe.data[Me]+Rt,0,255),Fe.data[Me+1]=Qt(Fe.data[Me+1]+Rt,0,255),Fe.data[Me+2]=Qt(Fe.data[Me+2]+Rt,0,255)}N.putImageData(Fe,0,0)},mu=async N=>{N.readyState>=2&&N.videoWidth>0&&N.videoHeight>0||await new Promise(z=>{let re=!1,_e=0;const Fe=()=>{re||(re=!0,N.removeEventListener("loadedmetadata",Be),N.removeEventListener("loadeddata",Be),N.removeEventListener("canplay",Be),window.clearTimeout(_e),z())},Be=()=>{Fe()};N.addEventListener("loadedmetadata",Be),N.addEventListener("loadeddata",Be),N.addEventListener("canplay",Be),_e=window.setTimeout(()=>Fe(),800),N.play().catch(()=>{})})},hv=async(N,z)=>{await new Promise(re=>{let _e=!1,Fe=0;const Be=()=>{_e||(_e=!0,N.removeEventListener("seeked",Me),window.clearTimeout(Fe),re())},Me=()=>{Be()};if(Math.abs(N.currentTime-z)<.016){requestAnimationFrame(()=>Be());return}N.addEventListener("seeked",Me),Fe=window.setTimeout(()=>Be(),700),N.currentTime=z})},pu=async(N,z)=>{await mu(N);const re=Math.floor(N.videoWidth),_e=Math.floor(N.videoHeight);if(re<=0||_e<=0)return null;const Fe=Number.isFinite(N.duration)&&N.duration>0?N.duration:0,Be=Fe>0?Qt(z,0,Fe):0;await hv(N,Be);const Me=document.createElement("canvas");Me.width=re,Me.height=_e;const Rt=Me.getContext("2d");if(!Rt)return null;const Oa=pv(ce.value);Oa!==""&&(Rt.filter=Oa);try{Rt.drawImage(N,0,0,re,_e)}catch{return null}const Go=fv(ce.value);return vv(Rt,re,_e,Go),Xl(Me)},gv=async(N,z)=>{const re=document.createElement("video");re.src=N,re.muted=!0,re.playsInline=!0,re.preload="auto",N.startsWith("blob:")||(re.crossOrigin="anonymous");try{return await mu(re),await pu(re,z)}catch{return null}finally{re.pause(),re.removeAttribute("src"),re.load()}},bv=async N=>{const z=E.value,re=Xl(uv(z));if(re)return re;if(z!=null&&z.captureFrameAt)for(let Be=0;Be<4;Be+=1){const Me=cv(z);if(Me!==null&&Me<=0&&Be<2){await Gl(80);continue}const Rt=await Promise.race([z.captureFrameAt(N),Gl(450).then(()=>null)]),Oa=Xl(Rt);if(Oa)return Oa;await Gl(80)}const _e=mv(z);if(_e){const Be=await pu(_e,N);if(Be)return Be}const Fe=Ne.value.trim();if(Fe!==""){const Be=await gv(Fe,N);if(Be)return Be}return null},fu=N=>N.map(z=>({...z,params:z.params&&typeof z.params=="object"?{...z.params}:z.params}));function vu(N){const z=fu(ce.value);if(!Kl(N)&&z.length>0&&Array.isArray(N.timeline)&&N.timeline.length>0){const _e=N.timeline[0];_e&&(N.timeline=[{..._e,filters:z},...N.timeline.slice(1)])}return N}const Kl=N=>Array.isArray(N.timeline)?N.timeline.some(z=>Array.isArray(z.filters)&&z.filters.length>0):!1,yv=N=>{if(!N||typeof N!="object")return null;const z=N.posterFrame;if(typeof z!="string")return null;const re=z.trim();return re!==""?re:null};async function Jl(){const N=wi(vu(mt())),z=fu(ce.value),re=Kl(N)||z.length>0,_e=yv(o.initialRecipe);if(re){const Fe=H.value>0?H.value:.1;try{const Be=await bv(Fe);Be?N.posterFrame=Be:_e&&(N.posterFrame=_e)}catch{_e&&(N.posterFrame=_e)}}else delete N.posterFrame;return Ct(),i("draft-saved",N),N}function hu(){Se()&&(lt(),vn())}async function wv(N){Qn();const z=gr();Sa=window.setInterval(async()=>{try{if(X){Qn();return}const re=await z.getJob(N),_e=Number(re.progress??0);if(bt.value=Number.isFinite(_e)?_e:0,re.status==="completed"||re.status==="failed"||re.status==="cancelled")if(Qn(),yt.value=!1,Xt.value=null,re.status==="completed")bt.value=100,qt.value=!0,_t.value=null;else{const Fe=re.status==="cancelled"||typeof re.error_message=="string"&&/cancel/i.test(re.error_message);_t.value=Fe?"Export canceled.":typeof re.error_message=="string"&&re.error_message.trim()!==""?re.error_message:"Export failed"}}catch(re){Qn(),yt.value=!1,Xt.value=null,_t.value=re instanceof Error?re.message:"Failed to check export progress"}},2e3)}function ql(){const N=wi(Ve());try{const z=N.timeline??[]}catch{}D.value=N}let ko=null;function vn(){ko&&clearTimeout(ko),ko=setTimeout(()=>{ql(),ko=null},200)}e.watch(()=>y.value,vn,{deep:!0}),e.watch(()=>de.value,N=>{if($.value||!N)return;const z=(N==null?void 0:N.filters)??[];Jt(z)},{immediate:!0}),e.watch(()=>ce.value,N=>{gt(N),vn()},{deep:!0}),e.watch(()=>M.value,N=>{St(N),vn()},{deep:!0}),e.watch(()=>L.value,N=>{const z=N.map(re=>({...re,source:typeof re.source=="string"?re.source:void 0}));ct(z),vn()},{deep:!0}),e.watch(()=>H.value,vn),n({saveDraft:Jl,exportForUpload:sv}),ql(),e.onUnmounted(()=>{Qn(),X=!0,Xe.cancelClientExport(),ko&&(clearTimeout(ko),ko=null),g.value&&(g.value.destroy(),g.value=null),F.value=null,V.value=null,I.value=null});function kv(){la||!co.value||(la=new iE({filters:$e.value,callbacks:{onApplyFilter:N=>{J(N.id)},onRemoveFilter:N=>{oe(N)},onUpdateParam:(N,z,re)=>{Nt(N,z,re)},onPreviewFilter:N=>{rt(N.id)}}}),la.mount(co.value),la.setActiveFilters(Y.value))}e.watch(Y,N=>{la==null||la.setActiveFilters(N)},{deep:!0}),e.watch($e,N=>{la==null||la.setFilters(N)});let eo=null;return e.onMounted(()=>{window.addEventListener("resize",U),window.addEventListener("keydown",rn);const N=()=>{!un.value||eo||(eo=new ResizeObserver(z=>{z[0]&&(Hn.value=Math.round(z[0].contentRect.width))}),eo.observe(un.value))};N(),eo||e.nextTick(N),s.value&&(Yn(),Ba||e.nextTick(Yn)),o.media&&ql(),s.value&&e.nextTick(()=>{kv()}),e.nextTick(()=>{const z=document.querySelector(".video-editor");z&&z.getBoundingClientRect();const re=document.querySelector(".mobile-layout");re&&re.getBoundingClientRect()})}),e.onUnmounted(()=>{window.removeEventListener("resize",U),window.removeEventListener("keydown",rn),eo==null||eo.disconnect(),eo=null,Ba==null||Ba(),Ba=null,la==null||la.destroy(),la=null}),(N,z)=>{var re,_e,Fe,Be;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-editor",{mobile:s.value}])},[s.value?(e.openBlock(),e.createElementBlock("div",VC,[e.createElementVNode("div",NC,[e.createElementVNode("div",TC,[e.createElementVNode("button",{class:e.normalizeClass(["mobile-toolbar-btn",{active:e.unref(q)}]),onClick:z[0]||(z[0]=(...Me)=>e.unref(Je)&&e.unref(Je)(...Me)),"aria-label":e.unref(q)?"Pause":"Play","data-testid":"btn-mobile-play"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(q)?e.unref(hd):e.unref(gd)},null,8,["icon"])],10,BC),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:hu,"aria-label":"Reset all changes","data-testid":"btn-mobile-reset"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(zo)},null,8,["icon"])])]),e.createElementVNode("div",MC,[e.createElementVNode("button",{class:"mobile-toolbar-btn mobile-toolbar-save",onClick:Jl,"aria-label":"Save","data-testid":"btn-mobile-save",disabled:!e.unref(W)},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(fl)},null,8,["icon"]),z[13]||(z[13]=e.createElementVNode("span",null,"Save",-1))],8,$C),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:z[1]||(z[1]=Me=>uu()),"aria-label":"Export","data-testid":"btn-mobile-export",disabled:yt.value||!e.unref(W)},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(oi)},null,8,["icon"])],8,IC),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:z[2]||(z[2]=Me=>i("close")),"aria-label":"Close","data-testid":"btn-mobile-close"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Fo)},null,8,["icon"])])])]),e.createElementVNode("div",DC,[e.withDirectives(e.createVNode(Cs,{ref_key:"pixiPreviewMobileRef",ref:v,"aria-hidden":!p.value,class:"preview-host-child",source:Ne.value,"fallback-duration":ha.value,filters:Ke.value,playhead:vt.value,"is-playing":e.unref(q),"fit-mode":T.value,active:p.value,onPlayPause:e.unref(Je),onFrameUpdate:La,onDurationChange:Tn},null,8,["aria-hidden","source","fallback-duration","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,p.value]]),e.withDirectives(e.createVNode(zs,{"aria-hidden":!f.value,class:"preview-host-child","media-uuid":l.value,recipe:D.value,media:dt.value,"enable-engine":f.value&&et.value,"fit-mode":T.value,onTimeUpdate:cn,onPlayStateChange:Gn,onDurationChange:Tn,onEngineReady:ho},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,f.value]]),yt.value?(e.openBlock(),e.createElementBlock("div",FC,[e.createElementVNode("div",AC,[e.createElementVNode("span",null,"Exporting "+e.toDisplayString(bt.value)+"%",1),e.createElementVNode("div",RC,[e.createElementVNode("div",{class:"mobile-export-bar-fill",style:e.normalizeStyle({width:bt.value+"%"})},null,4)]),e.createElementVNode("button",{class:"mobile-export-cancel",onClick:du},"Cancel")])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:un,class:"timeline-section"},[e.createElementVNode("div",LC,[e.createElementVNode("button",{ref_key:"mobileZoomOutButtonRef",ref:Zn,type:"button",class:"mobile-zoom-btn","aria-label":"Zoom out timeline","data-testid":"btn-timeline-zoom-out"},[...z[14]||(z[14]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 16 16"},[e.createElementVNode("path",{d:"M4 8h8",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)])],512),e.createElementVNode("button",{ref_key:"mobileZoomInButtonRef",ref:an,type:"button",class:"mobile-zoom-btn","aria-label":"Zoom in timeline","data-testid":"btn-timeline-zoom-in"},[...z[15]||(z[15]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 16 16"},[e.createElementVNode("path",{d:"M4 8h8M8 4v8",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)])],512)]),e.createVNode(js,{playhead:e.unref(H),clips:e.unref(y),"selected-clip-id":((re=e.unref(de))==null?void 0:re.id)??((_e=e.unref(y)[0])==null?void 0:_e.id)??null,duration:ha.value,fps:e.unref(ke),"zoom-level":e.unref(Pe),"snap-enabled":At.value,sensitivity:.25,"is-mobile":!0,"onUpdate:playhead":e.unref(ft),onTrim:e.unref(be),onSplit:Kn,onClipSelect:Xn,onClipMove:e.unref(Lt),onClipLongPress:po,onSnapStateChange:mn},null,8,["playhead","clips","selected-clip-id","duration","fps","zoom-level","snap-enabled","onUpdate:playhead","onTrim","onClipMove"])],512),e.createElementVNode("div",PC,[e.createElementVNode("div",UC,[e.createElementVNode("span",OC,e.toDisplayString(tn.value),1),e.createElementVNode("span",zC,e.toDisplayString(jn.value),1)]),e.createElementVNode("div",jC,[e.createElementVNode("button",{type:"button",class:"mobile-cut-nav-btn","data-testid":"btn-mobile-prev-cut","aria-label":"Jump to previous cut",disabled:!Vn.value,onClick:Ua}," Prev Cut ",8,WC),e.createElementVNode("div",ZC,[e.createElementVNode("span",HC,"Playhead "+e.toDisplayString(Wn.value),1),e.createElementVNode("span",GC,"In "+e.toDisplayString(va.value),1),e.createElementVNode("span",XC,"Out "+e.toDisplayString(Ra.value),1),e.createElementVNode("span",KC,"Duration "+e.toDisplayString(Ho.value),1)]),e.createElementVNode("button",{type:"button",class:"mobile-cut-nav-btn","data-testid":"btn-mobile-next-cut","aria-label":"Jump to next cut",disabled:!Ta.value,onClick:fo}," Next Cut ",8,JC)]),e.createElementVNode("div",qC,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["mobile-snap-toggle",{active:At.value}]),"data-testid":"btn-mobile-snap-toggle",onClick:Bn},e.toDisplayString(At.value?"Snap On":"Snap Off"),3),e.createElementVNode("div",YC,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(Ha,Me=>e.createElementVNode("button",{key:Me,type:"button",class:e.normalizeClass(["mobile-speed-chip",{active:e.unref(ge)===Me}]),"data-testid":`btn-mobile-speed-${String(Me).replace(".","-")}`,onClick:Rt=>fn(Me)},e.toDisplayString(Me)+"x ",11,QC)),64))])]),e.createElementVNode("div",eV,[e.createElementVNode("button",{type:"button",class:"mobile-edit-btn","data-testid":"btn-mobile-undo","aria-label":"Undo",disabled:!e.unref(ae),onClick:Mn}," Undo ",8,tV),e.createElementVNode("button",{type:"button",class:"mobile-edit-btn","data-testid":"btn-mobile-redo","aria-label":"Redo",disabled:!e.unref(he),onClick:$n}," Redo ",8,aV),e.createElementVNode("button",{type:"button",class:"mobile-edit-btn","data-testid":"btn-mobile-split","aria-label":"Split at playhead",disabled:!ht.value,onClick:on}," Split ",8,nV),e.createElementVNode("button",{type:"button",class:"mobile-edit-btn","data-testid":"btn-mobile-duplicate","aria-label":"Duplicate selected clip",disabled:!Yt.value,onClick:pn}," Duplicate ",8,oV),e.createElementVNode("button",{type:"button",class:"mobile-edit-btn mobile-edit-btn--danger","data-testid":"btn-mobile-delete","aria-label":"Delete selected clip",disabled:!nt.value,onClick:In}," Delete ",8,iV)])]),e.createElementVNode("div",{ref_key:"mobileControlsRef",ref:co,class:"controls-section mobile-controls"},null,512),xa.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mobile-action-sheet-backdrop","data-testid":"video-mobile-action-sheet",onClick:Pa},[e.createElementVNode("div",{class:"mobile-action-sheet",onClick:z[3]||(z[3]=e.withModifiers(()=>{},["stop"]))},[z[16]||(z[16]=e.createElementVNode("div",{class:"mobile-action-sheet-handle"},null,-1)),e.createElementVNode("div",rV,[e.createElementVNode("span",lV,e.toDisplayString(hi.value),1),e.createElementVNode("span",sV,e.toDisplayString(gi.value),1)]),e.createElementVNode("div",dV,[e.createElementVNode("button",{type:"button",class:"mobile-action-sheet-btn","data-testid":"btn-mobile-sheet-undo",disabled:!e.unref(ae),onClick:Mn},"Undo",8,uV),e.createElementVNode("button",{type:"button",class:"mobile-action-sheet-btn","data-testid":"btn-mobile-sheet-redo",disabled:!e.unref(he),onClick:$n},"Redo",8,cV),e.createElementVNode("button",{type:"button",class:"mobile-action-sheet-btn","data-testid":"btn-mobile-sheet-split",disabled:!ht.value,onClick:on},"Split",8,mV),e.createElementVNode("button",{type:"button",class:"mobile-action-sheet-btn","data-testid":"btn-mobile-sheet-duplicate",disabled:!Yt.value,onClick:pn},"Duplicate",8,pV),e.createElementVNode("button",{type:"button",class:"mobile-action-sheet-btn mobile-action-sheet-btn--danger","data-testid":"btn-mobile-sheet-delete",disabled:!nt.value,onClick:In},"Delete",8,fV),e.createElementVNode("button",{type:"button",class:"mobile-action-sheet-btn","data-testid":"btn-mobile-sheet-close",onClick:Pa},"Close")])])])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",vV,[e.createElementVNode("div",hV,[e.createElementVNode("div",gV,[e.createElementVNode("div",bV,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":z[4]||(z[4]=Me=>T.value=Me),"aria-label":"Fit mode","data-testid":"select-video-fit-mode"},[...z[17]||(z[17]=[e.createElementVNode("option",{value:"contain"},"Contain",-1),e.createElementVNode("option",{value:"cover"},"Cover",-1),e.createElementVNode("option",{value:"none"},"None",-1)])],512),[[e.vModelSelect,T.value]])])]),e.withDirectives(e.createVNode(Cs,{ref_key:"pixiPreviewDesktopRef",ref:h,"aria-hidden":!p.value,class:"preview-host-child",source:Ne.value,"fallback-duration":ha.value,filters:Ke.value,playhead:vt.value,"is-playing":e.unref(q),"fit-mode":T.value,active:p.value,onPlayPause:e.unref(Je),onFrameUpdate:La,onDurationChange:Tn},null,8,["aria-hidden","source","fallback-duration","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,p.value]]),e.withDirectives(e.createVNode(zs,{"aria-hidden":!f.value,class:"preview-host-child","media-uuid":l.value,recipe:D.value,media:dt.value,"enable-engine":f.value&&et.value,"fit-mode":T.value,onTimeUpdate:cn,onPlayStateChange:Gn,onDurationChange:Tn,onEngineReady:ho},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,f.value]]),N.showThumbnailPicker?(e.openBlock(),e.createBlock(A2,{key:0,"media-uuid":l.value,duration:ha.value,onSelect:Ca},null,8,["media-uuid","duration"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",yV,[e.createElementVNode("div",wV,[e.createElementVNode("div",kV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(K.value,Me=>(e.openBlock(),e.createElementBlock("button",{key:Me.id,class:e.normalizeClass(["tab-btn",{active:u.value===Me.id}]),onClick:Rt=>u.value=Me.id},e.toDisplayString(Me.label),11,_V))),128))]),e.createElementVNode("div",EV,[e.withDirectives(e.createElementVNode("div",SV,[e.createVNode(Zs,{filters:$e.value,"active-filters":Y.value,"thumbnail-url":pe.value,onApplyFilter:J,onRemoveFilter:oe,onUpdateParam:Nt,onPreviewFilter:go},null,8,["filters","active-filters","thumbnail-url"])],512),[[e.vShow,u.value==="filters"]]),e.withDirectives(e.createElementVNode("div",xV,[e.createVNode(Xs,{overlays:M.value,onAddOverlay:yo,onUpdateOverlay:wo,onRemoveOverlay:x},null,8,["overlays"])],512),[[e.vShow,u.value==="text"]]),e.withDirectives(e.createElementVNode("div",CV,[e.createVNode(Ks,{"selected-clips":j.value,"applied-transitions":_.value,onApplyTransition:P,onRemoveTransition:te,onPreviewTransition:ye},null,8,["selected-clips","applied-transitions"])],512),[[e.vShow,u.value==="transitions"]]),e.withDirectives(e.createElementVNode("div",VV,[e.createVNode(Js,{"audio-layers":L.value,"master-volume":B.value,onAddTrack:Oe,onUpdateTrack:ze,onRemoveTrack:ut,onUpdateVolume:Tt,onToggleMute:Kt,onUpdateMasterVolume:sa},null,8,["audio-layers","master-volume"])],512),[[e.vShow,u.value==="audio"]]),e.withDirectives(e.createElementVNode("div",NV,[e.unref(Te)?(e.openBlock(),e.createBlock(Hs,{key:0,filter:e.unref(Te),"current-frame":e.unref(le),onUpdateParams:bo},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",TV,[...z[18]||(z[18]=[e.createElementVNode("p",null,"Select a filter from the Filters tab to adjust its parameters",-1)])]))],512),[[e.vShow,u.value==="adjustments"]]),e.withDirectives(e.createElementVNode("div",BV,[e.createVNode(Gs,{"can-export":e.unref(W),"is-exporting":yt.value,"export-progress":bt.value,onExport:uu,onCancelExport:du,onSaveDraft:Jl,onReset:hu},null,8,["can-export","is-exporting","export-progress"]),qt.value?(e.openBlock(),e.createElementBlock("div",MV," Export complete ")):e.createCommentVNode("",!0),_t.value&&!qt.value?(e.openBlock(),e.createElementBlock("div",$V,e.toDisplayString(_t.value),1)):e.createCommentVNode("",!0)],512),[[e.vShow,u.value==="export"]])])])])]),e.createElementVNode("div",IV,[e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:un,class:"timeline-container"},[e.createElementVNode("div",DV,[e.createElementVNode("label",null,[z[19]||(z[19]=e.createTextVNode(" Zoom ",-1)),e.createElementVNode("input",{type:"range",min:"10",max:"600",value:e.unref(Pe),onInput:z[5]||(z[5]=Me=>Fn(Me))},null,40,FV)]),e.createElementVNode("span",AV,e.toDisplayString(Math.round(e.unref(Pe)))+" px/s",1),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["desktop-snap-toggle",{active:At.value}]),"data-testid":"btn-desktop-snap-toggle",onClick:Bn},e.toDisplayString(At.value?"Snap On":"Snap Off"),3)]),e.createVNode(js,{playhead:e.unref(H),clips:e.unref(y),"selected-clip-id":((Fe=e.unref(de))==null?void 0:Fe.id)??((Be=e.unref(y)[0])==null?void 0:Be.id)??null,duration:ha.value,fps:e.unref(ke),"zoom-level":e.unref(Pe),"snap-enabled":At.value,sensitivity:.25,"onUpdate:playhead":e.unref(ft),onTrim:e.unref(be),onSplit:Kn,onClipSelect:Xn,onClipMove:e.unref(Lt),onClipLongPress:po,onSnapStateChange:mn},null,8,["playhead","clips","selected-clip-id","duration","fps","zoom-level","snap-enabled","onUpdate:playhead","onTrim","onClipMove"]),e.createVNode(Ws,{"selected-clip":e.unref(de),"can-split":ht.value,"can-delete":nt.value,"is-playing":e.unref(q),"zoom-level":e.unref(Pe),"playback-speed":e.unref(ge),onSplit:on,onDelete:In,onDuplicate:pn,onZoomIn:bi,onZoomOut:yi,onZoomChange:Jn,onFitToWindow:vo,onPlayPause:e.unref(Je),onFrameForward:e.unref(jt),onFrameBackward:e.unref(Le),onSkipToStart:e.unref(Wt),onSkipToEnd:e.unref(Zt),onSpeedChange:e.unref(Mt)},null,8,["selected-clip","can-split","can-delete","is-playing","zoom-level","playback-speed","onPlayPause","onFrameForward","onFrameBackward","onSkipToStart","onSkipToEnd","onSpeedChange"]),xe.value?(e.openBlock(),e.createElementBlock("div",RV,[e.createElementVNode("div",LV,[e.createElementVNode("label",PV,[z[20]||(z[20]=e.createElementVNode("span",null,"Trim start (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[6]||(z[6]=Me=>Ft.value=Me),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-start"},null,512),[[e.vModelText,Ft.value]])]),e.createElementVNode("label",UV,[z[21]||(z[21]=e.createElementVNode("span",null,"Trim end (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[7]||(z[7]=Me=>Ot.value=Me),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-end"},null,512),[[e.vModelText,Ot.value]])]),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-start-playhead",disabled:!e.unref(de),onClick:z[8]||(z[8]=Me=>Q("start"))}," Start = Playhead ",8,OV),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-end-playhead",disabled:!e.unref(de),onClick:z[9]||(z[9]=Me=>Q("end"))}," End = Playhead ",8,zV),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-trim",disabled:!e.unref(de),onClick:De}," Apply Trim ",8,jV)]),e.createElementVNode("div",WV,[e.createElementVNode("label",ZV,[z[22]||(z[22]=e.createElementVNode("span",null,"Quick filter",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":z[10]||(z[10]=Me=>It.value=Me),"data-testid":"video-dev-filter-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($e.value,Me=>(e.openBlock(),e.createElementBlock("option",{key:Me.id,value:Me.id},e.toDisplayString(Me.name),9,HV))),128))],512),[[e.vModelSelect,It.value]])]),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-filter",disabled:!e.unref(de)||It.value==="",onClick:ne}," Apply Filter ",8,GV),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-clear-filters",disabled:e.unref(ce).length===0,onClick:Ye}," Clear Filters ",8,XV),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"btn-apply-noise-filter","aria-label":"Apply noise filter for QA testing",disabled:!e.unref(de),onClick:z[11]||(z[11]=Me=>J("noise"))}," QA: Noise ",8,KV),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"btn-apply-grayscale-filter","aria-label":"Apply grayscale filter for QA testing",disabled:!e.unref(de),onClick:z[12]||(z[12]=Me=>J("grayscale"))}," QA: Grayscale ",8,JV)])])):e.createCommentVNode("",!0)],512)])]))],2)}}}),cf=Ie(qV,[["__scopeId","data-v-1bb4247b"]]),YV={key:0,class:"video-editor-v2-toolbar"},QV={class:"video-editor-v2-body"},eN={key:0,class:"video-editor-v2-assets","data-testid":"v2-assets-panel"},tN={class:"video-editor-v2-main"},aN={class:"video-editor-v2-canvas"},nN={key:1,class:"video-editor-v2-timeline"},oN=["aria-expanded"],iN=["aria-hidden","inert"],rN="(max-width: 900px)",lN=e.defineComponent({__name:"SplitPanelLayout",setup(a,{expose:n}){const t=e.ref(!1),o=e.ref(!1);let i=null,r=null;const l=u=>{t.value=u,u&&(o.value=!1)},s=()=>{o.value=!0},d=()=>{o.value=!1};return e.onMounted(()=>{typeof window>"u"||!window.matchMedia||(i=window.matchMedia(rN),l(i.matches),r=u=>l(u.matches),i.addEventListener?i.addEventListener("change",r):"addListener"in i&&i.addListener(r))}),e.onBeforeUnmount(()=>{!i||!r||(i.removeEventListener?i.removeEventListener("change",r):"removeListener"in i&&i.removeListener(r),i=null,r=null)}),n({isMobile:t}),(u,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-editor-v2",{"is-mobile":t.value,"is-desktop":!t.value}]),"data-testid":"video-editor-v2-shell"},[u.$slots.toolbar?(e.openBlock(),e.createElementBlock("div",YV,[e.renderSlot(u.$slots,"toolbar",{},void 0,!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",QV,[!t.value&&u.$slots.assets?(e.openBlock(),e.createElementBlock("aside",eN,[e.renderSlot(u.$slots,"assets",{},void 0,!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",tN,[e.createElementVNode("div",aN,[e.renderSlot(u.$slots,"canvas",{},void 0,!0)])])]),u.$slots.timeline?(e.openBlock(),e.createElementBlock("div",nN,[e.renderSlot(u.$slots,"timeline",{isMobile:t.value},void 0,!0)])):e.createCommentVNode("",!0),!t.value&&u.$slots.inspector?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[o.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"video-editor-v2-tools-tab",type:"button","data-testid":"v2-tools-drawer-open","aria-label":"Open editor tools","aria-controls":"v2-editor-tools-drawer","aria-expanded":o.value?"true":"false",onClick:s}," Tools ",8,oN)),o.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"video-editor-v2-drawer-backdrop","data-testid":"v2-tools-drawer-backdrop",onClick:d})):e.createCommentVNode("",!0),e.createElementVNode("aside",{id:"v2-editor-tools-drawer",class:e.normalizeClass(["video-editor-v2-side",{"is-open":o.value}]),"data-testid":"v2-side-panel","aria-hidden":o.value?"false":"true",inert:!o.value},[e.createElementVNode("div",{class:"video-editor-v2-side-header"},[c[0]||(c[0]=e.createElementVNode("span",null,"Tools",-1)),e.createElementVNode("button",{class:"video-editor-v2-side-close",type:"button","data-testid":"v2-tools-drawer-close","aria-label":"Close editor tools",onClick:d}," x ")]),e.renderSlot(u.$slots,"inspector",{},void 0,!0)],10,iN)],64)):e.createCommentVNode("",!0),t.value?e.renderSlot(u.$slots,"drawer",{key:3},void 0,!0):e.createCommentVNode("",!0)],2))}}),sN=Ie(lN,[["__scopeId","data-v-ed83bde0"]]),dN=["aria-selected"],uN={class:"asset-rail-item__main"},cN={class:"asset-rail-item__type","data-testid":"asset-rail-item-type"},mN={class:"asset-rail-item__label","data-testid":"asset-rail-item-label"},pN={key:0,class:"asset-rail-item__details","data-testid":"asset-rail-item-details"},fN={class:"asset-rail-item__actions","aria-label":"Asset actions"},vN=e.defineComponent({__name:"AssetRailItem",props:{source:{},selected:{type:Boolean}},emits:["add","replaceSelected","remove"],setup(a,{emit:n}){const t=a,o=n,i=e.computed(()=>t.source.label??t.source.name??t.source.filename??t.source.id),r=e.computed(()=>{if(typeof t.source.duration!="number"||!Number.isFinite(t.source.duration))return null;const u=Math.max(0,Math.round(t.source.duration)),c=Math.floor(u/60),m=u%60;return`${c}:${m.toString().padStart(2,"0")}`}),l=e.computed(()=>typeof t.source.width!="number"||typeof t.source.height!="number"||!Number.isFinite(t.source.width)||!Number.isFinite(t.source.height)?null:`${Math.round(t.source.width)}x${Math.round(t.source.height)}`),s=e.computed(()=>[r.value,l.value].filter(u=>u!==null)),d=u=>{if(u==="add"){o("add",t.source.id);return}if(u==="replaceSelected"){o("replaceSelected",t.source.id);return}o("remove",t.source.id)};return(u,c)=>(e.openBlock(),e.createElementBlock("article",{class:e.normalizeClass(["asset-rail-item",{"is-selected":u.selected}]),"aria-selected":u.selected?"true":"false","data-testid":"asset-rail-item"},[e.createElementVNode("div",uN,[e.createElementVNode("span",cN,e.toDisplayString(u.source.type),1),e.createElementVNode("span",mN,e.toDisplayString(i.value),1),s.value.length>0?(e.openBlock(),e.createElementBlock("span",pN,e.toDisplayString(s.value.join(" / ")),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",fN,[e.createElementVNode("button",{class:"asset-rail-item__action",type:"button",title:"Add to timeline","aria-label":"Add to timeline","data-testid":"asset-rail-item-add",onClick:c[0]||(c[0]=m=>d("add"))}," + "),e.createElementVNode("button",{class:"asset-rail-item__action",type:"button",title:"Replace selected","aria-label":"Replace selected","data-testid":"asset-rail-item-replace",onClick:c[1]||(c[1]=m=>d("replaceSelected"))}," R "),e.createElementVNode("button",{class:"asset-rail-item__action asset-rail-item__action--danger",type:"button",title:"Remove asset","aria-label":"Remove asset","data-testid":"asset-rail-item-remove",onClick:c[2]||(c[2]=m=>d("remove"))}," - ")])],10,dN))}}),hN=Ie(vN,[["__scopeId","data-v-3ba2fd25"]]),gN={class:"asset-rail__header"},bN={key:0,class:"asset-rail__list","data-testid":"asset-rail-list"},yN={key:1,class:"asset-rail__empty","data-testid":"asset-rail-empty"},wN=e.defineComponent({__name:"AssetRail",props:{sources:{},selectedSourceId:{},uploadsEnabled:{type:Boolean}},emits:["add","replaceSelected","remove","importFiles"],setup(a,{emit:n}){const t=n,o=e.ref(null),i=e.ref(!1),r=(m,p)=>{if(m==="add"){t("add",p);return}if(m==="replaceSelected"){t("replaceSelected",p);return}t("remove",p)},l=()=>{var m;(m=o.value)==null||m.click()},s=m=>{const p=m.target;if(!(p!=null&&p.files)||p.files.length===0)return;const f=Array.from(p.files);t("importFiles",f),p.value=""},d=m=>{m.preventDefault(),m.dataTransfer&&(m.dataTransfer.dropEffect="copy"),i.value=!0},u=()=>{i.value=!1},c=m=>{var f;m.preventDefault(),i.value=!1;const p=Array.from(((f=m.dataTransfer)==null?void 0:f.files)??[]);p.length!==0&&t("importFiles",p)};return(m,p)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["asset-rail",{"asset-rail--drag-over":i.value&&m.uploadsEnabled}]),"aria-label":"Assets","data-testid":"asset-rail",onDragover:d,onDragleave:u,onDrop:c},[e.createElementVNode("div",gN,[p[3]||(p[3]=e.createElementVNode("h2",{class:"asset-rail__title"},"Assets",-1)),m.uploadsEnabled?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"asset-rail__upload","data-testid":"asset-rail-upload","aria-label":"Upload media files",onClick:l}," Upload ")):e.createCommentVNode("",!0),m.uploadsEnabled?(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"fileInput",ref:o,class:"asset-rail__file-input",type:"file",accept:"video/mp4,video/webm,video/quicktime,image/png,image/jpeg,image/webp,audio/mpeg,audio/aac,audio/wav",multiple:"","data-testid":"asset-rail-file-input",onChange:s},null,544)):e.createCommentVNode("",!0)]),m.sources.length>0?(e.openBlock(),e.createElementBlock("div",bN,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.sources,f=>(e.openBlock(),e.createBlock(hN,{key:f.id,source:f,selected:f.id===m.selectedSourceId,onAdd:p[0]||(p[0]=v=>r("add",v)),onReplaceSelected:p[1]||(p[1]=v=>r("replaceSelected",v)),onRemove:p[2]||(p[2]=v=>r("remove",v))},null,8,["source","selected"]))),128))])):(e.openBlock(),e.createElementBlock("p",yN,e.toDisplayString(m.uploadsEnabled?"Drop files here or click Upload to add media.":"No assets"),1))],34))}}),kN=Ie(wN,[["__scopeId","data-v-3db665c6"]]),_N={class:"audio-mixer-panel__tracks","data-testid":"audio-mixer-tracks"},EN={key:0,class:"audio-mixer-panel__empty","data-testid":"audio-mixer-empty"},SN=["data-testid"],xN={class:"audio-mixer-strip__header"},CN={class:"audio-mixer-strip__identity"},VN={class:"audio-mixer-strip__kind"},NN=["data-testid"],TN=["data-testid"],BN=["data-testid"],MN={class:"audio-mixer-meter__rail","aria-hidden":"true"},$N={class:"audio-mixer-meter__value"},IN={class:"audio-mixer-strip__controls"},DN=["for"],FN=["id","min","max","value","data-testid","onInput"],AN={class:"audio-mixer-control__value"},RN={class:"audio-mixer-buttons"},LN=["aria-pressed","aria-label","data-testid","onClick"],PN=["aria-pressed","aria-label","data-testid","onClick"],UN=["for"],ON=["id","value","data-testid","onInput"],zN={class:"audio-mixer-control__value"},jN=["data-testid"],WN={key:0},ZN={key:1},HN=["data-testid"],GN=["data-testid"],XN=["data-testid"],KN={class:"audio-mixer-routing__target"},JN={class:"audio-mixer-strip__header"},qN={class:"audio-mixer-strip__identity"},YN={class:"audio-mixer-strip__name","data-testid":"audio-mixer-master-name"},QN={class:"audio-mixer-meter__rail","aria-hidden":"true"},eT={class:"audio-mixer-meter__value"},tT={class:"audio-mixer-strip__controls"},aT={key:0,class:"audio-mixer-control audio-mixer-control--fader",for:"audio-mixer-master-fader"},nT=["min","max","value"],oT={class:"audio-mixer-control__value"},iT={class:"audio-mixer-buttons"},rT=["aria-pressed","aria-label"],lT={key:1,class:"audio-mixer-effects","data-testid":"audio-mixer-master-effects"},sT=["data-testid"],dT=e.defineComponent({__name:"AudioMixerPanel",props:{state:{},deviceClass:{}},emits:["update"],setup(a,{emit:n}){const t=a,o=n,i=e.computed(()=>LE(t.deviceClass,t.state.capabilities)),r=e.computed(()=>t.deviceClass==="desktop"),l=e.computed(()=>[...t.state.tracks].sort((B,U)=>B.order-U.order)),s=e.computed(()=>{const B=new Map(PE(l.value,t.state.master.muted).map(U=>[U.trackId,U]));return l.value.map(U=>({track:U,effectiveState:B.get(U.id)??null}))}),d=e.computed(()=>i.value.canAdjustTrackFaders),u=e.computed(()=>i.value.canAdjustMasterFader),c=e.computed(()=>i.value.canMuteTracks),m=e.computed(()=>r.value&&i.value.canSoloTracks),p=e.computed(()=>r.value&&i.value.canAdjustPan),f=e.computed(()=>i.value.canViewMeters&&i.value.meterMode!=="off"),v=e.computed(()=>r.value&&i.value.canEditEffectSlots&&i.value.maxEffectSlots>0),h=e.computed(()=>r.value&&i.value.canEditRouting),k=B=>{if(!(B.target instanceof HTMLInputElement))return null;const U=Number(B.target.value);return Number.isFinite(U)?U:null},E=(B,U)=>{if(!d.value)return;const S=k(U);S!==null&&o("update",{type:"track-fader-db",trackId:B.id,valueDb:Qi(S)})},w=B=>{c.value&&o("update",{type:"track-mute",trackId:B.id,muted:!B.controls.muted})},b=B=>{m.value&&o("update",{type:"track-solo",trackId:B.id,solo:!B.controls.solo})},g=(B,U)=>{if(!p.value)return;const S=k(U);S!==null&&o("update",{type:"track-pan",trackId:B.id,pan:Ep(S)})},D=B=>{if(!u.value)return;const U=k(B);U!==null&&o("update",{type:"master-fader-db",valueDb:Qi(U)})},T=B=>{c.value&&o("update",{type:"master-mute",muted:!B.muted})},F=B=>{const U=Math.round(B*10)/10;return U>0?`+${U.toFixed(U%1===0?0:1)} dB`:`${U.toFixed(U%1===0?0:1)} dB`},V=B=>B===0?"C":`${B<0?"L":"R"} ${Math.round(Math.abs(B)*100)}`,I=B=>{if(B===void 0)return"";const U=Math.round(B*10)/10;return`${U.toFixed(U%1===0?0:1)}s`},$=B=>F(B),C=B=>{if(!Number.isFinite(B))return 0;const U=Math.min(nl,Math.max(ro,B)),S=nl-ro;return Math.round((U-ro)/S*100)},M=B=>B.slice(0,i.value.maxEffectSlots),_=B=>v.value&&M(B).length>0,L=B=>B.timeline.fadeIn!==void 0||B.timeline.fadeOut!==void 0,j=B=>B===null?"Unknown":B.mutedByMaster?"Master muted":B.mutedByTrack?"Muted":B.mutedBySolo?"Muted by solo":B.soloed?"Solo active":"Audible";return(B,U)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["audio-mixer-panel",`audio-mixer-panel--${B.deviceClass}`]),"data-testid":"audio-mixer-panel","aria-label":"Audio mixer"},[e.createElementVNode("div",_N,[s.value.length===0?(e.openBlock(),e.createElementBlock("p",EN," No audio tracks ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,({track:S,effectiveState:R})=>(e.openBlock(),e.createElementBlock("article",{key:S.id,class:e.normalizeClass(["audio-mixer-strip",{"is-muted":(R==null?void 0:R.effectivelyMuted)===!0,"is-soloed":S.controls.solo}]),"data-testid":`audio-mixer-track-${S.id}`},[e.createElementVNode("header",xN,[e.createElementVNode("div",CN,[e.createElementVNode("span",VN,e.toDisplayString(S.kind),1),e.createElementVNode("h3",{class:"audio-mixer-strip__name","data-testid":`audio-mixer-track-name-${S.id}`},e.toDisplayString(S.name),9,NN)]),e.createElementVNode("span",{class:e.normalizeClass(["audio-mixer-strip__status",{"is-active":(R==null?void 0:R.audible)===!0}]),"data-testid":`audio-mixer-track-status-${S.id}`},e.toDisplayString(j(R)),11,TN)]),f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["audio-mixer-meter",{"is-clipping":S.controls.meter.clipping}]),"data-testid":`audio-mixer-track-meter-${S.id}`,"aria-label":"Track meter"},[e.createElementVNode("span",MN,[e.createElementVNode("span",{class:"audio-mixer-meter__fill",style:e.normalizeStyle({width:`${C(S.controls.meter.peakDb)}%`})},null,4)]),e.createElementVNode("span",$N,e.toDisplayString($(S.controls.meter.peakDb)),1)],10,BN)):e.createCommentVNode("",!0),e.createElementVNode("div",IN,[d.value?(e.openBlock(),e.createElementBlock("label",{key:0,class:"audio-mixer-control audio-mixer-control--fader",for:`audio-mixer-track-fader-${S.id}`},[U[2]||(U[2]=e.createElementVNode("span",{class:"audio-mixer-control__label"},"Level",-1)),e.createElementVNode("input",{id:`audio-mixer-track-fader-${S.id}`,type:"range",class:"audio-mixer-control__range",min:S.controls.fader.minDb,max:S.controls.fader.maxDb,value:S.controls.fader.valueDb,step:"0.5","data-testid":`audio-mixer-track-fader-${S.id}`,onInput:O=>E(S,O)},null,40,FN),e.createElementVNode("span",AN,e.toDisplayString(F(S.controls.fader.valueDb)),1)],8,DN)):e.createCommentVNode("",!0),e.createElementVNode("div",RN,[c.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(["audio-mixer-button",{"is-active":S.controls.muted}]),"aria-pressed":S.controls.muted?"true":"false","aria-label":S.controls.muted?`Unmute ${S.name}`:`Mute ${S.name}`,"data-testid":`audio-mixer-track-mute-${S.id}`,onClick:O=>w(S)}," M ",10,LN)):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:e.normalizeClass(["audio-mixer-button audio-mixer-button--solo",{"is-active":S.controls.solo}]),"aria-pressed":S.controls.solo?"true":"false","aria-label":S.controls.solo?`Clear solo on ${S.name}`:`Solo ${S.name}`,"data-testid":`audio-mixer-track-solo-${S.id}`,onClick:O=>b(S)}," S ",10,PN)):e.createCommentVNode("",!0)])]),p.value?(e.openBlock(),e.createElementBlock("label",{key:1,class:"audio-mixer-control audio-mixer-control--pan",for:`audio-mixer-track-pan-${S.id}`},[U[3]||(U[3]=e.createElementVNode("span",{class:"audio-mixer-control__label"},"Pan",-1)),e.createElementVNode("input",{id:`audio-mixer-track-pan-${S.id}`,type:"range",class:"audio-mixer-control__range",min:"-1",max:"1",step:"0.01",value:S.controls.pan.value,"data-testid":`audio-mixer-track-pan-${S.id}`,onInput:O=>g(S,O)},null,40,ON),e.createElementVNode("span",zN,e.toDisplayString(V(S.controls.pan.value)),1)],8,UN)):e.createCommentVNode("",!0),L(S)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"audio-mixer-strip__fades","data-testid":`audio-mixer-track-fades-${S.id}`},[S.timeline.fadeIn!==void 0?(e.openBlock(),e.createElementBlock("span",WN," In "+e.toDisplayString(I(S.timeline.fadeIn)),1)):e.createCommentVNode("",!0),S.timeline.fadeOut!==void 0?(e.openBlock(),e.createElementBlock("span",ZN," Out "+e.toDisplayString(I(S.timeline.fadeOut)),1)):e.createCommentVNode("",!0)],8,jN)):e.createCommentVNode("",!0),_(S.effectSlots)?(e.openBlock(),e.createElementBlock("div",{key:3,class:"audio-mixer-effects","data-testid":`audio-mixer-track-effects-${S.id}`},[U[4]||(U[4]=e.createElementVNode("span",{class:"audio-mixer-effects__label"},"FX",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M(S.effectSlots),O=>(e.openBlock(),e.createElementBlock("span",{key:O.id,class:e.normalizeClass(["audio-mixer-effect",{"is-empty":O.kind==="empty","is-bypassed":O.bypassed,"is-enabled":O.enabled&&!O.bypassed}]),"data-testid":`audio-mixer-track-effect-${S.id}-${O.index}`},e.toDisplayString(O.label),11,GN))),128))],8,HN)):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createElementBlock("div",{key:4,class:"audio-mixer-routing","data-testid":`audio-mixer-track-routing-${S.id}`},[U[5]||(U[5]=e.createElementVNode("span",{class:"audio-mixer-routing__label"},"Route",-1)),e.createElementVNode("span",KN,e.toDisplayString(B.state.master.name),1)],8,XN)):e.createCommentVNode("",!0)],10,SN))),128))]),e.createElementVNode("article",{class:e.normalizeClass(["audio-mixer-strip audio-mixer-strip--master",{"is-muted":B.state.master.muted}]),"data-testid":"audio-mixer-master-strip"},[e.createElementVNode("header",JN,[e.createElementVNode("div",qN,[U[6]||(U[6]=e.createElementVNode("span",{class:"audio-mixer-strip__kind"},"master",-1)),e.createElementVNode("h3",YN,e.toDisplayString(B.state.master.name),1)]),e.createElementVNode("span",{class:e.normalizeClass(["audio-mixer-strip__status",{"is-active":!B.state.master.muted}]),"data-testid":"audio-mixer-master-status"},e.toDisplayString(B.state.master.muted?"Muted":"Active"),3)]),f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["audio-mixer-meter",{"is-clipping":B.state.master.meter.clipping}]),"data-testid":"audio-mixer-master-meter","aria-label":"Master meter"},[e.createElementVNode("span",QN,[e.createElementVNode("span",{class:"audio-mixer-meter__fill",style:e.normalizeStyle({width:`${C(B.state.master.meter.peakDb)}%`})},null,4)]),e.createElementVNode("span",eT,e.toDisplayString($(B.state.master.meter.peakDb)),1)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",tT,[u.value?(e.openBlock(),e.createElementBlock("label",aT,[U[7]||(U[7]=e.createElementVNode("span",{class:"audio-mixer-control__label"},"Level",-1)),e.createElementVNode("input",{id:"audio-mixer-master-fader",type:"range",class:"audio-mixer-control__range",min:B.state.master.fader.minDb,max:B.state.master.fader.maxDb,value:B.state.master.fader.valueDb,step:"0.5","data-testid":"audio-mixer-master-fader",onInput:U[0]||(U[0]=S=>D(S))},null,40,nT),e.createElementVNode("span",oT,e.toDisplayString(F(B.state.master.fader.valueDb)),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",iT,[c.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(["audio-mixer-button",{"is-active":B.state.master.muted}]),"aria-pressed":B.state.master.muted?"true":"false","aria-label":B.state.master.muted?`Unmute ${B.state.master.name}`:`Mute ${B.state.master.name}`,"data-testid":"audio-mixer-master-mute",onClick:U[1]||(U[1]=S=>T(B.state.master))}," M ",10,rT)):e.createCommentVNode("",!0)])]),_(B.state.master.effectSlots)?(e.openBlock(),e.createElementBlock("div",lT,[U[8]||(U[8]=e.createElementVNode("span",{class:"audio-mixer-effects__label"},"FX",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M(B.state.master.effectSlots),S=>(e.openBlock(),e.createElementBlock("span",{key:S.id,class:e.normalizeClass(["audio-mixer-effect",{"is-empty":S.kind==="empty","is-bypassed":S.bypassed,"is-enabled":S.enabled&&!S.bypassed}]),"data-testid":`audio-mixer-master-effect-${S.index}`},e.toDisplayString(S.label),11,sT))),128))])):e.createCommentVNode("",!0)],2)],2))}}),Bc=Ie(dT,[["__scopeId","data-v-e5c785e8"]]),uT={class:"caption-srt-panel__header"},cT={class:"caption-srt-panel__title-group"},mT={class:"caption-srt-panel__title"},pT=["id"],fT={key:0,class:"caption-srt-panel__stats","data-testid":"caption-srt-desktop-stats"},vT={key:0,class:"caption-srt-panel__desktop-controls","data-testid":"caption-srt-desktop-controls"},hT={class:"caption-srt-panel__field"},gT={class:"caption-srt-panel__field"},bT=["for"],yT=["id","aria-describedby","aria-invalid"],wT=["id"],kT=["id"],_T={key:3,class:"caption-srt-panel__cue-summary","data-testid":"caption-srt-cue-summary","aria-label":"Current caption cue summary"},ET={key:0,class:"caption-srt-panel__cue-list"},ST={class:"caption-srt-panel__cue-time"},xT={class:"caption-srt-panel__cue-text"},CT={key:1,class:"caption-srt-panel__empty"},VT=e.defineComponent({__name:"CaptionSrtPanel",props:{captionTrack:{default:null},segments:{default:null},layout:{default:"desktop"},trackId:{default:"caption-track-srt"},idPrefix:{default:"srt-cue"},panelId:{default:"caption-srt-panel"},title:{default:"Caption SRT"},textareaLabel:{default:"SRT caption text"}},emits:["import","update:captionTrack","update:segments","export","clear"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(""),r=e.ref(null),l=e.ref(null),s=e.ref(""),d=e.ref(""),u=e.ref(!1),c=e.computed(()=>t.layout==="mobile"),m=e.computed(()=>`${t.panelId}-textarea`),p=e.computed(()=>`${t.panelId}-helper`),f=e.computed(()=>`${t.panelId}-error`),v=e.computed(()=>`${t.panelId}-status`),h=e.computed(()=>{const _=[p.value,v.value];return r.value!==null&&_.push(f.value),_.join(" ")}),k=e.computed(()=>t.captionTrack!==null?t.captionTrack.segments:t.segments??[]),E=e.computed(()=>{try{return{text:uc(k.value),errorMessage:null}}catch(_){return{text:"",errorMessage:$(_)}}}),w=e.computed(()=>k.value.length),b=e.computed(()=>k.value.reduce((_,L)=>Math.max(_,L.endTime),0)),g=e.computed(()=>k.value.slice(0,5));e.watch(()=>{var _,L;return[(_=t.captionTrack)==null?void 0:_.id,(L=t.captionTrack)==null?void 0:L.language,t.trackId]},([_,L,j])=>{s.value=_??j,d.value=L??""},{immediate:!0}),e.watch(E,_=>{if(_.errorMessage!==null){r.value=_.errorMessage;return}u.value||(i.value=_.text)},{immediate:!0});const D=()=>{u.value=!0,l.value=null,r.value!==null&&(r.value=null)},T=()=>{const _=i.value;if(r.value=null,l.value=null,_.trim()===""){r.value="Paste SRT text before importing captions.";return}try{const L=iS(_,{idPrefix:t.idPrefix}),j=kS(I(L)),B=uc(j.segments);i.value=B,u.value=!1,l.value=`Imported ${C(j.segments.length)}.`,o("update:captionTrack",j),o("update:segments",j.segments),o("import",{track:j,segments:j.segments,sourceText:_})}catch(L){r.value=$(L)}},F=()=>{const _=E.value;if(r.value=_.errorMessage,_.errorMessage!==null){l.value=null;return}i.value=_.text,u.value=!1,l.value=_.text===""?"No captions to export.":`Exported ${C(w.value)}.`,o("export",_.text)},V=()=>{i.value="",u.value=!0,r.value=null,l.value="SRT text cleared.",o("clear")};function I(_){var B,U;const L={id:s.value.trim(),source:"srt-import",stylePreset:((B=t.captionTrack)==null?void 0:B.stylePreset)??"default",animation:((U=t.captionTrack)==null?void 0:U.animation)??"none",segments:_},j=d.value.trim();return j!==""&&(L.language=j),L}function $(_){return _ instanceof lo||_ instanceof Error?_.message:"Unable to process SRT captions."}function C(_){return _===1?"1 cue":`${_} cues`}function M(_){const L=Math.floor(_/60),j=Math.floor(_%60);return`${L}:${j.toString().padStart(2,"0")}`}return(_,L)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["caption-srt-panel",{"caption-srt-panel--mobile":c.value}]),"data-testid":"caption-srt-panel","aria-label":"SRT caption import and export"},[e.createElementVNode("header",uT,[e.createElementVNode("div",cT,[e.createElementVNode("h2",mT,e.toDisplayString(_.title),1),e.createElementVNode("p",{id:p.value,class:"caption-srt-panel__helper"}," Paste SRT, import it as captions, or export the current caption track. ",8,pT)]),c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",fT,[e.createElementVNode("span",null,e.toDisplayString(C(w.value)),1),e.createElementVNode("span",null,e.toDisplayString(M(b.value)),1)]))]),c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",vT,[e.createElementVNode("label",hT,[L[3]||(L[3]=e.createElementVNode("span",null,"Track ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":L[0]||(L[0]=j=>s.value=j),class:"caption-srt-panel__input",type:"text",autocomplete:"off","data-testid":"caption-srt-track-id"},null,512),[[e.vModelText,s.value]])]),e.createElementVNode("label",gT,[L[4]||(L[4]=e.createElementVNode("span",null,"Language",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":L[1]||(L[1]=j=>d.value=j),class:"caption-srt-panel__input",type:"text",autocomplete:"off",placeholder:"en","data-testid":"caption-srt-language"},null,512),[[e.vModelText,d.value]])])])),e.createElementVNode("label",{class:"caption-srt-panel__textarea-label",for:m.value},e.toDisplayString(_.textareaLabel),9,bT),e.withDirectives(e.createElementVNode("textarea",{id:m.value,"onUpdate:modelValue":L[2]||(L[2]=j=>i.value=j),class:e.normalizeClass(["caption-srt-panel__textarea",{"has-error":r.value!==null}]),spellcheck:"false","aria-describedby":h.value,"aria-invalid":r.value!==null?"true":"false","data-testid":"caption-srt-textarea",onInput:D},null,42,yT),[[e.vModelText,i.value]]),r.value!==null?(e.openBlock(),e.createElementBlock("p",{key:1,id:f.value,class:"caption-srt-panel__error",role:"alert","data-testid":"caption-srt-error"},e.toDisplayString(r.value),9,wT)):(e.openBlock(),e.createElementBlock("p",{key:2,id:v.value,class:"caption-srt-panel__status","aria-live":"polite","data-testid":"caption-srt-status"},e.toDisplayString(l.value??"Ready for caption import or export."),9,kT)),e.createElementVNode("div",{class:"caption-srt-panel__actions","aria-label":"SRT caption actions"},[e.createElementVNode("button",{type:"button",class:"caption-srt-panel__button caption-srt-panel__button--primary","data-testid":"caption-srt-import",onClick:T}," Import "),e.createElementVNode("button",{type:"button",class:"caption-srt-panel__button","data-testid":"caption-srt-export",onClick:F}," Export "),e.createElementVNode("button",{type:"button",class:"caption-srt-panel__button","data-testid":"caption-srt-clear",onClick:V}," Clear ")]),c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",_T,[L[5]||(L[5]=e.createElementVNode("p",{class:"caption-srt-panel__cue-summary-title"},"Cue summary",-1)),g.value.length>0?(e.openBlock(),e.createElementBlock("ol",ET,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,j=>(e.openBlock(),e.createElementBlock("li",{key:j.id,class:"caption-srt-panel__cue"},[e.createElementVNode("span",ST,e.toDisplayString(M(j.startTime))+"-"+e.toDisplayString(M(j.endTime)),1),e.createElementVNode("span",xT,e.toDisplayString(j.text),1)]))),128))])):(e.openBlock(),e.createElementBlock("p",CT," No captions loaded. "))]))],2))}}),Mc=Ie(VT,[["__scopeId","data-v-1d5fdb3b"]]),NT=["aria-label"],TT={class:"draft-recovery-banner__header"},BT={class:"draft-recovery-banner__heading"},MT={class:"draft-recovery-banner__title"},$T={class:"draft-recovery-banner__summary","data-testid":"draft-recovery-summary"},IT={key:0,class:"draft-recovery-banner__list","data-testid":"draft-recovery-list"},DT={class:"draft-recovery-banner__record-copy"},FT={class:"draft-recovery-banner__record-title","data-testid":"draft-recovery-record-title"},AT={class:"draft-recovery-banner__record-meta"},RT={"data-testid":"draft-recovery-record-updated"},LT={"data-testid":"draft-recovery-record-reason"},PT={class:"draft-recovery-banner__actions"},UT=["onClick"],OT=["onClick"],zT={key:1,class:"draft-recovery-banner__mobile-prompt","data-testid":"draft-recovery-mobile-prompt"},jT={class:"draft-recovery-banner__record-copy"},WT={class:"draft-recovery-banner__record-title","data-testid":"draft-recovery-record-title"},ZT={class:"draft-recovery-banner__record-meta"},HT={"data-testid":"draft-recovery-record-updated"},GT={"data-testid":"draft-recovery-record-reason"},XT={class:"draft-recovery-banner__actions draft-recovery-banner__actions--mobile"},KT={key:2,class:"draft-recovery-banner__empty","data-testid":"draft-recovery-empty"},JT=e.defineComponent({__name:"DraftRecoveryBanner",props:{records:{},surface:{},projectId:{},savedAt:{},maxAgeMs:{},now:{},maxDesktopItems:{default:3}},emits:["restore","dismiss"],setup(a,{emit:n}){const t=a,o=n,i={autosave:"Autosaved",manual:"Manual save","before-export":"Before export","before-close":"Before close"},r=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}),l=e.computed(()=>{const T={};return t.projectId!==void 0&&(T.projectId=t.projectId),t.savedAt!==void 0&&(T.savedAt=t.savedAt),t.maxAgeMs!==void 0&&(T.maxAgeMs=t.maxAgeMs),t.now!==void 0&&(T.now=t.now),T}),s=e.computed(()=>{const T=t.maxDesktopItems;return!Number.isFinite(T)||T<1?1:Math.floor(T)}),d=e.computed(()=>kE(t.records,t.surface,l.value)),u=e.computed(()=>t.surface==="mobile"?d.value:d.value.slice(0,s.value)),c=e.computed(()=>t.surface==="mobile"),m=e.computed(()=>u.value.length>0),p=e.computed(()=>c.value?u.value[0]??null:null),f=e.computed(()=>c.value?"Unsaved video draft":"Unsaved video drafts"),v=e.computed(()=>m.value?c.value?"A newer draft is available on this device.":`${u.value.length} recoverable draft${u.value.length===1?"":"s"} found.`:"No recoverable video drafts"),h=T=>{var F;return((F=T.snapshot.metadata.title)==null?void 0:F.trim())||"Untitled video draft"},k=T=>{const F=T.snapshot.metadata.saveReason;return F===void 0?"Saved draft":i[F]},E=T=>{const F=new Date(T.snapshot.metadata.updatedAt);return Number.isFinite(F.getTime())?r.format(F):"Updated time unavailable"},w=T=>{o("restore",T)},b=T=>{T.length!==0&&o("dismiss",T)},g=T=>{b([T])},D=()=>{b(u.value)};return(T,F)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["draft-recovery-banner",{"draft-recovery-banner--mobile":c.value,"draft-recovery-banner--empty":!m.value}]),"data-testid":"draft-recovery-banner","aria-live":"polite","aria-label":f.value},[e.createElementVNode("header",TT,[e.createElementVNode("div",BT,[F[2]||(F[2]=e.createElementVNode("p",{class:"draft-recovery-banner__eyebrow"},"Draft recovery",-1)),e.createElementVNode("h2",MT,e.toDisplayString(f.value),1),e.createElementVNode("p",$T,e.toDisplayString(v.value),1)]),!c.value&&u.value.length>1?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"draft-recovery-banner__ghost-action","data-testid":"draft-recovery-dismiss-all",onClick:D}," Dismiss all ")):e.createCommentVNode("",!0)]),!c.value&&m.value?(e.openBlock(),e.createElementBlock("ul",IT,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,V=>(e.openBlock(),e.createElementBlock("li",{key:V.key,class:"draft-recovery-banner__record","data-testid":"draft-recovery-record"},[e.createElementVNode("div",DT,[e.createElementVNode("h3",FT,e.toDisplayString(h(V)),1),e.createElementVNode("p",AT,[e.createElementVNode("span",RT,"Updated "+e.toDisplayString(E(V)),1),F[3]||(F[3]=e.createElementVNode("span",{"aria-hidden":"true"},"·",-1)),e.createElementVNode("span",LT,e.toDisplayString(k(V)),1)])]),e.createElementVNode("div",PT,[e.createElementVNode("button",{type:"button",class:"draft-recovery-banner__primary-action","data-testid":"draft-recovery-restore",onClick:I=>w(V)}," Restore ",8,UT),e.createElementVNode("button",{type:"button",class:"draft-recovery-banner__secondary-action","data-testid":"draft-recovery-dismiss",onClick:I=>g(V)}," Dismiss ",8,OT)])]))),128))])):p.value?(e.openBlock(),e.createElementBlock("article",zT,[e.createElementVNode("div",jT,[e.createElementVNode("h3",WT,e.toDisplayString(h(p.value)),1),e.createElementVNode("p",ZT,[e.createElementVNode("span",HT,"Updated "+e.toDisplayString(E(p.value)),1),F[4]||(F[4]=e.createElementVNode("span",{"aria-hidden":"true"},"·",-1)),e.createElementVNode("span",GT,e.toDisplayString(k(p.value)),1)])]),e.createElementVNode("div",XT,[e.createElementVNode("button",{type:"button",class:"draft-recovery-banner__primary-action","data-testid":"draft-recovery-restore",onClick:F[0]||(F[0]=V=>w(p.value))}," Restore "),e.createElementVNode("button",{type:"button",class:"draft-recovery-banner__secondary-action","data-testid":"draft-recovery-dismiss",onClick:F[1]||(F[1]=V=>g(p.value))}," Dismiss ")])])):(e.openBlock(),e.createElementBlock("p",KT," No recoverable drafts "))],10,NT))}}),$c=Ie(JT,[["__scopeId","data-v-3ed3c273"]]),qT={class:"inspector-tabs",role:"tablist","aria-label":"Editor tools"},YT=["aria-selected","data-testid","onClick"],QT=["aria-labelledby"],e4={class:"inspector-placeholder","data-testid":"v2-inspector-placeholder"},t4=e.defineComponent({__name:"InspectorPanel",props:{activeTab:{},tabs:{},compact:{type:Boolean,default:!1}},emits:["update:activeTab"],setup(a,{emit:n}){const t=a,o=n,i=e.computed(()=>t.tabs.filter(l=>l.enabled)),r=l=>{l!==t.activeTab&&o("update:activeTab",l)};return(l,s)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["inspector-panel",{"inspector-panel--compact":l.compact}]),"data-testid":"v2-inspector-panel"},[e.createElementVNode("nav",qT,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,d=>(e.openBlock(),e.createElementBlock("button",{key:d.id,type:"button",role:"tab",class:e.normalizeClass(["inspector-tab",{"is-active":l.activeTab===d.id}]),"aria-selected":l.activeTab===d.id?"true":"false","data-testid":`v2-inspector-tab-${d.id}`,onClick:u=>r(d.id)},e.toDisplayString(d.label),11,YT))),128))]),e.createElementVNode("div",{class:"inspector-body",role:"tabpanel","aria-labelledby":`v2-inspector-tab-${l.activeTab}`},[e.renderSlot(l.$slots,l.activeTab,{},()=>[e.createElementVNode("div",e4,[e.createElementVNode("p",null,e.toDisplayString(l.activeTab)+" controls — coming soon",1)])],!0)],8,QT)],2))}}),a4=Ie(t4,[["__scopeId","data-v-7f5b0e50"]]),n4={class:"keyframe-preset-panel__header"},o4={class:"keyframe-preset-panel__target","data-testid":"keyframe-preset-target"},i4={key:0,class:"keyframe-preset-panel__notice","data-testid":"keyframe-preset-invalid-duration"},r4={class:"keyframe-preset-panel__grid","data-testid":"keyframe-preset-buttons"},l4=["disabled","aria-disabled","data-testid","onClick"],s4={class:"keyframe-preset-panel__preset-label"},d4={class:"keyframe-preset-panel__preset-summary"},u4={key:1,class:"keyframe-preset-panel__compact-summary","data-testid":"keyframe-preset-mobile-summary"},c4={key:2,class:"keyframe-preset-panel__desktop-summary","data-testid":"keyframe-preset-desktop-summary"},m4={class:"keyframe-preset-panel__summary-list"},p4=["data-testid"],f4={key:0,class:"keyframe-preset-panel__summary-empty","data-testid":"keyframe-preset-summary-empty"},v4=e.defineComponent({__name:"KeyframePresetPanel",props:{duration:{},target:{},deviceClass:{}},emits:["apply-preset"],setup(a,{emit:n}){const t=a,o=n,i={all:"All targets",opacity:"Opacity",scale:"Scale",x:"Pan X",y:"Pan Y",rotation:"Rotation",audioVolume:"Audio"},r=[{id:"fade-in",label:"Fade in",target:"opacity",summary:"Opacity 0 -> 100%",create:T=>{const F=bS({duration:D(T)});return E("fade-in","Fade in",F,T)}},{id:"fade-out",label:"Fade out",target:"opacity",summary:"Opacity 100 -> 0%",create:T=>{const F=D(T),V=yS({startTime:T-F,duration:F});return E("fade-out","Fade out",V,T)}},{id:"push-in",label:"Push in",target:"scale",summary:"Scale 100 -> 108%",create:T=>{const F=wS({duration:T,fromScale:1,toScale:1.08,easing:"ease-out"});return E("push-in","Push in",F,T)}},{id:"push-out",label:"Push out",target:"scale",summary:"Scale 108 -> 100%",create:T=>b({id:"push-out",label:"Push out",target:"scale",duration:T,startValue:1.08,endValue:1,easing:"ease-in"})},{id:"pan-x-left",label:"Pan left",target:"x",summary:"X 55 -> 45%",create:T=>b({id:"pan-x-left",label:"Pan left",target:"x",duration:T,startValue:.55,endValue:.45,easing:"ease-in-out"})},{id:"pan-x-right",label:"Pan right",target:"x",summary:"X 45 -> 55%",create:T=>b({id:"pan-x-right",label:"Pan right",target:"x",duration:T,startValue:.45,endValue:.55,easing:"ease-in-out"})},{id:"pan-y-up",label:"Pan up",target:"y",summary:"Y 55 -> 45%",create:T=>b({id:"pan-y-up",label:"Pan up",target:"y",duration:T,startValue:.55,endValue:.45,easing:"ease-in-out"})},{id:"pan-y-down",label:"Pan down",target:"y",summary:"Y 45 -> 55%",create:T=>b({id:"pan-y-down",label:"Pan down",target:"y",duration:T,startValue:.45,endValue:.55,easing:"ease-in-out"})},{id:"audio-fade-in",label:"Audio fade in",target:"audioVolume",summary:"Volume 0 -> 100%",create:T=>b({id:"audio-fade-in",label:"Audio fade in",target:"audioVolume",duration:D(T),startValue:0,endValue:1,easing:"ease-out"})},{id:"audio-fade-out",label:"Audio fade out",target:"audioVolume",summary:"Volume 100 -> 0%",create:T=>{const F=D(T);return b({id:"audio-fade-out",label:"Audio fade out",target:"audioVolume",duration:F,startTime:T-F,startValue:1,endValue:0,easing:"ease-in"})}}],l=e.computed(()=>vS(t.deviceClass)),s=e.computed(()=>l.value.platform==="mobile"),d=e.computed(()=>Number.isFinite(t.duration)&&t.duration>0),u=e.computed(()=>t.target==="all"?r:r.filter(T=>T.target===t.target)),c=e.computed(()=>d.value?u.value.map(T=>({definition:T,automation:T.create(t.duration)})):[]),m=e.computed(()=>i[t.target]),p=e.computed(()=>{const T=u.value.length,F=T===1?"preset":"presets";return d.value?`${T} ${F} - ${v(t.duration)} clip.`:`${T} ${F} available when duration is set.`}),f=T=>{if(!d.value)return;const F=T.create(t.duration);o("apply-preset",{presetId:F.id,target:F.target,keyframes:F.keyframes,automation:F})},v=T=>{const F=Math.round(T*100)/100;return`${F.toFixed(F%1===0?0:2)}s`},h=(T,F)=>T==="opacity"||T==="audioVolume"?`${Math.round(F*100)}%`:T==="scale"?`${Math.round(F*100)}%`:T==="x"||T==="y"?`${Math.round(F*100)}%`:`${Math.round(F*100)/100}`,k=T=>{const[F,V]=T.keyframes;return`${v(F.time)} ${h(T.target,F.value)} -> ${v(V.time)} ${h(T.target,V.value)}`};function E(T,F,V,I){return w({id:T,label:F,target:V.target,duration:I,keyframes:V.keyframes})}function w(T){const F=gS(T.keyframes,{target:T.target,minTime:0,maxTime:T.duration}),V=F[0],I=F[1];if(F.length!==2||V===void 0||I===void 0)throw new Error("Keyframe preset panel presets must generate exactly two keyframes.");return{id:T.id,label:T.label,target:T.target,editingMode:"preset-only",keyframes:[V,I]}}function b(T){const F=T.startTime??0,V=[g(`${T.id}:start`,T.target,F,T.startValue,"linear"),g(`${T.id}:end`,T.target,F+T.duration,T.endValue,T.easing)];return w({id:T.id,label:T.label,target:T.target,duration:F+T.duration,keyframes:V})}function g(T,F,V,I,$){return{id:T,target:F,time:V,value:I,easing:$}}function D(T){return Math.min(T,1)}return(T,F)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["keyframe-preset-panel",{"keyframe-preset-panel--mobile":s.value}]),"data-testid":"keyframe-preset-panel","aria-label":"Keyframe presets"},[e.createElementVNode("header",n4,[F[0]||(F[0]=e.createElementVNode("div",{class:"keyframe-preset-panel__heading"},[e.createElementVNode("p",{class:"keyframe-preset-panel__eyebrow"},"Presets"),e.createElementVNode("h3",{class:"keyframe-preset-panel__title"},"Keyframe automation")],-1)),e.createElementVNode("span",o4,e.toDisplayString(m.value),1)]),d.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",i4," Set a valid clip duration to apply automation presets. ")),e.createElementVNode("div",r4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,V=>(e.openBlock(),e.createElementBlock("button",{key:V.id,type:"button",class:"keyframe-preset-panel__preset",disabled:!d.value,"aria-disabled":d.value?void 0:"true","data-testid":`keyframe-preset-button-${V.id}`,onClick:I=>f(V)},[e.createElementVNode("span",s4,e.toDisplayString(V.label),1),e.createElementVNode("span",d4,e.toDisplayString(V.summary),1)],8,l4))),128))]),s.value?(e.openBlock(),e.createElementBlock("p",u4,e.toDisplayString(p.value),1)):(e.openBlock(),e.createElementBlock("div",c4,[F[1]||(F[1]=e.createElementVNode("p",{class:"keyframe-preset-panel__summary-title"},"Generated keyframes",-1)),e.createElementVNode("ul",m4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,V=>(e.openBlock(),e.createElementBlock("li",{key:V.definition.id,class:"keyframe-preset-panel__summary-row","data-testid":`keyframe-preset-summary-${V.definition.id}`},[e.createElementVNode("span",null,e.toDisplayString(V.definition.label),1),e.createElementVNode("span",null,e.toDisplayString(k(V.automation)),1)],8,p4))),128))]),c.value.length===0?(e.openBlock(),e.createElementBlock("p",f4," No generated keyframes until duration is valid. ")):e.createCommentVNode("",!0)]))],2))}}),Ic=Ie(v4,[["__scopeId","data-v-79615683"]]),h4={class:"mobile-clip-summary__main"},g4={class:"mobile-clip-summary__title","data-testid":"v2-mobile-clip-label"},b4={class:"mobile-clip-summary__stats","aria-label":"Selected clip timing"},y4={class:"mobile-clip-summary__stat"},w4={"data-testid":"v2-mobile-clip-start"},k4={class:"mobile-clip-summary__stat"},_4={"data-testid":"v2-mobile-clip-end"},E4={class:"mobile-clip-summary__stat"},S4={"data-testid":"v2-mobile-clip-duration"},x4={key:1,class:"mobile-clip-summary__empty","data-testid":"v2-mobile-no-clip"},C4=e.defineComponent({__name:"MobileClipSummary",props:{selectedClip:{}},emits:["open-actions"],setup(a,{emit:n}){const t=a,o=n,i=m=>m===void 0||!Number.isFinite(m)?null:m,r=e.computed(()=>{var m,p,f;return((p=(m=t.selectedClip)==null?void 0:m.label)==null?void 0:p.trim())||((f=t.selectedClip)==null?void 0:f.id)||""}),l=e.computed(()=>t.selectedClip?i(t.selectedClip.timelineStart)??i(t.selectedClip.startTime):null),s=e.computed(()=>t.selectedClip?i(t.selectedClip.timelineEnd)??i(t.selectedClip.endTime):null),d=e.computed(()=>{const m=l.value,p=s.value;return m!==null&&p!==null?Math.max(0,p-m):t.selectedClip?i(t.selectedClip.duration):null}),u=m=>{if(m===null)return"--";const p=Math.round(m*100)/100;return`${p.toFixed(p%1===0?0:2)}s`},c=()=>{t.selectedClip&&o("open-actions",t.selectedClip.id)};return(m,p)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["mobile-clip-summary",{"mobile-clip-summary--empty":!m.selectedClip}]),"data-testid":"v2-mobile-clip-summary","aria-live":"polite"},[m.selectedClip?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",h4,[p[0]||(p[0]=e.createElementVNode("p",{class:"mobile-clip-summary__eyebrow"},"Selected clip",-1)),e.createElementVNode("h2",g4,e.toDisplayString(r.value),1)]),e.createElementVNode("dl",b4,[e.createElementVNode("div",y4,[p[1]||(p[1]=e.createElementVNode("dt",null,"Start",-1)),e.createElementVNode("dd",w4,e.toDisplayString(u(l.value)),1)]),e.createElementVNode("div",k4,[p[2]||(p[2]=e.createElementVNode("dt",null,"End",-1)),e.createElementVNode("dd",_4,e.toDisplayString(u(s.value)),1)]),e.createElementVNode("div",E4,[p[3]||(p[3]=e.createElementVNode("dt",null,"Duration",-1)),e.createElementVNode("dd",S4,e.toDisplayString(u(d.value)),1)])]),e.createElementVNode("button",{type:"button",class:"mobile-clip-summary__actions","aria-label":"Open selected clip actions","data-testid":"v2-mobile-clip-actions",onClick:c}," Actions ")],64)):(e.openBlock(),e.createElementBlock("p",x4," No clip selected "))],2))}}),V4=Ie(C4,[["__scopeId","data-v-433c7812"]]),N4=["aria-label"],T4=["aria-pressed","data-testid","onClick"],B4={class:"mobile-tool-picker__label"},M4=e.defineComponent({__name:"MobileToolPicker",props:{modelValue:{},ariaLabel:{default:"Mobile editor tools"}},emits:["update:modelValue"],setup(a,{emit:n}){const t=[{id:"look",label:"Look"},{id:"trim",label:"Trim"},{id:"text",label:"Text"},{id:"audio",label:"Audio"},{id:"export",label:"Export"},{id:"more",label:"More"}],o=a,i=n,r=l=>{l!==o.modelValue&&i("update:modelValue",l)};return(l,s)=>(e.openBlock(),e.createElementBlock("div",{class:"mobile-tool-picker",role:"group","aria-label":l.ariaLabel,"data-testid":"v2-mobile-tool-picker"},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(t,d=>e.createElementVNode("button",{key:d.id,type:"button",class:e.normalizeClass(["mobile-tool-picker__button",{"is-active":l.modelValue===d.id}]),"aria-pressed":l.modelValue===d.id?"true":"false","data-testid":`v2-mobile-tool-${d.id}`,onClick:u=>r(d.id)},[e.createElementVNode("span",B4,e.toDisplayString(d.label),1)],10,T4)),64))],8,N4))}}),$4=Ie(M4,[["__scopeId","data-v-ec597c70"]]),I4=["aria-label","data-snap"],D4=["aria-expanded"],F4={class:"drawer-header"},A4={class:"drawer-body"},R4=e.defineComponent({__name:"VideoBottomDrawer",props:{initialSnap:{default:"half"},ariaLabel:{default:"Editor controls drawer"},containerHeight:{default:0}},emits:["snap-change"],setup(a,{expose:n,emit:t}){const o=["collapsed","half","full"],i=a,r=t,l=e.ref(null),s=e.ref(null),d=e.ref(i.initialSnap);let u=!1,c=!1,m=null,p=0,f=0,v=0;const h=I=>{const $=v||(typeof window<"u"?window.innerHeight:600);switch(I){case"collapsed":return 80;case"half":return Math.round($*.45);case"full":return Math.round($*.85)}},k=(I,{animate:$=!0}={})=>{var _;if(!l.value)return;const C=d.value;d.value=I;const M=typeof window<"u"&&((_=window.matchMedia)==null?void 0:_.call(window,"(prefers-reduced-motion: reduce)").matches);l.value.style.transition=$&&!M?"height 0.25s cubic-bezier(0.33, 1, 0.68, 1)":"none",l.value.style.height=`${h(I)}px`,I!==C&&r("snap-change",I,C)},E=I=>{let $=o[0],C=1/0;for(const M of o){const _=Math.abs(h(M)-I);_<C&&(C=_,$=M)}return $},w=()=>{const I=o.indexOf(d.value);k(o[(I+1)%o.length])},b=I=>{if(c){c=!1,I.preventDefault();return}w()},g=I=>{var $,C,M;if(I.button===0){u=!0,c=!1,m=I.pointerId,p=I.clientY,f=(($=l.value)==null?void 0:$.offsetHeight)??0;try{(M=(C=s.value)==null?void 0:C.setPointerCapture)==null||M.call(C,I.pointerId)}catch{}l.value&&(l.value.style.transition="none")}},D=I=>{if(!u||I.pointerId!==m)return;const $=I.clientY-p,C=f-$,M=h("collapsed"),_=h("full"),L=Math.max(M,Math.min(_,C));l.value&&(l.value.style.height=`${L}px`),Math.abs($)>4&&(c=!0),I.preventDefault()},T=I=>{var C,M,_;if(!u)return;u=!1;try{(M=(C=s.value)==null?void 0:C.releasePointerCapture)==null||M.call(C,I.pointerId)}catch{}m=null;const $=((_=l.value)==null?void 0:_.offsetHeight)??0;k(E($))},F=(I,$={})=>{o.includes(I)&&k(I,{animate:$.animate!==!1})},V=I=>{v=Math.max(0,Number(I)||0),k(d.value,{animate:!1})};return e.watch(()=>i.containerHeight,I=>{I>0&&V(I)}),e.onMounted(()=>{i.containerHeight>0&&(v=i.containerHeight),k(d.value,{animate:!1})}),e.onBeforeUnmount(()=>{u=!1,m=null}),n({snapTo:F,updateContainerHeight:V,snap:d}),(I,$)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootEl",ref:l,class:"video-editor-v2-drawer",role:"dialog","aria-label":I.ariaLabel,"data-snap":d.value,"data-testid":"v2-video-bottom-drawer"},[e.createElementVNode("button",{ref_key:"handleEl",ref:s,type:"button",class:"drawer-handle","aria-label":"Drag to resize editor drawer","aria-expanded":d.value==="full"?"true":"false","data-testid":"v2-video-drawer-handle",onClick:b,onPointerdown:g,onPointermove:D,onPointerup:T,onPointercancel:T},[...$[0]||($[0]=[e.createElementVNode("span",{class:"drawer-handle-grip","aria-hidden":"true"},null,-1)])],40,D4),e.createElementVNode("div",F4,[e.renderSlot(I.$slots,"header",{},void 0,!0)]),e.createElementVNode("div",A4,[e.renderSlot(I.$slots,"default",{},void 0,!0)])],8,I4))}}),L4=Ie(R4,[["__scopeId","data-v-4ebedbf7"]]),P4=new Set(["INPUT","TEXTAREA","SELECT"]);function U4(a){return a instanceof HTMLElement?!!(P4.has(a.tagName)||a.isContentEditable):!1}function O4(a,n={}){const t=o=>{var s,d,u,c,m,p,f,v,h,k,E,w,b,g,D,T,F;if(n.enabled&&n.enabled()===!1||U4(o.target))return;const i=o.ctrlKey||o.metaKey,r=o.shiftKey,l=o.key;if(i&&(l==="z"||l==="Z")){r?(s=a.redo)==null||s.call(a):(d=a.undo)==null||d.call(a),o.preventDefault();return}if(i&&(l==="s"||l==="S")){(u=a.save)==null||u.call(a),o.preventDefault();return}if(i&&(l==="e"||l==="E")){(c=a.exportNow)==null||c.call(a),o.preventDefault();return}switch(l){case" ":case"Spacebar":(m=a.playPause)==null||m.call(a),o.preventDefault();return;case"ArrowLeft":r?(p=a.secondBackward)==null||p.call(a):(f=a.frameBackward)==null||f.call(a),o.preventDefault();return;case"ArrowRight":r?(v=a.secondForward)==null||v.call(a):(h=a.frameForward)==null||h.call(a),o.preventDefault();return;case"Home":(k=a.skipToStart)==null||k.call(a),o.preventDefault();return;case"End":(E=a.skipToEnd)==null||E.call(a),o.preventDefault();return;case"[":(w=a.prevClip)==null||w.call(a),o.preventDefault();return;case"]":(b=a.nextClip)==null||b.call(a),o.preventDefault();return;case"s":case"S":i||((g=a.splitAtPlayhead)==null||g.call(a),o.preventDefault());return;case"Delete":case"Backspace":r?(D=a.rippleDeleteSelected)==null||D.call(a):(T=a.deleteSelected)==null||T.call(a),o.preventDefault();return;case"?":(F=a.showShortcutsOverlay)==null||F.call(a),o.preventDefault();return}};e.onMounted(()=>{window.addEventListener("keydown",t)}),e.onBeforeUnmount(()=>{window.removeEventListener("keydown",t)})}const mf=["video/mp4","video/webm","video/quicktime"],pf=["image/png","image/jpeg","image/jpg","image/webp"],z4=["audio/mpeg","audio/mp3","audio/aac","audio/wav","audio/x-wav","audio/wave"],j4=new Set([...mf,...pf,...z4]),W4=2*1024*1024*1024,Z4=60*60;function Dc(a,n){const t=a.type.toLowerCase();return j4.has(t)?a.size>W4?{ok:!1,reason:"oversize",message:`File is too large (${(a.size/(1024*1024*1024)).toFixed(2)} GiB). Limit is 2 GiB.`}:typeof n=="number"&&Number.isFinite(n)&&n>Z4?{ok:!1,reason:"duration_exceeded",message:`Clip is too long (${Math.round(n)}s). Limit is 1 hour.`}:{ok:!0,kind:mf.includes(t)?"video":pf.includes(t)?"image":"audio"}:{ok:!1,reason:"unsupported_mime",message:`Unsupported file type: ${t||"unknown"}.`}}const H4="mediables-asset-blobs",bn="blobs",G4=1;class X4{constructor(){this.dbPromise=null}openDb(){return this.dbPromise?this.dbPromise:(this.dbPromise=new Promise((n,t)=>{if(typeof indexedDB>"u"){t(new Error("IndexedDB is not available in this environment."));return}const o=indexedDB.open(H4,G4);o.onupgradeneeded=()=>{const i=o.result;i.objectStoreNames.contains(bn)||i.createObjectStore(bn)},o.onsuccess=()=>{n(o.result)},o.onerror=()=>{t(o.error??new Error("Failed to open IndexedDB."))}}),this.dbPromise)}async put(n,t){const o=await this.openDb();await new Promise((i,r)=>{const d=o.transaction(bn,"readwrite").objectStore(bn).put(t,n);d.onsuccess=()=>{i()},d.onerror=()=>{r(d.error??new Error("Failed to write blob."))}})}async get(n){const t=await this.openDb();return new Promise((o,i)=>{const s=t.transaction(bn,"readonly").objectStore(bn).get(n);s.onsuccess=()=>{const d=s.result;d==null?o(null):d instanceof Blob?o(d):o(null)},s.onerror=()=>{i(s.error??new Error("Failed to read blob."))}})}async delete(n){const t=await this.openDb();await new Promise((o,i)=>{const s=t.transaction(bn,"readwrite").objectStore(bn).delete(n);s.onsuccess=()=>{o()},s.onerror=()=>{i(s.error??new Error("Failed to delete blob."))}})}async clear(){const n=await this.openDb();await new Promise((t,o)=>{const l=n.transaction(bn,"readwrite").objectStore(bn).clear();l.onsuccess=()=>{t()},l.onerror=()=>{o(l.error??new Error("Failed to clear cache."))}})}}let vs=null;function K4(){return vs===null&&(vs=new X4),vs}class J4{constructor(){this.store=new Map}async put(n,t){this.store.set(n,t)}async get(n){return this.store.get(n)??null}async delete(n){this.store.delete(n)}async clear(){this.store.clear()}}function q4(){return`asset-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}async function Y4(a,n){if(n<=0)return{};if(typeof URL>"u"||typeof document>"u")return{};const t=URL.createObjectURL(a),o=async()=>a.type.startsWith("video/")?new Promise(i=>{const r=document.createElement("video");r.preload="metadata",r.src=t,r.onloadedmetadata=()=>{i({durationSeconds:r.duration,width:r.videoWidth,height:r.videoHeight})},r.onerror=()=>{i({})}}):a.type.startsWith("audio/")?new Promise(i=>{const r=document.createElement("audio");r.preload="metadata",r.src=t,r.onloadedmetadata=()=>{i({durationSeconds:r.duration})},r.onerror=()=>{i({})}}):a.type.startsWith("image/")?new Promise(i=>{const r=new Image;r.src=t,r.onload=()=>{i({width:r.naturalWidth,height:r.naturalHeight})},r.onerror=()=>{i({})}}):{};try{return await Promise.race([o(),new Promise(i=>{setTimeout(()=>i({}),n)})])}finally{URL.revokeObjectURL(t)}}function Q4(a){const n=e.reactive(new Map),t=a.blobCache??eB();async function o(c,m){try{await t.put(c,m)}catch{}}async function i(c){try{await t.delete(c)}catch{}}async function r(c,m,p){var f,v,h;try{m.status="uploading",m.uploadProgress=0,n.set(m.assetId,m);const k=await a.uploader.upload({file:c},({assetId:E,progress:w,status:b})=>{if(E!==m.assetId)return;const g=n.get(E);g&&(g.uploadProgress=w,g.status=b,n.set(E,g))});return n.set(m.assetId,k),k.status==="ready"?(i(m.assetId),(f=a.onReady)==null||f.call(a,k)):k.status==="failed"&&((v=a.onFailure)==null||v.call(a,k)),{ok:!0,record:k}}catch(k){const E=k instanceof Error?k.message:"Upload failed.",w={...m,status:"failed",failureMessage:E};return n.set(m.assetId,w),(h=a.onFailure)==null||h.call(a,w),{ok:!1,reason:"upload",message:E}}}const l=a.probeTimeoutMs??1500;async function s(c){const m=await Y4(c,l),p=Dc(c,m.durationSeconds);if(!p.ok)return{ok:!1,reason:"preflight",message:p.message};const f=q4(),v={assetId:f,filename:c.name,mime:c.type,sizeBytes:c.size,status:"local-selected"};return m.durationSeconds!==void 0&&(v.durationSeconds=m.durationSeconds),m.width!==void 0&&(v.width=m.width),m.height!==void 0&&(v.height=m.height),n.set(f,v),await o(f,c),r(c,v)}async function d(c){const m=n.get(c);if(!m)return{ok:!1,reason:"unknown",message:"Unknown asset."};const p=await t.get(c);if(!p)return{ok:!1,reason:"unknown",message:"Original file is no longer cached."};const f=p instanceof File?p:new File([p],m.filename,{type:m.mime}),v=Dc(f,m.durationSeconds);return v.ok?r(f,m):{ok:!1,reason:"preflight",message:v.message}}async function u(c){n.delete(c),await i(c)}return{records:e.readonly(n),importFile:s,retry:d,remove:u}}function eB(){return typeof indexedDB<"u"?K4():new J4}const tB={class:"v2-toolbar-group"},aB=["aria-label"],nB=["disabled"],oB={class:"v2-toolbar-group"},iB={class:"v2-toolbar-fit"},rB=["disabled"],lB=["aria-label","title","disabled"],sB={class:"v2-assets"},dB={key:0,class:"v2-asset-rail-status","data-testid":"v2-asset-rail-status",role:"status"},uB={class:"v2-preview-host"},cB={class:"v2-timeline-topbar"},mB={class:"v2-timeline-heading"},pB={class:"v2-timeline-meta","data-testid":"v2-timeline-meta"},fB={class:"v2-timeline-zoom"},vB=["value"],hB={class:"v2-timeline-zoom-readout"},gB={key:0,class:"v2-timeline-track-actions"},bB={key:0,class:"v2-timeline-track-target"},yB=["value"],wB=["value"],kB=["aria-pressed"],_B={key:0,class:"v2-editor-status","data-testid":"v2-editor-status",role:"status","aria-live":"polite"},EB={key:1,class:"v2-timeline-empty","data-testid":"v2-timeline-empty"},SB={key:1,class:"v2-empty-state"},xB={key:0,"data-testid":"v2-export-status-completed",class:"v2-export-status"},CB={key:1,class:"v2-export-status","data-testid":"v2-export-status-message"},VB={key:1,class:"v2-mobile-tool-panel","data-testid":"v2-mobile-panel-look"},NB={class:"v2-mobile-panel-section"},TB={class:"v2-mobile-panel-section v2-mobile-panel-section--compact"},BB={key:1,class:"v2-empty-state"},MB={key:2,class:"v2-mobile-tool-panel","data-testid":"v2-mobile-panel-trim"},$B={key:3,class:"v2-mobile-tool-panel","data-testid":"v2-mobile-panel-text"},IB={key:4,class:"v2-mobile-tool-panel","data-testid":"v2-mobile-panel-audio"},DB={key:5,class:"v2-mobile-tool-panel","data-testid":"v2-mobile-panel-export"},FB={key:0,class:"v2-export-status"},AB={key:1,class:"v2-export-status"},RB={key:6,class:"v2-mobile-tool-panel","data-testid":"v2-mobile-panel-more"},LB={class:"v2-mobile-secondary-controls"},PB={class:"v2-mobile-secondary-field"},UB=["aria-pressed"],OB=["disabled"],zB=["disabled"],jB={key:0,class:"v2-mobile-secondary-details","data-testid":"v2-mobile-transitions"},WB={class:"v2-mobile-secondary-details","data-testid":"v2-mobile-keyframes"},ZB={class:"v2-shortcuts-overlay__panel"},HB={class:"v2-shortcuts-overlay__header"},GB=e.defineComponent({__name:"VideoEditorV2",props:{mediaUuid:{},initialRecipe:{},media:{},showThumbnailPicker:{type:Boolean,default:!1},workflowMode:{default:"full"},featureFlags:{},clientExportThreshold:{default:20},maxDuration:{default:300},serverRenderEndpoint:{default:null},assetUploader:{default:null}},emits:["recipe-generated","export-started","draft-saved","video-exported","thumbnail-selected","server-render-started","server-render-progress","server-render-completed","server-render-failed","close"],setup(a,{expose:n,emit:t}){var go,bo,yo,wo;const o=a,i=t,r=e.computed(()=>{var te;const x=typeof o.mediaUuid=="string"?o.mediaUuid.trim():"";if(x!=="")return x;const P=(te=o.media)==null?void 0:te.uuid;return typeof P=="string"&&P.trim()!==""?P.trim():`temp-${Date.now()}`}),l=Ip(r.value,o.initialRecipe,o.media),s=Ap(),d=e.ref("filters"),u=e.ref("look"),c=e.ref(null),m=e.computed(()=>o.workflowMode==="uploader"?{filters:!0,adjustments:!0,text:!1,transitions:!1,audio:!1,export:!1}:{filters:!0,adjustments:!0,text:!0,transitions:!0,audio:!0,export:!0}),p=e.computed(()=>{const x=o.featureFlags??{},P=["filters","adjustments","text","transitions","audio","export"],te={filters:"Filters",adjustments:"Adjust",text:"Text",transitions:"Transitions",audio:"Audio",export:"Export"};return P.map(ye=>({id:ye,label:te[ye],enabled:typeof x[ye]=="boolean"?x[ye]:m.value[ye]}))}),f=x=>p.value.some(P=>P.id===x&&P.enabled),v={look:"filters",text:"text",audio:"audio",export:"export"},h=e.computed(()=>{var x;return((x=o.featureFlags)==null?void 0:x.transitions)===!0});e.watch(u,x=>{var P,te;if(x!=="trim"&&x!=="more"){const ye=v[x];f(ye)&&(d.value=ye)}(te=(P=c.value)==null?void 0:P.snapTo)==null||te.call(P,"full"),e.nextTick(()=>{var ze;if(typeof document>"u")return;const ye=document.querySelector(`[data-testid="v2-mobile-panel-${x}"]`);if(!ye||!(ye instanceof HTMLElement))return;const Oe=typeof window<"u"&&((ze=window.matchMedia)==null?void 0:ze.call(window,"(prefers-reduced-motion: reduce)").matches);ye.scrollIntoView({block:"start",behavior:Oe?"auto":"smooth"})})});const k=e.ref(!1),E=e.computed(()=>d.value),w=e.computed(()=>E.value==="filters"||k.value),b=e.computed(()=>E.value!=="filters"&&!k.value),g=e.ref(null),D=e.computed(()=>g.value),T=["contain","cover","none"],F=x=>typeof x=="string"&&T.includes(x),V=x=>{var te;const P=(te=x==null?void 0:x.metadata)==null?void 0:te.fit_mode;return F(P)?P:null},I=e.ref(V(o.initialRecipe)??"contain"),$=e.ref("");e.watch(()=>{var x,P;return{file:(x=o.media)==null?void 0:x.file,url:(P=o.media)==null?void 0:P.url}},(x,P,te)=>{var Oe,ze;const ye=$.value;te(()=>{ye&&ye.startsWith("blob:")&&URL.revokeObjectURL(ye)}),(Oe=o.media)!=null&&Oe.file?$.value=URL.createObjectURL(o.media.file):(ze=o.media)!=null&&ze.url?$.value=o.media.url:$.value=""},{immediate:!0});const C=e.computed(()=>$.value),M=e.computed(()=>s.activeFilters.value),_=e.computed(()=>l.playheadPosition.value),L=rp({forcePixiPreview:k,getPreviewRef:()=>D.value,getSourceUrl:()=>$.value,setPlaying:l.setPlaying}),j=e.computed(()=>{if(!o.media)return null;const{file:x,...P}=o.media;return{...P,url:$.value}}),B=e.computed(()=>{var P;const x=(P=o.media)==null?void 0:P.url;return!!(x&&/^https?:/i.test(x))}),U=e.ref(0),S=e.computed(()=>{var P;if(l.totalDuration.value>0)return l.totalDuration.value;if(U.value>0)return U.value;const x=Number((P=o.media)==null?void 0:P.duration);return Number.isFinite(x)&&x>0?x:0}),R=x=>{!Number.isFinite(x)||x<=0||(U.value=x,l.updateSourceDuration(x))},O=x=>{x&&typeof x.time=="number"&&Number.isFinite(x.time)&&l.seekTo(x.time)},K=x=>{Number.isFinite(x)&&l.seekTo(x)},se=x=>{l.setPlaying(x)},xe=e.computed(()=>s.videoCompatibleFilters.value.map(P=>{var ye;const te=[];if(P.controls&&P.controls.length>0)for(const Oe of P.controls){const ze=Oe.type;if(ze==="button"||ze==="text"||ze==="range")continue;const ut={id:Oe.property||Oe.id,label:Oe.label||Oe.id,type:ze,default:Oe.default??(ze==="toggle"?!1:ze==="color"?"#ffffff":0)};ze==="slider"&&(ut.min=Oe.min??0,ut.max=Oe.max??1,ut.step=Oe.step??.01),ze==="select"&&Oe.options&&(ut.options=Oe.options),te.push(ut)}else if(P.paramRanges){const Oe=Object.entries(P.paramRanges);for(const[ze,ut]of Oe){const Tt=ze.replace(/[-_]/g," ").replace(/\b\w/g,Ca=>Ca.toUpperCase()),Kt=(ye=P.defaultParams)==null?void 0:ye[ze],sa=(ut.min+ut.max)/2;te.push({id:ze,label:Tt,min:ut.min,max:ut.max,step:ut.step??.01,default:typeof Kt=="number"?Kt:sa})}}return{id:P.id,name:P.name,category:P.category,params:te}})),ue=e.computed(()=>{const x=new Map;return s.activeFilters.value.forEach(P=>x.set(P.filterId,P)),x}),le=e.computed(()=>{if(l.currentFrame.value)return l.currentFrame.value;const x=o.media;return(x==null?void 0:x.thumbnail_url)??(x==null?void 0:x.url)}),H=e.shallowRef(null),y=e.ref(null),A=e.ref(null),W=e.ref(null),q=e.ref(!1),de=new Map,Pe=(x,P)=>{const te={id:x.id??`text-overlay-recipe-${P}`,text:x.content};return x.fontFamily!==void 0&&(te.fontFamily=x.fontFamily),x.fontSize!==void 0&&(te.fontSize=x.fontSize),x.fontWeight!==void 0&&(te.fontWeight=x.fontWeight),x.color!==void 0&&(te.color=x.color),x.position!==void 0&&(te.position=x.position),x.startTime!==void 0&&(te.startTime=x.startTime),x.duration!==void 0&&(te.duration=x.duration),x.animation!==void 0&&(te.animation=x.animation),x.textAlign!==void 0&&(te.textAlign=x.textAlign),x.textBaseline!==void 0&&(te.textBaseline=x.textBaseline),te},ge=x=>{const P={id:x.id,content:x.text};return x.fontFamily!==void 0&&(P.fontFamily=x.fontFamily),x.fontSize!==void 0&&(P.fontSize=x.fontSize),x.fontWeight!==void 0&&(P.fontWeight=x.fontWeight),x.color!==void 0&&(P.color=x.color),x.position!==void 0&&(P.position=x.position),x.startTime!==void 0&&(P.startTime=x.startTime),x.duration!==void 0&&(P.duration=x.duration),x.animation!==void 0&&(P.animation=x.animation),x.textAlign!==void 0&&(P.textAlign=x.textAlign),x.textBaseline!==void 0&&(P.textBaseline=x.textBaseline),P},ke=(x,P)=>{const te={id:x.id??`audio-track-recipe-${P}`,source:x.source};return x.volume!==void 0&&(te.volume=x.volume),x.startTime!==void 0&&(te.startTime=x.startTime),x.duration!==void 0&&(te.duration=x.duration),x.fadeIn!==void 0&&(te.fadeIn=x.fadeIn),x.fadeOut!==void 0&&(te.fadeOut=x.fadeOut),x.loop!==void 0&&(te.loop=x.loop),x.name!==void 0&&(te.name=x.name),te},be=x=>{if(typeof x.source!="string")return null;const P={id:x.id,source:x.source};return x.volume!==void 0&&(P.volume=x.volume),x.startTime!==void 0&&(P.startTime=x.startTime),x.duration!==void 0&&(P.duration=x.duration),x.fadeIn!==void 0&&(P.fadeIn=x.fadeIn),x.fadeOut!==void 0&&(P.fadeOut=x.fadeOut),x.loop!==void 0&&(P.loop=x.loop),x.name!==void 0&&(P.name=x.name),P},Ce=x=>{const P={id:x.id,source:typeof x.source=="string"?x.source:""};return x.volume!==void 0&&(P.volume=x.volume),x.startTime!==void 0&&(P.startTime=x.startTime),x.duration!==void 0&&(P.duration=x.duration),x.fadeIn!==void 0&&(P.fadeIn=x.fadeIn),x.fadeOut!==void 0&&(P.fadeOut=x.fadeOut),x.loop!==void 0&&(P.loop=x.loop),x.name!==void 0&&(P.name=x.name),x.muted!==void 0&&(P.muted=x.muted),x.solo!==void 0&&(P.solo=x.solo),x.pan!==void 0&&(P.pan=x.pan),x.faderDb!==void 0&&(P.faderDb=x.faderDb),P},Ee=x=>({...x,segments:x.segments.map(P=>{const te={...P};return P.words&&(te.words=P.words.map(ye=>({...ye}))),te})}),Ae=e.ref((((go=o.initialRecipe)==null?void 0:go.textOverlays)??[]).map(Pe)),Ue=x=>{switch(x){case"crossfade":return"cross-fade";case"zoom":return"zoom-in";case"cut":return"fade";default:return x}},ot=x=>{switch(x){case"ease-in":return"easeIn";case"ease-out":return"easeOut";case"ease-in-out":return"easeInOut";case"linear":return"linear"}},it=x=>{switch(x){case"cross-fade":case"dissolve":return"crossfade";case"zoom-in":case"zoom-out":return"zoom";case"dip-to-white":return"fade";case"wipe-up":case"wipe-down":return"wipe-left";case"slide-up":case"slide-down":return"slide-left";default:return x}},Lt=x=>{switch(x){case"easeIn":return"ease-in";case"easeOut":return"ease-out";case"easeInOut":return"ease-in-out";case"linear":default:return"linear"}},gt=x=>({id:x.id,type:Ue(x.type),duration:x.duration,easing:ot(x.easing),name:x.type,fromClipId:x.fromClipId,toClipId:x.toClipId,cutTime:x.cutTime??0}),St=x=>({id:x.id,type:it(x.type),fromClipId:x.fromClipId,toClipId:x.toClipId,duration:x.duration,easing:Lt(x.easing),cutTime:x.cutTime}),ct=e.ref((((bo=o.initialRecipe)==null?void 0:bo.transitions)??[]).map(gt)),mt=e.ref((((yo=o.initialRecipe)==null?void 0:yo.audioTracks)??[]).map(ke)),Ct=e.ref(1),Se=e.ref(!1),Ve=e.ref((((wo=o.initialRecipe)==null?void 0:wo.captionTracks)??[]).map(Ee)),Re=e.ref([]),at=e.ref(null),He=e.computed(()=>r.value),Je=e.computed(()=>Re.value),kt=e.computed(()=>Ve.value[0]??null),ft=e.computed(()=>{const x=l.selectedClip.value??l.timelineClips.value[0];return x?Math.max(0,x.timelineEnd-x.timelineStart):S.value}),jt=e.computed(()=>UE(mt.value.map(Ce),{master:{volume:Ct.value,muted:Se.value}})),Le=e.computed(()=>{const x=[...l.timelineClips.value].sort((ut,Tt)=>ut.timelineStart-Tt.timelineStart),P=l.selectedClip.value??x[0];if(!P)return[];const te=x.findIndex(ut=>ut.id===P.id);if(te===-1)return[];const ye=ut=>(ut.trackId??null)===(P.trackId??null),Oe=x.slice(te+1).find(ye);if(Oe)return[P,Oe];const ze=[...x.slice(0,te)].reverse().find(ye);return ze?[ze,P]:[]}),Wt=x=>{H.value=x,x!=null&&x.composition&&(A.value=new Rp(x.composition),W.value=new Lp(x.composition));try{de.size&&H.value&&(de.forEach((P,te)=>{H.value.setClipFilters(te,P)}),de.clear(),H.value.composition.computeFrame())}catch{}},Zt=x=>{H.value?H.value.setClipFilters(x,s.activeFilters.value):de.set(x,[...s.activeFilters.value])},Mt=x=>{var te,ye;const P=((te=l.selectedClip.value)==null?void 0:te.id)??((ye=l.timelineClips.value[0])==null?void 0:ye.id);P&&(q.value=!0,typeof x=="object"&&x!==null&&"id"in x?s.applyFilter(x.id):typeof x=="string"&&s.applyFilter(x),l.setFilters(s.activeFilters.value),Zt(P),l.handleClipSelect(P),q.value=!1,Ke())},Pt=x=>{var ye,Oe;const P=s.activeFilters.value.find(ze=>ze.filterId===x);P&&s.removeFilter(P.id),l.setFilters(s.activeFilters.value);const te=((ye=l.selectedClip.value)==null?void 0:ye.id)??((Oe=l.timelineClips.value[0])==null?void 0:Oe.id);te&&Zt(te),Ke()},Ht=(x,P,te)=>{var ze,ut;const ye=s.activeFilters.value.find(Tt=>Tt.filterId===x);if(ye){ye.params={...ye.params??{},[P]:te},l.setFilters(s.activeFilters.value);const Tt=((ze=l.selectedClip.value)==null?void 0:ze.id)??((ut=l.timelineClips.value[0])==null?void 0:ut.id);Tt&&Zt(Tt),Ke();return}const Oe=s.previewFilter.value;Oe&&Oe.filterId===x&&(Oe.params={...Oe.params??{},[P]:te})},ra=x=>{x&&typeof x.id=="string"&&x.id!==""&&s.previewFilterEffect(x.id)},ae=x=>{s.updateFilterParams(x),l.setFilters(s.activeFilters.value),Ke()},he=async x=>{if(!A.value)return;const P=await A.value.addTextOverlay(x);Ae.value.push({id:P,...x})},me=async(x,P)=>{if(!A.value)return;await A.value.updateTextOverlay(x,P);const te=Ae.value.findIndex(ye=>ye.id===x);te!==-1&&(Ae.value[te]={...Ae.value[te],...P})},ce=async x=>{A.value&&(await A.value.removeTextOverlay(x),Ae.value=Ae.value.filter(P=>P.id!==x))},Te=async x=>{const[P,te]=Le.value;if(!P||!te)return;const ye={id:`transition-${P.id}-${te.id}-${Date.now()}`,...x,name:x.type,fromClipId:P.id,toClipId:te.id,cutTime:P.timelineEnd};ct.value.push(ye),l.setTransitions(ct.value.map(St)),Ke()},We=x=>{ct.value[x]&&(ct.value.splice(x,1),l.setTransitions(ct.value.map(St)),Ke())},rt=x=>{},Vt=async x=>{if(!W.value)return;const P=await W.value.addAudioTrack(x);mt.value.push({id:P,...x});const te=typeof x.source=="string"?x.source:x.source instanceof File?URL.createObjectURL(x.source):null;if(!te)return;const ye={id:`audio-source-${P}`,type:"url",url:te,duration:typeof x.duration=="number"&&x.duration>0?x.duration:0,width:0,height:0};typeof x.name=="string"&&(ye.filename=x.name),l.registerMediaSource(ye);const Oe=l.appendAudioSourceToTimeline(ye.id);if(!Oe.ok){nt.value=Oe.message;return}nt.value=`Audio added to ${Oe.value.trackId??"timeline"}.`,Ke()},Ut=async(x,P)=>{if(!W.value)return;await W.value.updateAudioTrack(x,P);const te=mt.value.findIndex(ye=>ye.id===x);te!==-1&&(mt.value[te]={...mt.value[te],...P})},$t=async x=>{W.value&&(await W.value.removeAudioTrack(x),mt.value=mt.value.filter(P=>P.id!==x))},lt=async(x,P)=>{if(!W.value)return;await W.value.updateVolume(x,P);const te=mt.value.find(ye=>ye.id===x);te&&(te.volume=P)},Jt=async(x,P)=>{if(!W.value)return;await W.value.muteTrack(x,P);const te=mt.value.find(ye=>ye.id===x);te&&(te.muted=P)},J=x=>{W.value&&(W.value.setMasterVolume(x),Ct.value=x)},we=(x,P)=>{const te=mt.value.findIndex(Oe=>Oe.id===x);if(te===-1)return null;const ye={...mt.value[te],...P};return mt.value[te]=ye,ye},oe=x=>{switch(x.type){case"track-fader-db":{const P=ed(x.valueDb);we(x.trackId,{faderDb:x.valueDb,volume:P}),W.value&&W.value.updateVolume(x.trackId,P);break}case"track-mute":we(x.trackId,{muted:x.muted}),W.value&&W.value.muteTrack(x.trackId,x.muted);break;case"track-solo":we(x.trackId,{solo:x.solo});break;case"track-pan":we(x.trackId,{pan:x.pan});break;case"master-fader-db":{Ct.value=ed(x.valueDb),W.value&&W.value.setMasterVolume(Se.value?0:Ct.value);break}case"master-mute":Se.value=x.muted,W.value&&W.value.setMasterVolume(Se.value?0:Ct.value);break}},$e=x=>{Ve.value=[Ee(x.track)],l.setCaptionTracks(Ve.value),Ke()},Ft=x=>{Ve.value=[Ee(x)],l.setCaptionTracks(Ve.value),Ke()},Ot=()=>{Ve.value=[],l.setCaptionTracks([]),Ke()},It=x=>{const P=l.selectedClip.value??l.timelineClips.value[0];if(!P)return;const ye=[...(P.keyframes??[]).filter(Oe=>Oe.target!==x.target),...x.keyframes].sort((Oe,ze)=>{const ut=Oe.time-ze.time;return ut===0?Oe.id.localeCompare(ze.id):ut});l.setClipKeyframes(P.id,ye),Ke()},yt=x=>{var P;return x.metadata||(x.metadata={created_at:new Date().toISOString(),editor_version:"2.0.0"}),x.metadata.fit_mode=I.value,(P=o.media)!=null&&P.url&&/^https?:/i.test(o.media.url)?x.metadata.source_url=o.media.url:delete x.metadata.source_url,x.captionTracks=Ve.value.map(Ee),x},bt=(x,P)=>P?{...x,output:{...x.output,format:P.format,quality:P.quality,codec:P.codec??x.output.codec,fps:P.fps??x.output.fps,...typeof P.bitrate=="number"?{bitrate:P.bitrate}:{}}}:x,qt=x=>x.map(P=>({...P,params:P.params&&typeof P.params=="object"?{...P.params}:P.params})),_t=x=>x.timeline.some(P=>Array.isArray(P.filters)&&P.filters.length>0),Xt=x=>{const P=qt(s.activeFilters.value);if(!_t(x)&&P.length>0&&x.timeline.length>0){const ye=x.timeline[0];ye&&(x.timeline=[{...ye,filters:P},...x.timeline.slice(1)])}return x},Sa=()=>{const x=Xt(yt(l.saveDraft()));try{localStorage.setItem(`video-draft-${r.value}`,JSON.stringify(x))}catch{}return pe(x,"manual",!0),x},X=()=>typeof localStorage>"u"?null:{getItem:x=>localStorage.getItem(x),setItem:(x,P)=>{localStorage.setItem(x,P)},removeItem:x=>{localStorage.removeItem(x)},listKeys:x=>{const P=[];for(let te=0;te<localStorage.length;te+=1){const ye=localStorage.key(te);ye!=null&&ye.startsWith(x)&&P.push(ye)}return P}},Y=async()=>{const x=X();if(x===null){Re.value=[];return}Re.value=await oc(x)},pe=async(x,P,te)=>{var sa,Ca;const ye=X();if(ye===null)return;const Oe=new Date().toISOString(),ze={projectId:He.value,sourceMediaUuid:r.value,durationSeconds:S.value,editorVersion:((sa=x.metadata)==null?void 0:sa.editor_version)??"2.0.0",saveReason:P,now:Oe};((Ca=x.metadata)==null?void 0:Ca.title)!==void 0&&(ze.title=x.metadata.title);const ut=fE(lp(x),ze);await _E(ye,ut);const Tt=await oc(ye),Kt=bE(Tt,{maxCount:5,projectId:He.value,now:Oe});await ic(ye,Kt.removed),Re.value=[...Kt.retained],te&&(at.value=Oe)},fe=x=>x.snapshot.metadata.payloadKind==="project"?dE(x.snapshot.payload):x.snapshot.payload,Ne=x=>{const P=fe(x);l.loadRecipe(P),Ae.value=(P.textOverlays??[]).map(Pe),mt.value=(P.audioTracks??[]).map(ke),Ve.value=(P.captionTracks??[]).map(Ee),ct.value=(P.transitions??[]).map(gt);const te=V(P);te!==null&&(I.value=te),dt()},Xe=x=>{const P=X();Re.value=Re.value.filter(te=>!x.some(ye=>ye.key===te.key)),P!==null&&ic(P,x)},dt=()=>{y.value=yt(l.generateRecipe())};let et=null;const Ke=()=>{et&&clearTimeout(et),et=setTimeout(()=>{dt(),et=null},200)};if(e.watch(()=>l.timelineClips.value,Ke,{deep:!0}),e.watch(()=>l.selectedClip.value,x=>{if(q.value||!x)return;const P=(x==null?void 0:x.filters)??[];s.setActiveFilters(P)},{immediate:!0}),e.watch(()=>s.activeFilters.value,x=>{l.setFilters(x),Ke()},{deep:!0}),e.watch(()=>Ae.value,x=>{l.setTextOverlays(x.map(ge)),Ke()},{deep:!0}),e.watch(()=>mt.value,x=>{const P=x.map(be).filter(te=>te!==null);l.setAudioTracks(P),Ke()},{deep:!0}),e.watch(()=>Ve.value,x=>{l.setCaptionTracks(x.map(Ee)),Ke()},{deep:!0}),Ae.value.length>0&&l.setTextOverlays(Ae.value.map(ge)),mt.value.length>0){const x=mt.value.map(be).filter(P=>P!==null);l.setAudioTracks(x)}Ve.value.length>0&&l.setCaptionTracks(Ve.value.map(Ee)),e.watch(()=>l.playheadPosition.value,Ke),dt();const vt=e.ref(!0),ht=e.ref(null),nt=e.ref(null);let Yt=null;e.watch(nt,x=>{Yt!==null&&(clearTimeout(Yt),Yt=null),!(x===null||x==="")&&(Yt=setTimeout(()=>{nt.value=null},4e3))});const At=e.ref(null),Ha=e.computed(()=>l.tracks.value),pa=e.computed(()=>l.mediaSources.value),Vn=e.computed(()=>{var x,P;return((x=l.selectedClip.value)==null?void 0:x.sourceRefId)??((P=pa.value[0])==null?void 0:P.id)}),Ta=e.computed(()=>Ha.value.filter(x=>x.locked!==!0&&x.type==="video")),xa=e.computed(()=>At.value?Ha.value.find(x=>x.id===At.value)??null:null),Aa=e.computed(()=>!!l.selectedClip.value&&l.playheadPosition.value>0),fa=e.computed(()=>!!l.selectedClip.value),tn=e.computed(()=>l.timelineClips.value.length>0&&l.hasChanges.value),jn=e.computed(()=>l.selectedClip.value??l.timelineClips.value[0]??null),Ga=x=>{const P=Number.isFinite(x)&&x>0?Math.round(x):0,te=Math.floor(P/60),ye=P%60;return`${te}:${ye.toString().padStart(2,"0")}`},Wn=e.computed(()=>{const x=l.timelineClips.value.length,P=Ha.value.length,te=x===1?"1 clip":`${x} clips`,ye=P===1?"1 track":`${P} tracks`;return`${te} / ${ye} / ${Ga(S.value)}`});e.watch(()=>Ha.value.map(x=>`${x.id}:${x.locked===!0?"locked":"open"}`).join("|"),()=>{var x;At.value&&Ta.value.some(P=>P.id===At.value)||(At.value=((x=Ta.value[0])==null?void 0:x.id)??null)},{immediate:!0}),e.watch(()=>{var x;return(x=l.selectedClip.value)==null?void 0:x.trackId},x=>{x&&Ta.value.some(P=>P.id===x)&&(At.value=x)},{immediate:!0});const va=x=>{const P=pa.value.find(te=>te.id===x);return P?P.filename??P.mediaUuid??P.url??P.id:"Asset"},Ra=o.assetUploader?Q4({uploader:o.assetUploader,onReady:x=>{if(!x.mediaUrl&&!x.mediaUuid)return;const P={id:`imported-${x.assetId}`,type:x.mediaUuid?"media":"url",filename:x.filename,mimeType:x.mime,duration:x.durationSeconds??0,width:x.width??0,height:x.height??0};x.mediaUuid!==void 0&&(P.mediaUuid=x.mediaUuid),x.mediaUrl!==void 0&&(P.url=x.mediaUrl),l.registerMediaSource(P),nt.value=`${x.filename} ready.`},onFailure:x=>{nt.value=x.failureMessage??`Upload of ${x.filename} failed.`}}):null,Ho=async x=>{if(!Ra){nt.value="Asset import is not configured for this editor host.";return}for(const P of x){const te=await Ra.importFile(P);te.ok||(nt.value=te.message)}},uo=x=>{var Oe;const P=l.appendMediaSourceToTimeline(x,At.value);if(!P.ok){ht.value=P.message;return}const te=P.value;te.trackId&&(At.value=te.trackId),l.handleClipSelect(te.id);const ye=((Oe=xa.value)==null?void 0:Oe.name)??"timeline";ht.value=`${va(x)} added to ${ye}.`,Ke()},hi=x=>{if(!l.replaceSelectedClipSource(x)){ht.value="Select a clip before replacing its source.";return}ht.value=`${va(x)} replaced the selected clip.`,Ke()},gi=x=>{const P=va(x);if(!l.removeMediaSource(x)){ht.value="Remove timeline clips before deleting this asset.";return}ht.value=`${P} removed.`,Ke()},Nn=(x="video")=>{const P=l.addTimelineTrack(x);At.value=P.id,ht.value=`${P.name} added. New assets will be placed on that track.`,Ke()},ha=x=>{const P=x.target;P&&(At.value=P.value||null)},un=x=>{var te;l.handleClipSelect(x);const P=(te=l.selectedClip.value)==null?void 0:te.trackId;P&&Ta.value.some(ye=>ye.id===P)&&(At.value=P)},co=(x,P,te)=>{const ye=l.moveClip(x,P,te);if(!ye.ok){nt.value=ye.message;return}Ke()},Zn=x=>{const P=l.deleteClip(x);if(!P.ok){nt.value=P.message;return}nt.value="Clip deleted.",Ke()},an=(x,P)=>{P(x)&&Ke()},Hn=(x,P)=>{const te=l.renameTimelineTrack(x,P);if(!te.ok){nt.value=te.message;return}nt.value=`Track renamed to "${P}".`,Ke()},Xa=x=>{const P=l.deleteTimelineTrack(x);if(!P.ok){nt.value=P.message;return}At.value===x&&(At.value=null),nt.value="Track deleted.",Ke()},la=(x,P)=>{const te=l.reorderTimelineTrack(x,P);if(!te.ok){nt.value=te.message;return}nt.value=`Track moved ${P}.`,Ke()},Ba=x=>{vt.value=x},nn=()=>{vt.value=!vt.value},mo=x=>{const P=x.target;if(!P)return;const te=Number(P.value);Number.isFinite(te)&&l.setZoomLevel(te)},Z=e.ref(!1),Q=e.ref(0),De=e.ref(!1),ne=e.ref(null),Ye=e.ref(null),Nt=e.ref("preparing");let cn=null,La=!1;const Gn={preparing:"Preparing export...",rendering:"Rendering frames...","encoding-video":"Encoding video...","encoding-audio":"Encoding audio...",muxing:"Muxing output...",storing:"Storing export...",complete:"Export complete"},Tn=x=>typeof x=="string"&&x in Gn,Pa=(x,P)=>{Nt.value=x,ne.value=typeof P=="string"&&P.trim()!==""?P.trim():Gn[x]},ga=(x,P,te)=>{const ye=Number.isFinite(x)?Math.max(0,Math.min(100,x)):0;Q.value=ye,P&&Pa(P,te)},Xn=x=>{if(Tn(x.phase))return x.phase;switch(x.status){case"pending":return"preparing";case"processing":return"rendering";case"completed":return"complete";default:return Nt.value}},po=x=>typeof x.progress_message=="string"&&x.progress_message.trim()!==""?x.progress_message.trim():void 0,mn=(x,P,te={allowClient:!0})=>{if(!Number.isFinite(P)||P<=0||x.timeline.length===0)return{route:"unsupported",exportDuration:P,message:"Export unavailable: the recipe has no renderable duration."};if(o.maxDuration>0&&P>o.maxDuration)return{route:"unsupported",exportDuration:P,message:`Export unavailable: duration exceeds the ${o.maxDuration}s limit.`};if(te.allowClient&&o.clientExportThreshold>0&&P<=o.clientExportThreshold)return{route:"client",exportDuration:P};const Oe=!!o.serverRenderEndpoint,ze=r.value.startsWith("temp-");return Oe&&!ze?{route:"server-render",exportDuration:P}:{route:"recipe-download",exportDuration:P,message:ze?"Local media — downloaded recipe.json. Client-side PIXI export is unavailable on this device.":"No server render endpoint configured — downloaded recipe.json."}},Bn=()=>new Pl(o.serverRenderEndpoint??"/api/v1"),Ua=()=>{cn!==null&&(clearInterval(cn),cn=null)},fo=x=>{Ua();const P=Bn();cn=setInterval(async()=>{if(La){Ua();return}try{const te=await P.getJob(x),ye=Number(te.progress??0);if(ga(ye,Xn(te),po(te)),i("server-render-progress",Q.value),te.status==="completed"||te.status==="failed"||te.status==="cancelled")if(Ua(),Z.value=!1,Ye.value=null,te.status==="completed"){ga(100,"complete"),De.value=!0,ne.value=null;const Oe=typeof te.output_media_id=="string"?te.output_media_id:void 0,ze={id:x};Oe!==void 0&&(ze.output_media_id=Oe),i("server-render-completed",ze)}else{const Oe=te.status==="cancelled"||typeof te.error_message=="string"&&/cancel/i.test(te.error_message),ze=Oe?"Export canceled.":typeof te.error_message=="string"&&te.error_message.trim()!==""?te.error_message:"Export failed";ne.value=ze,Oe||i("server-render-failed",ze)}}catch(te){Ua(),Z.value=!1,Ye.value=null;const ye=te instanceof Error?te.message:"Failed to check export progress";ne.value=ye,i("server-render-failed",ye)}},2e3)},Mn=x=>{const P=new Blob([JSON.stringify(x,null,2)],{type:"application/json"}),te=URL.createObjectURL(P),ye=document.createElement("a");ye.href=te,ye.download=`video-recipe-${Date.now()}.json`,ye.click(),setTimeout(()=>URL.revokeObjectURL(te),100)},$n=()=>{Ua(),La=!1,L.resetClientExport(),Ye.value=null,ne.value=null,De.value=!1,Q.value=0,Nt.value="preparing"},on=async x=>{ga(0,"preparing");const te=await Bn().createRenderJob({source_media_uuid:r.value,recipe:x}),ye=typeof te.id=="string"?te.id:null;if(!ye)throw new Error("Export failed: missing job id");Ye.value=ye,i("export-started",ye),i("server-render-started",ye),ga(1,"rendering"),fo(ye)},Kn=async(x,P)=>{if(!await L.canExportClientSide())return null;const te=await L.renderRecipeWithPixi(x,P,ye=>{La||ga(ye,"rendering")});return La?(ne.value="Export canceled.",ga(0),i("video-exported",null),null):(l.clearHasChanges(),i("recipe-generated",x),i("video-exported",te),ga(100,"complete"),De.value=!0,te)},pn=async x=>{$n(),Z.value=!0,Pa("preparing");try{const P=yt(Xt(bt(l.generateRecipe(),x)));pe(P,"before-export",!1),i("recipe-generated",P);const te=nc(P,S.value),ye=mn(P,te);if(ye.route==="unsupported"){Z.value=!1,ne.value=ye.message??"Export unavailable.",i("server-render-failed",ne.value);return}if(ye.route==="client"){const ze=await Kn(P,x);if(ze!==null){const ut=URL.createObjectURL(ze.file),Tt=document.createElement("a");Tt.href=ut,Tt.download=`edited-video-${Date.now()}.mp4`,Tt.click(),setTimeout(()=>URL.revokeObjectURL(ut),100),Z.value=!1;return}}const Oe=ye.route==="client"?mn(P,te,{allowClient:!1}):ye;if(Oe.route==="unsupported"){Z.value=!1,ne.value=Oe.message??"Export unavailable.",i("server-render-failed",ne.value);return}if(Oe.route==="recipe-download"){Mn(P),Z.value=!1,ga(100,"complete"),De.value=!0,ne.value=Oe.message??"Downloaded recipe.json.";return}await on(P)}catch(P){const te=yt(l.generateRecipe());Mn(te);const ye=P instanceof Error?P.message:"Export failed";Z.value=!1,ga(0),Ye.value=null,ne.value=ye,i("server-render-failed",ye)}},In=async()=>{La=!0,k.value=!1,L.cancelClientExport();const x=Ye.value;if(Ua(),Z.value=!1,ga(0),ne.value="Export canceled.",Ye.value=null,x&&o.serverRenderEndpoint)try{await Bn().cancelJob(x)}catch{}},fn=()=>{l.togglePlayback()},Dn=()=>{l.resetChanges()},rn=()=>{const x=Sa();i("draft-saved",x)},vo=()=>{pn()},Jn=()=>{i("close")};n({saveDraft:async()=>{const x=Sa();return i("draft-saved",x),x},exportForUpload:async x=>{$n();const P=yt(x??l.generateRecipe()),te=Xt(P),ye=Array.isArray(te.filters)&&te.filters.length>0,Oe=_t(te);if(!(l.hasChanges.value||ye||Oe))return l.clearHasChanges(),i("video-exported",null),null;const ut=nc(te,S.value),Tt=mn(te,ut);if(Tt.route==="unsupported"){const Kt=Tt.message??"Export unavailable.";throw ne.value=Kt,new Error(`Video export failed: ${Kt}`)}if(Tt.route==="server-render")return Z.value=!0,await on(te),null;Z.value=!0;try{if(Tt.route==="client"){const sa=await Kn(te);if(sa!==null)return sa}const Kt=Tt.route==="client"?mn(te,ut,{allowClient:!1}):Tt;if(Kt.route==="server-render")return await on(te),null;if(Kt.route==="unsupported"){const sa=Kt.message??"Export unavailable.";throw ne.value=sa,new Error(`Video export failed: ${sa}`)}return ne.value=Kt.message??"Export unavailable for upload.",i("video-exported",null),null}catch(Kt){if(La)return ne.value="Export canceled.",ga(0),i("video-exported",null),null;const sa=Kt instanceof Error?Kt.message:"Local WebGL export failed.";throw ne.value=sa,new Error(`Video export failed: ${sa}`)}finally{Z.value=!1}}});const Fn=e.ref(!1),qn=x=>{var ze,ut;const P=[...l.timelineClips.value].sort((Tt,Kt)=>Tt.timelineStart-Kt.timelineStart);if(P.length===0)return;const te=l.selectedClip.value;if(!te){l.handleClipSelect(((ze=P[0])==null?void 0:ze.id)??null);return}const ye=P.findIndex(Tt=>Tt.id===te.id);if(ye===-1){l.handleClipSelect(((ut=P[0])==null?void 0:ut.id)??null);return}const Oe=x==="next"?P[Math.min(ye+1,P.length-1)]:P[Math.max(ye-1,0)];Oe&&l.handleClipSelect(Oe.id)},Yn=()=>{l.seekTo(Math.min(l.totalDuration.value,l.playheadPosition.value+1))},ho=()=>{l.seekTo(Math.max(0,l.playheadPosition.value-1))};return O4({playPause:fn,frameForward:l.frameForward,frameBackward:l.frameBackward,secondForward:Yn,secondBackward:ho,skipToStart:l.skipToStart,skipToEnd:l.skipToEnd,prevClip:()=>qn("prev"),nextClip:()=>qn("next"),splitAtPlayhead:l.splitAtPlayhead,deleteSelected:()=>{const x=l.deleteSelectedClip();x.ok?nt.value="Clip deleted.":nt.value=x.message},rippleDeleteSelected:()=>{l.rippleDeleteSelectedClip()?nt.value="Clip removed and gap closed.":nt.value="Nothing to ripple-delete."},undo:l.undo,redo:l.redo,save:rn,exportNow:()=>{if(l.timelineClips.value.length===0){nt.value="Add media to export.";return}vo()},showShortcutsOverlay:()=>{Fn.value=!0}}),e.onMounted(()=>{document.documentElement.setAttribute("data-video-editor-version","v2"),Y()}),e.onBeforeUnmount(()=>{document.documentElement.getAttribute("data-video-editor-version")==="v2"&&document.documentElement.removeAttribute("data-video-editor-version")}),e.onUnmounted(()=>{Ua(),La=!0,L.cancelClientExport(),et&&(clearTimeout(et),et=null),H.value&&(H.value.destroy(),H.value=null),A.value=null,W.value=null}),(x,P)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(sN,{"data-testid":"video-editor-v2"},{toolbar:e.withCtx(()=>[e.createElementVNode("div",tB,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["v2-toolbar-btn",{"is-active":e.unref(l).isPlaying.value}]),"data-testid":"v2-btn-play","aria-label":e.unref(l).isPlaying.value?"Pause":"Play",onClick:fn},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(l).isPlaying.value?e.unref(hd):e.unref(gd),"aria-hidden":"true"},null,8,["icon"])],10,aB),e.createElementVNode("button",{type:"button",class:"v2-toolbar-btn","data-testid":"v2-btn-reset","aria-label":"Reset all changes",disabled:!e.unref(l).hasChanges.value,onClick:Dn},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(zo),"aria-hidden":"true"},null,8,["icon"])],8,nB)]),P[20]||(P[20]=e.createElementVNode("div",{class:"v2-toolbar-title","aria-live":"polite"},[e.createElementVNode("span",{class:"v2-toolbar-badge"},"V2"),e.createTextVNode(" Video Editor ")],-1)),e.createElementVNode("div",oB,[e.createElementVNode("label",iB,[P[18]||(P[18]=e.createElementVNode("span",{class:"sr-only"},"Fit mode",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":P[0]||(P[0]=te=>I.value=te),"aria-label":"Fit mode","data-testid":"v2-select-fit-mode"},[...P[17]||(P[17]=[e.createElementVNode("option",{value:"contain"},"Contain",-1),e.createElementVNode("option",{value:"cover"},"Cover",-1),e.createElementVNode("option",{value:"none"},"None",-1)])],512),[[e.vModelSelect,I.value]])]),e.createElementVNode("button",{type:"button",class:"v2-toolbar-btn","data-testid":"v2-btn-save","aria-label":"Save draft",disabled:!e.unref(l).hasChanges.value,onClick:rn},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(fl),"aria-hidden":"true"},null,8,["icon"]),P[19]||(P[19]=e.createElementVNode("span",{class:"v2-toolbar-btn-label"},"Save",-1))],8,rB),e.createElementVNode("button",{type:"button",class:"v2-toolbar-btn","data-testid":"v2-btn-export","aria-label":e.unref(l).timelineClips.value.length===0?"Export disabled — add media first":"Export",title:e.unref(l).timelineClips.value.length===0?"Add media to export":void 0,disabled:Z.value||e.unref(l).timelineClips.value.length===0,onClick:vo},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(oi),"aria-hidden":"true"},null,8,["icon"])],8,lB),e.createElementVNode("button",{type:"button",class:"v2-toolbar-btn","data-testid":"v2-btn-close","aria-label":"Close editor",onClick:Jn},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Fo),"aria-hidden":"true"},null,8,["icon"])])])]),assets:e.withCtx(()=>[e.createElementVNode("div",sB,[e.createVNode(kN,{sources:pa.value,"selected-source-id":Vn.value,"uploads-enabled":!!x.assetUploader,onAdd:uo,onReplaceSelected:hi,onRemove:gi,onImportFiles:Ho},null,8,["sources","selected-source-id","uploads-enabled"]),ht.value?(e.openBlock(),e.createElementBlock("p",dB,e.toDisplayString(ht.value),1)):e.createCommentVNode("",!0)])]),canvas:e.withCtx(()=>[e.createElementVNode("div",uB,[e.withDirectives(e.createVNode(Cs,{ref_key:"pixiPreviewRef",ref:g,class:"v2-preview-child","aria-hidden":!w.value,source:C.value,"fallback-duration":S.value,filters:M.value,playhead:_.value,"is-playing":e.unref(l).isPlaying.value,"fit-mode":I.value,active:w.value,onPlayPause:fn,onFrameUpdate:O,onDurationChange:R},null,8,["aria-hidden","source","fallback-duration","filters","playhead","is-playing","fit-mode","active"]),[[e.vShow,w.value]]),e.withDirectives(e.createVNode(zs,{class:"v2-preview-child","aria-hidden":!b.value,"media-uuid":r.value,recipe:y.value,media:j.value,"enable-engine":b.value&&B.value,"fit-mode":I.value,onTimeUpdate:K,onPlayStateChange:se,onDurationChange:R,onEngineReady:Wt},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,b.value]])])]),timeline:e.withCtx(({isMobile:te})=>{var ye,Oe;return[e.createElementVNode("div",{class:e.normalizeClass(["v2-timeline",{"is-mobile":!!te}])},[e.createElementVNode("div",cB,[e.createElementVNode("div",mB,[P[21]||(P[21]=e.createElementVNode("span",{class:"v2-timeline-title","data-testid":"v2-timeline-title"},"Timeline",-1)),e.createElementVNode("span",pB,e.toDisplayString(Wn.value),1)]),e.createElementVNode("label",fB,[P[22]||(P[22]=e.createElementVNode("span",null,"Zoom",-1)),e.createElementVNode("input",{type:"range",min:"10",max:"600",value:e.unref(l).zoomLevel.value,"aria-label":"Timeline zoom","data-testid":"v2-timeline-zoom",onInput:mo},null,40,vB),e.createElementVNode("span",hB,e.toDisplayString(Math.round(e.unref(l).zoomLevel.value))+" px/s",1)]),te?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",gB,[e.createElementVNode("button",{type:"button",class:"v2-toolbar-btn v2-toolbar-btn--ghost","data-testid":"v2-btn-add-track",onClick:P[1]||(P[1]=ze=>Nn("video"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Dr)},null,8,["icon"]),P[23]||(P[23]=e.createTextVNode(" Add Track ",-1))]),Ta.value.length>0?(e.openBlock(),e.createElementBlock("label",bB,[P[24]||(P[24]=e.createElementVNode("span",null,"Place clips in",-1)),e.createElementVNode("select",{value:At.value??"","data-testid":"v2-select-target-track","aria-label":"Target track for added assets",onChange:ha},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ta.value,ze=>(e.openBlock(),e.createElementBlock("option",{key:ze.id,value:ze.id},e.toDisplayString(ze.name),9,wB))),128))],40,yB)])):e.createCommentVNode("",!0)])),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["v2-toolbar-btn v2-toolbar-btn--ghost",{"is-active":vt.value}]),"data-testid":"v2-btn-snap-toggle","aria-pressed":vt.value?"true":"false",onClick:nn},e.toDisplayString(vt.value?"Snap On":"Snap Off"),11,kB)]),nt.value?(e.openBlock(),e.createElementBlock("p",_B,e.toDisplayString(nt.value),1)):e.createCommentVNode("",!0),e.unref(l).timelineClips.value.length===0?(e.openBlock(),e.createElementBlock("div",EB,[...P[25]||(P[25]=[e.createElementVNode("p",{class:"v2-timeline-empty-title"},"Your timeline is empty",-1),e.createElementVNode("p",{class:"v2-timeline-empty-hint"}," Add a clip from the Assets panel or upload media to get started. Export is disabled until the timeline has at least one clip. ",-1)])])):(e.openBlock(),e.createBlock(js,{key:2,playhead:e.unref(l).playheadPosition.value,clips:e.unref(l).timelineClips.value,tracks:Ha.value,"selected-clip-id":((ye=e.unref(l).selectedClip.value)==null?void 0:ye.id)??((Oe=e.unref(l).timelineClips.value[0])==null?void 0:Oe.id)??null,duration:S.value,fps:e.unref(l).fps.value,"is-mobile":!!te,"zoom-level":e.unref(l).zoomLevel.value,"snap-enabled":vt.value,sensitivity:.25,"onUpdate:playhead":P[2]||(P[2]=ze=>e.unref(l).seekTo(ze)),onTrim:P[3]||(P[3]=(ze,ut,Tt)=>e.unref(l).handleTrim(ze,ut,Tt)),onSplit:P[4]||(P[4]=ze=>e.unref(l).handleSplit(ze)),onClipSelect:un,onClipDelete:Zn,onClipMove:co,onSnapStateChange:Ba,onToggleLock:P[5]||(P[5]=ze=>an(ze,e.unref(l).toggleTrackLock)),onToggleHidden:P[6]||(P[6]=ze=>an(ze,e.unref(l).toggleTrackHidden)),onToggleMuted:P[7]||(P[7]=ze=>an(ze,e.unref(l).toggleTrackMuted)),onToggleSolo:P[8]||(P[8]=ze=>an(ze,e.unref(l).toggleTrackSolo)),onRenameTrack:Hn,onDeleteTrack:Xa,onReorderTrack:la},null,8,["playhead","clips","tracks","selected-clip-id","duration","fps","is-mobile","zoom-level","snap-enabled"])),e.createVNode(Ws,{"selected-clip":e.unref(l).selectedClip.value,"can-split":Aa.value,"can-delete":fa.value,"can-undo":e.unref(l).canUndo.value,"can-redo":e.unref(l).canRedo.value,"is-playing":e.unref(l).isPlaying.value,"zoom-level":e.unref(l).zoomLevel.value,"playback-speed":e.unref(l).playbackSpeed.value,"is-mobile":!!te,"show-add-track":!!te,onSplit:e.unref(l).splitAtPlayhead,onDelete:e.unref(l).deleteSelectedClip,onAddTrack:P[9]||(P[9]=ze=>Nn("video")),onDuplicate:e.unref(l).duplicateSelectedClip,onUndo:e.unref(l).undo,onRedo:e.unref(l).redo,onZoomIn:e.unref(l).zoomIn,onZoomOut:e.unref(l).zoomOut,onZoomChange:e.unref(l).setZoomLevel,onFitToWindow:e.unref(l).fitToWindow,onPlayPause:fn,onFrameForward:e.unref(l).frameForward,onFrameBackward:e.unref(l).frameBackward,onSkipToStart:e.unref(l).skipToStart,onSkipToEnd:e.unref(l).skipToEnd,onSpeedChange:e.unref(l).setPlaybackSpeed},null,8,["selected-clip","can-split","can-delete","can-undo","can-redo","is-playing","zoom-level","playback-speed","is-mobile","show-add-track","onSplit","onDelete","onDuplicate","onUndo","onRedo","onZoomIn","onZoomOut","onZoomChange","onFitToWindow","onFrameForward","onFrameBackward","onSkipToStart","onSkipToEnd","onSpeedChange"])],2)]}),inspector:e.withCtx(()=>[Je.value.length>0?(e.openBlock(),e.createBlock($c,{key:0,class:"v2-draft-recovery",records:Je.value,surface:"desktop","project-id":He.value,"saved-at":at.value,onRestore:Ne,onDismiss:Xe},null,8,["records","project-id","saved-at"])):e.createCommentVNode("",!0),e.createVNode(a4,{"active-tab":d.value,"onUpdate:activeTab":P[10]||(P[10]=te=>d.value=te),tabs:p.value},{filters:e.withCtx(()=>[e.createVNode(Zs,{filters:xe.value,"active-filters":ue.value,"thumbnail-url":le.value,onApplyFilter:Mt,onRemoveFilter:Pt,onUpdateParam:Ht,onPreviewFilter:ra},null,8,["filters","active-filters","thumbnail-url"])]),adjustments:e.withCtx(()=>[e.unref(s).selectedFilter.value?(e.openBlock(),e.createBlock(Hs,{key:0,filter:e.unref(s).selectedFilter.value,"current-frame":e.unref(l).currentFrame.value,onUpdateParams:ae},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",SB,[...P[26]||(P[26]=[e.createElementVNode("p",null,"Select a filter from the Filters tab to adjust its parameters.",-1)])])),e.createVNode(Ic,{class:"v2-keyframe-panel",duration:ft.value,target:"all","device-class":"desktop",onApplyPreset:It},null,8,["duration"])]),text:e.withCtx(()=>[e.createVNode(Xs,{overlays:Ae.value,onAddOverlay:he,onUpdateOverlay:me,onRemoveOverlay:ce},null,8,["overlays"]),e.createVNode(Mc,{class:"v2-caption-panel","caption-track":kt.value,layout:"desktop",onImport:$e,"onUpdate:captionTrack":Ft,onClear:Ot},null,8,["caption-track"])]),transitions:e.withCtx(()=>[e.createVNode(Ks,{"selected-clips":Le.value,"applied-transitions":ct.value,onApplyTransition:Te,onRemoveTransition:We,onPreviewTransition:rt},null,8,["selected-clips","applied-transitions"])]),audio:e.withCtx(()=>[e.createVNode(Js,{"audio-layers":mt.value,"master-volume":Ct.value,onAddTrack:Vt,onUpdateTrack:Ut,onRemoveTrack:$t,onUpdateVolume:lt,onToggleMute:Jt,onUpdateMasterVolume:J},null,8,["audio-layers","master-volume"]),e.createVNode(Bc,{class:"v2-audio-mixer",state:jt.value,"device-class":"desktop",onUpdate:oe},null,8,["state"])]),export:e.withCtx(()=>[e.createVNode(Gs,{"can-export":tn.value,"is-exporting":Z.value,"export-progress":Q.value,onExport:pn,onCancelExport:In,onSaveDraft:rn,onReset:Dn},null,8,["can-export","is-exporting","export-progress"]),De.value?(e.openBlock(),e.createElementBlock("div",xB," Export complete ")):e.createCommentVNode("",!0),ne.value&&!De.value?(e.openBlock(),e.createElementBlock("div",CB,e.toDisplayString(ne.value),1)):e.createCommentVNode("",!0)]),_:1},8,["active-tab","tabs"])]),drawer:e.withCtx(()=>[e.createVNode(L4,{ref_key:"mobileDrawerRef",ref:c,"initial-snap":"half","aria-label":"Video editor controls"},{default:e.withCtx(()=>[Je.value.length>0?(e.openBlock(),e.createBlock($c,{key:0,class:"v2-draft-recovery",records:Je.value,surface:"mobile","project-id":He.value,"saved-at":at.value,onRestore:Ne,onDismiss:Xe},null,8,["records","project-id","saved-at"])):e.createCommentVNode("",!0),e.createVNode(V4,{"selected-clip":jn.value,onOpenActions:P[11]||(P[11]=te=>u.value="trim")},null,8,["selected-clip"]),e.createVNode($4,{modelValue:u.value,"onUpdate:modelValue":P[12]||(P[12]=te=>u.value=te)},null,8,["modelValue"]),u.value==="look"?(e.openBlock(),e.createElementBlock("section",VB,[e.createElementVNode("div",NB,[e.createVNode(Zs,{filters:xe.value,"active-filters":ue.value,"thumbnail-url":le.value,onApplyFilter:Mt,onRemoveFilter:Pt,onUpdateParam:Ht,onPreviewFilter:ra},null,8,["filters","active-filters","thumbnail-url"])]),e.createElementVNode("div",TB,[e.unref(s).selectedFilter.value?(e.openBlock(),e.createBlock(Hs,{key:0,filter:e.unref(s).selectedFilter.value,"current-frame":e.unref(l).currentFrame.value,onUpdateParams:ae},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",BB,[...P[27]||(P[27]=[e.createElementVNode("p",null,"Select a filter from the Filters tab to adjust its parameters.",-1)])]))])])):u.value==="trim"?(e.openBlock(),e.createElementBlock("section",MB,[e.createVNode(Ws,{"selected-clip":e.unref(l).selectedClip.value,"can-split":Aa.value,"can-delete":fa.value,"can-undo":e.unref(l).canUndo.value,"can-redo":e.unref(l).canRedo.value,"is-playing":e.unref(l).isPlaying.value,"zoom-level":e.unref(l).zoomLevel.value,"playback-speed":e.unref(l).playbackSpeed.value,"is-mobile":"","show-add-track":"",onSplit:e.unref(l).splitAtPlayhead,onDelete:e.unref(l).deleteSelectedClip,onAddTrack:P[13]||(P[13]=te=>Nn("video")),onDuplicate:e.unref(l).duplicateSelectedClip,onUndo:e.unref(l).undo,onRedo:e.unref(l).redo,onZoomIn:e.unref(l).zoomIn,onZoomOut:e.unref(l).zoomOut,onZoomChange:e.unref(l).setZoomLevel,onFitToWindow:e.unref(l).fitToWindow,onPlayPause:fn,onFrameForward:e.unref(l).frameForward,onFrameBackward:e.unref(l).frameBackward,onSkipToStart:e.unref(l).skipToStart,onSkipToEnd:e.unref(l).skipToEnd,onSpeedChange:e.unref(l).setPlaybackSpeed},null,8,["selected-clip","can-split","can-delete","can-undo","can-redo","is-playing","zoom-level","playback-speed","onSplit","onDelete","onDuplicate","onUndo","onRedo","onZoomIn","onZoomOut","onZoomChange","onFitToWindow","onFrameForward","onFrameBackward","onSkipToStart","onSkipToEnd","onSpeedChange"])])):u.value==="text"?(e.openBlock(),e.createElementBlock("section",$B,[e.createVNode(Xs,{overlays:Ae.value,onAddOverlay:he,onUpdateOverlay:me,onRemoveOverlay:ce},null,8,["overlays"]),e.createVNode(Mc,{"caption-track":kt.value,layout:"mobile",onImport:$e,"onUpdate:captionTrack":Ft,onClear:Ot},null,8,["caption-track"])])):u.value==="audio"?(e.openBlock(),e.createElementBlock("section",IB,[e.createVNode(Js,{"audio-layers":mt.value,"master-volume":Ct.value,onAddTrack:Vt,onUpdateTrack:Ut,onRemoveTrack:$t,onUpdateVolume:lt,onToggleMute:Jt,onUpdateMasterVolume:J},null,8,["audio-layers","master-volume"]),e.createVNode(Bc,{state:jt.value,"device-class":"mobile",onUpdate:oe},null,8,["state"])])):u.value==="export"?(e.openBlock(),e.createElementBlock("section",DB,[e.createVNode(Gs,{"can-export":tn.value,"is-exporting":Z.value,"export-progress":Q.value,"is-mobile":"",onExport:pn,onCancelExport:In,onSaveDraft:rn,onReset:Dn},null,8,["can-export","is-exporting","export-progress"]),De.value?(e.openBlock(),e.createElementBlock("div",FB,"Export complete")):e.createCommentVNode("",!0),ne.value&&!De.value?(e.openBlock(),e.createElementBlock("div",AB,e.toDisplayString(ne.value),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("section",RB,[e.createElementVNode("div",LB,[e.createElementVNode("label",PB,[P[29]||(P[29]=e.createElementVNode("span",null,"Fit",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":P[14]||(P[14]=te=>I.value=te),"aria-label":"Mobile fit mode"},[...P[28]||(P[28]=[e.createElementVNode("option",{value:"contain"},"Contain",-1),e.createElementVNode("option",{value:"cover"},"Cover",-1),e.createElementVNode("option",{value:"none"},"None",-1)])],512),[[e.vModelSelect,I.value]])]),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["v2-mobile-secondary-button",{"is-active":vt.value}]),"aria-pressed":vt.value?"true":"false","data-testid":"v2-mobile-btn-snap-toggle",onClick:nn},e.toDisplayString(vt.value?"Snap On":"Snap Off"),11,UB),e.createElementVNode("button",{type:"button",class:"v2-mobile-secondary-button","data-testid":"v2-mobile-btn-reset",disabled:!e.unref(l).hasChanges.value,onClick:Dn}," Reset ",8,OB),e.createElementVNode("button",{type:"button",class:"v2-mobile-secondary-button","data-testid":"v2-mobile-btn-save",disabled:!e.unref(l).hasChanges.value,onClick:rn}," Save ",8,zB)]),h.value?(e.openBlock(),e.createElementBlock("details",jB,[P[30]||(P[30]=e.createElementVNode("summary",null,"Transitions",-1)),e.createVNode(Ks,{"selected-clips":Le.value,"applied-transitions":ct.value,onApplyTransition:Te,onRemoveTransition:We,onPreviewTransition:rt},null,8,["selected-clips","applied-transitions"])])):e.createCommentVNode("",!0),e.createElementVNode("details",WB,[P[31]||(P[31]=e.createElementVNode("summary",null,"Keyframe presets",-1)),e.createVNode(Ic,{duration:ft.value,target:"all","device-class":"mobile",onApplyPreset:It},null,8,["duration"])])]))]),_:1},512)]),_:1}),Fn.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"v2-shortcuts-overlay",role:"dialog","aria-modal":"true","aria-label":"Keyboard shortcuts","data-testid":"v2-shortcuts-overlay",onClick:P[16]||(P[16]=e.withModifiers(te=>Fn.value=!1,["self"]))},[e.createElementVNode("div",ZB,[e.createElementVNode("div",HB,[P[32]||(P[32]=e.createElementVNode("h2",null,"Keyboard shortcuts",-1)),e.createElementVNode("button",{type:"button",class:"v2-shortcuts-overlay__close","aria-label":"Close shortcuts overlay","data-testid":"v2-shortcuts-overlay-close",onClick:P[15]||(P[15]=te=>Fn.value=!1)},"×")]),P[33]||(P[33]=e.createStaticVNode('<dl class="v2-shortcuts-overlay__list" data-v-aa4426a6><div data-v-aa4426a6><dt data-v-aa4426a6>Space</dt><dd data-v-aa4426a6>Play / pause</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>← / →</dt><dd data-v-aa4426a6>Frame back / forward</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>Shift + ← / →</dt><dd data-v-aa4426a6>1 second back / forward</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>Home / End</dt><dd data-v-aa4426a6>Skip to start / end</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>[ / ]</dt><dd data-v-aa4426a6>Previous / next clip</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>S</dt><dd data-v-aa4426a6>Split at playhead</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>Delete</dt><dd data-v-aa4426a6>Delete selected clip</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>Shift + Delete</dt><dd data-v-aa4426a6>Ripple delete (closes the gap)</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>Cmd / Ctrl + Z</dt><dd data-v-aa4426a6>Undo</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>Cmd / Ctrl + Shift + Z</dt><dd data-v-aa4426a6>Redo</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>Cmd / Ctrl + S</dt><dd data-v-aa4426a6>Save draft</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>Cmd / Ctrl + E</dt><dd data-v-aa4426a6>Export</dd></div><div data-v-aa4426a6><dt data-v-aa4426a6>?</dt><dd data-v-aa4426a6>This overlay</dd></div></dl>',1))])])):e.createCommentVNode("",!0)],64))}}),XB=Ie(GB,[["__scopeId","data-v-aa4426a6"]]),sn=a=>a===null||typeof a!="object"||Array.isArray(a)?null:a,Bt=a=>{if(typeof a=="number"&&Number.isFinite(a))return a;if(typeof a=="string"){const n=Number(a);return Number.isFinite(n)?n:null}return null},ff=(a,n)=>{if(n===null)return;const t=sn(a.source)??{},o=Bt(t.duration);if(!(o!==null&&o>0&&o<=1&&n>o))return;t.duration=n,a.source=t;const r=Array.isArray(a.timeline)?a.timeline:[];if(r.length===1){const d=sn(r[0]);if(d!==null){const u=Bt(d.sourceIn)??0,c=Bt(d.sourceOut)??Bt(d.end)??Bt(d.timelineEnd);if(u===0&&c!==null&&c>0&&c<=1){d.sourceOut=n;const p=Bt(d.end);p!==null&&p>0&&p<=1&&(d.end=n);const f=Bt(d.timelineEnd);f!==null&&f>0&&f<=1&&(d.timelineEnd=n)}}}const l=Bt(a.trimEnd)??Bt(a.trim_end);l!==null&&l>0&&l<=1&&(a.trimEnd=n);const s=sn(a.trim);if(s!==null){const d=Bt(s.end);d!==null&&d>0&&d<=1&&(s.end=n,a.trim=s)}},KB=(a,n)=>{if(!a)return!1;const t=sn(a);if(t===null)return!1;const o=sn(t.trim),i=sn(t.source),l=Bt(i==null?void 0:i.duration)??n,s=Array.isArray(a.filters)&&a.filters.length>0;let d=!1;if(Array.isArray(a.timeline)&&a.timeline.length===1){const f=a.timeline[0];f&&Array.isArray(f.filters)&&f.filters.length>0&&(d=!0)}let u=!1;const c=Bt(t.trimStart)??Bt(t.trim_start)??Bt(o==null?void 0:o.start),m=Bt(t.trimEnd)??Bt(t.trim_end)??Bt(o==null?void 0:o.end);if(c!==null&&c>0&&(u=!0),m!==null&&l!==void 0&&m<l&&(u=!0),!u&&Array.isArray(a.timeline)&&a.timeline.length===1){const f=a.timeline[0];if(f){const v=Bt(f.sourceIn),h=Bt(f.sourceOut);v!==null&&v>0&&(u=!0),h!==null&&l!==void 0&&h<l&&(u=!0)}}let p=!1;if(Array.isArray(a.timeline)&&a.timeline.length===1){const f=a.timeline[0];if(f){const v=Bt(f.speed);p=v!==null&&v!==1}}return s||d||u||p},vf=a=>{if(!a)return!1;const n=sn(a);return n===null?!1:!!(Array.isArray(n.textOverlays)&&n.textOverlays.length>0||Array.isArray(n.transitions)&&n.transitions.length>0||Array.isArray(a.timeline)&&a.timeline.length>1)},JB=(a,n={})=>{var p,f;const t=JSON.parse(JSON.stringify(a)),o=Array.isArray(t.timeline)?t.timeline:[],i=o.length>0?sn(o[0]):null,r=Array.isArray(i==null?void 0:i.filters)?i.filters:[],l=Array.isArray(t.filters)?t.filters:[];if(l.length>0?t.filters=l:t.filters=r,o.length===1&&i!==null){const v=Bt(i.sourceIn),h=Bt(i.sourceOut);v!==null&&t.trimStart===void 0&&(t.trimStart=v),h!==null&&t.trimEnd===void 0&&(t.trimEnd=h)}const s=sn(t.trim);if(t.trimStart===void 0){const v=Bt(s==null?void 0:s.start);v!==null&&(t.trimStart=v)}if(t.trimEnd===void 0){const v=Bt(s==null?void 0:s.end);v!==null&&(t.trimEnd=v)}const d=sn(t.source),u=Bt(t.width)??Bt(d==null?void 0:d.original_width)??Bt((p=n.exportMeta)==null?void 0:p.width);u!==null&&(t.width=u);const c=Bt(t.height)??Bt(d==null?void 0:d.original_height)??Bt((f=n.exportMeta)==null?void 0:f.height);c!==null&&(t.height=c);const m=sn(t.output);return t.fps=Bt(t.fps)??Bt(m==null?void 0:m.fps)??30,ff(t,n.mediaDuration??null),t},qB={key:0},YB=["data-testid"],QB={class:"ve-mobile-header"},e3=["data-testid"],t3={class:"ve-mobile-title"},a3=["data-testid","disabled"],n3={key:1,class:"ve-mobile-spacer","aria-hidden":"true"},o3={class:"ve-body"},i3=["data-testid"],r3=["aria-label"],l3={class:"ve-header"},s3={class:"ve-title"},d3=["data-testid"],u3={class:"ve-body"},c3={class:"ve-footer"},m3=["data-testid"],p3=["data-testid","disabled"],f3=e.defineComponent({__name:"VideoEditorDialog",props:{open:{type:Boolean,default:!0},mediaUuid:{},initialRecipe:{},media:{},showThumbnailPicker:{type:Boolean,default:!1},title:{default:"Edit Video"},workflowMode:{default:"full"},featureFlags:{},clientExportThreshold:{default:20},maxDuration:{default:300},serverRenderEndpoint:{default:null},saveImmediate:{type:Boolean,default:!0},confirmText:{default:"Save"},savingText:{default:"Rendering..."},closeText:{default:"Cancel"},dataTestId:{default:"video-editor-dialog"},editorVersion:{}},emits:["update:open","close","recipe-generated","export-started","draft-saved","thumbnail-selected","video-exported","save-recipe","save-started","save-complete","save-error"],setup(a,{expose:n,emit:t}){const o=a,i=t,r=e.computed(()=>o.dataTestId),l=e.computed(()=>o.open),s=e.computed(()=>o.saveImmediate===!1),d=e.computed(()=>o.closeText),u=e.computed(()=>m.value?o.savingText:o.confirmText),c=e.ref(typeof window<"u"?window.innerWidth<768:!1),m=e.ref(!1),p=e.ref(!1),f=e.ref(null),v=`temp-${Date.now()}`,h=e.computed(()=>{var S;const U=(S=o.featureFlags)==null?void 0:S.export;return typeof U=="boolean"?U:o.workflowMode==="full"}),k=e.computed(()=>{if(o.editorVersion==="v1"||o.editorVersion==="v2")return o.editorVersion;if(typeof window>"u")return"v2";try{const U=new URLSearchParams(window.location.search),S=U.get("editor")??U.get("video-editor");if(S==="v1")return"v1";if(S==="v2")return"v2"}catch{}return"v2"}),E=e.computed(()=>k.value==="v2"?XB:cf),w=e.computed(()=>typeof o.mediaUuid=="string"&&o.mediaUuid.trim()!==""?o.mediaUuid.trim():o.media&&o.media.uuid.trim()!==""?o.media.uuid.trim():v),b=e.computed(()=>{const U={showThumbnailPicker:o.showThumbnailPicker,workflowMode:o.workflowMode,clientExportThreshold:o.clientExportThreshold,maxDuration:o.maxDuration,serverRenderEndpoint:o.serverRenderEndpoint};return o.featureFlags!==void 0&&(U.featureFlags=o.featureFlags),o.initialRecipe!==void 0&&(U.initialRecipe=o.initialRecipe),o.media!==void 0&&(U.media=o.media),U}),g=()=>{c.value=window.innerWidth<768};e.onMounted(()=>{window.addEventListener("resize",g)}),e.onUnmounted(()=>{window.removeEventListener("resize",g)}),e.onErrorCaptured(()=>(p.value=!0,!1));const D=U=>{const S=Array.isArray(U.timeline)?U.timeline:[];if(S.length===0)return 0;let R=0;for(const O of S){const K=Number(O.sourceIn),se=Number(O.sourceOut),xe=Number(O.speed??1),ue=Number.isFinite(xe)&&xe>0?xe:1;if(Number.isFinite(K)&&Number.isFinite(se)&&se>K){R+=(se-K)/ue;continue}const le=Number(O.timelineStart),H=Number(O.timelineEnd);Number.isFinite(le)&&Number.isFinite(H)&&H>le&&(R+=H-le)}return R},T=(U,S,R)=>{let O=null;const K=new Promise((se,xe)=>{O=setTimeout(()=>xe(new Error(`${R} timed out after ${S}ms`)),S)});return Promise.race([U,K]).finally(()=>{O!==null&&clearTimeout(O)})},F=()=>{var K;const R=(K=o.media)==null?void 0:K.duration;if(typeof R!="number"||!Number.isFinite(R)||R<=0)return 12e3;const O=Math.round(R*1e3);return Math.min(45e3,Math.max(12e3,O))},V=()=>{i("close"),i("update:open",!1)},I=()=>{m.value=!1,V()},$=U=>{i("recipe-generated",U)},C=U=>{i("export-started",U),i("save-started",U)},M=U=>{i("video-exported",U)},_=U=>{i("thumbnail-selected",U)},L=(U,S,R)=>{i("save-recipe",U);const O={recipe:U,exportPayload:S};R!==void 0&&(O.toastDescription=R),i("save-complete",O),V()},j=U=>{m.value||(i("draft-saved",U),L(U,null))},B=async()=>{var U;if(!m.value){if(p.value||f.value===null){i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),V();return}m.value=!0;try{const S=await T(f.value.saveDraft(),F(),"saveDraft");let R=null,O=!1,K;const se=D(S),xe=se>0?se:((U=o.media)==null?void 0:U.duration)??0;if(h.value&&xe>0&&xe<=o.clientExportThreshold&&typeof f.value.exportForUpload=="function"){O=!0;const le=Math.min(9e4,Math.max(15e3,o.clientExportThreshold*2e3));try{R=await T(f.value.exportForUpload(S),le,"exportForUpload")}catch{R=null}}if(vf(S)&&R===null){i("save-error",{code:"unsupported-client-export-required",message:"These edits require in-browser export. Shorten the clip or remove text overlays, transitions, or extra clips and try again."});return}O&&R===null&&(K="Video edits saved. Final render will happen when you share."),L(S,R,K)}catch{i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),V()}finally{m.value=!1}}};return n({saveDraft:B}),(U,S)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[l.value?(e.openBlock(),e.createElementBlock("div",qB,[c.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ve-fullscreen","data-testid":r.value},[e.createElementVNode("header",QB,[e.createElementVNode("button",{class:"ve-mobile-action",type:"button","data-testid":`${r.value}-close-button`,onClick:I},e.toDisplayString(d.value),9,e3),e.createElementVNode("h2",t3,e.toDisplayString(U.title),1),s.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ve-mobile-action ve-mobile-action--primary",type:"button","data-testid":`${r.value}-confirm-button`,disabled:m.value,onClick:B},e.toDisplayString(u.value),9,a3)):(e.openBlock(),e.createElementBlock("span",n3))]),e.createElementVNode("section",o3,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(E.value),e.mergeProps({ref_key:"videoEditorRef",ref:f,"media-uuid":w.value,"data-editor-version":k.value},b.value,{onClose:I,onDraftSaved:j,onExportStarted:C,onRecipeGenerated:$,onThumbnailSelected:_,onVideoExported:M}),null,16,["media-uuid","data-editor-version"]))])],8,YB)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"ve-overlay","data-testid":r.value,onClick:e.withModifiers(I,["self"])},[e.createElementVNode("div",{class:"ve-dialog",role:"dialog","aria-label":U.title,"aria-modal":"true"},[e.createElementVNode("header",l3,[e.createElementVNode("h2",s3,e.toDisplayString(U.title),1),e.createElementVNode("button",{class:"ve-close",type:"button","data-testid":`${r.value}-close-button`,"aria-label":"Close",onClick:I}," ✕ ",8,d3)]),e.createElementVNode("section",u3,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(E.value),e.mergeProps({ref_key:"videoEditorRef",ref:f,"media-uuid":w.value,"data-editor-version":k.value},b.value,{onClose:I,onDraftSaved:j,onExportStarted:C,onRecipeGenerated:$,onThumbnailSelected:_,onVideoExported:M}),null,16,["media-uuid","data-editor-version"]))]),e.createElementVNode("footer",c3,[e.renderSlot(U.$slots,"footer",{close:I,isSaving:m.value,save:B},()=>[e.createElementVNode("button",{class:"ve-btn",type:"button","data-testid":`${r.value}-cancel-button`,onClick:I},e.toDisplayString(d.value),9,m3),s.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ve-btn ve-btn--primary",type:"button","data-testid":`${r.value}-confirm-button`,disabled:m.value,onClick:B},e.toDisplayString(u.value),9,p3)):e.createCommentVNode("",!0)],!0)])],8,r3)],8,i3))])):e.createCommentVNode("",!0)]))}}),v3=Ie(f3,[["__scopeId","data-v-098069d3"]]),h3={class:"video-editor-modal"},g3={class:"video-preview-container"},b3=["src"],y3={class:"video-overlay-controls"},w3=["aria-label"],k3={class:"time-display"},_3={class:"timeline-container"},E3={class:"clip-name"},S3={class:"timeline-time-labels"},x3={class:"tool-tabs"},C3=["onClick"],V3={class:"tool-panel"},N3={key:0,class:"trim-panel"},T3={class:"trim-controls"},B3={key:1,class:"filters-panel"},M3={class:"filter-grid"},$3=["onClick"],I3={key:2,class:"text-panel"},D3={key:3,class:"transitions-panel"},F3={class:"transition-grid"},A3=["onClick"],R3={class:"action-buttons"},L3=e.defineComponent({__name:"VideoEditorSimple",props:{media:{}},emits:["save","cancel"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(),r=e.ref(""),l=e.ref(!1),s=e.ref(0),d=e.ref(0),u=e.ref("video-1"),c=e.ref(0),m=e.ref(0),p=e.ref(null),f=e.ref("trim"),v=e.ref(null),h=e.ref(""),k=[{id:"trim",label:"Trim",icon:Gr},{id:"filters",label:"Filters",icon:Bh},{id:"text",label:"Text",icon:wm},{id:"transitions",label:"Transitions",icon:Lh}],E=[{id:"none",name:"None"},{id:"grayscale",name:"Grayscale"},{id:"sepia",name:"Sepia"},{id:"blur",name:"Blur"},{id:"brightness",name:"Brightness"},{id:"contrast",name:"Contrast"}],w=[{id:"fade",name:"Fade"},{id:"slide",name:"Slide"},{id:"zoom",name:"Zoom"},{id:"wipe",name:"Wipe"}],b=e.ref();e.onMounted(()=>{var S,R;(S=t.media)!=null&&S.url?r.value=t.media.url:(R=t.media)!=null&&R.file&&(r.value=URL.createObjectURL(t.media.file))}),e.onUnmounted(()=>{var S;(S=t.media)!=null&&S.file&&r.value&&URL.revokeObjectURL(r.value)});function g(){i.value&&(d.value=i.value.duration,m.value=d.value)}function D(){i.value&&(s.value=i.value.currentTime)}function T(){l.value=!1}function F(){i.value&&(l.value?(i.value.pause(),l.value=!1):(i.value.play(),l.value=!0))}function V(S){if(!S||isNaN(S))return"00:00";const R=Math.floor(S/60),O=Math.floor(S%60);return`${R.toString().padStart(2,"0")}:${O.toString().padStart(2,"0")}`}function I(S){if(!i.value||!b.value)return;const R=b.value.getBoundingClientRect(),se=(S.clientX-R.left)/R.width*d.value;i.value.currentTime=Math.max(0,Math.min(se,d.value))}function $(){c.value=s.value}function C(){m.value=s.value}function M(){c.value=0,m.value=d.value}function _(S){p.value=S;const R=K=>{if(!p.value||!b.value)return;const se=b.value.getBoundingClientRect(),le=(K.clientX-se.left)/se.width*d.value;p.value==="start"?c.value=Math.max(0,Math.min(le,m.value-1)):m.value=Math.max(c.value+1,Math.min(le,d.value))},O=()=>{p.value=null,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",O)};document.addEventListener("mousemove",R),document.addEventListener("mouseup",O)}function L(S){if(v.value=S,!i.value)return;const R={none:"none",grayscale:"grayscale(100%)",sepia:"sepia(100%)",blur:"blur(5px)",brightness:"brightness(150%)",contrast:"contrast(150%)"};i.value.style.filter=R[S]||"none"}function j(){}function B(S){}function U(){const S={timeline:[{id:u.value,url:r.value,startTime:0,endTime:d.value,sourceIn:c.value,sourceOut:m.value,track:0}],filters:v.value?[{type:v.value}]:[],textOverlays:h.value?[{content:h.value}]:[],duration:m.value-c.value};o("save",S)}return(S,R)=>(e.openBlock(),e.createElementBlock("div",h3,[e.createElementVNode("div",g3,[e.createElementVNode("video",{ref_key:"videoElement",ref:i,class:"video-preview",src:r.value,onLoadedmetadata:g,onTimeupdate:D,onEnded:T,controls:""},null,40,b3),e.createElementVNode("div",y3,[e.createElementVNode("button",{class:"play-pause-btn",onClick:F,"aria-label":l.value?"Pause":"Play"},[e.createVNode(e.unref(G.IonIcon),{icon:l.value?e.unref(zh):e.unref(Hh)},null,8,["icon"])],8,w3),e.createElementVNode("div",k3,e.toDisplayString(V(s.value))+" / "+e.toDisplayString(V(d.value)),1)])]),e.createElementVNode("div",_3,[e.createElementVNode("div",{class:"timeline-track",onClick:I,ref_key:"timelineTrack",ref:b},[e.createElementVNode("div",{class:"timeline-clip",style:e.normalizeStyle({left:`${c.value/d.value*100}%`,right:`${100-m.value/d.value*100}%`})},[e.createElementVNode("span",E3,e.toDisplayString(u.value),1)],4),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:`${s.value/d.value*100}%`})},null,4),f.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"trim-handle trim-start",style:e.normalizeStyle({left:`${c.value/d.value*100}%`}),onMousedown:R[0]||(R[0]=O=>_("start"))},null,36)):e.createCommentVNode("",!0),f.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"trim-handle trim-end",style:e.normalizeStyle({left:`${m.value/d.value*100}%`}),onMousedown:R[1]||(R[1]=O=>_("end"))},null,36)):e.createCommentVNode("",!0)],512),e.createElementVNode("div",S3,[e.createElementVNode("span",null,e.toDisplayString(V(0)),1),e.createElementVNode("span",null,e.toDisplayString(V(d.value)),1)])]),e.createElementVNode("div",x3,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(k,O=>e.createElementVNode("button",{key:O.id,class:e.normalizeClass(["tool-tab",{active:f.value===O.id}]),onClick:K=>f.value=O.id},[e.createVNode(e.unref(G.IonIcon),{icon:O.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(O.label),1)],10,C3)),64))]),e.createElementVNode("div",V3,[f.value==="trim"?(e.openBlock(),e.createElementBlock("div",N3,[R[7]||(R[7]=e.createElementVNode("h3",null,"Trim Video",-1)),R[8]||(R[8]=e.createElementVNode("p",null,"Click and drag on the timeline to set trim points",-1)),e.createElementVNode("div",T3,[e.createElementVNode("button",{class:"btn-trim",onClick:$},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Cu)},null,8,["icon"]),R[4]||(R[4]=e.createTextVNode(" Set Start ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:C},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Cu)},null,8,["icon"]),R[5]||(R[5]=e.createTextVNode(" Set End ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:M},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Fo)},null,8,["icon"]),R[6]||(R[6]=e.createTextVNode(" Clear ",-1))])])])):f.value==="filters"?(e.openBlock(),e.createElementBlock("div",B3,[R[9]||(R[9]=e.createElementVNode("h3",null,"Filters",-1)),e.createElementVNode("div",M3,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,O=>e.createElementVNode("button",{key:O.id,class:e.normalizeClass(["filter-option",{active:v.value===O.id}]),onClick:K=>L(O.id)},e.toDisplayString(O.name),11,$3)),64))])])):f.value==="text"?(e.openBlock(),e.createElementBlock("div",I3,[R[10]||(R[10]=e.createElementVNode("h3",null,"Text Overlay",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R[2]||(R[2]=O=>h.value=O),type:"text",placeholder:"Enter text...",class:"text-input"},null,512),[[e.vModelText,h.value]]),e.createElementVNode("button",{class:"btn-add-text",onClick:j},"Add Text")])):f.value==="transitions"?(e.openBlock(),e.createElementBlock("div",D3,[R[11]||(R[11]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",F3,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(w,O=>e.createElementVNode("button",{key:O.id,class:"transition-option",onClick:K=>(O.id,void 0)},e.toDisplayString(O.name),9,A3)),64))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",R3,[e.createElementVNode("button",{class:"btn-cancel",onClick:R[3]||(R[3]=O=>S.$emit("cancel"))},"CANCEL"),e.createElementVNode("button",{class:"btn-save",onClick:U},"SAVE")])]))}}),P3=Ie(L3,[["__scopeId","data-v-b933f33b"]]),U3={class:"time-label"},O3=e.defineComponent({__name:"TimeRuler",props:{duration:{},zoom:{}},setup(a){const n=a,t=e.computed(()=>({width:`${n.duration*n.zoom*100}px`})),o=e.computed(()=>{const l=[],s=i(n.duration,n.zoom);for(let d=0;d<=n.duration;d+=s){const u=`${d/n.duration*100}%`,c=r(d),m=d%(s*5)===0;l.push({time:d,position:u,label:c,major:m})}return l});function i(l,s){const d=l/(10*s);return d<=1?1:d<=5?5:d<=10?10:d<=30?30:d<=60?60:Math.ceil(d/60)*60}function r(l){const s=Math.floor(l/60),d=Math.floor(l%60);return s===0?`${d}s`:d===0?`${s}m`:`${s}:${d.toString().padStart(2,"0")}`}return(l,s)=>(e.openBlock(),e.createElementBlock("div",{class:"time-ruler",style:e.normalizeStyle(t.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.time,class:"time-mark",style:e.normalizeStyle({left:d.position})},[e.createElementVNode("span",U3,e.toDisplayString(d.label),1),e.createElementVNode("div",{class:e.normalizeClass(["time-tick",{major:d.major}])},null,2)],4))),128))],4))}}),z3=Ie(O3,[["__scopeId","data-v-0ef9c910"]]),j3=["data-track-index"],W3={class:"track-header"},Z3={class:"track-label"},H3={class:"track-controls"},G3=["data-testid","aria-label"],X3=["data-testid","onMousedown","onClick"],K3={class:"clip-content"},J3={class:"clip-name"},q3={key:0,class:"clip-thumbnail"},Y3=["src","alt"],Q3=["onMousedown","aria-label"],eM=["onMousedown","aria-label"],tM=e.defineComponent({__name:"VideoTrack",props:{clips:{},trackIndex:{},zoom:{},duration:{}},emits:["clip-move","clip-trim","clip-select"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r=e.ref(!1),l=e.ref(!1),s=e.ref(null),d=e.computed(()=>({width:`${t.duration*t.zoom*100}px`}));function u(k){const E=k.timelineEnd-k.timelineStart,w=k.timelineStart/t.duration*100,b=E/t.duration*100;return{left:`${w}%`,width:`${b}%`,backgroundColor:c(k)}}function c(k){const E=["#4A90E2","#7ED321","#F5A623","#BD10E0","#9013FE","#50E3C2","#B8E986","#F8E71C"],w=parseInt(k.id.replace(/\D/g,""))%E.length;return E[w]}function m(k){return k.label?k.label:k.url?(k.url.split("/").pop()||"Clip").split(".")[0]:`Clip ${k.id.slice(-4)}`}function p(k){i.value=k.id,o("clip-select",k.id)}function f(){r.value=!r.value}function v(k,E){if(s.value)return;l.value=!0;const w=E.clientX,b=k.timelineStart,g=T=>{if(!l.value)return;const F=T.clientX-w,V=parseFloat(d.value.width),I=F/(t.zoom*100)*(t.duration/V),$=Math.max(0,b+I);o("clip-move",k.id,$)},D=()=>{l.value=!1,document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",D)};document.addEventListener("mousemove",g),document.addEventListener("mouseup",D)}function h(k,E,w){s.value=E;const b=w.clientX,g=k.sourceIn,D=k.sourceOut,T=V=>{if(!s.value)return;const I=V.clientX-b,$=parseFloat(d.value.width),C=I/(t.zoom*100)*(t.duration/$);if(s.value==="start"){const M=Math.max(0,g+C);o("clip-trim",k.id,M,D)}else{const M=Math.max(g+1,D+C);o("clip-trim",k.id,g,M)}},F=()=>{s.value=null,document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",F)};document.addEventListener("mousemove",T),document.addEventListener("mouseup",F)}return(k,E)=>(e.openBlock(),e.createElementBlock("div",{class:"video-track","data-track-index":k.trackIndex},[e.createElementVNode("div",W3,[e.createElementVNode("span",Z3,"Track "+e.toDisplayString(k.trackIndex+1),1),e.createElementVNode("div",H3,[k.clips.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"track-btn","data-testid":`btn-mute-track-${k.trackIndex}`,"aria-label":`${r.value?"Unmute":"Mute"} track ${k.trackIndex+1}`,onClick:f},[e.createVNode(e.unref(G.IonIcon),{icon:r.value?e.unref(rg):e.unref(og)},null,8,["icon"])],8,G3)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",{class:"track-timeline",style:e.normalizeStyle(d.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.clips,w=>(e.openBlock(),e.createElementBlock("div",{key:w.id,class:e.normalizeClass(["timeline-clip",{selected:w.id===i.value}]),style:e.normalizeStyle(u(w)),"data-testid":`clip-${w.id}`,onMousedown:b=>v(w,b),onClick:b=>p(w)},[e.createElementVNode("div",K3,[e.createElementVNode("span",J3,e.toDisplayString(m(w)),1),w.thumbnail?(e.openBlock(),e.createElementBlock("div",q3,[e.createElementVNode("img",{src:w.thumbnail,alt:m(w)},null,8,Y3)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"trim-handle trim-start",onMousedown:e.withModifiers(b=>h(w,"start",b),["stop"]),"aria-label":`Trim start of ${m(w)}`},null,40,Q3),e.createElementVNode("div",{class:"trim-handle trim-end",onMousedown:e.withModifiers(b=>h(w,"end",b),["stop"]),"aria-label":`Trim end of ${m(w)}`},null,40,eM)],46,X3))),128))],4)],8,j3))}}),aM=Ie(tM,[["__scopeId","data-v-48e480d2"]]),nM={class:"video-timeline"},oM={class:"timeline-tracks"},iM=["aria-label","aria-valuenow","aria-valuemax"],rM={class:"timeline-controls"},lM={class:"zoom-level"},sM=e.defineComponent({__name:"VideoTimeline",props:{clips:{},duration:{},currentTime:{}},emits:["update:clips","seek","clip-move","clip-trim"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(1),r=e.ref(null),l=e.ref(!1),s=e.ref(),d=e.computed(()=>{const b=Math.max(0,...t.clips.map(g=>g.track||0));return Array(b+1).fill(null)}),u=e.computed(()=>`${t.currentTime/t.duration*100}%`);function c(b){return t.clips.filter(g=>(g.track||0)===b)}function m(b){const g=Math.floor(b/60),D=Math.floor(b%60);return`${g}:${D.toString().padStart(2,"0")}`}function p(b,g){o("clip-move",b,g)}function f(b,g,D){o("clip-trim",b,g,D)}function v(b){r.value=b}function h(){i.value=Math.min(i.value*1.2,5)}function k(){i.value=Math.max(i.value/1.2,.5)}function E(){l.value=!0;const b=D=>{if(!l.value||!s.value)return;const T=s.value.getBoundingClientRect(),I=Math.max(0,Math.min(D.clientX-T.left,T.width))/T.width*t.duration;o("seek",I)},g=()=>{l.value=!1,document.removeEventListener("mousemove",b),document.removeEventListener("mouseup",g)};document.addEventListener("mousemove",b),document.addEventListener("mouseup",g)}function w(b){let g=t.currentTime;switch(b.key){case"ArrowLeft":g=Math.max(0,t.currentTime-1);break;case"ArrowRight":g=Math.min(t.duration,t.currentTime+1);break;case"Home":g=0;break;case"End":g=t.duration;break;default:return}b.preventDefault(),o("seek",g)}return e.onMounted(()=>{s.value=document.querySelector(".video-timeline")}),e.onUnmounted(()=>{}),(b,g)=>(e.openBlock(),e.createElementBlock("div",nM,[e.createVNode(z3,{duration:b.duration,zoom:i.value},null,8,["duration","zoom"]),e.createElementVNode("div",oM,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(D,T)=>(e.openBlock(),e.createBlock(aM,{key:`track-${T}`,"data-testid":`track-${T}`,clips:c(T),"track-index":T,zoom:i.value,duration:b.duration,onClipMove:p,onClipTrim:f,onClipSelect:v},null,8,["data-testid","clips","track-index","zoom","duration"]))),128))]),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:u.value}),onMousedown:E,"data-testid":"playhead","aria-label":`Playhead at ${m(b.currentTime)}`,role:"slider","aria-valuenow":b.currentTime,"aria-valuemax":b.duration,tabindex:"0",onKeydown:w},null,44,iM),e.createElementVNode("div",rM,[e.createElementVNode("button",{"data-testid":"btn-zoom-in","aria-label":"Zoom in",onClick:h},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(fd)},null,8,["icon"])]),e.createElementVNode("span",lM,e.toDisplayString(Math.round(i.value*100))+"%",1),e.createElementVNode("button",{"data-testid":"btn-zoom-out","aria-label":"Zoom out",onClick:k},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Yh)},null,8,["icon"])])])]))}}),dM=Ie(sM,[["__scopeId","data-v-001df415"]]),uM={class:"video-filters-panel"},cM={class:"filter-controls"},mM=["for"],pM={class:"filter-slider-group"},fM=["id","onUpdate:modelValue","min","max","step","data-testid","aria-label","aria-valuenow","aria-valuemin","aria-valuemax","onInput"],vM={class:"filter-value"},hM={class:"filter-actions"},gM={key:0,class:"filter-presets"},bM={class:"preset-list"},yM=["data-testid","aria-label","onClick"],wM=e.defineComponent({__name:"VideoFiltersPanel",emits:["filter-change"],setup(a,{emit:n}){const t=n,o=[{type:"brightness",label:"Brightness",min:0,max:200,step:1,default:100},{type:"contrast",label:"Contrast",min:0,max:200,step:1,default:100},{type:"saturation",label:"Saturation",min:0,max:200,step:1,default:100},{type:"hue",label:"Hue",min:-180,max:180,step:1,default:0},{type:"blur",label:"Blur",min:0,max:10,step:.5,default:0},{type:"sharpen",label:"Sharpen",min:0,max:10,step:.5,default:0},{type:"sepia",label:"Sepia",min:0,max:100,step:1,default:0},{type:"grayscale",label:"Grayscale",min:0,max:100,step:1,default:0}],i=e.reactive(o.reduce((p,f)=>(p[f.type]=f.default,p),{})),r=e.ref([{id:"vintage",name:"Vintage",values:{brightness:110,contrast:120,saturation:80,sepia:30}},{id:"noir",name:"Film Noir",values:{brightness:90,contrast:130,grayscale:100}},{id:"vibrant",name:"Vibrant",values:{brightness:110,contrast:110,saturation:140}},{id:"dreamy",name:"Dreamy",values:{brightness:120,blur:2,saturation:90}}]);function l(p,f){switch(p){case"brightness":case"contrast":case"saturation":case"sepia":case"grayscale":return`${f}%`;case"hue":return`${f}°`;case"blur":case"sharpen":return f.toFixed(1);default:return f.toString()}}function s(p){return["brightness","contrast","saturation","hue","blur","sharpen","sepia","grayscale"].includes(p)}function d(p){if(!s(p))return;const f={id:`filter-${p}`,filterId:p,params:{value:i[p]},intensity:1};t("filter-change",f)}function u(){o.forEach(p=>{i[p.type]=p.default,d(p.type)})}function c(){const p=prompt("Enter preset name:");if(!p)return;const f={id:`custom-${Date.now()}`,name:p,values:{...i}};r.value.push(f)}function m(p){Object.entries(p.values).forEach(([f,v])=>{i[f]=v,d(f)})}return(p,f)=>(e.openBlock(),e.createElementBlock("div",uM,[f[3]||(f[3]=e.createElementVNode("h3",null,"Video Filters",-1)),e.createElementVNode("div",cM,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,v=>e.createElementVNode("div",{key:v.type,class:"filter-control"},[e.createElementVNode("label",{for:`filter-${v.type}`},e.toDisplayString(v.label),9,mM),e.createElementVNode("div",pM,[e.withDirectives(e.createElementVNode("input",{id:`filter-${v.type}`,"onUpdate:modelValue":h=>i[v.type]=h,type:"range",min:v.min,max:v.max,step:v.step,class:"filter-slider","data-testid":`filter-${v.type}`,"aria-label":`${v.label} filter`,"aria-valuenow":i[v.type],"aria-valuemin":v.min,"aria-valuemax":v.max,onInput:h=>d(v.type)},null,40,fM),[[e.vModelText,i[v.type],void 0,{number:!0}]]),e.createElementVNode("span",vM,e.toDisplayString(l(v.type,i[v.type])),1)])])),64))]),e.createElementVNode("div",hM,[e.createElementVNode("button",{class:"reset-filters-btn","data-testid":"btn-reset-filters","aria-label":"Reset all filters to default",onClick:u},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(zo)},null,8,["icon"]),f[0]||(f[0]=e.createTextVNode(" Reset All Filters ",-1))]),e.createElementVNode("button",{class:"save-preset-btn","data-testid":"btn-save-preset","aria-label":"Save current filter settings as preset",onClick:c},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(fl)},null,8,["icon"]),f[1]||(f[1]=e.createTextVNode(" Save as Preset ",-1))])]),r.value.length>0?(e.openBlock(),e.createElementBlock("div",gM,[f[2]||(f[2]=e.createElementVNode("h4",null,"Presets",-1)),e.createElementVNode("div",bM,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,v=>(e.openBlock(),e.createElementBlock("button",{key:v.id,class:"preset-btn","data-testid":`preset-${v.id}`,"aria-label":`Apply ${v.name} preset`,onClick:h=>m(v)},e.toDisplayString(v.name),9,yM))),128))])])):e.createCommentVNode("",!0)]))}}),kM=Ie(wM,[["__scopeId","data-v-5ad2ac63"]]),_M={class:"video-text-panel"},EM={class:"text-input-group"},SM={class:"text-options"},xM={class:"option-row"},CM={class:"option-row"},VM={class:"option-row"},NM={class:"option-row"},TM={class:"checkbox-label"},BM={class:"option-row"},MM={class:"text-overlay-list"},$M={key:0,class:"empty-state"},IM=["data-testid"],DM={class:"overlay-preview"},FM={class:"overlay-controls"},AM=["data-testid","aria-label","onClick"],RM=["data-testid","aria-label","onClick"],LM=["data-testid","aria-label","onClick"],PM=e.defineComponent({__name:"VideoTextPanel",emits:["text-add","text-remove","text-update"],setup(a,{emit:n}){const t=n,o=e.ref([]),i=e.reactive({text:"",fontFamily:"Arial",fontSize:32,color:"#FFFFFF",backgroundColor:"#000000",hasBackground:!0,animation:"fade-in"});function r(){if(!i.text.trim())return;const u={id:`text-${Date.now()}`,text:i.text,x:50,y:50,fontSize:i.fontSize,fontFamily:i.fontFamily,color:i.color,startTime:0,opacity:1};i.hasBackground&&(u.backgroundColor=i.backgroundColor),i.animation!=="none"&&(u.animation=i.animation),o.value.push(u),t("text-add",u),i.text=""}function l(u){const c=o.value.findIndex(m=>m.id===u);c!==-1&&(o.value.splice(c,1),t("text-remove",u))}function s(u){i.text=u.text,i.fontFamily=u.fontFamily||"Arial",i.fontSize=u.fontSize,i.color=u.color,i.backgroundColor=u.backgroundColor||"#000000",i.hasBackground=!!u.backgroundColor,i.animation=u.animation||"none",l(u.id)}function d(u){const c={...u,id:`text-${Date.now()}`,x:u.x+10,y:u.y+10};o.value.push(c),t("text-add",c)}return(u,c)=>(e.openBlock(),e.createElementBlock("div",_M,[c[17]||(c[17]=e.createElementVNode("h3",null,"Text Overlays",-1)),e.createElementVNode("div",EM,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[0]||(c[0]=m=>i.text=m),type:"text",placeholder:"Enter text...",class:"text-input","data-testid":"input-text","aria-label":"Text overlay content",onKeyup:e.withKeys(r,["enter"])},null,544),[[e.vModelText,i.text]]),e.createElementVNode("button",{class:"add-text-btn","data-testid":"btn-add-text","aria-label":"Add text overlay",onClick:r},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(fd)},null,8,["icon"]),c[7]||(c[7]=e.createTextVNode(" Add ",-1))])]),e.createElementVNode("div",SM,[e.createElementVNode("div",xM,[c[9]||(c[9]=e.createElementVNode("label",{for:"font-family"},"Font:",-1)),e.withDirectives(e.createElementVNode("select",{id:"font-family","onUpdate:modelValue":c[1]||(c[1]=m=>i.fontFamily=m),"data-testid":"select-font"},[...c[8]||(c[8]=[e.createStaticVNode('<option value="Arial" data-v-4d240e1e>Arial</option><option value="Helvetica" data-v-4d240e1e>Helvetica</option><option value="Times New Roman" data-v-4d240e1e>Times New Roman</option><option value="Georgia" data-v-4d240e1e>Georgia</option><option value="Courier New" data-v-4d240e1e>Courier New</option><option value="Impact" data-v-4d240e1e>Impact</option><option value="Comic Sans MS" data-v-4d240e1e>Comic Sans MS</option>',7)])],512),[[e.vModelSelect,i.fontFamily]])]),e.createElementVNode("div",CM,[c[10]||(c[10]=e.createElementVNode("label",{for:"font-size"},"Size:",-1)),e.withDirectives(e.createElementVNode("input",{id:"font-size","onUpdate:modelValue":c[2]||(c[2]=m=>i.fontSize=m),type:"number",min:"10",max:"200","data-testid":"input-font-size"},null,512),[[e.vModelText,i.fontSize,void 0,{number:!0}]])]),e.createElementVNode("div",VM,[c[11]||(c[11]=e.createElementVNode("label",{for:"text-color"},"Color:",-1)),e.withDirectives(e.createElementVNode("input",{id:"text-color","onUpdate:modelValue":c[3]||(c[3]=m=>i.color=m),type:"color","data-testid":"input-text-color"},null,512),[[e.vModelText,i.color]])]),e.createElementVNode("div",NM,[c[13]||(c[13]=e.createElementVNode("label",{for:"bg-color"},"Background:",-1)),e.withDirectives(e.createElementVNode("input",{id:"bg-color","onUpdate:modelValue":c[4]||(c[4]=m=>i.backgroundColor=m),type:"color","data-testid":"input-bg-color"},null,512),[[e.vModelText,i.backgroundColor]]),e.createElementVNode("label",TM,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[5]||(c[5]=m=>i.hasBackground=m),type:"checkbox","data-testid":"checkbox-bg"},null,512),[[e.vModelCheckbox,i.hasBackground]]),c[12]||(c[12]=e.createTextVNode(" Enable ",-1))])]),e.createElementVNode("div",BM,[c[15]||(c[15]=e.createElementVNode("label",{for:"text-animation"},"Animation:",-1)),e.withDirectives(e.createElementVNode("select",{id:"text-animation","onUpdate:modelValue":c[6]||(c[6]=m=>i.animation=m),"data-testid":"select-animation"},[...c[14]||(c[14]=[e.createStaticVNode('<option value="none" data-v-4d240e1e>None</option><option value="fade-in" data-v-4d240e1e>Fade In</option><option value="slide-left" data-v-4d240e1e>Slide from Left</option><option value="slide-right" data-v-4d240e1e>Slide from Right</option><option value="slide-up" data-v-4d240e1e>Slide from Bottom</option><option value="slide-down" data-v-4d240e1e>Slide from Top</option><option value="typewriter" data-v-4d240e1e>Typewriter</option><option value="bounce" data-v-4d240e1e>Bounce</option>',8)])],512),[[e.vModelSelect,i.animation]])])]),e.createElementVNode("div",MM,[c[16]||(c[16]=e.createElementVNode("h4",null,"Active Overlays",-1)),o.value.length===0?(e.openBlock(),e.createElementBlock("div",$M," No text overlays added yet ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(m,p)=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:"text-overlay-item","data-testid":`overlay-${p}`},[e.createElementVNode("div",DM,[e.createElementVNode("span",{style:e.normalizeStyle({fontFamily:m.fontFamily,fontSize:`${Math.min(m.fontSize/4,16)}px`,color:m.color})},e.toDisplayString(m.text),5)]),e.createElementVNode("div",FM,[e.createElementVNode("button",{class:"edit-btn","data-testid":`btn-edit-${p}`,"aria-label":`Edit overlay: ${m.text}`,onClick:f=>s(m)},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref($h)},null,8,["icon"])],8,AM),e.createElementVNode("button",{class:"duplicate-btn","data-testid":`btn-duplicate-${p}`,"aria-label":`Duplicate overlay: ${m.text}`,onClick:f=>d(m)},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(xs)},null,8,["icon"])],8,RM),e.createElementVNode("button",{class:"remove-btn","data-testid":`btn-remove-${p}`,"aria-label":`Remove overlay: ${m.text}`,onClick:f=>l(m.id)},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Xr)},null,8,["icon"])],8,LM)])],8,IM))),128))])]))}}),UM=Ie(PM,[["__scopeId","data-v-4d240e1e"]]),OM={class:"video-tools-panel"},zM={class:"tool-tabs"},jM=["data-testid","aria-label","aria-selected","onClick"],WM={class:"tool-content"},ZM={key:0,class:"trim-panel",role:"tabpanel","aria-label":"Trim controls"},HM={class:"trim-actions"},GM={key:3,class:"transitions-panel",role:"tabpanel","aria-label":"Transition controls"},XM={class:"transition-types"},KM=["data-testid","aria-label","onClick"],JM={class:"transition-preview"},qM=e.defineComponent({__name:"VideoToolsPanel",props:{activeTool:{}},emits:["tool-change","filter-change","text-add","transition-add","trim-set-start","trim-set-end","trim-clear"],setup(a){const n=[{id:"trim",name:"Trim",icon:Gr},{id:"filters",name:"Filters",icon:no},{id:"text",name:"Text",icon:wm},{id:"transitions",name:"Transitions",icon:Tu}],t=[{id:"fade",name:"Fade",icon:as},{id:"slide-left",name:"Slide Left",icon:xh},{id:"slide-right",name:"Slide Right",icon:Ch},{id:"dissolve",name:"Dissolve",icon:as},{id:"wipe",name:"Wipe",icon:Tu},{id:"zoom",name:"Zoom",icon:as}];return(o,i)=>(e.openBlock(),e.createElementBlock("div",OM,[e.createElementVNode("div",zM,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,r=>e.createElementVNode("button",{key:r.id,class:e.normalizeClass(["tool-tab",{active:o.activeTool===r.id}]),"data-testid":`tab-${r.id}`,"aria-label":`${r.name} tool`,"aria-selected":o.activeTool===r.id,role:"tab",onClick:l=>o.$emit("tool-change",r.id)},[e.createVNode(e.unref(G.IonIcon),{icon:r.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(r.name),1)],10,jM)),64))]),e.createElementVNode("div",WM,[o.activeTool==="trim"?(e.openBlock(),e.createElementBlock("div",ZM,[i[8]||(i[8]=e.createElementVNode("h3",null,"Trim Video",-1)),i[9]||(i[9]=e.createElementVNode("p",null,"Click and drag on the timeline to set trim points",-1)),e.createElementVNode("div",HM,[e.createElementVNode("button",{class:"action-btn","data-testid":"btn-set-start","aria-label":"Set trim start at current position",onClick:i[0]||(i[0]=r=>o.$emit("trim-set-start"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Vu)},null,8,["icon"]),i[5]||(i[5]=e.createTextVNode(" Set Start ",-1))]),e.createElementVNode("button",{class:"action-btn","data-testid":"btn-set-end","aria-label":"Set trim end at current position",onClick:i[1]||(i[1]=r=>o.$emit("trim-set-end"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Vu)},null,8,["icon"]),i[6]||(i[6]=e.createTextVNode(" Set End ",-1))]),e.createElementVNode("button",{class:"action-btn","data-testid":"btn-clear-trim","aria-label":"Clear trim points",onClick:i[2]||(i[2]=r=>o.$emit("trim-clear"))},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Fo)},null,8,["icon"]),i[7]||(i[7]=e.createTextVNode(" Clear ",-1))])])])):e.createCommentVNode("",!0),o.activeTool==="filters"?(e.openBlock(),e.createBlock(kM,{key:1,onFilterChange:i[3]||(i[3]=r=>o.$emit("filter-change",r))})):e.createCommentVNode("",!0),o.activeTool==="text"?(e.openBlock(),e.createBlock(UM,{key:2,onTextAdd:i[4]||(i[4]=r=>o.$emit("text-add",r))})):e.createCommentVNode("",!0),o.activeTool==="transitions"?(e.openBlock(),e.createElementBlock("div",GM,[i[10]||(i[10]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",XM,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(t,r=>e.createElementVNode("button",{key:r.id,class:"transition-btn","data-testid":`transition-${r.id}`,"aria-label":`Add ${r.name} transition`,onClick:l=>o.$emit("transition-add",r.id)},[e.createElementVNode("div",JM,[e.createVNode(e.unref(G.IonIcon),{icon:r.icon},null,8,["icon"])]),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],8,KM)),64))])])):e.createCommentVNode("",!0)])]))}}),YM=Ie(qM,[["__scopeId","data-v-fc135306"]]),QM={class:"video-export-panel"},e$={class:"export-presets"},t$=["value"],a$={key:0,class:"preset-details"},n$={class:"detail-row"},o$={class:"detail-row"},i$={class:"detail-row"},r$={class:"advanced-options"},l$={class:"options-content"},s$={class:"option-group"},d$={class:"option-group"},u$={class:"option-group"},c$=["disabled"],m$={key:1,class:"export-progress"},p$={class:"progress-message"},f$={class:"progress-bar"},v$=["aria-valuenow"],h$={class:"progress-percentage"},g$=e.defineComponent({__name:"VideoExportPanel",props:{presets:{},isExporting:{type:Boolean},exportProgress:{}},emits:["export"],setup(a,{emit:n}){const t=a,o=n,i=e.ref("instagram-reel"),r=e.reactive({quality:"medium",bitrate:5,includeAudio:!0}),l=e.computed(()=>t.presets.find(u=>u.id===i.value)),s=e.computed(()=>t.exportProgress<10?"Initializing export...":t.exportProgress<30?"Processing video tracks...":t.exportProgress<50?"Applying filters and effects...":t.exportProgress<70?"Rendering frames...":t.exportProgress<90?"Encoding video...":t.exportProgress<100?"Finalizing export...":"Export complete!");function d(){l.value&&o("export",{...l.value,options:{...r}})}return(u,c)=>(e.openBlock(),e.createElementBlock("div",QM,[c[14]||(c[14]=e.createElementVNode("h3",null,"Export Video",-1)),e.createElementVNode("div",e$,[c[4]||(c[4]=e.createElementVNode("label",{for:"preset-select"},"Export Preset:",-1)),e.withDirectives(e.createElementVNode("select",{id:"preset-select","onUpdate:modelValue":c[0]||(c[0]=m=>i.value=m),"data-testid":"preset-select","aria-label":"Select export preset"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.presets,m=>(e.openBlock(),e.createElementBlock("option",{key:m.id,value:m.id},e.toDisplayString(m.name),9,t$))),128))],512),[[e.vModelSelect,i.value]])]),l.value?(e.openBlock(),e.createElementBlock("div",a$,[e.createElementVNode("div",n$,[c[5]||(c[5]=e.createElementVNode("span",null,"Resolution:",-1)),e.createElementVNode("span",null,e.toDisplayString(l.value.width)+"x"+e.toDisplayString(l.value.height),1)]),e.createElementVNode("div",o$,[c[6]||(c[6]=e.createElementVNode("span",null,"Frame Rate:",-1)),e.createElementVNode("span",null,e.toDisplayString(l.value.fps)+" fps",1)]),e.createElementVNode("div",i$,[c[7]||(c[7]=e.createElementVNode("span",null,"Format:",-1)),e.createElementVNode("span",null,e.toDisplayString(l.value.format.toUpperCase()),1)])])):e.createCommentVNode("",!0),e.createElementVNode("details",r$,[c[12]||(c[12]=e.createElementVNode("summary",null,"Advanced Options",-1)),e.createElementVNode("div",l$,[e.createElementVNode("div",s$,[c[9]||(c[9]=e.createElementVNode("label",{for:"quality-select"},"Quality:",-1)),e.withDirectives(e.createElementVNode("select",{id:"quality-select","onUpdate:modelValue":c[1]||(c[1]=m=>r.quality=m),"data-testid":"quality-select"},[...c[8]||(c[8]=[e.createElementVNode("option",{value:"low"},"Low (smaller file)",-1),e.createElementVNode("option",{value:"medium"},"Medium (balanced)",-1),e.createElementVNode("option",{value:"high"},"High (best quality)",-1)])],512),[[e.vModelSelect,r.quality]])]),e.createElementVNode("div",d$,[c[10]||(c[10]=e.createElementVNode("label",{for:"bitrate-input"},"Bitrate (Mbps):",-1)),e.withDirectives(e.createElementVNode("input",{id:"bitrate-input","onUpdate:modelValue":c[2]||(c[2]=m=>r.bitrate=m),type:"number",min:"1",max:"50","data-testid":"bitrate-input"},null,512),[[e.vModelText,r.bitrate,void 0,{number:!0}]])]),e.createElementVNode("div",u$,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[3]||(c[3]=m=>r.includeAudio=m),type:"checkbox","data-testid":"include-audio"},null,512),[[e.vModelCheckbox,r.includeAudio]]),c[11]||(c[11]=e.createTextVNode(" Include Audio ",-1))])])])]),e.createElementVNode("button",{class:"btn-export",disabled:u.isExporting||!l.value,"data-testid":"btn-start-export","aria-label":"Start video export",onClick:d},[u.isExporting?(e.openBlock(),e.createBlock(e.unref(G.IonSpinner),{key:0,name:"crescent"})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(oi)},null,8,["icon"]),c[13]||(c[13]=e.createTextVNode(" Export Video ",-1))],64))],8,c$),u.isExporting?(e.openBlock(),e.createElementBlock("div",m$,[e.createElementVNode("div",p$,e.toDisplayString(s.value),1),e.createElementVNode("div",f$,[e.createElementVNode("div",{class:"progress-fill",style:e.normalizeStyle({width:`${u.exportProgress}%`}),role:"progressbar","aria-valuenow":u.exportProgress,"aria-valuemin":"0","aria-valuemax":"100"},null,12,v$)]),e.createElementVNode("div",h$,e.toDisplayString(u.exportProgress)+"% ",1)])):e.createCommentVNode("",!0)]))}}),b$=Ie(g$,[["__scopeId","data-v-5caf8fe6"]]),y$=["data-testid"],w$={class:"progress-header"},k$={class:"file-info"},_$={class:"file-details"},E$={class:"file-name"},S$={class:"file-meta"},x$={class:"file-size"},C$={key:0,class:"separator"},V$={key:1,class:"upload-speed"},N$={key:2,class:"separator"},T$={key:3,class:"time-remaining"},B$={class:"progress-actions"},M$={key:0,class:"status-icon completed","data-testid":"video-upload-status-completed"},$$={key:1,class:"status-icon error","data-testid":"video-upload-status-error"},I$={key:2,class:"status-icon processing","data-testid":"video-upload-status-processing",role:"status","aria-label":"Processing video"},D$=["aria-valuenow","aria-label"],F$={class:"progress-bar"},A$={class:"progress-percent"},R$={key:1,class:"error-message","data-testid":"video-upload-error"},L$={key:2,class:"thumbnail-preview","data-testid":"video-upload-thumbnail"},P$=["src","alt"],U$={key:0,class:"video-duration"},O$=e.defineComponent({__name:"VideoUploadProgress",props:{upload:{}},emits:["cancel","retry","remove"],setup(a){const n=a,t=e.computed(()=>({"is-uploading":n.upload.status==="uploading","is-processing":n.upload.status==="processing","is-completed":n.upload.status==="completed","is-error":n.upload.status==="error","is-pending":n.upload.status==="pending"})),o=e.computed(()=>km),i=e.computed(()=>["uploading","processing"].includes(n.upload.status)),r=e.computed(()=>(n.upload.status==="processing",n.upload.progress||0)),l=e.computed(()=>{if(!n.upload.timeRemaining||n.upload.status!=="uploading")return null;const p=n.upload.timeRemaining;if(p<60)return`${Math.round(p)}s`;const f=Math.floor(p/60);return f<60?`${f}m ${Math.round(p%60)}s`:`${Math.floor(f/60)}h ${f%60}m`}),s=e.computed(()=>{var p;return n.upload.status==="completed"&&((p=n.upload.media)!=null&&p.thumbnail_url)?n.upload.media.thumbnail_url:null}),d=e.computed(()=>{var p;return(p=n.upload.media)==null?void 0:p.duration});function u(p){if(p===0)return"0 B";const f=["B","KB","MB","GB","TB"],v=1024,h=Math.floor(Math.log(p)/Math.log(v));return`${(p/Math.pow(v,h)).toFixed(1)} ${f[h]}`}function c(p){if(p===0)return"0 B/s";const f=["B/s","KB/s","MB/s","GB/s"],v=1024,h=Math.floor(Math.log(p)/Math.log(v));return`${(p/Math.pow(v,h)).toFixed(1)} ${f[h]}`}function m(p){const f=Math.floor(p/3600),v=Math.floor(p%3600/60),h=Math.floor(p%60);return f>0?`${f}:${v.toString().padStart(2,"0")}:${h.toString().padStart(2,"0")}`:`${v}:${h.toString().padStart(2,"0")}`}return(p,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["upload-progress-item",t.value]),"data-testid":`video-upload-progress-${p.upload.id}`},[e.createElementVNode("div",w$,[e.createElementVNode("div",k$,[e.createVNode(e.unref(G.IonIcon),{icon:o.value,class:"file-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("div",_$,[e.createElementVNode("h4",E$,e.toDisplayString(p.upload.filename),1),e.createElementVNode("p",S$,[e.createElementVNode("span",x$,e.toDisplayString(u(p.upload.bytesTotal||0)),1),p.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",C$,"•")):e.createCommentVNode("",!0),p.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",V$,e.toDisplayString(c(p.upload.uploadSpeed||0)),1)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("span",N$,"•")):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("span",T$,e.toDisplayString(l.value)+" remaining ",1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",B$,[p.upload.status==="completed"?(e.openBlock(),e.createElementBlock("div",M$,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(hm)},null,8,["icon"])])):p.upload.status==="error"?(e.openBlock(),e.createElementBlock("div",$$,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Sh),"aria-hidden":"true"},null,8,["icon"])])):p.upload.status==="processing"?(e.openBlock(),e.createElementBlock("div",I$,[e.createVNode(e.unref(G.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),p.upload.status==="uploading"?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:3,fill:"clear",size:"small",onClick:f[0]||(f[0]=v=>p.$emit("cancel")),"data-testid":"btn-cancel-video-upload","aria-label":"Cancel upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Fo),slot:"icon-only"},null,8,["icon"])]),_:1})):p.upload.status==="error"?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:4,fill:"clear",size:"small",onClick:f[1]||(f[1]=v=>p.$emit("retry")),"data-testid":"btn-retry-video-upload","aria-label":"Retry upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(zo),slot:"icon-only"},null,8,["icon"])]),_:1})):p.upload.status==="completed"?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:5,fill:"clear",size:"small",onClick:f[2]||(f[2]=v=>p.$emit("remove")),"data-testid":"btn-remove-video-upload","aria-label":"Remove from list"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Fo),slot:"icon-only"},null,8,["icon"])]),_:1})):e.createCommentVNode("",!0)])]),i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"progress-bar-container","data-testid":"video-upload-progress-bar",role:"progressbar","aria-valuenow":Math.round(r.value),"aria-valuemin":"0","aria-valuemax":"100","aria-label":p.upload.status==="processing"?"Processing progress":"Upload progress"},[e.createElementVNode("div",F$,[e.createElementVNode("div",{class:e.normalizeClass(["progress-fill",{indeterminate:p.upload.status==="processing"}]),style:e.normalizeStyle({width:r.value+"%"})},null,6)]),e.createElementVNode("span",A$,e.toDisplayString(Math.round(r.value))+"%",1)],8,D$)):e.createCommentVNode("",!0),p.upload.error?(e.openBlock(),e.createElementBlock("div",R$,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(lg)},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(p.upload.error),1)])):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("div",L$,[e.createElementVNode("img",{src:s.value,alt:p.upload.filename},null,8,P$),d.value?(e.openBlock(),e.createElementBlock("div",U$,e.toDisplayString(m(d.value)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,y$))}}),z$=Ie(O$,[["__scopeId","data-v-9eacbf91"]]),hs=4,j$=500,W$=new Set([408,425,429,500,502,503,504,520,521,522,523,524,525]);function hr(a){return typeof a=="object"&&a!==null}function Fc(a){return hr(a)?typeof a.upload_url=="string"&&typeof a.upload_id=="string"&&typeof a.media_uuid=="string"&&typeof a.expires_at=="string":!1}function Z$(a){if(Fc(a))return a;if(hr(a)&&Fc(a.data))return a.data;throw new Error("Invalid upload response from backend")}function Ac(a){return hr(a)?typeof a.uuid=="string"&&typeof a.processing_status=="string":!1}function H$(a){if(Ac(a))return a;if(hr(a)&&Ac(a.data))return a.data;throw new Error("Invalid media response from backend")}function G$(a){const n=a.error_message;if(typeof n=="string"&&n.trim()!=="")return n.trim();const t=a.custom_properties;if(hr(t)){const o=t.error_message;if(typeof o=="string"&&o.trim()!=="")return o.trim()}return""}function xr(a){return a?{...a}:{}}function Rc(a,n="PUT"){return typeof a.method=="string"&&a.method.trim()!==""?a.method.trim().toUpperCase():n}function X$(a){return a.resumable===!0?!0:/tusupload/i.test(a.upload_url)}function K$(a){if(typeof btoa=="function")try{return btoa(unescape(encodeURIComponent(a)))}catch{return btoa(a)}throw new Error("Base64 encoder is unavailable for TUS metadata")}function J$(a,n){return[["filename",a.filename],["filetype",a.file.type||"application/octet-stream"],["uploadid",n.upload_id],["mediauuid",n.media_uuid]].map(([o,i])=>`${o} ${K$(i)}`).join(",")}function Cr(a,n){const t=Math.max(a.bytesTotal,1);a.bytesUploaded=n,a.progress=Math.min(100,n/t*100);const o=Math.max((Date.now()-a.startedAt.getTime())/1e3,.001);a.uploadSpeed=n/o;const i=Math.max(t-n,0);a.timeRemaining=i/Math.max(a.uploadSpeed,1)}function q$(a,n){return a instanceof Error?a:new Error(n)}function Y$(a){if(!(a instanceof Error))return!1;const n=a.message.toLowerCase();return n.includes("failed to fetch")||n.includes("networkerror")||n.includes("network request failed")||n.includes("err_ssl_")}function Lc(a){const n=Math.max(0,a-1),t=j$*Math.pow(2,n);return Math.min(5e3,t)}function Pc(a){return new Promise(n=>{window.setTimeout(n,a)})}async function Uc(a,n){for(let t=1;t<=hs;t+=1)try{const o=await n();if(o.ok||!W$.has(o.status)||t>=hs)return o;await Pc(Lc(t))}catch(o){if(!Y$(o)||t>=hs)throw o;await Pc(Lc(t))}throw new Error(`${a} failed after retry attempts`)}function Q$(a={}){const n=e.ref(new Map),t=e.ref(new Set),o=e.ref(null),i=new Map,r=new Map,l=e.computed(()=>t.value.size>0),s=e.computed(()=>Array.from(n.value.values())),d=e.computed(()=>{const C=Array.from(n.value.values());return C.length===0?0:C.reduce((_,L)=>_+L.progress,0)/C.length});function u(C){o.value=C}function c(){}async function m(C){var _;const M=C.filter(L=>p(L));if(M.length!==0&&((_=a.onFilesSelected)==null||_.call(a,M),a.autoUpload!==!1))for(const L of M)await f(L)}function p(C){return!(a.maxFileSize&&C.size>a.maxFileSize||a.allowedFormats&&a.allowedFormats.length>0&&!a.allowedFormats.includes(C.type))}async function f(C){var L,j,B;const M=$(C);if(n.value.has(M)){const U=n.value.get(M);if((U==null?void 0:U.status)==="uploading")return}const _={id:M,file:C,filename:C.name,progress:0,status:"pending",startedAt:new Date,bytesTotal:C.size,bytesUploaded:0};n.value.set(_.id,_),t.value.add(_.id);try{_.status="uploading",(L=a.onUploadStart)==null||L.call(a,_);const U=await v(C);a.resumable===!0||U.resumable===!0?await k(_,U):await h(_,U),_.status="processing",_.progress=100;const R=await D(U.media_uuid);_.status="completed",_.media=R,(j=a.onUploadComplete)==null||j.call(a,R)}catch(U){if(_.status!=="cancelled"){const S=q$(U,"Upload failed");_.status="error",_.error=S.message,(B=a.onUploadError)==null||B.call(a,S,_)}}finally{t.value.delete(_.id),i.delete(_.id),r.delete(_.id)}}async function v(C){if(!o.value)throw new Error("API client not configured");const M={collection:a.collection||"videos",filename:C.name,size:C.size,mime_type:C.type,...a.ownerUuid!==void 0?{ownerUuid:a.ownerUuid}:{},...a.ownerType!==void 0?{ownerType:a.ownerType}:{}},_=await o.value.post("/api/v1/video/upload",M);return Z$(_)}async function h(C,M){const _=new XMLHttpRequest,L=Rc(M),j=xr(M.headers);return new Promise((B,U)=>{_.upload.addEventListener("progress",S=>{var R;S.lengthComputable&&(Cr(C,S.loaded),(R=a.onUploadProgress)==null||R.call(a,C))}),_.addEventListener("load",()=>{i.delete(C.id),_.status>=200&&_.status<300?B():U(new Error(`Upload failed with status ${_.status}`))}),_.addEventListener("error",()=>{i.delete(C.id),U(new Error("Upload failed"))}),_.addEventListener("abort",()=>{i.delete(C.id),U(new Error("Upload cancelled"))}),_.open(L,M.upload_url),Object.entries(j).forEach(([S,R])=>{_.setRequestHeader(S,R)}),!Object.keys(j).some(S=>S.toLowerCase()==="content-type")&&C.file.type&&_.setRequestHeader("Content-Type",C.file.type),i.set(C.id,_),_.send(C.file)})}async function k(C,M){var U;if(X$(M)){await E(C,M);return}const _=a.chunkSize||5*1024*1024,L=w(C.file,_),j=new AbortController;r.set(C.id,j);const B=await g(M.upload_id);B&&(L.forEach(S=>{S.end<=B.bytesUploaded&&(S.uploaded=!0)}),Cr(C,B.bytesUploaded));for(const S of L)S.uploaded||(await b(C,M,S,j),Cr(C,S.end),(U=a.onUploadProgress)==null||U.call(a,C))}async function E(C,M){var O;const _=new AbortController;r.set(C.id,_);const L={...xr(M.headers),"Tus-Resumable":"1.0.0","Upload-Length":String(C.file.size),"Upload-Metadata":J$(C,M)},j=await Uc("Resumable upload initialization",()=>fetch(M.upload_url,{method:"POST",headers:L,signal:_.signal}));if(!j.ok)throw new Error(`Failed to initialize resumable upload: ${j.status}`);const B=j.headers.get("Location");if(!B)throw new Error("Resumable upload endpoint did not return upload location");const U=new URL(B,M.upload_url).toString(),S=a.chunkSize||5*1024*1024;let R=0;for(;R<C.file.size;){const K=Math.min(R+S,C.file.size),se=C.file.slice(R,K),xe={...xr(M.headers),"Tus-Resumable":"1.0.0","Upload-Offset":String(R),"Content-Type":"application/offset+octet-stream"},ue=await Uc("Resumable chunk upload",()=>fetch(U,{method:"PATCH",headers:xe,body:se,signal:_.signal}));if(ue.status===409){const H=Number(ue.headers.get("Upload-Offset")??"-1");if(Number.isFinite(H)&&H>=0){R=H;continue}}if(!ue.ok)throw new Error(`Resumable chunk upload failed: ${ue.status}`);const le=Number(ue.headers.get("Upload-Offset")??String(K));R=Number.isFinite(le)&&le>R?le:K,Cr(C,R),(O=a.onUploadProgress)==null||O.call(a,C)}}function w(C,M){const _=[];let L=0,j=0;for(;L<C.size;){const B=Math.min(L+M,C.size);_.push({start:L,end:B,blob:C.slice(L,B),index:j,uploaded:!1}),L=B,j++}return _}async function b(C,M,_,L){const j={...xr(M.headers),"Content-Range":`bytes ${_.start}-${_.end-1}/${C.file.size}`,"Content-Type":C.file.type||"application/octet-stream"},B=await fetch(M.upload_url,{method:Rc(M),headers:j,body:_.blob,signal:L.signal});if(!B.ok)throw new Error(`Chunk upload failed: ${B.status}`);_.uploaded=!0}async function g(C){return null}async function D(C){if(!o.value)throw new Error("API client not configured");const M=60;let _=0;for(;_<M;){const L=await o.value.get(`/api/v1/video/${C}`),j=H$(L),B=String(j.processing_status);if(B==="ready")return j;if(B==="failed"||B==="error"){const U=G$(j);throw new Error(U!==""?U:"Video processing failed")}await new Promise(U=>{window.setTimeout(U,5e3)}),_++}throw new Error("Video processing timeout")}function T(C){const M=n.value.get(C);if(!M)return;const _=i.get(C);_&&(_.abort(),i.delete(C));const L=r.get(C);L&&(L.abort(),r.delete(C)),M.status="cancelled",M.error="Upload cancelled",t.value.delete(C)}async function F(C){const M=n.value.get(C);M&&(M.status="pending",M.error="",M.progress=0,M.bytesUploaded=0,await f(M.file))}function V(C){n.value.delete(C),t.value.delete(C),i.delete(C),r.delete(C)}function I(){Array.from(n.value.entries()).forEach(([C,M])=>{M.status==="completed"&&n.value.delete(C)})}function $(C){return`${C.name}-${C.size}-${Date.now()}`}return{uploads:s,isUploading:l,totalProgress:d,openFilePicker:c,handleFileSelect:m,validateFile:p,startUpload:f,cancelUpload:T,retryUpload:F,removeUpload:V,clearCompleted:I,setApiClient:u}}const eI=["accept","multiple"],tI={key:0,class:"upload-trigger","data-testid":"video-uploader-trigger"},aI=["onKeydown"],nI={key:1,class:"upload-list","data-testid":"video-upload-list"},oI={class:"drag-content"},iI=e.defineComponent({__name:"VideoUploader",props:{collection:{default:"videos"},multiple:{type:Boolean,default:!1},maxFileSize:{default:5*1024*1024*1024},maxDuration:{},allowedFormats:{default:()=>["video/mp4","video/webm","video/quicktime","video/x-msvideo"]},autoUpload:{type:Boolean,default:!0},resumable:{type:Boolean,default:!0},label:{default:"Upload Video"},description:{default:"Click to select or drag and drop"},ownerUuid:{},ownerType:{},apiClient:{}},emits:["upload-start","upload-progress","upload-complete","upload-error","files-selected"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(),r=e.ref(!1),{uploads:l,isUploading:s,handleFileSelect:d,cancelUpload:u,retryUpload:c,removeUpload:m,setApiClient:p}=Q$({collection:t.collection,...t.ownerUuid!==void 0?{ownerUuid:t.ownerUuid}:{},...t.ownerType!==void 0?{ownerType:t.ownerType}:{},maxFileSize:t.maxFileSize,...t.maxDuration!==void 0?{maxDuration:t.maxDuration}:{},allowedFormats:t.allowedFormats,autoUpload:t.autoUpload,resumable:t.resumable,onUploadStart:g=>o("upload-start",g),onUploadProgress:g=>o("upload-progress",g),onUploadComplete:g=>o("upload-complete",g),onUploadError:(g,D)=>o("upload-error",g,D),onFilesSelected:g=>o("files-selected",g)});t.apiClient&&p(t.apiClient);const f=e.computed(()=>t.allowedFormats.join(",")),v=e.computed(()=>t.multiple||l.value.length===0);function h(){i.value&&i.value.click()}function k(g){const D=g.target,T=Array.from(D.files||[]);T.length>0&&(d(T),D.value="")}function E(g){var F;g.preventDefault(),r.value=!1;const T=Array.from(((F=g.dataTransfer)==null?void 0:F.files)||[]).filter(V=>V.type.startsWith("video/"));T.length>0&&d(T)}function w(g){var D;g.preventDefault(),(D=g.dataTransfer)!=null&&D.types.includes("Files")&&(r.value=!0)}function b(g){g.target.closest(".video-uploader")||(r.value=!1)}return e.onMounted(()=>{document.addEventListener("dragover",w),document.addEventListener("dragleave",b),document.addEventListener("drop",g=>g.preventDefault())}),e.onUnmounted(()=>{document.removeEventListener("dragover",w),document.removeEventListener("dragleave",b),document.removeEventListener("drop",g=>g.preventDefault())}),(g,D)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-uploader",{"is-uploading":e.unref(s)}]),"data-testid":"video-uploader"},[e.createElementVNode("input",{ref_key:"fileInputEl",ref:i,type:"file",accept:f.value,multiple:g.multiple,onChange:k,"data-testid":"video-uploader-input","aria-label":"Select video files to upload",hidden:""},null,40,eI),!e.unref(s)||v.value?(e.openBlock(),e.createElementBlock("div",tI,[e.renderSlot(g.$slots,"trigger",{open:h},()=>[e.createElementVNode("div",{class:"default-upload-area","data-testid":"video-uploader-area",role:"button",tabindex:"0","aria-label":"Click to select video for upload",onClick:h,onKeydown:[e.withKeys(h,["enter"]),e.withKeys(e.withModifiers(h,["prevent"]),["space"])]},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(km),class:"upload-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("h3",null,e.toDisplayString(g.label),1),e.createElementVNode("p",null,e.toDisplayString(g.description),1),e.createVNode(e.unref(G.IonButton),{size:"small","data-testid":"btn-select-video","aria-label":"Select video file"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(fd),slot:"start","aria-hidden":"true"},null,8,["icon"]),D[2]||(D[2]=e.createTextVNode(" Select Video ",-1))]),_:1})],40,aI)],!0)])):e.createCommentVNode("",!0),e.unref(l).length>0?(e.openBlock(),e.createElementBlock("div",nI,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),T=>(e.openBlock(),e.createBlock(z$,{key:T.id,upload:T,onCancel:F=>e.unref(u)(T.id),onRetry:F=>e.unref(c)(T.id),onRemove:F=>e.unref(m)(T.id)},null,8,["upload","onCancel","onRetry","onRemove"]))),128))])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"drag-overlay","data-testid":"video-uploader-drag-overlay",onDrop:E,onDragover:D[0]||(D[0]=e.withModifiers(()=>{},["prevent"])),onDragleave:D[1]||(D[1]=T=>r.value=!1)},[e.createElementVNode("div",oI,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(oi),"aria-hidden":"true"},null,8,["icon"]),D[3]||(D[3]=e.createElementVNode("p",null,"Drop video files here",-1))])],32)):e.createCommentVNode("",!0)],2))}}),rI=Ie(iI,[["__scopeId","data-v-ea7587f7"]]),lI=["aria-valuenow","aria-valuemax","aria-label"],sI={class:"progress-bar"},dI={class:"time-display","data-testid":"video-time-display"},uI={class:"current-time"},cI={class:"duration"},mI={class:"control-buttons"},pI={class:"controls-left"},fI=["aria-label"],vI={class:"controls-center"},hI={key:0,class:"volume-controls"},gI=["aria-label"],bI=["value"],yI={class:"controls-right"},wI={key:0,class:"quality-selector"},kI=["aria-expanded"],_I={class:"quality-label"},EI={key:0,class:"quality-menu","data-testid":"video-quality-menu",role:"menu"},SI=["data-testid","aria-label","onClick"],xI=["aria-label"],CI=e.defineComponent({__name:"VideoControls",props:{playing:{type:Boolean},currentTime:{},duration:{},buffered:{},volume:{default:100},muted:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},isLive:{type:Boolean,default:!1},qualityLevels:{default:()=>[]},currentQuality:{default:"Auto"}},emits:["play-pause","play","pause","seek","skip-forward","skip-backward","toggleMute","setVolume","toggleFullscreen","togglePiP","selectQuality"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(!0),r=e.ref(!1),l=e.ref(),s=G.isPlatform("mobile"),d="pictureInPictureEnabled"in document,u=e.computed(()=>({width:`${t.currentTime/t.duration*100}%`})),c=e.computed(()=>({left:`${t.currentTime/t.duration*100}%`})),m=e.computed(()=>{if(!t.buffered||t.buffered.length===0)return{width:"0%"};for(let g=0;g<t.buffered.length;g++){const D=t.buffered.start(g),T=t.buffered.end(g);if(t.currentTime>=D&&t.currentTime<=T)return{width:`${T/t.duration*100}%`}}return t.buffered.length>0?{width:`${t.buffered.end(0)/t.duration*100}%`}:{width:"0%"}}),p=e.computed(()=>t.muted||t.volume===0?ig:t.volume<33?ag:t.volume<66?ng:tg);let f=null;function v(){i.value=!0,h()}function h(){f&&clearTimeout(f),t.playing&&!s&&(f=setTimeout(()=>{i.value=!1},3e3))}function k(g){if(!l.value||t.isLive)return;const D=l.value.getBoundingClientRect(),F=(g.clientX-D.left)/D.width*t.duration;o("seek",Math.max(0,Math.min(F,t.duration)))}function E(g){const D=g.target;o("setVolume",parseInt(D.value))}function w(g){o("selectQuality",g),r.value=!1}function b(g){if(!isFinite(g))return"0:00";const D=Math.floor(g/3600),T=Math.floor(g%3600/60),F=Math.floor(g%60);return D>0?`${D}:${T.toString().padStart(2,"0")}:${F.toString().padStart(2,"0")}`:`${T}:${F.toString().padStart(2,"0")}`}return e.onMounted(()=>{document.addEventListener("mousemove",v),h()}),e.onUnmounted(()=>{document.removeEventListener("mousemove",v),f&&clearTimeout(f)}),(g,D)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-controls",{"controls-visible":i.value}]),"data-testid":"video-controls"},[e.createElementVNode("div",{class:"progress-container","data-testid":"video-progress-bar",role:"slider","aria-valuenow":Math.round(g.currentTime),"aria-valuemin":"0","aria-valuemax":Math.round(g.duration),"aria-label":g.isLive?"Live stream":"Video progress",tabindex:"0",onClick:k},[e.createElementVNode("div",sI,[e.createElementVNode("div",{class:"progress-buffered",style:e.normalizeStyle(m.value)},null,4),e.createElementVNode("div",{class:"progress-played",style:e.normalizeStyle(u.value)},null,4),e.createElementVNode("div",{class:"progress-thumb",style:e.normalizeStyle(c.value)},null,4)]),e.createElementVNode("div",dI,[e.createElementVNode("span",uI,e.toDisplayString(b(g.currentTime)),1),D[7]||(D[7]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",cI,e.toDisplayString(g.isLive?"LIVE":b(g.duration)),1)])],8,lI),e.createElementVNode("div",mI,[e.createElementVNode("div",pI,[e.createElementVNode("button",{class:"control-btn play-pause","data-testid":"btn-video-play-pause",onClick:D[0]||(D[0]=T=>g.$emit("play-pause")),"aria-label":g.playing?"Pause":"Play"},[e.createVNode(e.unref(G.IonIcon),{icon:g.playing?e.unref(Oh):e.unref(jh),"aria-hidden":"true"},null,8,["icon"])],8,fI),g.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"control-btn skip-backward","data-testid":"btn-video-skip-backward",onClick:D[1]||(D[1]=T=>g.$emit("skip-backward")),"aria-label":"Skip backward 10 seconds"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Wh),"aria-hidden":"true"},null,8,["icon"]),D[8]||(D[8]=e.createElementVNode("span",{class:"skip-label"},"10",-1))])),g.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn skip-forward","data-testid":"btn-video-skip-forward",onClick:D[2]||(D[2]=T=>g.$emit("skip-forward")),"aria-label":"Skip forward 10 seconds"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Gh),"aria-hidden":"true"},null,8,["icon"]),D[9]||(D[9]=e.createElementVNode("span",{class:"skip-label"},"10",-1))]))]),e.createElementVNode("div",vI,[e.unref(s)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",hI,[e.createElementVNode("button",{class:"control-btn mute-btn","data-testid":"btn-video-mute",onClick:D[3]||(D[3]=T=>g.$emit("toggleMute")),"aria-label":g.muted?"Unmute":"Mute"},[e.createVNode(e.unref(G.IonIcon),{icon:p.value,"aria-hidden":"true"},null,8,["icon"])],8,gI),e.createElementVNode("input",{type:"range",class:"volume-slider","data-testid":"slider-video-volume",min:"0",max:"100",value:g.muted?0:g.volume,onInput:E,"aria-label":"Volume"},null,40,bI)]))]),e.createElementVNode("div",yI,[g.qualityLevels.length>1?(e.openBlock(),e.createElementBlock("div",wI,[e.createElementVNode("button",{class:"control-btn quality-btn","data-testid":"btn-video-quality",onClick:D[4]||(D[4]=T=>r.value=!r.value),"aria-label":"Quality settings","aria-expanded":r.value},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Qh),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("span",_I,e.toDisplayString(g.currentQuality),1)],8,kI),r.value?(e.openBlock(),e.createElementBlock("div",EI,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.qualityLevels,T=>(e.openBlock(),e.createElementBlock("button",{key:T.label,class:e.normalizeClass(["quality-option",{active:T.label===g.currentQuality}]),"data-testid":`btn-video-quality-${T.label}`,"aria-label":`Set quality to ${T.label}`,role:"menuitem",onClick:F=>w(T)},e.toDisplayString(T.label),11,SI))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!e.unref(s)&&d?(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn pip-btn","data-testid":"btn-video-pip",onClick:D[5]||(D[5]=T=>g.$emit("togglePiP")),"aria-label":"Picture in Picture"},[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(eg),"aria-hidden":"true"},null,8,["icon"])])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"control-btn fullscreen-btn","data-testid":"btn-video-fullscreen",onClick:D[6]||(D[6]=T=>g.$emit("toggleFullscreen")),"aria-label":g.fullscreen?"Exit fullscreen":"Enter fullscreen"},[e.createVNode(e.unref(G.IonIcon),{icon:g.fullscreen?e.unref(Mh):e.unref(Dh),"aria-hidden":"true"},null,8,["icon"])],8,xI)])])],2))}}),VI=Ie(CI,[["__scopeId","data-v-2ae77c13"]]);function NI(a={}){var se,xe,ue;const n=e.ref(),t=e.ref(),o=e.ref(!1),i=e.ref(0),r=e.ref(0),l=e.ref(100),s=e.ref(a.muted||!1),d=e.ref(!1),u=e.ref(),c=e.ref(1),m=e.ref(!1),p=e.ref(null),f=e.ref("idle"),v=e.ref(a.playbackUrl||((se=a.media)==null?void 0:se.playback_url)||((xe=a.media)==null?void 0:xe.url)||""),h=e.ref(null),k=e.ref(a.isLive||!1),E=e.ref(null),w=e.ref(null);function b(le){w.value=le}if((ue=a.media)!=null&&ue.token_expires_at){const le=new Date(a.media.token_expires_at);h.value=Number.isNaN(le.getTime())?null:le}async function g(){var H;const le=k.value?t.value:n.value;if(le)try{await le.play(),o.value=!0,f.value=k.value?"live":"playing",(H=a.onPlay)==null||H.call(a)}catch{p.value="Failed to play video",f.value="error"}}function D(){var H;const le=k.value?t.value:n.value;le&&(le.pause(),o.value=!1,f.value="paused",(H=a.onPause)==null||H.call(a))}function T(){o.value?D():g()}function F(le){const H=k.value?t.value:n.value;if(!H||k.value)return;const y=Number.isFinite(H.duration)?H.duration:le;H.currentTime=Math.max(0,Math.min(le,y)),i.value=H.currentTime}function V(le=10){const H=n.value;!H||k.value||F(H.currentTime+le)}function I(le=10){const H=n.value;!H||k.value||F(H.currentTime-le)}function $(){const le=k.value?t.value:n.value;le&&(le.muted=!le.muted,s.value=le.muted)}function C(le){const H=k.value?t.value:n.value;if(!H)return;const y=Math.max(0,Math.min(100,le));H.volume=y/100,l.value=y,y>0&&H.muted&&(H.muted=!1,s.value=!1)}function M(le){const H=n.value;!H||k.value||(H.playbackRate=le,c.value=le)}async function _(){const le=document.querySelector(".video-player-container");if(le)try{document.fullscreenElement?(await document.exitFullscreen(),d.value=!1):(await le.requestFullscreen(),d.value=!0)}catch{}}async function L(){const le=k.value?t.value:n.value;if(le)try{document.pictureInPictureElement?await document.exitPictureInPicture():document.pictureInPictureEnabled&&await le.requestPictureInPicture()}catch{}}async function j(){var H;p.value=null,f.value="loading",(H=a.media)!=null&&H.provider&&a.media.provider!=="local"&&await B();const le=k.value?t.value:n.value;le&&(le.load(),await g())}async function B(){if(!(!w.value||!a.media))try{m.value=!0;const le=await w.value.get(`/api/v1/video/${a.media.uuid}/playback`);v.value=le.playback_url,h.value=new Date(le.token_expires_at);const H=k.value?t.value:n.value;if(H&&H.src!==v.value){const y=!H.paused,A=H.currentTime;H.src=v.value,k.value||(H.currentTime=A),y&&await g()}}catch{p.value="Failed to refresh playback token",f.value="error"}finally{m.value=!1}}async function U(le){if(t.value){if(t.value.canPlayType("application/vnd.apple.mpegurl")){t.value.src=le;return}try{t.value.src=le}catch{p.value="Live streaming not supported in this browser",f.value="error"}}}function S(){E.value&&(E.value.destroy(),E.value=null)}function R(){var H;const le=k.value?t.value:n.value;le&&(i.value=le.currentTime,r.value=le.duration,(H=a.onTimeUpdate)==null||H.call(a,le.currentTime))}const O=e.computed(()=>{if(!u.value||u.value.length===0||!r.value)return 0;for(let le=0;le<u.value.length;le++){const H=u.value.start(le),y=u.value.end(le);if(i.value>=H&&i.value<=y)return y/r.value*100}return 0});function K(){if(!h.value)return!1;const le=new Date;return h.value.getTime()-le.getTime()<5*60*1e3}return e.watch([n,t],([le,H])=>{const y=k.value?H:le;y&&(y.addEventListener("timeupdate",R),y.addEventListener("loadedmetadata",()=>{r.value=y.duration,f.value="ready"}),y.addEventListener("progress",()=>{u.value=y.buffered}),y.addEventListener("ended",()=>{var A;o.value=!1,f.value="ended",(A=a.onEnded)==null||A.call(a)}),y.addEventListener("error",A=>{var W;f.value="error",(W=a.onError)==null||W.call(a,"Video playback error")}),y.volume=l.value/100,y.muted=s.value)}),e.onUnmounted(()=>{S();const le=k.value?t.value:n.value;le&&le.removeEventListener("timeupdate",R)}),{videoEl:n,liveVideoEl:t,playing:o,currentTime:i,duration:r,volume:l,muted:s,isFullscreen:d,bufferedRanges:u,bufferedPercent:O,playbackRate:c,isLoading:m,error:p,status:f,currentPlaybackUrl:v,tokenExpiresAt:h,play:g,pause:D,togglePlayPause:T,seek:F,skipForward:V,skipBackward:I,toggleMute:$,setVolume:C,setPlaybackRate:M,toggleFullscreen:_,togglePiP:L,retry:j,refreshToken:B,setupLiveStream:U,setApiClient:b,shouldRefreshToken:K}}const TI=["src","poster","controls","autoplay","muted","loop","preload"],BI={key:1,ref:"livePlayerEl",class:"live-player"},MI=["controls","muted"],$I={key:0,class:"live-indicator","data-testid":"video-live-indicator","aria-label":"Live stream"},II={key:2,class:"video-loading","data-testid":"video-loading",role:"status","aria-label":"Loading video"},DI={key:3,class:"video-error","data-testid":"video-error",role:"alert"},FI={key:5,class:"gesture-zones","data-testid":"video-gesture-zones"},AI=e.defineComponent({__name:"VideoPlayer",props:{media:{},playbackUrl:{},apiClient:{},isLive:{type:Boolean,default:!1},controls:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},muted:{type:Boolean,default:!1},loop:{type:Boolean,default:!1},poster:{},preload:{default:"metadata"},showCustomControls:{type:Boolean,default:!1},enableGestures:{type:Boolean,default:!0},className:{},crossorigin:{}},emits:["play","pause","ended","error","timeupdate","loadedmetadata","progress"],setup(a,{emit:n}){const t=a,o=n,{videoEl:i,liveVideoEl:r,playing:l,currentTime:s,duration:d,volume:u,muted:c,isFullscreen:m,bufferedRanges:p,isLoading:f,error:v,status:h,currentPlaybackUrl:k,tokenExpiresAt:E,play:w,pause:b,seek:g,toggleMute:D,setVolume:T,toggleFullscreen:F,togglePlayPause:V,skipForward:I,skipBackward:$,retry:C,refreshToken:M,setApiClient:_,shouldRefreshToken:L,setupLiveStream:j}=NI({...t.media!==void 0?{media:t.media}:{},...t.playbackUrl!==void 0?{playbackUrl:t.playbackUrl}:{},isLive:t.isLive??!1,autoplay:t.autoplay??!1,muted:t.muted??!1});async function B(){await M()}const U=e.computed(()=>{const W=["video-player-container"];return t.className&&W.push(t.className),m.value&&W.push("fullscreen"),t.isLive&&W.push("is-live"),l.value&&W.push("is-playing"),f.value&&W.push("is-loading"),W}),S=e.computed(()=>{var W,q;if(t.poster)return t.poster;if((W=t.media)!=null&&W.poster_url)return t.media.poster_url;if((q=t.media)!=null&&q.thumbnail_url)return t.media.thumbnail_url});function R(W){const q=W.target;o("loadedmetadata",{duration:q.duration,width:q.videoWidth,height:q.videoHeight})}function O(W){const q=W.target;s.value=q.currentTime,o("timeupdate",q.currentTime)}function K(){l.value=!0,o("play")}function se(){l.value=!1,o("pause")}function xe(){l.value=!1,o("ended")}function ue(W){const q=W.target;let de="Failed to load video";if(q.error)switch(q.error.code){case q.error.MEDIA_ERR_ABORTED:de="Video playback aborted";break;case q.error.MEDIA_ERR_NETWORK:de="Network error while loading video";break;case q.error.MEDIA_ERR_DECODE:de="Video decoding error";break;case q.error.MEDIA_ERR_SRC_NOT_SUPPORTED:de="Video format not supported";break}v.value=de,o("error",de)}function le(W){const q=W.target;p.value=q.buffered,o("progress",q.buffered)}function H(){f.value=!0}function y(){f.value=!1}e.watch(()=>t.apiClient,W=>{W&&_(W)},{immediate:!0}),e.watch(()=>t.playbackUrl,W=>{typeof W=="string"&&W.length>0&&(k.value=W)},{immediate:!0}),e.watch(()=>{var W;return(W=t.media)==null?void 0:W.token_expires_at},W=>{if(!W){E.value=null;return}const q=new Date(W);E.value=Number.isNaN(q.getTime())?null:q},{immediate:!0}),e.watch(()=>{var W;return(W=t.media)==null?void 0:W.playback_url},async(W,q)=>{if(t.playbackUrl||!W||W===q)return;const de=i.value;if(!de||t.isLive){k.value=W;return}const Pe=!de.paused,ge=de.currentTime;k.value=W,await e.nextTick();try{de.currentTime=ge}catch{}Pe&&await w()},{immediate:!0});let A=null;return e.watch(()=>t.isLive,async W=>{var de;if(!W)return;const q=t.playbackUrl||((de=t.media)==null?void 0:de.playback_url)||"";q&&await j(q)},{immediate:!0}),e.onMounted(()=>{var W;(W=t.media)!=null&&W.provider&&t.media.provider!=="local"&&(A=setInterval(()=>{L()&&B()},3e4)),G.isPlatform("mobile")&&t.showCustomControls}),e.onUnmounted(()=>{A&&clearInterval(A)}),(W,q)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-player-container",U.value]),"data-testid":"video-player"},[W.isLive?(e.openBlock(),e.createElementBlock("div",BI,[e.createElementVNode("video",{ref_key:"liveVideoEl",ref:r,controls:W.controls&&!W.showCustomControls,autoplay:!0,muted:e.unref(c),onPlay:K,onPause:se,onError:ue,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,MI),e.unref(h)==="live"?(e.openBlock(),e.createElementBlock("div",$I,[...q[3]||(q[3]=[e.createElementVNode("span",{class:"live-dot"},null,-1),e.createElementVNode("span",{class:"live-text"},"LIVE",-1)])])):e.createCommentVNode("",!0)],512)):(e.openBlock(),e.createElementBlock("video",{key:0,ref_key:"videoEl",ref:i,src:e.unref(k),poster:S.value,controls:W.controls&&!W.showCustomControls,autoplay:W.autoplay,muted:e.unref(c),loop:W.loop,preload:W.preload,onLoadedmetadata:R,onTimeupdate:O,onPlay:K,onPause:se,onEnded:xe,onError:ue,onProgress:le,onWaiting:H,onCanplay:y,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,TI)),e.unref(f)?(e.openBlock(),e.createElementBlock("div",II,[e.createVNode(e.unref(G.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",DI,[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(vd),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("p",null,e.toDisplayString(e.unref(v)),1),e.createVNode(e.unref(G.IonButton),{size:"small",onClick:e.unref(C),"data-testid":"btn-video-retry","aria-label":"Retry loading video"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{icon:e.unref(zo),slot:"start","aria-hidden":"true"},null,8,["icon"]),q[4]||(q[4]=e.createTextVNode(" Retry ",-1))]),_:1},8,["onClick"])])):e.createCommentVNode("",!0),W.showCustomControls&&!e.unref(v)?(e.openBlock(),e.createBlock(VI,{key:4,playing:e.unref(l),currentTime:e.unref(s),duration:e.unref(d),buffered:e.unref(p),volume:e.unref(u),muted:e.unref(c),fullscreen:e.unref(m),isLive:W.isLive,onPlay:e.unref(w),onPause:e.unref(b),onSeek:e.unref(g),onToggleMute:e.unref(D),onSetVolume:e.unref(T),onToggleFullscreen:e.unref(F),class:"custom-controls"},null,8,["playing","currentTime","duration","buffered","volume","muted","fullscreen","isLive","onPlay","onPause","onSeek","onToggleMute","onSetVolume","onToggleFullscreen"])):e.createCommentVNode("",!0),W.enableGestures&&!e.unref(v)?(e.openBlock(),e.createElementBlock("div",FI,[e.createElementVNode("div",{class:"gesture-left","data-testid":"video-gesture-skip-back","aria-label":"Double tap to skip backward",onDblclick:q[0]||(q[0]=(...de)=>e.unref($)&&e.unref($)(...de))},null,32),e.createElementVNode("div",{class:"gesture-center","data-testid":"video-gesture-play-pause","aria-label":"Tap to play or pause",onClick:q[1]||(q[1]=(...de)=>e.unref(V)&&e.unref(V)(...de))}),e.createElementVNode("div",{class:"gesture-right","data-testid":"video-gesture-skip-forward","aria-label":"Double tap to skip forward",onDblclick:q[2]||(q[2]=(...de)=>e.unref(I)&&e.unref(I)(...de))},null,32)])):e.createCommentVNode("",!0)],2))}}),hf=Ie(AI,[["__scopeId","data-v-b8db4951"]]),RI=ml.defineStore("video",()=>{const a=e.ref(new Map),n=e.ref(new Map),t=e.ref(new Map),o=e.ref(null),i=e.ref(!1),r=e.computed(()=>Array.from(a.value.values())),l=e.computed(()=>Array.from(n.value.values())),s=e.computed(()=>l.value.filter(j=>j.status==="live")),d=e.computed(()=>r.value.filter(j=>j.processing_status==="processing"));function u(j){a.value.set(j.uuid,j)}function c(j,B){const U=a.value.get(j);U&&a.value.set(j,{...U,...B})}function m(j){a.value.delete(j)}function p(j){return a.value.get(j)}function f(j){n.value.set(j.id,j)}function v(j,B){const U=n.value.get(j);U&&n.value.set(j,{...U,...B})}function h(j,B){const U=n.value.get(j);U&&n.value.set(j,{...U,status:B.status,viewer_count:B.viewer_count,peak_viewers:B.peak_viewers})}function k(j){n.value.delete(j)}function E(j){return n.value.get(j)}function w(j){return l.value.find(B=>B.media_uuid===j)}function b(j){t.value.set(j.id,j)}function g(j,B){const U=t.value.get(j);U&&t.value.set(j,{...U,...B})}function D(j){t.value.delete(j)}function T(j){return t.value.get(j)}function F(j){return Array.from(t.value.values()).filter(B=>B.media_uuid===j)}function V(j){o.value=j}function I(j){o.value&&(o.value={...o.value,...j})}function $(){o.value=null}function C(j){i.value=j}function M(){a.value.clear(),n.value.clear(),t.value.clear(),o.value=null,i.value=!1}function _(j){a.value.clear(),j.forEach(B=>{a.value.set(B.uuid,B)})}function L(j){n.value.clear(),j.forEach(B=>{n.value.set(B.id,B)})}return{videos:a,liveStreams:n,exportJobs:t,currentEditorState:o,isProcessing:i,allVideos:r,allLiveStreams:l,activeLiveStreams:s,processingVideos:d,setVideo:u,updateVideo:c,removeVideo:m,getVideo:p,setLiveStream:f,updateLiveStream:v,updateLiveStreamStats:h,removeLiveStream:k,getLiveStream:E,getLiveStreamByMedia:w,addExportJob:b,updateExportJob:g,removeExportJob:D,getExportJob:T,getExportJobsByMedia:F,setEditorState:V,updateEditorState:I,clearEditorState:$,setProcessing:C,clearAll:M,loadVideos:_,loadLiveStreams:L}});let No=null;function LI(a){No=a}const Vr={post:async(a,n)=>{if(!No)throw new Error("HTTP client not configured");return await No(`/api/v1/video${a}`,{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}})},get:async a=>{if(!No)throw new Error("HTTP client not configured");return await No(`/api/v1/video${a}`)},delete:async a=>{if(!No)throw new Error("HTTP client not configured");return await No(`/api/v1/video${a}`,{method:"DELETE"})}};function Nr(a,n=null){const t=typeof a.id=="string"&&a.id!==""?a.id:typeof a.stream_id=="string"&&a.stream_id!==""?a.stream_id:n==null?void 0:n.id;if(!t)throw new Error("Invalid live stream response: missing stream id");const o={id:t,media_uuid:a.media_uuid??(n==null?void 0:n.media_uuid)??"",stream_key:a.stream_key??(n==null?void 0:n.stream_key)??"",rtmp_url:a.rtmp_url??(n==null?void 0:n.rtmp_url)??"",status:a.status??(n==null?void 0:n.status)??"idle",viewer_count:a.viewer_count??(n==null?void 0:n.viewer_count)??0,peak_viewers:a.peak_viewers??(n==null?void 0:n.peak_viewers)??0,auto_record:a.auto_record??(n==null?void 0:n.auto_record)??!0,low_latency:a.low_latency??(n==null?void 0:n.low_latency)??!1},i=a.playback_url??(n==null?void 0:n.playback_url);i!==void 0&&(o.playback_url=i);const r=a.started_at??(n==null?void 0:n.started_at);r!==void 0&&(o.started_at=r);const l=a.ended_at??(n==null?void 0:n.ended_at);return l!==void 0&&(o.ended_at=l),(n==null?void 0:n.metadata)!==void 0&&(o.metadata=n.metadata),(n==null?void 0:n.vod_media_uuid)!==void 0&&(o.vod_media_uuid=n.vod_media_uuid),o}function gs(a,n){return a instanceof Error&&a.message?a.message:n}function PI(a){const n=RI(),t=e.ref(null),o=e.ref(!1),i=e.ref(!0),r=e.ref(""),l=e.ref(!1),s=e.ref(!1),d=e.ref(null),u=e.ref(null),c=e.ref(0),m=e.ref(0);let p;const f=e.computed(()=>u.value?Math.floor((new Date().getTime()-u.value.getTime())/1e3):0),v=e.computed(()=>{var $;if(!(($=t.value)!=null&&$.playback_url))return null;const I=new URL(t.value.playback_url);return I.searchParams.set("live","true"),o.value&&I.searchParams.set("latency","low"),I.toString()}),h=e.computed(()=>{var I;return((I=t.value)==null?void 0:I.status)==="live"}),k=e.computed(()=>{var I;return((I=t.value)==null?void 0:I.status)==="idle"}),E=e.computed(()=>{var I;return((I=t.value)==null?void 0:I.status)==="ended"});async function w(I={}){l.value=!0,d.value=null;try{const $=await Vr.post("/live",{title:r.value||I.title||"Live Stream",low_latency:I.low_latency??o.value,auto_record:I.auto_record??i.value,...I}),C=Nr($);return t.value=C,n.setLiveStream(C),T(),C}catch($){throw d.value=gs($,"Failed to create stream"),$ instanceof Error?$:new Error(d.value)}finally{l.value=!1}}async function b(){if(!t.value)throw new Error("No active stream");s.value=!0,d.value=null;try{const I=await Vr.post(`/live/${t.value.id}/end`),$=Nr(I,t.value);return t.value=$,n.setLiveStream($),F(),$}catch(I){throw d.value=gs(I,"Failed to end stream"),I instanceof Error?I:new Error(d.value)}finally{s.value=!1}}async function g(){if(t.value)try{const I=await Vr.get(`/live/${t.value.id}`),$=Nr(I,t.value);c.value=$.viewer_count,m.value=$.peak_viewers,t.value=$;const C={status:$.status,viewer_count:$.viewer_count,peak_viewers:$.peak_viewers};$.started_at&&(C.started_at=$.started_at),$.ended_at&&(C.ended_at=$.ended_at),n.updateLiveStreamStats($.id,C),$.status==="live"&&!u.value&&$.started_at&&(u.value=new Date($.started_at)),$.status==="ended"&&F()}catch{}}async function D(I){try{const $=await Vr.get(`/live/${I}`),C=Nr($,t.value);return{rtmp_url:C.rtmp_url,stream_key:C.stream_key,playback_url:C.playback_url||""}}catch($){throw d.value=gs($,"Failed to get stream credentials"),$ instanceof Error?$:new Error(d.value)}}function T(I=5e3){F(),p=window.setInterval(()=>{g()},I)}function F(){p!==void 0&&(clearInterval(p),p=void 0)}async function V(){if(!a)return;const I=n.getLiveStreamByMedia(a);I&&(t.value=I,c.value=I.viewer_count,m.value=I.peak_viewers,I.status==="live"&&(T(),I.started_at&&(u.value=new Date(I.started_at))))}return a&&V(),e.onUnmounted(()=>{F()}),{stream:t,lowLatency:o,autoRecord:i,streamTitle:r,isCreating:l,isEnding:s,error:d,streamDuration:f,viewerCount:c,peakViewers:m,playbackUrl:v,isLive:h,isIdle:k,hasEnded:E,createStream:w,endStream:b,refreshStreamStatus:g,getStreamCredentials:D,startStatusPolling:T,stopStatusPolling:F}}const UI={class:"stream-status"},OI={class:"flex items-center justify-between"},zI={class:"flex items-center gap-3"},jI={key:0,class:"flex items-center"},WI={key:2,class:"text-sm text-gray-600"},ZI={key:0,class:"flex items-center gap-2"},HI={class:"text-sm font-medium text-gray-700"},GI={key:0,class:"text-xs text-gray-500"},XI=e.defineComponent({__name:"StreamStatus",props:{status:{},viewers:{},peakViewers:{},duration:{}},setup(a){const n=a,t=e.computed(()=>({idle:"Ready to Stream",live:"Live",ended:"Stream Ended",error:"Error"})[n.status]||n.status),o=e.computed(()=>{const r="px-3 py-1 rounded-full text-xs font-semibold uppercase",l={idle:"bg-gray-100 text-gray-700",live:"bg-red-100 text-red-700",ended:"bg-blue-100 text-blue-700",error:"bg-yellow-100 text-yellow-700"};return`${r} ${l[n.status]||l.idle}`}),i=e.computed(()=>{if(!n.duration)return null;const r=Math.floor(n.duration/3600),l=Math.floor(n.duration%3600/60),s=n.duration%60;return r>0?`${r}:${l.toString().padStart(2,"0")}:${s.toString().padStart(2,"0")}`:`${l}:${s.toString().padStart(2,"0")}`});return(r,l)=>(e.openBlock(),e.createElementBlock("div",UI,[e.createElementVNode("div",OI,[e.createElementVNode("div",zI,[r.status==="live"?(e.openBlock(),e.createElementBlock("div",jI,[...l[0]||(l[0]=[e.createElementVNode("span",{class:"relative flex h-3 w-3"},[e.createElementVNode("span",{class:"animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75"}),e.createElementVNode("span",{class:"relative inline-flex rounded-full h-3 w-3 bg-red-500"})],-1),e.createElementVNode("span",{class:"ml-2 text-sm font-semibold text-red-600 uppercase"},"Live",-1)])])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(o.value)},e.toDisplayString(t.value),3)),i.value?(e.openBlock(),e.createElementBlock("div",WI,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)]),r.viewers!==void 0?(e.openBlock(),e.createElementBlock("div",ZI,[l[1]||(l[1]=e.createElementVNode("svg",{class:"w-4 h-4 text-gray-500",fill:"currentColor",viewBox:"0 0 20 20"},[e.createElementVNode("path",{d:"M10 12a2 2 0 100-4 2 2 0 000 4z"}),e.createElementVNode("path",{"fill-rule":"evenodd",d:"M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z","clip-rule":"evenodd"})],-1)),e.createElementVNode("span",HI,e.toDisplayString(r.viewers)+" "+e.toDisplayString(r.viewers===1?"viewer":"viewers"),1),r.peakViewers>r.viewers?(e.openBlock(),e.createElementBlock("span",GI," (Peak: "+e.toDisplayString(r.peakViewers)+") ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),KI=Ie(XI,[["__scopeId","data-v-1d09c19f"]]),JI={class:"stream-credentials"},qI={class:"space-y-3"},YI={class:"credential-field"},QI={class:"flex gap-2"},e5=["value"],t5={class:"credential-field"},a5={class:"flex gap-2"},n5=["value","type"],o5=["aria-label"],i5={key:0,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},r5={key:1,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},l5={key:0,class:"mt-2 text-sm text-green-600"},s5=e.defineComponent({__name:"StreamCredentials",props:{rtmpUrl:{},streamKey:{}},emits:["copy"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(!1),r=e.ref(""),l=e.computed(()=>{if(i.value)return t.streamKey;if(t.streamKey.length>8){const u=t.streamKey.slice(0,4),c=t.streamKey.slice(-4);return`${u}${"•".repeat(16)}${c}`}return"•".repeat(t.streamKey.length)});function s(){i.value=!i.value}async function d(u,c){try{await navigator.clipboard.writeText(u),r.value=c,o("copy",u,c),setTimeout(()=>{r.value=""},2e3)}catch{}}return(u,c)=>(e.openBlock(),e.createElementBlock("div",JI,[c[8]||(c[8]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Stream Settings",-1)),e.createElementVNode("div",qI,[e.createElementVNode("div",YI,[c[3]||(c[3]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 mb-1"},"RTMP Server URL",-1)),e.createElementVNode("div",QI,[e.createElementVNode("input",{value:u.rtmpUrl,readonly:"",type:"text",class:"flex-1 px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm font-mono text-gray-700","aria-label":"RTMP server URL"},null,8,e5),e.createElementVNode("button",{onClick:c[0]||(c[0]=m=>d(u.rtmpUrl,"RTMP URL")),class:"px-3 py-2 bg-white border border-gray-300 rounded-md hover:bg-gray-50 transition-colors","aria-label":"Copy RTMP URL"},[...c[2]||(c[2]=[e.createElementVNode("svg",{class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})],-1)])])])]),e.createElementVNode("div",t5,[c[7]||(c[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 mb-1"},"Stream Key",-1)),e.createElementVNode("div",a5,[e.createElementVNode("input",{value:l.value,readonly:"",type:i.value?"text":"password",class:"flex-1 px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm font-mono text-gray-700","aria-label":"Stream key"},null,8,n5),e.createElementVNode("button",{onClick:s,class:"px-3 py-2 bg-white border border-gray-300 rounded-md hover:bg-gray-50 transition-colors","aria-label":i.value?"Hide stream key":"Show stream key"},[i.value?(e.openBlock(),e.createElementBlock("svg",r5,[...c[5]||(c[5]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"},null,-1)])])):(e.openBlock(),e.createElementBlock("svg",i5,[...c[4]||(c[4]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"},null,-1),e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"},null,-1)])]))],8,o5),e.createElementVNode("button",{onClick:c[1]||(c[1]=m=>d(u.streamKey,"Stream Key")),class:"px-3 py-2 bg-white border border-gray-300 rounded-md hover:bg-gray-50 transition-colors","aria-label":"Copy stream key"},[...c[6]||(c[6]=[e.createElementVNode("svg",{class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})],-1)])])])])]),c[9]||(c[9]=e.createElementVNode("details",{class:"mt-4"},[e.createElementVNode("summary",{class:"cursor-pointer text-sm text-blue-600 hover:text-blue-700"}," How to connect with OBS Studio "),e.createElementVNode("div",{class:"mt-2 p-3 bg-blue-50 rounded-md text-sm text-gray-700"},[e.createElementVNode("ol",{class:"list-decimal list-inside space-y-1"},[e.createElementVNode("li",null,"Open OBS Studio"),e.createElementVNode("li",null,"Go to Settings → Stream"),e.createElementVNode("li",null,'Set Service to "Custom"'),e.createElementVNode("li",null,'Paste the RTMP URL in "Server"'),e.createElementVNode("li",null,'Paste the Stream Key in "Stream Key"'),e.createElementVNode("li",null,'Click OK and then "Start Streaming"')])])],-1)),e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createElementBlock("div",l5,e.toDisplayString(r.value)+" copied to clipboard! ",1)):e.createCommentVNode("",!0)]),_:1})]))}}),d5=Ie(s5,[["__scopeId","data-v-306d92f6"]]),u5={class:"live-stream-manager","data-testid":"live-stream-manager"},c5={key:0,class:"stream-setup"},m5={class:"space-y-4"},p5={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},f5={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},v5=["disabled"],h5={key:0},g5={key:1,class:"flex items-center justify-center"},b5={key:1,class:"stream-active space-y-6"},y5={key:1,class:"video-preview"},w5={key:2,class:"analytics-panel"},k5={class:"grid grid-cols-2 gap-4"},_5={class:"bg-gray-50 p-3 rounded"},E5={class:"text-2xl font-bold text-gray-900"},S5={class:"bg-gray-50 p-3 rounded"},x5={class:"text-2xl font-bold text-gray-900"},C5={class:"stream-controls flex gap-3"},V5=["disabled"],N5={key:0},T5={key:1},B5={key:2,class:"mt-4 p-4 bg-red-50 border border-red-200 rounded-lg"},M5={class:"text-red-600 text-sm"},$5=e.defineComponent({__name:"LiveStreamManager",props:{mediaUuid:{},onStreamCreated:{type:Function},onStreamEnded:{type:Function},httpClient:{type:Function}},emits:["stream-created","stream-ended","error"],setup(a,{emit:n}){const t=a,o=n;t.httpClient&&LI(t.httpClient);const{stream:i,lowLatency:r,autoRecord:l,streamTitle:s,isCreating:d,isEnding:u,error:c,createStream:m,endStream:p,streamDuration:f,playbackUrl:v,refreshStreamStatus:h}=PI(t.mediaUuid),k=e.ref(!1);async function E(){var T;try{const F=await m({title:s.value,low_latency:r.value,auto_record:l.value});o("stream-created",F),(T=t.onStreamCreated)==null||T.call(t,F)}catch(F){o("error",F)}}async function w(){var T;try{const F=await p();o("stream-ended",F),(T=t.onStreamEnded)==null||T.call(t,F)}catch(F){o("error",F)}}function b(){i.value=null,s.value="",k.value=!1,c.value=null}async function g(T,F){try{await navigator.clipboard.writeText(T)}catch{}}let D;return e.onMounted(()=>{var T;((T=i.value)==null?void 0:T.status)==="live"&&(D=window.setInterval(()=>{h()},5e3))}),e.onUnmounted(()=>{D&&clearInterval(D)}),(T,F)=>(e.openBlock(),e.createElementBlock("div",u5,[e.unref(i)?(e.openBlock(),e.createElementBlock("div",b5,[e.createVNode(KI,{status:e.unref(i).status,viewers:e.unref(i).viewer_count,duration:e.unref(f),"peak-viewers":e.unref(i).peak_viewers},null,8,["status","viewers","duration","peak-viewers"]),e.unref(i).status==="idle"?(e.openBlock(),e.createBlock(d5,{key:0,"rtmp-url":e.unref(i).rtmp_url,"stream-key":e.unref(i).stream_key,onCopy:g},null,8,["rtmp-url","stream-key"])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",y5,[F[9]||(F[9]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-2"},"Live Preview",-1)),e.createVNode(hf,{"playback-url":e.unref(v),"is-live":!0,muted:!0,controls:!1,class:"w-full rounded-lg overflow-hidden"},null,8,["playback-url"])])):e.createCommentVNode("",!0),e.unref(i).status==="live"?(e.openBlock(),e.createElementBlock("div",w5,[F[12]||(F[12]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Live Analytics",-1)),e.createElementVNode("div",k5,[e.createElementVNode("div",_5,[e.createElementVNode("div",E5,e.toDisplayString(e.unref(i).viewer_count),1),F[10]||(F[10]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Current Viewers",-1))]),e.createElementVNode("div",S5,[e.createElementVNode("div",x5,e.toDisplayString(e.unref(i).peak_viewers),1),F[11]||(F[11]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Peak Viewers",-1))])])])):e.createCommentVNode("",!0),e.createElementVNode("div",C5,[e.unref(i).status==="idle"?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:F[3]||(F[3]=V=>k.value=!k.value),class:"flex-1 py-2 px-4 bg-gray-200 text-gray-700 font-medium rounded-lg hover:bg-gray-300 transition-colors"},e.toDisplayString(k.value?"Hide":"Show")+" Credentials ",1)):e.createCommentVNode("",!0),e.unref(i).status==="live"?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:w,disabled:e.unref(u),class:"flex-1 py-2 px-4 bg-red-600 text-white font-medium rounded-lg hover:bg-red-700 disabled:opacity-50 transition-colors","aria-label":"End live stream"},[e.unref(u)?(e.openBlock(),e.createElementBlock("span",T5,"Ending...")):(e.openBlock(),e.createElementBlock("span",N5,"End Stream"))],8,V5)):e.createCommentVNode("",!0),e.unref(i).status==="ended"?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:b,class:"flex-1 py-2 px-4 bg-blue-600 text-white font-medium rounded-lg hover:bg-blue-700 transition-colors"}," Start New Stream ")):e.createCommentVNode("",!0)])])):(e.openBlock(),e.createElementBlock("div",c5,[F[8]||(F[8]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Start Live Stream",-1)),e.createElementVNode("div",m5,[e.createElementVNode("div",p5,[F[4]||(F[4]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("label",{class:"font-medium text-gray-900"},"Low Latency Mode"),e.createElementVNode("p",{class:"text-sm text-gray-500 mt-1"}," 5-7 second delay (vs 15-20s standard) ")],-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":F[0]||(F[0]=V=>e.isRef(r)?r.value=V:null),type:"checkbox",class:"h-5 w-5 text-blue-600 rounded focus:ring-blue-500","aria-label":"Enable low latency mode"},null,512),[[e.vModelCheckbox,e.unref(r)]])]),e.createElementVNode("div",f5,[F[5]||(F[5]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("label",{class:"font-medium text-gray-900"},"Auto-Record Stream"),e.createElementVNode("p",{class:"text-sm text-gray-500 mt-1"}," Save stream as VOD for later viewing ")],-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":F[1]||(F[1]=V=>e.isRef(l)?l.value=V:null),type:"checkbox",class:"h-5 w-5 text-blue-600 rounded focus:ring-blue-500","aria-label":"Enable auto-recording"},null,512),[[e.vModelCheckbox,e.unref(l)]])]),e.createElementVNode("div",null,[F[6]||(F[6]=e.createElementVNode("label",{for:"stream-title",class:"block text-sm font-medium text-gray-700 mb-2"}," Stream Title (optional) ",-1)),e.withDirectives(e.createElementVNode("input",{id:"stream-title","onUpdate:modelValue":F[2]||(F[2]=V=>e.isRef(s)?s.value=V:null),type:"text",class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",placeholder:"My Live Stream"},null,512),[[e.vModelText,e.unref(s)]])]),e.createElementVNode("button",{onClick:E,disabled:e.unref(d),class:"w-full py-3 px-4 bg-blue-600 text-white font-medium rounded-lg hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors","data-testid":"create-stream-button","aria-label":"Create live stream"},[e.unref(d)?(e.openBlock(),e.createElementBlock("span",g5,[...F[7]||(F[7]=[e.createElementVNode("svg",{class:"animate-spin h-5 w-5 mr-2",viewBox:"0 0 24 24"},[e.createElementVNode("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4",fill:"none"}),e.createElementVNode("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})],-1),e.createTextVNode(" Creating... ",-1)])])):(e.openBlock(),e.createElementBlock("span",h5,"Create Stream"))],8,v5)])])),e.unref(c)?(e.openBlock(),e.createElementBlock("div",B5,[e.createElementVNode("p",M5,e.toDisplayString(e.unref(c)),1)])):e.createCommentVNode("",!0)]))}}),I5=Ie($5,[["__scopeId","data-v-26291f6f"]]),D5={class:"album-tree-node"},F5=["data-album-id","draggable","aria-selected","aria-expanded"],A5={key:1,class:"album-node__chevron-placeholder"},R5={key:2,"data-testid":"media-count",class:"album-node__count"},L5={key:0,class:"album-tree-node__children",role:"group"},P5=16,U5=e.defineComponent({__name:"AlbumTreeNode",props:{album:{},depth:{},selectedId:{},expandedIds:{},focusedId:{},draggable:{type:Boolean},showMediaCount:{type:Boolean},compact:{type:Boolean},dragState:{}},emits:["select","toggle-expand","drag-start","drag-over","drag-leave","drop"],setup(a,{emit:n}){const t=a,o=n,i=e.computed(()=>t.expandedIds.has(t.album.id)),r=e.computed(()=>t.selectedId===t.album.id),l=e.computed(()=>t.focusedId===t.album.id),s=e.computed(()=>t.album.children_count>0),d=e.computed(()=>`${t.depth*P5}px`),u=e.computed(()=>{var b;return((b=t.dragState)==null?void 0:b.draggedAlbumId)===t.album.id}),c=e.computed(()=>{var b;return((b=t.dragState)==null?void 0:b.dropTargetId)===t.album.id}),m=e.computed(()=>{var b;return(b=t.dragState)!=null&&b.draggedAlbumId?t.dragState.draggedAlbumId===t.album.id:!1}),p=e.computed(()=>{const b=["album-node"];return r.value&&b.push("album-node--selected"),l.value&&b.push("album-node--focused"),t.compact&&b.push("album-node--compact"),u.value&&b.push("album-node--dragging"),c.value&&b.push("album-node--drop-target"),m.value&&b.push("album-node--invalid-drop"),b});function f(){o("select",t.album)}function v(b){b.stopPropagation(),o("toggle-expand",t.album.id)}function h(b){t.draggable&&(b.dataTransfer&&(b.dataTransfer.setData("text/plain",t.album.id),b.dataTransfer.effectAllowed="move"),o("drag-start",t.album.id))}function k(b){t.draggable&&(b.preventDefault(),b.dataTransfer&&(b.dataTransfer.dropEffect="move"),o("drag-over",t.album.id))}function E(){o("drag-leave",t.album.id)}function w(b){t.draggable&&(b.preventDefault(),o("drop",t.album.id))}return(b,g)=>{var T;const D=e.resolveComponent("AlbumTreeNode",!0);return e.openBlock(),e.createElementBlock("div",D5,[e.createElementVNode("div",{"data-testid":"album-node","data-album-id":b.album.id,class:e.normalizeClass(p.value),style:e.normalizeStyle({paddingLeft:d.value}),draggable:b.draggable,role:"treeitem","aria-selected":r.value,"aria-expanded":s.value?i.value:void 0,onDragstart:h,onDragover:k,onDragleave:E,onDrop:w},[s.value?(e.openBlock(),e.createElementBlock("button",{key:0,"data-testid":"expand-chevron",class:"album-node__chevron",type:"button","aria-label":"Toggle expand",onClick:v},[e.createVNode(e.unref(G.IonIcon),{icon:i.value?e.unref(Nh):e.unref(Th)},null,8,["icon"])])):(e.openBlock(),e.createElementBlock("span",A5)),e.createVNode(e.unref(G.IonIcon),{icon:e.unref(Rh),class:"album-node__icon"},null,8,["icon"]),e.createElementVNode("span",{"data-testid":"album-name",class:"album-node__name",onClick:f},e.toDisplayString(b.album.name),1),b.showMediaCount?(e.openBlock(),e.createElementBlock("span",R5,e.toDisplayString(b.album.media_count),1)):e.createCommentVNode("",!0)],46,F5),i.value&&((T=b.album.children)!=null&&T.length)?(e.openBlock(),e.createElementBlock("div",L5,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.album.children,F=>(e.openBlock(),e.createBlock(D,{key:F.id,album:F,depth:b.depth+1,"selected-id":b.selectedId,"expanded-ids":b.expandedIds,"focused-id":b.focusedId,draggable:b.draggable,"show-media-count":b.showMediaCount,compact:b.compact,onSelect:g[0]||(g[0]=V=>o("select",V)),onToggleExpand:g[1]||(g[1]=V=>o("toggle-expand",V))},null,8,["album","depth","selected-id","expanded-ids","focused-id","draggable","show-media-count","compact"]))),128))])):e.createCommentVNode("",!0)])}}}),O5=Ie(U5,[["__scopeId","data-v-76be65a6"]]);let Po={apiBaseUrl:"/api/v1"};function gf(a){Po={...Po,...a}}function z5(){return{...Po}}function j5(a){Po={...a}}function Oc(a,n){const t=(a??n).trim().replace(/\/+$/,"");return t===""?n:/^https?:\/\//i.test(t)||t.startsWith("/")?t:`/${t}`}function W5(){const a=Oc(Po.apiBaseUrl,"/api/v1");return Oc(Po.albumBaseUrl,`${a}/albums`)}function An(a){return encodeURIComponent(a)}function Z5(a,n){const t=new URLSearchParams;for(const[i,r]of Object.entries(n))r!==void 0&&t.set(i,r===null?"null":String(r));const o=t.toString();return o===""?a:`${a}?${o}`}function di(a){return typeof a=="object"&&a!==null&&!Array.isArray(a)}function Xo(a,n,t=""){const o=a[n];return typeof o=="string"?o:t}function H5(a,n){const t=a[n];if(typeof t!="string")return null;const o=t.trim();return o!==""&&o!=="null"?o:null}function zc(a,n,t=0){const o=a[n];return typeof o=="number"&&Number.isFinite(o)?o:t}function G5(a){const n=a.owner;return di(n)&&typeof n.id=="string"?n.id:""}function tr(a){if(!di(a))throw new Error("Album response was invalid");const n=Array.isArray(a.children)?a.children.map(t=>tr(t)):void 0;return{...a,id:Xo(a,"id"),name:Xo(a,"name"),description:Xo(a,"description"),parent_id:H5(a,"parent_id"),user_id:Xo(a,"user_id",G5(a)),media_count:zc(a,"media_count"),children_count:zc(a,"children_count"),created_at:Xo(a,"created_at"),updated_at:Xo(a,"updated_at"),...n!==void 0?{children:n}:{}}}function bf(a){if(!di(a))return null;const n=a.message;if(typeof n=="string"&&n.trim()!=="")return n;const t=a.errors;if(di(t))for(const o of Object.values(t)){if(typeof o=="string"&&o.trim()!=="")return o;if(Array.isArray(o)){const i=o.find(r=>typeof r=="string"&&r.trim()!=="");if(i!==void 0)return i}}return null}function X5(a){if(!di(a))return null;const n=a.response;return di(n)&&"data"in n?n.data:"data"in a?a.data:null}function Rn(a,n="Unknown error"){const o=bf(X5(a))??(a instanceof Error&&a.message!==""?a.message:n);return a instanceof Error&&a.message===o?a:new Error(o)}function yn(a="",n={}){return Z5(`${W5()}${a}`,n)}async function K5(a,n={}){const t=n.method??"GET",o={Accept:"application/json",...n.headers},i={method:t,credentials:n.credentials??"include",headers:o};n.body!==void 0&&(o["Content-Type"]=o["Content-Type"]??"application/json",i.body=JSON.stringify(n.body));const r=await fetch(a,i);if(!r.ok){const l=await r.json().catch(()=>null);throw new Error(bf(l)??`Album request failed with status ${r.status}.`)}return r.status===204?{}:await r.json()}const J5=3,q5=6e4,ei={count:0,haltUntil:0};function Y5(){ei.count=0,ei.haltUntil=0}function Q5(){ei.count+=1,ei.count>=J5&&(ei.haltUntil=Date.now()+q5)}function e8(){return Date.now()<ei.haltUntil}async function wn(a,n){if(e8())throw new Error("Album requests are temporarily halted after consecutive failures.");const t=Po.httpClient??K5;try{const o=await t(a,n);return Y5(),o}catch(o){throw Q5(),o}}function Ci(a){if(typeof a!="object"||a===null)throw new Error("Album response was invalid");const n=a;if(typeof n.data!="object"||n.data===null)throw new Error("Album response was invalid");const t=n.data;return typeof t.data=="object"&&t.data!==null&&!Array.isArray(t.data)?tr(t.data):tr(n.data)}function t8(a){if(typeof a!="object"||a===null)return[];const n=a;if(Array.isArray(n.data))return n.data.map(t=>tr(t));if(typeof n.data=="object"&&n.data!==null){const t=n.data;if(Array.isArray(t.data))return t.data.map(o=>tr(o))}return[]}const Ul=ml.defineStore("albums",()=>{const a=e.ref([]),n=e.ref(new Map),t=e.ref(!1),o=e.ref(null),i=e.ref(new Set),r=e.computed(()=>{const V=new Map;return a.value.forEach(I=>V.set(I.id,I)),V}),l=e.computed(()=>a.value.filter(V=>V.parent_id===null));function s(V){const I=a.value.findIndex($=>$.id===V.id);I>=0?a.value[I]=V:a.value.push(V)}function d(V,I){Array.isArray(I.media)&&n.value.set(V,I.media)}async function u(V){t.value=!0,o.value=null;try{const I=(V==null?void 0:V.parent_id)??null,$=await wn(yn("",{parent_id:I})),C=t8($);for(const M of C)s(M);I!==null&&i.value.add(I)}catch(I){o.value=Rn(I).message}finally{t.value=!1}}async function c(V){t.value=!0,o.value=null;try{const I=await wn(yn(`/${An(V)}`)),$=Ci(I);return s($),$}catch(I){const $=Rn(I);throw o.value=$.message,$}finally{t.value=!1}}async function m(V){t.value=!0,o.value=null;try{const I=await wn(yn(`/${An(V)}`,{include_media:!0})),$=Ci(I);s($);const C=Array.isArray($.media)?$.media:[];return n.value.set(V,C),C}catch(I){const $=Rn(I);throw o.value=$.message,$}finally{t.value=!1}}async function p(V,I,$){t.value=!0,o.value=null;try{const C={media_uuids:I};$!==void 0&&(C.order_column=$);const M=await wn(yn(`/${An(V)}/media`),{method:"POST",body:C}),_=Ci(M);return s(_),d(V,_),_}catch(C){const M=Rn(C);throw o.value=M.message,M}finally{t.value=!1}}async function f(V,I){t.value=!0,o.value=null;try{await wn(yn(`/${An(V)}/media/${An(I)}`),{method:"DELETE"});const $=n.value.get(V)||[];n.value.set(V,$.filter(C=>C.uuid!==I))}catch($){const C=Rn($);throw o.value=C.message,C}finally{t.value=!1}}async function v(V,I){t.value=!0,o.value=null;try{const $=await wn(yn(`/${An(V)}/media/reorder`),{method:"POST",body:{ordered_media_uuids:I}});if($.data!==void 0){s($.data),d(V,$.data);return}const C=n.value.get(V)||[],M=I.map(_=>C.find(L=>L.uuid===_)).filter(_=>_!==void 0);n.value.set(V,M)}catch($){const C=Rn($);throw o.value=C.message,C}finally{t.value=!1}}async function h(V){t.value=!0,o.value=null;try{const I=await wn(yn(),{method:"POST",body:V}),$=Ci(I);return s($),$}catch(I){const $=Rn(I);throw o.value=$.message,$}finally{t.value=!1}}async function k(V,I){t.value=!0,o.value=null;try{const $=await wn(yn(`/${An(V)}`),{method:"PUT",body:I}),C=Ci($);return s(C),C}catch($){const C=Rn($);throw o.value=C.message,C}finally{t.value=!1}}async function E(V){t.value=!0,o.value=null;try{await wn(yn(`/${An(V)}`),{method:"DELETE"});const I=a.value.findIndex($=>$.id===V);I>=0&&a.value.splice(I,1),n.value.delete(V)}catch(I){throw o.value=I instanceof Error?I.message:"Unknown error",I}finally{t.value=!1}}function w(V){return a.value.filter(I=>I.parent_id===V)}function b(V){return i.value.has(V)}function g(V){return n.value.get(V)||[]}async function D(V,I){const $=a.value.findIndex(M=>M.id===V);if($<0)return;const C=a.value[$];a.value[$]={...C,parent_id:I};try{const M=await wn(yn(`/${An(V)}/move`),{method:"POST",body:{parent_id:I}});M.data!==void 0&&s(M.data)}catch(M){a.value[$]=C;const _=Rn(M,"Failed to move album");throw o.value=_.message,_}}function T(V){a.value=V}function F(){a.value=[],n.value.clear(),t.value=!1,o.value=null,i.value.clear()}return{albums:a,albumMedia:n,loading:t,error:o,childrenLoadedById:i,albumsById:r,rootAlbums:l,fetchAlbums:u,fetchAlbum:c,fetchAlbumMedia:m,attachMedia:p,detachMedia:f,reorderAlbumMedia:v,createAlbum:h,updateAlbum:k,deleteAlbum:E,getChildrenOf:w,childrenLoaded:b,getAlbumMedia:g,moveAlbum:D,setAlbums:T,reset:F}});function Ol(){const a=Ul(),{albums:n,albumsById:t,rootAlbums:o,loading:i,error:r}=ml.storeToRefs(a);async function l(w){await a.fetchAlbums(w)}async function s(w){return await a.fetchAlbum(w)}async function d(w){return await a.fetchAlbumMedia(w)}async function u(w,b,g){return await a.attachMedia(w,b,g)}async function c(w,b){await a.detachMedia(w,b)}async function m(w,b){await a.reorderAlbumMedia(w,b)}async function p(w){return await a.createAlbum(w)}async function f(w,b){return await a.updateAlbum(w,b)}async function v(w){await a.deleteAlbum(w)}function h(w){return a.getChildrenOf(w)}function k(w){return a.childrenLoaded(w)}async function E(w,b){await a.moveAlbum(w,b)}return{albums:n,albumsById:t,rootAlbums:o,loading:i,error:r,fetchAlbums:l,fetchAlbum:s,fetchAlbumMedia:d,attachMedia:u,detachMedia:c,reorderAlbumMedia:m,createAlbum:p,updateAlbum:f,deleteAlbum:v,getChildrenOf:h,childrenLoaded:k,moveAlbum:E}}function yf(a){const{childrenByParentId:n,onMove:t}=a,o=e.ref({isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null});function i(m,p){if(m===p)return!0;const f=new Set,v=[m];for(;v.length>0;){const h=v.shift();if(!h||f.has(h))continue;f.add(h);const k=n.get(h)||[];for(const E of k){if(E===p)return!0;v.push(E)}}return!1}function r(m,p){return m===p?!1:p===null?!0:!i(m,p)}function l(m){o.value={isDragging:!0,draggedAlbumId:m,dropTargetId:null,dropPosition:null}}function s(){o.value={isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null}}function d(m){o.value.dropTargetId=m}function u(){o.value.dropTargetId=null,o.value.dropPosition=null}async function c(){const{draggedAlbumId:m,dropTargetId:p}=o.value;if(!m){s();return}if(!r(m,p)){s();return}try{await t(m,p)}finally{s()}}return{dragState:o,isDescendant:i,canDropOn:r,startDrag:l,endDrag:s,setDropTarget:d,clearDropTarget:u,executeDrop:c}}const a8={key:0,"data-testid":"loading-spinner",class:"album-tree__loading"},n8={key:1,"data-testid":"error-state",class:"album-tree__error"},o8={key:2,"data-testid":"empty-state",class:"album-tree__empty"},i8={key:3,class:"album-tree__content",role:"group"},r8=e.defineComponent({__name:"AlbumTree",props:{modelValue:{default:null},expandedIds:{default:()=>[]},draggable:{type:Boolean,default:!0},showMediaCount:{type:Boolean,default:!0},compact:{type:Boolean,default:!1},mode:{default:"standalone"}},emits:["update:modelValue","album-selected","album-moved","album-expanded","album-collapsed"],setup(a,{expose:n,emit:t}){const o=a,i=t,r=e.computed(()=>o.draggable===!0),l=e.computed(()=>o.showMediaCount===!0),s=e.computed(()=>o.compact===!0),d=e.computed(()=>({"album-tree--rail":o.mode==="rail"})),{albums:u,rootAlbums:c,loading:m,error:p,fetchAlbums:f,getChildrenOf:v,childrenLoaded:h,moveAlbum:k}=Ol(),E=e.shallowRef(new Set(o.expandedIds)),w=e.ref(o.modelValue??null),b=e.ref(null),g=new Map,D=new Map;function T(y){g.clear(),D.clear();for(const A of y){g.set(A.id,A);const W=A.parent_id??null,q=D.get(W)??[];q.push(A.id),D.set(W,q)}}e.watch(u,y=>{T(y)},{immediate:!0});const{dragState:F,canDropOn:V,startDrag:I,endDrag:$,setDropTarget:C,clearDropTarget:M,executeDrop:_}=yf({childrenByParentId:D,onMove:async(y,A)=>{await k(y,A),i("album-moved",{albumId:y,newParentId:A})}});e.watch(()=>o.modelValue,y=>{w.value=y??null}),e.watch(()=>o.expandedIds,y=>{E.value=new Set(y)}),e.onMounted(async()=>{await f({parent_id:null})});const L=e.computed(()=>c.value.map(y=>j(y)));function j(y){if(!E.value.has(y.id))return y;const A=v(y.id);return{...y,children:A.map(W=>j(W))}}const B=e.computed(()=>{const y=[];function A(W){var q;for(const de of W)y.push(de),E.value.has(de.id)&&((q=de.children)!=null&&q.length)&&A(de.children)}return A(L.value),y});function U(y){var q;if(!B.value.length)return;const A=b.value?B.value.findIndex(de=>de.id===b.value):-1,W=A>=0?B.value[A]:null;switch(y.key){case"ArrowDown":y.preventDefault(),A<B.value.length-1?b.value=B.value[A+1].id:A===-1&&B.value.length>0&&(b.value=B.value[0].id);break;case"ArrowUp":y.preventDefault(),A>0&&(b.value=B.value[A-1].id);break;case"ArrowRight":y.preventDefault(),W&&(W.children_count>0&&!E.value.has(W.id)?S(W.id):E.value.has(W.id)&&((q=W.children)!=null&&q.length)&&(b.value=W.children[0].id));break;case"ArrowLeft":y.preventDefault(),W&&(E.value.has(W.id)&&W.children_count>0?S(W.id):W.parent_id&&(b.value=W.parent_id));break;case"Enter":case" ":y.preventDefault(),W&&R(W);break;case"Home":y.preventDefault(),B.value.length>0&&(b.value=B.value[0].id);break;case"End":y.preventDefault(),B.value.length>0&&(b.value=B.value[B.value.length-1].id);break}}async function S(y){E.value.has(y)?(E.value.delete(y),i("album-collapsed",y)):(h(y)||await f({parent_id:y}),E.value.add(y),i("album-expanded",y))}function R(y){w.value=y.id,i("update:modelValue",y.id),i("album-selected",y)}function O(y){o.draggable&&I(y)}function K(y){var W;if(!o.draggable)return;const A=(W=F.value)==null?void 0:W.draggedAlbumId;A&&(C(y),V(A,y))}function se(){o.draggable&&M()}async function xe(y){o.draggable&&(C(y),await _())}function ue(y){o.draggable&&(y.preventDefault(),C(null))}async function le(y){o.draggable&&(y.preventDefault(),C(null),await _())}function H(){$()}return n({focusedId:b}),(y,A)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["album-tree",d.value]),"data-testid":"album-tree",tabindex:"0",role:"tree","aria-label":"Album tree",onKeydown:U,onDragover:ue,onDrop:le,onDragend:H},[e.unref(m)?(e.openBlock(),e.createElementBlock("div",a8,[e.createVNode(e.unref(G.IonSpinner),{name:"crescent"})])):e.unref(p)?(e.openBlock(),e.createElementBlock("div",n8,[e.createElementVNode("p",null,e.toDisplayString(e.unref(p)),1)])):e.unref(c).length?(e.openBlock(),e.createElementBlock("div",i8,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value,W=>(e.openBlock(),e.createBlock(O5,{key:W.id,album:W,depth:0,"selected-id":w.value,"expanded-ids":E.value,"focused-id":b.value,draggable:r.value,"drag-state":r.value?e.unref(F):null,"show-media-count":l.value,compact:s.value,onSelect:R,onToggleExpand:S,onDragStart:O,onDragOver:K,onDragLeave:se,onDrop:xe},null,8,["album","selected-id","expanded-ids","focused-id","draggable","drag-state","show-media-count","compact"]))),128))])):(e.openBlock(),e.createElementBlock("div",o8,[A[0]||(A[0]=e.createElementVNode("p",null,"No albums yet",-1)),e.renderSlot(y.$slots,"empty-action",{},void 0,!0)]))],34))}}),zl=Ie(r8,[["__scopeId","data-v-ee405f62"]]),l8=300,s8=e.defineComponent({__name:"AlbumBrowser",props:{isOpen:{type:Boolean},selectedAlbumId:{default:null},title:{default:"Select Album"},confirmText:{default:"Select"}},emits:["close","confirm"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(t.selectedAlbumId??null),r=e.ref(null),l=e.ref(0),s=e.ref(null);e.watch(()=>t.selectedAlbumId,f=>{i.value=f??null});const d=e.computed(()=>r.value!==null);function u(f){const v=Date.now();if(s.value===f.id&&v-l.value<l8){o("confirm",f);return}l.value=v,s.value=f.id,i.value=f.id,r.value=f}function c(){r.value&&o("confirm",r.value)}function m(){o("close")}function p(){o("close")}return(f,v)=>(e.openBlock(),e.createBlock(e.unref(G.IonModal),{"is-open":f.isOpen,class:"album-browser-modal",onDidDismiss:p},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.title),1)]),_:1}),e.createVNode(e.unref(G.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButton),{"data-testid":"cancel-button",onClick:m},{default:e.withCtx(()=>[...v[1]||(v[1]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(G.IonContent),{class:"album-browser-content"},{default:e.withCtx(()=>[e.createVNode(zl,{modelValue:i.value,"onUpdate:modelValue":v[0]||(v[0]=h=>i.value=h),draggable:!1,"show-media-count":!0,compact:!1,onAlbumSelected:u},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(G.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButton),{fill:"clear",onClick:m},{default:e.withCtx(()=>[...v[2]||(v[2]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(G.IonButton),{"data-testid":"confirm-button",fill:"solid",color:"primary",disabled:!d.value,onClick:c},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.confirmText),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"]))}}),wf=Ie(s8,[["__scopeId","data-v-21676ec1"]]),d8={class:"ion-padding-start text-sm"},u8={class:"ion-padding-start text-sm"},c8={key:1},m8={key:1,class:"album-manager-inline rounded-lg border border-gray-200 bg-white p-4"},p8={class:"flex items-center justify-between gap-3 pb-3"},f8={class:"text-base font-semibold text-gray-900"},v8={class:"ion-padding-start text-sm"},h8={class:"ion-padding-start text-sm"},g8={class:"flex justify-between pt-2"},b8={key:1},Vi=255,Ni=1e3,y8=e.defineComponent({__name:"AlbumManager",props:{albumId:{default:null},parentId:{default:null},mode:{default:"inline"},isOpen:{type:Boolean,default:!1}},emits:["close","created","updated","deleted","error"],setup(a,{emit:n}){const t=a,o=n,i=Ul(),r=e.computed(()=>t.albumId!==null&&t.albumId!==void 0),l=e.computed(()=>r.value?"Edit Album":"Create Album"),s=e.computed(()=>r.value?"Save":"Create"),d=e.ref({name:"",description:"",parent_id:t.parentId}),u=e.ref({name:!1,description:!1}),c=e.ref(null),m=e.ref(!1),p=e.ref(null),f=e.ref(!1),v=e.ref(!1),h=e.computed(()=>u.value.name?d.value.name.trim()?d.value.name.length>Vi?`Name must be ${Vi} characters or less`:null:"Name is required":null),k=e.computed(()=>u.value.description&&d.value.description.length>Ni?`Description must be ${Ni} characters or less`:null),E=e.computed(()=>{const B=d.value.name.trim().length>0,U=d.value.name.length<=Vi,S=d.value.description.length<=Ni;return B&&U&&S&&!f.value}),w=e.computed(()=>{var B;return((B=c.value)==null?void 0:B.name)??"None (Root)"}),b=e.computed(()=>p.value?p.value.children_count===0&&p.value.media_count===0:!1),g=e.computed(()=>p.value?p.value.children_count>0?"Cannot delete album with child albums. Move or delete children first.":p.value.media_count>0?"Cannot delete album with media. Remove media first.":`Are you sure you want to delete "${p.value.name}"? This action cannot be undone.`:"");e.onMounted(async()=>{t.albumId&&await D()});async function D(){if(t.albumId)try{const B=await i.fetchAlbum(t.albumId);p.value=B,d.value={name:B.name,description:B.description??"",parent_id:B.parent_id},B.parent_id&&(c.value={id:B.parent_id,name:"Parent Album"})}catch(B){o("error",B)}}function T(){u.value.name=!0}function F(){u.value.description=!0}function V(){m.value=!0}function I(B){c.value={id:B.id,name:B.name},d.value.parent_id=B.id,m.value=!1}function $(){m.value=!1}function C(){o("close")}function M(){o("close")}async function _(){if(u.value.name=!0,u.value.description=!0,!(!E.value||f.value)){f.value=!0;try{const B={name:d.value.name.trim(),description:d.value.description.trim(),parent_id:d.value.parent_id};if(r.value&&t.albumId){const U=await i.updateAlbum(t.albumId,B);o("updated",U)}else{const U=await i.createAlbum(B);o("created",U)}o("close")}catch(B){o("error",B)}finally{f.value=!1}}}function L(){b.value&&(v.value=!0)}async function j(B){var S;if((((S=B.detail)==null?void 0:S.role)??"")!=="confirm"){v.value=!1;return}if(t.albumId){f.value=!0;try{await i.deleteAlbum(t.albumId),o("deleted",t.albumId),o("close")}catch(R){o("error",R)}finally{f.value=!1,v.value=!1}}}return(B,U)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[B.mode==="modal"?(e.openBlock(),e.createBlock(e.unref(G.IonModal),{key:0,"is-open":B.isOpen,class:"album-manager-modal",onDidDismiss:M},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.value),1)]),_:1}),e.createVNode(e.unref(G.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:C},{default:e.withCtx(()=>[...U[4]||(U[4]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(G.IonContent),{class:"album-manager-content"},{default:e.withCtx(()=>[e.createElementVNode("form",{"data-testid":"album-form",class:"p-4 space-y-3",onSubmit:e.withModifiers(_,["prevent"])},[e.createVNode(e.unref(G.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...U[5]||(U[5]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(G.IonInput),{modelValue:d.value.name,"onUpdate:modelValue":U[0]||(U[0]=S=>d.value.name=S),"data-testid":"name-input",maxlength:Vi,onIonBlur:T},null,8,["modelValue"])]),_:1}),h.value?(e.openBlock(),e.createBlock(e.unref(G.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",d8,e.toDisplayString(h.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(G.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...U[6]||(U[6]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(G.IonTextarea),{modelValue:d.value.description,"onUpdate:modelValue":U[1]||(U[1]=S=>d.value.description=S),"data-testid":"description-input",maxlength:Ni,onIonBlur:F},null,8,["modelValue"])]),_:1}),k.value?(e.openBlock(),e.createBlock(e.unref(G.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",u8,e.toDisplayString(k.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(G.IonItem),{button:"","data-testid":"parent-selector",onClick:V},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...U[7]||(U[7]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(G.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w.value),1)]),_:1})]),_:1})],32)]),_:1}),e.createVNode(e.unref(G.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButtons),{slot:"start"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",disabled:!b.value,title:b.value?void 0:g.value,onClick:L},{default:e.withCtx(()=>[...U[8]||(U[8]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(G.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!E.value,onClick:_},{default:e.withCtx(()=>[f.value?(e.openBlock(),e.createBlock(e.unref(G.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",c8,e.toDisplayString(s.value),1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"])):(e.openBlock(),e.createElementBlock("div",m8,[e.createElementVNode("div",p8,[e.createElementVNode("h2",f8,e.toDisplayString(l.value),1),e.createVNode(e.unref(G.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:C},{default:e.withCtx(()=>[...U[9]||(U[9]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),e.createElementVNode("form",{"data-testid":"album-form",class:"space-y-3",onSubmit:e.withModifiers(_,["prevent"])},[e.createVNode(e.unref(G.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...U[10]||(U[10]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(G.IonInput),{modelValue:d.value.name,"onUpdate:modelValue":U[2]||(U[2]=S=>d.value.name=S),"data-testid":"name-input",maxlength:Vi,onIonBlur:T},null,8,["modelValue"])]),_:1}),h.value?(e.openBlock(),e.createBlock(e.unref(G.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",v8,e.toDisplayString(h.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(G.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...U[11]||(U[11]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(G.IonTextarea),{modelValue:d.value.description,"onUpdate:modelValue":U[3]||(U[3]=S=>d.value.description=S),"data-testid":"description-input",maxlength:Ni,onIonBlur:F},null,8,["modelValue"])]),_:1}),k.value?(e.openBlock(),e.createBlock(e.unref(G.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",h8,e.toDisplayString(k.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(G.IonItem),{button:"","data-testid":"parent-selector",onClick:V},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonLabel),null,{default:e.withCtx(()=>[...U[12]||(U[12]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(G.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w.value),1)]),_:1})]),_:1}),e.createElementVNode("div",g8,[e.createElementVNode("div",null,[r.value?(e.openBlock(),e.createBlock(e.unref(G.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",fill:"outline",disabled:!b.value,title:b.value?void 0:g.value,onClick:L},{default:e.withCtx(()=>[...U[13]||(U[13]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),e.createVNode(e.unref(G.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!E.value,onClick:_},{default:e.withCtx(()=>[f.value?(e.openBlock(),e.createBlock(e.unref(G.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",b8,e.toDisplayString(s.value),1))]),_:1},8,["disabled"])])],32)])),e.createVNode(wf,{"is-open":m.value,"selected-album-id":d.value.parent_id,title:"Select Parent Album",onClose:$,onConfirm:I},null,8,["is-open","selected-album-id"]),e.createVNode(e.unref(G.IonAlert),{"is-open":v.value,header:"Delete Album?",message:g.value,buttons:[{text:"Cancel",role:"cancel"},{text:"Delete",role:"confirm",cssClass:"alert-button-danger"}],onDidDismiss:j},null,8,["is-open","message"])],64))}}),w8=Ie(y8,[["__scopeId","data-v-22083f3a"]]),k8={class:"album-media-grid"},_8={class:"aspect-square"},E8={key:1,"data-testid":"empty-state",class:"flex flex-col items-center justify-center py-12 gap-4"},S8={class:"text-gray-500"},x8=["data-media-id","draggable","onDragstart","onDragover","onDrop","onMouseenter"],C8={key:0,"data-testid":"drop-indicator",class:"absolute inset-0 border-2 border-primary rounded-lg pointer-events-none z-30"},V8={key:1,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-grab"},N8={class:"aspect-square relative"},T8=["src","alt"],B8={key:0,class:"absolute inset-0 bg-black/50 flex items-center justify-center gap-2 transition-opacity"},M8=e.defineComponent({__name:"AlbumMediaGrid",props:{albumId:{},selectionMode:{type:Boolean,default:!1},selectedItems:{default:()=>[]},reorderable:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0},columns:{default:()=>({mobile:2,sm:3,md:4,lg:5,xl:6})},isLoading:{type:Boolean,default:!1},emptyText:{default:"No media in this album"}},emits:["toggle-select","preview","edit","detach","reorder","add","selection-change"],setup(a,{emit:n}){const t=a,o=n,i=Ul(),r=e.ref([]),l=e.ref(!1),s=e.ref(null),d=e.ref(null),u=e.ref(null),c=e.computed(()=>t.isLoading||l.value),m=e.computed(()=>!c.value&&r.value.length===0),p=e.computed(()=>{const M=t.columns;return["grid","gap-4",`grid-cols-${M.mobile??2}`,`sm:grid-cols-${M.sm??3}`,`md:grid-cols-${M.md??4}`,`lg:grid-cols-${M.lg??5}`,`xl:grid-cols-${M.xl??6}`]}),f=e.computed(()=>(t.columns.md??4)*2);e.onMounted(async()=>{await v()}),e.watch(()=>t.albumId,async()=>{await v()});async function v(){l.value=!0;try{const M=await i.fetchAlbumMedia(t.albumId);r.value=M}catch{r.value=[]}finally{l.value=!1}}function h(M){return t.selectedItems.includes(M)}function k(M){o("toggle-select",M);const _=h(M.uuid)?t.selectedItems.filter(L=>L!==M.uuid):[...t.selectedItems,M.uuid];o("selection-change",_)}function E(M){if(M.conversions&&typeof M.conversions=="object"){const _=M.conversions.thumb;if(typeof _=="string")return _}return M.original_url}function w(M){s.value=M}function b(){s.value=null}function g(M){o("preview",M)}function D(M){o("edit",M)}function T(M){o("detach",M.uuid)}function F(){o("add")}function V(M,_){t.reorderable&&(d.value=_,M.dataTransfer&&(M.dataTransfer.effectAllowed="move",M.dataTransfer.setData("text/plain",String(_))))}function I(M,_){!t.reorderable||d.value===null||(M.preventDefault(),u.value=_)}function $(M,_){if(!t.reorderable||d.value===null)return;M.preventDefault();const L=d.value;if(L!==_){const j=[...r.value],[B]=j.splice(L,1);j.splice(_,0,B),r.value=j;const U=j.map(S=>S.uuid);o("reorder",U),i.reorderAlbumMedia(t.albumId,U).catch(()=>{v()})}d.value=null,u.value=null}function C(){d.value=null,u.value=null}return(M,_)=>(e.openBlock(),e.createElementBlock("div",k8,[c.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-testid":"loading-grid",class:e.normalizeClass(p.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,L=>(e.openBlock(),e.createBlock(e.unref(G.IonCard),{key:L,class:"m-0"},{default:e.withCtx(()=>[e.createElementVNode("div",_8,[e.createVNode(e.unref(G.IonSkeletonText),{animated:"",class:"w-full h-full skeleton"})])]),_:1}))),128))],2)):m.value?(e.openBlock(),e.createElementBlock("div",E8,[e.createVNode(e.unref(G.IonIcon),{name:"images-outline",class:"text-6xl text-gray-400"}),e.createElementVNode("p",S8,e.toDisplayString(M.emptyText),1),e.createVNode(e.unref(G.IonButton),{"data-testid":"add-media-btn",onClick:F},{default:e.withCtx(()=>[..._[0]||(_[0]=[e.createTextVNode(" Add Media ",-1)])]),_:1})])):(e.openBlock(),e.createElementBlock("div",{key:2,"data-testid":"media-grid",class:e.normalizeClass(p.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(L,j)=>(e.openBlock(),e.createElementBlock("div",{key:L.uuid,"data-media-id":L.uuid,class:e.normalizeClass(["media-item relative group",{"opacity-50":d.value===j,"ring-2 ring-primary":u.value===j&&d.value!==j}]),draggable:M.reorderable,onDragstart:B=>V(B,j),onDragover:B=>I(B,j),onDrop:B=>$(B,j),onDragend:C,onMouseenter:B=>w(L.uuid),onMouseleave:b},[u.value===j&&d.value!==j&&M.reorderable?(e.openBlock(),e.createElementBlock("div",C8)):e.createCommentVNode("",!0),M.reorderable?(e.openBlock(),e.createElementBlock("div",V8,[e.createVNode(e.unref(G.IonIcon),{name:"reorder-three-outline",class:"text-white drop-shadow-md"})])):e.createCommentVNode("",!0),M.selectionMode?(e.openBlock(),e.createBlock(e.unref(G.IonCheckbox),{key:2,"data-testid":"media-checkbox",checked:h(L.uuid),class:"absolute top-2 left-2 z-20",onIonChange:B=>k(L)},null,8,["checked","onIonChange"])):e.createCommentVNode("",!0),e.createVNode(e.unref(G.IonCard),{class:"m-0 overflow-hidden"},{default:e.withCtx(()=>[e.createElementVNode("div",N8,[e.createElementVNode("img",{src:E(L),alt:L.file_name,class:"w-full h-full object-cover"},null,8,T8),M.showActions&&s.value===L.uuid?(e.openBlock(),e.createElementBlock("div",B8,[e.createVNode(e.unref(G.IonButton),{"data-testid":"action-preview",fill:"clear",size:"small",color:"light",onClick:B=>g(L)},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{slot:"icon-only",name:"eye-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(G.IonButton),{"data-testid":"action-edit",fill:"clear",size:"small",color:"light",onClick:B=>D(L)},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{slot:"icon-only",name:"create-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(G.IonButton),{"data-testid":"action-detach",fill:"clear",size:"small",color:"danger",onClick:B=>T(L)},{default:e.withCtx(()=>[e.createVNode(e.unref(G.IonIcon),{slot:"icon-only",name:"close-circle-outline"})]),_:1},8,["onClick"])])):e.createCommentVNode("",!0)])]),_:2},1024)],42,x8))),128)),e.createElementVNode("div",{class:"aspect-square border-2 border-dashed border-gray-300 rounded-lg flex flex-col items-center justify-center gap-2 cursor-pointer hover:border-primary hover:bg-gray-50 transition-colors","data-testid":"add-more-card",onClick:F},[e.createVNode(e.unref(G.IonIcon),{name:"add-circle-outline",class:"text-4xl text-gray-400"}),_[1]||(_[1]=e.createElementVNode("span",{class:"text-sm text-gray-500"},"Add Media",-1))])],2))]))}}),$8=Ie(M8,[["__scopeId","data-v-d84b796a"]]),I8={key:0,class:"media-album-inline-create","data-testid":"media-album-inline-create"},D8={class:"media-album-inline-create__field"},F8={class:"media-album-inline-create__field"},A8=["value"],R8={key:1,class:"media-album-inline-create__autocomplete"},L8={class:"media-album-inline-create__autocomplete-input-wrap"},P8={key:0,class:"media-album-inline-create__autocomplete-list"},U8=["onMousedown"],O8={key:1,class:"media-album-inline-create__autocomplete-empty"},z8={class:"media-album-inline-create__actions"},j8=e.defineComponent({__name:"MediaAlbumInlineCreate",props:{open:{type:Boolean,default:!1},nameLabel:{default:"Album name"},albums:{default:()=>[]}},emits:["cancel","create"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(""),r=e.ref(""),l=e.ref(""),s=e.ref(!1),d=e.computed(()=>t.albums.length>5),u=e.computed(()=>{if(l.value.trim()==="")return t.albums;const k=l.value.toLowerCase();return t.albums.filter(E=>E.name.toLowerCase().includes(k))}),c=e.computed(()=>{if(r.value==="")return"";const k=t.albums.find(E=>E.id===r.value);return(k==null?void 0:k.name)??""}),m=k=>{r.value=k.id,l.value=k.name,s.value=!1},p=()=>{r.value="",l.value="",s.value=!1},f=()=>{s.value=!0,r.value!==""&&(l.value=c.value)},v=()=>{setTimeout(()=>{s.value=!1,r.value!==""?l.value=c.value:l.value=""},150)},h=()=>{i.value.trim()!==""&&(o("create",i.value.trim(),r.value!==""?r.value:void 0),i.value="",r.value="",l.value="")};return(k,E)=>k.open?(e.openBlock(),e.createElementBlock("section",I8,[E[7]||(E[7]=e.createElementVNode("h4",{class:"media-album-inline-create__heading"}," New album ",-1)),e.createElementVNode("label",D8,[e.createElementVNode("span",null,e.toDisplayString(k.nameLabel),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[0]||(E[0]=w=>i.value=w),type:"text",class:"media-album-inline-create__input",placeholder:"e.g. Marbles, Pendants","data-testid":"input-media-album-name"},null,512),[[e.vModelText,i.value]])]),e.createElementVNode("label",F8,[E[6]||(E[6]=e.createElementVNode("span",null,"Parent album (optional)",-1)),d.value?(e.openBlock(),e.createElementBlock("div",R8,[e.createElementVNode("div",L8,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[2]||(E[2]=w=>l.value=w),type:"text",class:"media-album-inline-create__input",placeholder:"Search albums...","data-testid":"input-media-album-parent-search",onFocus:f,onBlur:v},null,544),[[e.vModelText,l.value]]),r.value!==""?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-album-inline-create__autocomplete-clear","aria-label":"Clear parent album",onMousedown:e.withModifiers(p,["prevent"])},[...E[5]||(E[5]=[e.createElementVNode("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"},[e.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],32)):e.createCommentVNode("",!0)]),s.value?(e.openBlock(),e.createElementBlock("ul",P8,[r.value!==""?(e.openBlock(),e.createElementBlock("li",{key:0,class:"media-album-inline-create__autocomplete-option media-album-inline-create__autocomplete-option--none",onMousedown:e.withModifiers(p,["prevent"])}," None ",32)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,w=>(e.openBlock(),e.createElementBlock("li",{key:w.id,class:e.normalizeClass(["media-album-inline-create__autocomplete-option",{"is-selected":w.id===r.value}]),onMousedown:e.withModifiers(b=>m(w),["prevent"])},e.toDisplayString(w.name),43,U8))),128)),u.value.length===0?(e.openBlock(),e.createElementBlock("li",O8," No albums match ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:0,"onUpdate:modelValue":E[1]||(E[1]=w=>r.value=w),class:"media-album-inline-create__input","data-testid":"select-media-album-parent"},[E[4]||(E[4]=e.createElementVNode("option",{value:""}," None ",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.albums,w=>(e.openBlock(),e.createElementBlock("option",{key:w.id,value:w.id},e.toDisplayString(w.name),9,A8))),128))],512)),[[e.vModelSelect,r.value]])]),e.createElementVNode("div",z8,[e.createElementVNode("button",{type:"button",class:"media-album-inline-create__button","data-testid":"btn-media-album-cancel",onClick:E[3]||(E[3]=w=>o("cancel"))}," Cancel "),e.createElementVNode("button",{type:"button",class:"media-album-inline-create__button media-album-inline-create__button--primary","data-testid":"btn-media-album-create",onClick:h}," Create ")])])):e.createCommentVNode("",!0)}}),Zd=Ie(j8,[["__scopeId","data-v-a85162fe"]]),W8={class:"media-album-unavailable-state","data-testid":"media-album-unavailable-state"},Z8=e.defineComponent({__name:"MediaAlbumUnavailableState",props:{title:{default:"Album unavailable"},body:{default:"You no longer have access to this album."},actionLabel:{default:"Go to library"}},emits:["goToLibrary"],setup(a,{emit:n}){const t=n;return(o,i)=>(e.openBlock(),e.createElementBlock("section",W8,[e.createElementVNode("h3",null,e.toDisplayString(o.title),1),e.createElementVNode("p",null,e.toDisplayString(o.body),1),e.createElementVNode("button",{type:"button",class:"media-album-unavailable-state__button",onClick:i[0]||(i[0]=r=>t("goToLibrary"))},e.toDisplayString(o.actionLabel),1)]))}}),kf=Ie(Z8,[["__scopeId","data-v-04620e64"]]);/*!
350
+ * tabbable 6.2.0
351
+ * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
352
+ */var _f=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],ll=_f.join(","),Ef=typeof Element>"u",Uo=Ef?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,sl=!Ef&&Element.prototype.getRootNode?function(a){var n;return a==null||(n=a.getRootNode)===null||n===void 0?void 0:n.call(a)}:function(a){return a==null?void 0:a.ownerDocument},dl=function a(n,t){var o;t===void 0&&(t=!0);var i=n==null||(o=n.getAttribute)===null||o===void 0?void 0:o.call(n,"inert"),r=i===""||i==="true",l=r||t&&n&&a(n.parentNode);return l},H8=function(n){var t,o=n==null||(t=n.getAttribute)===null||t===void 0?void 0:t.call(n,"contenteditable");return o===""||o==="true"},Sf=function(n,t,o){if(dl(n))return[];var i=Array.prototype.slice.apply(n.querySelectorAll(ll));return t&&Uo.call(n,ll)&&i.unshift(n),i=i.filter(o),i},xf=function a(n,t,o){for(var i=[],r=Array.from(n);r.length;){var l=r.shift();if(!dl(l,!1))if(l.tagName==="SLOT"){var s=l.assignedElements(),d=s.length?s:l.children,u=a(d,!0,o);o.flatten?i.push.apply(i,u):i.push({scopeParent:l,candidates:u})}else{var c=Uo.call(l,ll);c&&o.filter(l)&&(t||!n.includes(l))&&i.push(l);var m=l.shadowRoot||typeof o.getShadowRoot=="function"&&o.getShadowRoot(l),p=!dl(m,!1)&&(!o.shadowRootFilter||o.shadowRootFilter(l));if(m&&p){var f=a(m===!0?l.children:m.children,!0,o);o.flatten?i.push.apply(i,f):i.push({scopeParent:l,candidates:f})}else r.unshift.apply(r,l.children)}}return i},Cf=function(n){return!isNaN(parseInt(n.getAttribute("tabindex"),10))},Bo=function(n){if(!n)throw new Error("No node provided");return n.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(n.tagName)||H8(n))&&!Cf(n)?0:n.tabIndex},G8=function(n,t){var o=Bo(n);return o<0&&t&&!Cf(n)?0:o},X8=function(n,t){return n.tabIndex===t.tabIndex?n.documentOrder-t.documentOrder:n.tabIndex-t.tabIndex},Vf=function(n){return n.tagName==="INPUT"},K8=function(n){return Vf(n)&&n.type==="hidden"},J8=function(n){var t=n.tagName==="DETAILS"&&Array.prototype.slice.apply(n.children).some(function(o){return o.tagName==="SUMMARY"});return t},q8=function(n,t){for(var o=0;o<n.length;o++)if(n[o].checked&&n[o].form===t)return n[o]},Y8=function(n){if(!n.name)return!0;var t=n.form||sl(n),o=function(s){return t.querySelectorAll('input[type="radio"][name="'+s+'"]')},i;if(typeof window<"u"&&typeof window.CSS<"u"&&typeof window.CSS.escape=="function")i=o(window.CSS.escape(n.name));else try{i=o(n.name)}catch{return!1}var r=q8(i,n.form);return!r||r===n},Q8=function(n){return Vf(n)&&n.type==="radio"},e6=function(n){return Q8(n)&&!Y8(n)},t6=function(n){var t,o=n&&sl(n),i=(t=o)===null||t===void 0?void 0:t.host,r=!1;if(o&&o!==n){var l,s,d;for(r=!!((l=i)!==null&&l!==void 0&&(s=l.ownerDocument)!==null&&s!==void 0&&s.contains(i)||n!=null&&(d=n.ownerDocument)!==null&&d!==void 0&&d.contains(n));!r&&i;){var u,c,m;o=sl(i),i=(u=o)===null||u===void 0?void 0:u.host,r=!!((c=i)!==null&&c!==void 0&&(m=c.ownerDocument)!==null&&m!==void 0&&m.contains(i))}}return r},jc=function(n){var t=n.getBoundingClientRect(),o=t.width,i=t.height;return o===0&&i===0},a6=function(n,t){var o=t.displayCheck,i=t.getShadowRoot;if(getComputedStyle(n).visibility==="hidden")return!0;var r=Uo.call(n,"details>summary:first-of-type"),l=r?n.parentElement:n;if(Uo.call(l,"details:not([open]) *"))return!0;if(!o||o==="full"||o==="legacy-full"){if(typeof i=="function"){for(var s=n;n;){var d=n.parentElement,u=sl(n);if(d&&!d.shadowRoot&&i(d)===!0)return jc(n);n.assignedSlot?n=n.assignedSlot:!d&&u!==n.ownerDocument?n=u.host:n=d}n=s}if(t6(n))return!n.getClientRects().length;if(o!=="legacy-full")return!0}else if(o==="non-zero-area")return jc(n);return!1},n6=function(n){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(n.tagName))for(var t=n.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var o=0;o<t.children.length;o++){var i=t.children.item(o);if(i.tagName==="LEGEND")return Uo.call(t,"fieldset[disabled] *")?!0:!i.contains(n)}return!0}t=t.parentElement}return!1},ul=function(n,t){return!(t.disabled||dl(t)||K8(t)||a6(t,n)||J8(t)||n6(t))},dd=function(n,t){return!(e6(t)||Bo(t)<0||!ul(n,t))},o6=function(n){var t=parseInt(n.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},i6=function a(n){var t=[],o=[];return n.forEach(function(i,r){var l=!!i.scopeParent,s=l?i.scopeParent:i,d=G8(s,l),u=l?a(i.candidates):s;d===0?l?t.push.apply(t,u):t.push(s):o.push({documentOrder:r,tabIndex:d,item:i,isScope:l,content:u})}),o.sort(X8).reduce(function(i,r){return r.isScope?i.push.apply(i,r.content):i.push(r.content),i},[]).concat(t)},r6=function(n,t){t=t||{};var o;return t.getShadowRoot?o=xf([n],t.includeContainer,{filter:dd.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:o6}):o=Sf(n,t.includeContainer,dd.bind(null,t)),i6(o)},l6=function(n,t){t=t||{};var o;return t.getShadowRoot?o=xf([n],t.includeContainer,{filter:ul.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):o=Sf(n,t.includeContainer,ul.bind(null,t)),o},Ko=function(n,t){if(t=t||{},!n)throw new Error("No node provided");return Uo.call(n,ll)===!1?!1:dd(t,n)},s6=_f.concat("iframe").join(","),bs=function(n,t){if(t=t||{},!n)throw new Error("No node provided");return Uo.call(n,s6)===!1?!1:ul(t,n)};/*!
353
+ * focus-trap 7.6.5
354
+ * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
355
+ */function ud(a,n){(n==null||n>a.length)&&(n=a.length);for(var t=0,o=Array(n);t<n;t++)o[t]=a[t];return o}function d6(a){if(Array.isArray(a))return ud(a)}function u6(a,n,t){return(n=v6(n))in a?Object.defineProperty(a,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[n]=t,a}function c6(a){if(typeof Symbol<"u"&&a[Symbol.iterator]!=null||a["@@iterator"]!=null)return Array.from(a)}function m6(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
356
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Wc(a,n){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(a);n&&(o=o.filter(function(i){return Object.getOwnPropertyDescriptor(a,i).enumerable})),t.push.apply(t,o)}return t}function Zc(a){for(var n=1;n<arguments.length;n++){var t=arguments[n]!=null?arguments[n]:{};n%2?Wc(Object(t),!0).forEach(function(o){u6(a,o,t[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(t)):Wc(Object(t)).forEach(function(o){Object.defineProperty(a,o,Object.getOwnPropertyDescriptor(t,o))})}return a}function p6(a){return d6(a)||c6(a)||h6(a)||m6()}function f6(a,n){if(typeof a!="object"||!a)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var o=t.call(a,n);if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(a)}function v6(a){var n=f6(a,"string");return typeof n=="symbol"?n:n+""}function h6(a,n){if(a){if(typeof a=="string")return ud(a,n);var t={}.toString.call(a).slice(8,-1);return t==="Object"&&a.constructor&&(t=a.constructor.name),t==="Map"||t==="Set"?Array.from(a):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?ud(a,n):void 0}}var Hc={activateTrap:function(n,t){if(n.length>0){var o=n[n.length-1];o!==t&&o._setPausedState(!0)}var i=n.indexOf(t);i===-1||n.splice(i,1),n.push(t)},deactivateTrap:function(n,t){var o=n.indexOf(t);o!==-1&&n.splice(o,1),n.length>0&&!n[n.length-1]._isManuallyPaused()&&n[n.length-1]._setPausedState(!1)}},g6=function(n){return n.tagName&&n.tagName.toLowerCase()==="input"&&typeof n.select=="function"},b6=function(n){return(n==null?void 0:n.key)==="Escape"||(n==null?void 0:n.key)==="Esc"||(n==null?void 0:n.keyCode)===27},Gi=function(n){return(n==null?void 0:n.key)==="Tab"||(n==null?void 0:n.keyCode)===9},y6=function(n){return Gi(n)&&!n.shiftKey},w6=function(n){return Gi(n)&&n.shiftKey},Gc=function(n){return setTimeout(n,0)},Ti=function(n){for(var t=arguments.length,o=new Array(t>1?t-1:0),i=1;i<t;i++)o[i-1]=arguments[i];return typeof n=="function"?n.apply(void 0,o):n},Tr=function(n){return n.target.shadowRoot&&typeof n.composedPath=="function"?n.composedPath()[0]:n.target},k6=[],_6=function(n,t){var o=(t==null?void 0:t.document)||document,i=(t==null?void 0:t.trapStack)||k6,r=Zc({returnFocusOnDeactivate:!0,escapeDeactivates:!0,delayInitialFocus:!0,isKeyForward:y6,isKeyBackward:w6},t),l={containers:[],containerGroups:[],tabbableGroups:[],nodeFocusedBeforeActivation:null,mostRecentlyFocusedNode:null,active:!1,paused:!1,manuallyPaused:!1,delayInitialFocusTimer:void 0,recentNavEvent:void 0},s,d=function(_,L,j){return _&&_[L]!==void 0?_[L]:r[j||L]},u=function(_,L){var j=typeof(L==null?void 0:L.composedPath)=="function"?L.composedPath():void 0;return l.containerGroups.findIndex(function(B){var U=B.container,S=B.tabbableNodes;return U.contains(_)||(j==null?void 0:j.includes(U))||S.find(function(R){return R===_})})},c=function(_){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},j=L.hasFallback,B=j===void 0?!1:j,U=L.params,S=U===void 0?[]:U,R=r[_];if(typeof R=="function"&&(R=R.apply(void 0,p6(S))),R===!0&&(R=void 0),!R){if(R===void 0||R===!1)return R;throw new Error("`".concat(_,"` was specified but was not a node, or did not return a node"))}var O=R;if(typeof R=="string"){try{O=o.querySelector(R)}catch(K){throw new Error("`".concat(_,'` appears to be an invalid selector; error="').concat(K.message,'"'))}if(!O&&!B)throw new Error("`".concat(_,"` as selector refers to no known node"))}return O},m=function(){var _=c("initialFocus",{hasFallback:!0});if(_===!1)return!1;if(_===void 0||_&&!bs(_,r.tabbableOptions))if(u(o.activeElement)>=0)_=o.activeElement;else{var L=l.tabbableGroups[0],j=L&&L.firstTabbableNode;_=j||c("fallbackFocus")}else _===null&&(_=c("fallbackFocus"));if(!_)throw new Error("Your focus-trap needs to have at least one focusable element");return _},p=function(){if(l.containerGroups=l.containers.map(function(_){var L=r6(_,r.tabbableOptions),j=l6(_,r.tabbableOptions),B=L.length>0?L[0]:void 0,U=L.length>0?L[L.length-1]:void 0,S=j.find(function(K){return Ko(K)}),R=j.slice().reverse().find(function(K){return Ko(K)}),O=!!L.find(function(K){return Bo(K)>0});return{container:_,tabbableNodes:L,focusableNodes:j,posTabIndexesFound:O,firstTabbableNode:B,lastTabbableNode:U,firstDomTabbableNode:S,lastDomTabbableNode:R,nextTabbableNode:function(se){var xe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,ue=L.indexOf(se);return ue<0?xe?j.slice(j.indexOf(se)+1).find(function(le){return Ko(le)}):j.slice(0,j.indexOf(se)).reverse().find(function(le){return Ko(le)}):L[ue+(xe?1:-1)]}}}),l.tabbableGroups=l.containerGroups.filter(function(_){return _.tabbableNodes.length>0}),l.tabbableGroups.length<=0&&!c("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(l.containerGroups.find(function(_){return _.posTabIndexesFound})&&l.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},f=function(_){var L=_.activeElement;if(L)return L.shadowRoot&&L.shadowRoot.activeElement!==null?f(L.shadowRoot):L},v=function(_){if(_!==!1&&_!==f(document)){if(!_||!_.focus){v(m());return}_.focus({preventScroll:!!r.preventScroll}),l.mostRecentlyFocusedNode=_,g6(_)&&_.select()}},h=function(_){var L=c("setReturnFocus",{params:[_]});return L||(L===!1?!1:_)},k=function(_){var L=_.target,j=_.event,B=_.isBackward,U=B===void 0?!1:B;L=L||Tr(j),p();var S=null;if(l.tabbableGroups.length>0){var R=u(L,j),O=R>=0?l.containerGroups[R]:void 0;if(R<0)U?S=l.tabbableGroups[l.tabbableGroups.length-1].lastTabbableNode:S=l.tabbableGroups[0].firstTabbableNode;else if(U){var K=l.tabbableGroups.findIndex(function(y){var A=y.firstTabbableNode;return L===A});if(K<0&&(O.container===L||bs(L,r.tabbableOptions)&&!Ko(L,r.tabbableOptions)&&!O.nextTabbableNode(L,!1))&&(K=R),K>=0){var se=K===0?l.tabbableGroups.length-1:K-1,xe=l.tabbableGroups[se];S=Bo(L)>=0?xe.lastTabbableNode:xe.lastDomTabbableNode}else Gi(j)||(S=O.nextTabbableNode(L,!1))}else{var ue=l.tabbableGroups.findIndex(function(y){var A=y.lastTabbableNode;return L===A});if(ue<0&&(O.container===L||bs(L,r.tabbableOptions)&&!Ko(L,r.tabbableOptions)&&!O.nextTabbableNode(L))&&(ue=R),ue>=0){var le=ue===l.tabbableGroups.length-1?0:ue+1,H=l.tabbableGroups[le];S=Bo(L)>=0?H.firstTabbableNode:H.firstDomTabbableNode}else Gi(j)||(S=O.nextTabbableNode(L))}}else S=c("fallbackFocus");return S},E=function(_){var L=Tr(_);if(!(u(L,_)>=0)){if(Ti(r.clickOutsideDeactivates,_)){s.deactivate({returnFocus:r.returnFocusOnDeactivate});return}Ti(r.allowOutsideClick,_)||_.preventDefault()}},w=function(_){var L=Tr(_),j=u(L,_)>=0;if(j||L instanceof Document)j&&(l.mostRecentlyFocusedNode=L);else{_.stopImmediatePropagation();var B,U=!0;if(l.mostRecentlyFocusedNode)if(Bo(l.mostRecentlyFocusedNode)>0){var S=u(l.mostRecentlyFocusedNode),R=l.containerGroups[S].tabbableNodes;if(R.length>0){var O=R.findIndex(function(K){return K===l.mostRecentlyFocusedNode});O>=0&&(r.isKeyForward(l.recentNavEvent)?O+1<R.length&&(B=R[O+1],U=!1):O-1>=0&&(B=R[O-1],U=!1))}}else l.containerGroups.some(function(K){return K.tabbableNodes.some(function(se){return Bo(se)>0})})||(U=!1);else U=!1;U&&(B=k({target:l.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(l.recentNavEvent)})),v(B||l.mostRecentlyFocusedNode||m())}l.recentNavEvent=void 0},b=function(_){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;l.recentNavEvent=_;var j=k({event:_,isBackward:L});j&&(Gi(_)&&_.preventDefault(),v(j))},g=function(_){(r.isKeyForward(_)||r.isKeyBackward(_))&&b(_,r.isKeyBackward(_))},D=function(_){b6(_)&&Ti(r.escapeDeactivates,_)!==!1&&(_.preventDefault(),s.deactivate())},T=function(_){var L=Tr(_);u(L,_)>=0||Ti(r.clickOutsideDeactivates,_)||Ti(r.allowOutsideClick,_)||(_.preventDefault(),_.stopImmediatePropagation())},F=function(){if(l.active)return Hc.activateTrap(i,s),l.delayInitialFocusTimer=r.delayInitialFocus?Gc(function(){v(m())}):v(m()),o.addEventListener("focusin",w,!0),o.addEventListener("mousedown",E,{capture:!0,passive:!1}),o.addEventListener("touchstart",E,{capture:!0,passive:!1}),o.addEventListener("click",T,{capture:!0,passive:!1}),o.addEventListener("keydown",g,{capture:!0,passive:!1}),o.addEventListener("keydown",D),s},V=function(){if(l.active)return o.removeEventListener("focusin",w,!0),o.removeEventListener("mousedown",E,!0),o.removeEventListener("touchstart",E,!0),o.removeEventListener("click",T,!0),o.removeEventListener("keydown",g,!0),o.removeEventListener("keydown",D),s},I=function(_){var L=_.some(function(j){var B=Array.from(j.removedNodes);return B.some(function(U){return U===l.mostRecentlyFocusedNode})});L&&v(m())},$=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(I):void 0,C=function(){$&&($.disconnect(),l.active&&!l.paused&&l.containers.map(function(_){$.observe(_,{subtree:!0,childList:!0})}))};return s={get active(){return l.active},get paused(){return l.paused},activate:function(_){if(l.active)return this;var L=d(_,"onActivate"),j=d(_,"onPostActivate"),B=d(_,"checkCanFocusTrap");B||p(),l.active=!0,l.paused=!1,l.nodeFocusedBeforeActivation=f(o),L==null||L();var U=function(){B&&p(),F(),C(),j==null||j()};return B?(B(l.containers.concat()).then(U,U),this):(U(),this)},deactivate:function(_){if(!l.active)return this;var L=Zc({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},_);clearTimeout(l.delayInitialFocusTimer),l.delayInitialFocusTimer=void 0,V(),l.active=!1,l.paused=!1,C(),Hc.deactivateTrap(i,s);var j=d(L,"onDeactivate"),B=d(L,"onPostDeactivate"),U=d(L,"checkCanReturnFocus"),S=d(L,"returnFocus","returnFocusOnDeactivate");j==null||j();var R=function(){Gc(function(){S&&v(h(l.nodeFocusedBeforeActivation)),B==null||B()})};return S&&U?(U(h(l.nodeFocusedBeforeActivation)).then(R,R),this):(R(),this)},pause:function(_){return l.active?(l.manuallyPaused=!0,this._setPausedState(!0,_)):this},unpause:function(_){return l.active?(l.manuallyPaused=!1,i[i.length-1]!==this?this:this._setPausedState(!1,_)):this},updateContainerElements:function(_){var L=[].concat(_).filter(Boolean);return l.containers=L.map(function(j){return typeof j=="string"?o.querySelector(j):j}),l.active&&p(),C(),this}},Object.defineProperties(s,{_isManuallyPaused:{value:function(){return l.manuallyPaused}},_setPausedState:{value:function(_,L){if(l.paused===_)return this;if(l.paused=_,_){var j=d(L,"onPause"),B=d(L,"onPostPause");j==null||j(),V(),C(),B==null||B()}else{var U=d(L,"onUnpause"),S=d(L,"onPostUnpause");U==null||U(),p(),F(),C(),S==null||S()}return this}}}),s.updateContainerElements(n),s};const E6=["aria-labelledby"],S6={class:"media-preview-sheet__header"},x6=["id"],C6=["aria-label"],V6=["src","alt"],N6=["src"],T6={class:"media-preview-sheet__actions"},B6=["disabled","aria-label"],M6=["aria-label","aria-pressed"],$6=["disabled","aria-label"],I6=e.defineComponent({__name:"MediaPreviewSheet",props:{open:{type:Boolean,default:!1},media:{default:null},canGoPrevious:{type:Boolean,default:!1},canGoNext:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},closeLabel:{default:"Close"},previousLabel:{default:"Previous"},nextLabel:{default:"Next"},selectLabel:{default:"Select"},deselectLabel:{default:"Deselect"}},emits:["close","previous","next","toggleSelect"],setup(a,{emit:n}){const t=a,o=n,i=e.useId(),r=e.ref(null),l=e.ref(null);let s=null,d=null;const u=e.computed(()=>{var $;return(($=t.media)==null?void 0:$.mime_type.startsWith("image/"))===!0}),c=/[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/ig,m=/[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i,p=e.computed(()=>t.media?t.media.preview_url??t.media.original_url:"");function f($){const C=$.replace(/\.[^.]+$/,""),_=C.replace(c,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim();return _!==""?_:C||$}function v($){var L,j;const C=(L=$.name)==null?void 0:L.trim(),M=$.file_name.replace(/\.[^.]+$/,"");if(C!==void 0&&C!==""&&C!==$.file_name&&C!==M&&!m.test(C))return C;const _=(j=$.alt_text)==null?void 0:j.trim();return _!==void 0&&_!==""?_:f(C||$.file_name)}const h=e.computed(()=>t.media?v(t.media):"media"),k=e.computed(()=>t.media?`Preview ${h.value}`:"Media preview"),E=e.computed(()=>t.media?`Close preview of ${h.value}`:"Close preview"),w=e.computed(()=>t.canGoPrevious?"Previous media":"No previous media"),b=e.computed(()=>t.canGoNext?"Next media":"No next media"),g=e.computed(()=>{const $=t.selected?t.deselectLabel:t.selectLabel;return t.media?t.selected?`${t.deselectLabel} ${h.value}`:`${t.selectLabel} ${h.value}`:$}),D=e.computed(()=>t.selected?t.deselectLabel:t.selectLabel),T=()=>{t.media&&o("toggleSelect",t.media)},F=$=>{if($.key==="Escape"){$.preventDefault(),o("close");return}if($.key==="ArrowLeft"&&t.canGoPrevious){$.preventDefault(),o("previous");return}$.key==="ArrowRight"&&t.canGoNext&&($.preventDefault(),o("next"))},V=()=>{if(s){try{s.deactivate({returnFocus:!1})}catch{}s=null}},I=()=>{const $=d;d=null,$&&typeof $.focus=="function"&&e.nextTick(()=>{$.focus()})};return e.watch(()=>t.open&&t.media!==null,async $=>{var C;if($){d=document.activeElement instanceof HTMLElement?document.activeElement:null,await e.nextTick();const M=r.value;if(M)try{s=_6(M,{initialFocus:()=>l.value??M,escapeDeactivates:!1,clickOutsideDeactivates:!1,returnFocusOnDeactivate:!1,allowOutsideClick:!0}),s.activate()}catch{(C=l.value)==null||C.focus()}}else V(),I()},{immediate:!0}),e.onBeforeUnmount(()=>{V()}),($,C)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[$.open&&$.media?(e.openBlock(),e.createElementBlock("section",{key:0,ref_key:"sheetRef",ref:r,class:"media-preview-sheet",role:"dialog","aria-modal":"true","aria-labelledby":e.unref(i),tabindex:"-1","data-testid":"media-preview-sheet",onKeydown:F},[e.createElementVNode("header",S6,[e.createElementVNode("strong",{id:e.unref(i),"data-testid":"media-preview-sheet-title"},e.toDisplayString(k.value),9,x6),e.createElementVNode("button",{ref_key:"closeButtonRef",ref:l,type:"button",class:"media-preview-sheet__close","aria-label":E.value,"data-testid":"btn-media-preview-close",onClick:C[0]||(C[0]=M=>o("close"))},e.toDisplayString($.closeLabel),9,C6)]),u.value?(e.openBlock(),e.createElementBlock("img",{key:0,class:"media-preview-sheet__image",src:p.value,alt:$.media.alt_text||h.value},null,8,V6)):(e.openBlock(),e.createElementBlock("video",{key:1,class:"media-preview-sheet__video",src:p.value,controls:""},null,8,N6)),e.createElementVNode("div",T6,[e.createElementVNode("button",{type:"button",class:"media-preview-sheet__nav",disabled:!$.canGoPrevious,"aria-label":w.value,"data-testid":"btn-media-preview-previous",onClick:C[1]||(C[1]=M=>o("previous"))},e.toDisplayString($.previousLabel),9,B6),e.createElementVNode("button",{type:"button",class:"media-preview-sheet__select","aria-label":g.value,"aria-pressed":$.selected,"data-testid":"btn-media-preview-select",onClick:T},e.toDisplayString(D.value),9,M6),e.createElementVNode("button",{type:"button",class:"media-preview-sheet__nav",disabled:!$.canGoNext,"aria-label":b.value,"data-testid":"btn-media-preview-next",onClick:C[2]||(C[2]=M=>o("next"))},e.toDisplayString($.nextLabel),9,$6)])],40,E6)):e.createCommentVNode("",!0)]))}}),Hd=Ie(I6,[["__scopeId","data-v-fa05530d"]]),D6={key:0,class:"media-album-grid","data-testid":"media-source-sheet"},F6={class:"media-album-grid__items"},A6={class:"media-album-grid__card-name"},R6={class:"media-album-grid__card-name"},L6=["data-testid","onClick"],P6={class:"media-album-grid__card-name"},U6={key:0,class:"media-album-grid__card-meta"},O6={key:0,class:"media-album-grid__empty"},z6=e.defineComponent({__name:"MediaSourceSheet",props:{open:{type:Boolean,default:!1},currentView:{},albums:{},viewLibraryLabel:{default:"Library"},browseAlbumsLabel:{default:"Albums"},createAlbumLabel:{default:"Create album"},enableAlbumCreation:{type:Boolean,default:!1}},emits:["close","selectLibrary","selectAlbum","createAlbum"],setup(a,{emit:n}){const t=n;return(o,i)=>o.open?(e.openBlock(),e.createElementBlock("section",D6,[e.createElementVNode("div",F6,[o.enableAlbumCreation?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-album-grid__card media-album-grid__card--create","data-testid":"btn-media-source-create-album",onClick:i[0]||(i[0]=r=>t("createAlbum"))},[i[2]||(i[2]=e.createElementVNode("div",{class:"media-album-grid__card-icon"},[e.createElementVNode("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.createElementVNode("line",{x1:"5",y1:"12",x2:"19",y2:"12"})])],-1)),e.createElementVNode("span",A6,e.toDisplayString(o.createAlbumLabel),1)])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["media-album-grid__card",{"is-active":o.currentView.scope==="library"}]),"data-testid":"btn-media-source-library",onClick:i[1]||(i[1]=r=>t("selectLibrary"))},[i[3]||(i[3]=e.createStaticVNode('<div class="media-album-grid__card-icon" data-v-129f67b1><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-v-129f67b1><rect x="3" y="3" width="7" height="7" data-v-129f67b1></rect><rect x="14" y="3" width="7" height="7" data-v-129f67b1></rect><rect x="14" y="14" width="7" height="7" data-v-129f67b1></rect><rect x="3" y="14" width="7" height="7" data-v-129f67b1></rect></svg></div>',1)),e.createElementVNode("span",R6,e.toDisplayString(o.viewLibraryLabel),1),i[4]||(i[4]=e.createElementVNode("span",{class:"media-album-grid__card-meta"},"All media",-1))],2),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.albums,r=>(e.openBlock(),e.createElementBlock("button",{key:r.id,type:"button",class:e.normalizeClass(["media-album-grid__card",{"is-active":o.currentView.scope==="album"&&o.currentView.albumId===r.id}]),"data-testid":`btn-media-source-album-${r.id}`,onClick:l=>t("selectAlbum",r)},[i[5]||(i[5]=e.createElementVNode("div",{class:"media-album-grid__card-icon"},[e.createElementVNode("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})])],-1)),e.createElementVNode("span",P6,e.toDisplayString(r.name),1),r.mediaCount!==void 0?(e.openBlock(),e.createElementBlock("span",U6,e.toDisplayString(r.mediaCount)+" item"+e.toDisplayString(r.mediaCount===1?"":"s"),1)):e.createCommentVNode("",!0)],10,L6))),128))]),o.albums.length===0?(e.openBlock(),e.createElementBlock("p",O6," No albums yet. ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),Nf=Ie(z6,[["__scopeId","data-v-129f67b1"]]),j6={key:0,class:"media-upload-sheet","data-testid":"media-upload-sheet"},W6={class:"media-upload-sheet__dropzone-text"},Z6={key:0,class:"media-upload-sheet__dropzone-helper","data-testid":"text-media-upload-sheet-helper"},H6={class:"media-upload-sheet__sr-only"},G6=["accept","aria-label"],X6=["aria-label"],K6={class:"media-upload-sheet__queue-row"},J6={key:0,class:"media-upload-sheet__preview"},q6=["src","alt","data-testid"],Y6={class:"media-upload-sheet__queue-body"},Q6={class:"media-upload-sheet__queue-info"},eD={class:"media-upload-sheet__queue-status"},tD=["aria-valuenow","aria-label","data-testid"],aD=["aria-label"],nD=e.defineComponent({__name:"MediaUploadSheet",props:{open:{type:Boolean,default:!1},queue:{},accept:{default:""},uploadLabel:{default:"Upload"},dropzoneLabel:{default:"Drop files here or browse"},dropzoneHelperText:{default:""},fileInputLabel:{default:"Choose media files"},closeButtonAriaLabel:{default:"Close upload panel"},closeButtonLabel:{default:"Done"},progressAriaLabel:{}},emits:["close","filesSelected"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(!1),r=p=>{var v;return t.progressAriaLabel!==void 0?t.progressAriaLabel(p):`Uploading ${((v=p.file)==null?void 0:v.name)??"file"}`},l=p=>{const f=Number.isFinite(p.progress)?p.progress:0;return f<0?0:f>100?100:Math.round(f)},s=e.computed(()=>t.queue.length===0?"":`${t.queue.length} upload${t.queue.length===1?"":"s"} in progress`),d=p=>{const f=p.target;!(f instanceof HTMLInputElement)||f.files===null||(o("filesSelected",Array.from(f.files)),f.value="")},u=p=>{p.preventDefault(),i.value=!0},c=()=>{i.value=!1},m=p=>{var f;p.preventDefault(),i.value=!1,(f=p.dataTransfer)!=null&&f.files&&p.dataTransfer.files.length>0&&o("filesSelected",Array.from(p.dataTransfer.files))};return(p,f)=>p.open?(e.openBlock(),e.createElementBlock("section",j6,[e.createElementVNode("label",{class:e.normalizeClass(["media-upload-sheet__dropzone",{"is-drag-over":i.value}]),onDragover:u,onDragleave:c,onDrop:m},[f[1]||(f[1]=e.createStaticVNode('<div class="media-upload-sheet__dropzone-icon" data-v-df614629><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-v-df614629><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" data-v-df614629></path><polyline points="17 8 12 3 7 8" data-v-df614629></polyline><line x1="12" y1="3" x2="12" y2="15" data-v-df614629></line></svg></div>',1)),e.createElementVNode("span",W6,e.toDisplayString(p.dropzoneLabel),1),p.dropzoneHelperText?(e.openBlock(),e.createElementBlock("span",Z6,e.toDisplayString(p.dropzoneHelperText),1)):e.createCommentVNode("",!0),e.createElementVNode("span",H6,e.toDisplayString(p.fileInputLabel),1),e.createElementVNode("input",{type:"file",accept:p.accept,multiple:"",class:"media-upload-sheet__file-input","data-testid":"input-media-upload-sheet","aria-label":p.fileInputLabel,onChange:d},null,40,G6)],34),p.queue.length>0?(e.openBlock(),e.createElementBlock("ul",{key:0,class:"media-upload-sheet__queue","aria-live":"polite","aria-label":s.value,"data-testid":"list-media-upload-sheet-queue"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.queue,v=>(e.openBlock(),e.createElementBlock("li",{key:v.id,class:"media-upload-sheet__queue-item"},[e.createElementVNode("div",K6,[v.previewUrl?(e.openBlock(),e.createElementBlock("div",J6,[e.createElementVNode("img",{src:v.previewUrl,alt:`Preview of ${v.file.name}`,"data-testid":`img-media-upload-sheet-preview-${v.id}`},null,8,q6)])):e.createCommentVNode("",!0),e.createElementVNode("div",Y6,[e.createElementVNode("div",Q6,[e.createElementVNode("strong",null,e.toDisplayString(v.file.name),1),e.createElementVNode("span",eD,e.toDisplayString(v.status),1)]),e.createElementVNode("div",{class:"media-upload-sheet__progress-bar",role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":l(v),"aria-label":r(v),"data-testid":`progress-media-upload-sheet-${v.id}`},[e.createElementVNode("div",{class:"media-upload-sheet__progress-fill",style:e.normalizeStyle({width:`${l(v)}%`})},null,4)],8,tD)])])]))),128))],8,X6)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"media-upload-sheet__close-btn","aria-label":p.closeButtonAriaLabel,"data-testid":"btn-close-upload-sheet",onClick:f[0]||(f[0]=v=>o("close"))},e.toDisplayString(p.closeButtonLabel),9,aD)])):e.createCommentVNode("",!0)}}),Tf=Ie(nD,[["__scopeId","data-v-df614629"]]),oD=["aria-label","aria-pressed","data-testid"],iD=["src","alt"],rD={key:1,class:"media-thumbnail-cell__video"},lD={class:"media-thumbnail-cell__video-name"},sD={key:2,class:"media-thumbnail-cell__selected-badge"},dD={key:3,class:"media-thumbnail-cell__status-badge"},uD=["aria-label"],cD=e.defineComponent({__name:"MediaThumbnailCell",props:{media:{},selected:{type:Boolean,default:!1},status:{},testId:{default:"media-library-thumbnail"}},emits:["toggle","preview"],setup(a,{emit:n}){const t=a,o=n,i=e.computed(()=>t.media.thumbnail_url??t.media.preview_url??t.media.original_url),r=e.computed(()=>t.media.mime_type.startsWith("image/")),l=e.computed(()=>{switch(t.status){case"missing":return"Unavailable";case"forbidden":return"Restricted";case"uploading":return"Uploading";case"failed":return"Failed";case"file_lost":return"Needs file";default:return null}}),s=e.computed(()=>{const c=t.media.file_name;return t.selected?`Deselect ${c}`:`Select ${c}`}),d=()=>{o("toggle",t.media)},u=()=>{o("preview",t.media)};return(c,m)=>(e.openBlock(),e.createElementBlock("article",{class:e.normalizeClass(["media-thumbnail-cell",{"is-selected":c.selected,"has-status":l.value!==null}])},[e.createElementVNode("button",{type:"button",class:"media-thumbnail-cell__button","aria-label":s.value,"aria-pressed":c.selected?"true":"false","data-testid":c.testId,onClick:d},[r.value?(e.openBlock(),e.createElementBlock("img",{key:0,class:"media-thumbnail-cell__image",src:i.value,alt:c.media.file_name},null,8,iD)):(e.openBlock(),e.createElementBlock("div",rD,[m[0]||(m[0]=e.createElementVNode("span",{class:"media-thumbnail-cell__video-label"},"Video",-1)),e.createElementVNode("span",lD,e.toDisplayString(c.media.file_name),1)])),c.selected?(e.openBlock(),e.createElementBlock("span",sD," Selected ")):e.createCommentVNode("",!0),l.value!==null?(e.openBlock(),e.createElementBlock("span",dD,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0)],8,oD),e.createElementVNode("button",{type:"button",class:"media-thumbnail-cell__preview-button","aria-label":`Preview ${c.media.file_name}`,onClick:u}," Preview ",8,uD)],2))}}),Bf=Ie(cD,[["__scopeId","data-v-edd4f0ad"]]),mD={class:"virtual-media-grid"},pD={key:0,class:"virtual-media-grid__state","data-testid":"media-grid-loading"},fD={key:1,class:"virtual-media-grid__state","data-testid":"media-grid-empty"},vD={key:2,class:"virtual-media-grid__items"},hD=["disabled"],gD=e.defineComponent({__name:"VirtualMediaGrid",props:{items:{},selectedItems:{},loading:{type:Boolean,default:!1},loadingMore:{type:Boolean,default:!1},hasMore:{type:Boolean,default:!1},emptyMessage:{default:"No media found."},testIdPrefix:{default:"media-grid-item"},loadingMessage:{default:"Loading media..."},loadMoreLabel:{default:"Load more"},loadingMoreLabel:{default:"Loading…"}},emits:["toggle","preview","loadMore"],setup(a,{emit:n}){const t=a,o=n;function i(r){return t.selectedItems.find(l=>l.id===r)}return(r,l)=>(e.openBlock(),e.createElementBlock("div",mD,[r.loading&&r.items.length===0?(e.openBlock(),e.createElementBlock("div",pD,e.toDisplayString(r.loadingMessage),1)):r.items.length===0?(e.openBlock(),e.createElementBlock("div",fD,e.toDisplayString(r.emptyMessage),1)):(e.openBlock(),e.createElementBlock("div",vD,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.items,s=>{var d,u;return e.openBlock(),e.createBlock(Bf,{key:s.uuid,media:s,selected:((d=i(s.uuid))==null?void 0:d.status)==="ready",status:(u=i(s.uuid))==null?void 0:u.status,"test-id":`${r.testIdPrefix}-${s.uuid}`,onToggle:l[0]||(l[0]=c=>o("toggle",c)),onPreview:l[1]||(l[1]=c=>o("preview",c))},null,8,["media","selected","status","test-id"])}),128))])),r.hasMore?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"virtual-media-grid__load-more",disabled:r.loadingMore,"data-testid":"btn-media-grid-load-more",onClick:l[2]||(l[2]=s=>o("loadMore"))},e.toDisplayString(r.loadingMore?r.loadingMoreLabel:r.loadMoreLabel),9,hD)):e.createCommentVNode("",!0)]))}}),Mf=Ie(gD,[["__scopeId","data-v-34667f65"]]);function cl(a){if(a===0)return"0 Bytes";const n=1024,t=["Bytes","KB","MB","GB"],o=Math.floor(Math.log(a)/Math.log(n));return parseFloat((a/Math.pow(n,o)).toFixed(2))+" "+t[o]}function $f(a){var t;const n=a.split(".");return n.length>1?`.${(t=n.pop())==null?void 0:t.toLowerCase()}`:""}function Gd(a){return a.type.startsWith("image/")}async function If(a){return Gd(a)?new Promise(n=>{const t=new Image,o=URL.createObjectURL(a);t.onload=()=>{URL.revokeObjectURL(o),n({width:t.naturalWidth,height:t.naturalHeight})},t.onerror=()=>{URL.revokeObjectURL(o),n(null)},t.src=o}):null}async function Df(a,n){const t=[];if(n.maxFileSize&&a.size>n.maxFileSize&&t.push({field:"size",message:`File exceeds maximum size of ${cl(n.maxFileSize)}`,code:"MAX_FILE_SIZE"}),n.minFileSize&&a.size<n.minFileSize&&t.push({field:"size",message:`File is smaller than minimum size of ${cl(n.minFileSize)}`,code:"MIN_FILE_SIZE"}),n.acceptedMimeTypes&&n.acceptedMimeTypes.length>0&&(n.acceptedMimeTypes.some(i=>i.endsWith("/*")?a.type.startsWith(i.slice(0,-1)):a.type===i)||t.push({field:"type",message:`File type "${a.type}" is not allowed`,code:"INVALID_MIME_TYPE"})),n.acceptedExtensions&&n.acceptedExtensions.length>0){const o=$f(a.name);n.acceptedExtensions.some(r=>r.toLowerCase()===o.toLowerCase())||t.push({field:"extension",message:`File extension "${o}" is not allowed`,code:"INVALID_EXTENSION"})}if(Gd(a)&&(n.maxDimensions||n.minDimensions)){const o=await If(a);o&&(n.maxDimensions&&(o.width>n.maxDimensions.width&&t.push({field:"dimensions",message:`Image width (${o.width}px) exceeds maximum (${n.maxDimensions.width}px)`,code:"MAX_WIDTH"}),o.height>n.maxDimensions.height&&t.push({field:"dimensions",message:`Image height (${o.height}px) exceeds maximum (${n.maxDimensions.height}px)`,code:"MAX_HEIGHT"})),n.minDimensions&&(o.width<n.minDimensions.width&&t.push({field:"dimensions",message:`Image width (${o.width}px) is smaller than minimum (${n.minDimensions.width}px)`,code:"MIN_WIDTH"}),o.height<n.minDimensions.height&&t.push({field:"dimensions",message:`Image height (${o.height}px) is smaller than minimum (${n.minDimensions.height}px)`,code:"MIN_HEIGHT"})))}if(n.customValidator){const o=await n.customValidator(a);t.push(...o)}return{valid:t.length===0,errors:t}}function Xd(a={}){const n=e.ref(a.rules||{});function t(d){n.value=d}async function o(d){return Df(d,n.value)}async function i(d){const u=new Map;return await Promise.all(d.map(async c=>{const m=await o(c);u.set(c,m)})),u}function r(d,u){return n.value.maxItems?u+d<=n.value.maxItems:!0}const l=e.computed(()=>{const d=[];return n.value.acceptedMimeTypes&&d.push(...n.value.acceptedMimeTypes),n.value.acceptedExtensions&&d.push(...n.value.acceptedExtensions),d.join(",")});function s(d){return!n.value.acceptedMimeTypes||n.value.acceptedMimeTypes.length===0?!0:n.value.acceptedMimeTypes.some(u=>u.endsWith("/*")?d.startsWith(u.slice(0,-1)):d===u)}return{rules:n,setRules:t,validateFile:o,validateFiles:i,canAddFiles:r,acceptString:l,isMimeTypeAllowed:s}}function bD(){return`upload-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function yD(a){if(a.type.startsWith("image/"))return URL.createObjectURL(a)}function Kd(a){const{adapter:n,maxConcurrent:t=3,rules:o,collection:i,onUploadStart:r,onUploadProgress:l,onUploadComplete:s,onUploadError:d,onQueueComplete:u,postUpload:c}=a,m=e.ref(new Map),p=e.ref(new Set),f=o?{rules:o}:{},{validateFile:v}=Xd(f);async function h(){if(p.value.size>=t)return;const M=Array.from(m.value.entries()).find(([j,B])=>B.status==="pending"&&!p.value.has(j));if(!M){Array.from(m.value.values()).every(B=>B.status==="completed"||B.status==="error")&&m.value.size>0&&(u==null||u());return}const[_,L]=M;await k(_,L)}async function k(M,_){p.value.add(M),_.status="uploading",_.abortController=new AbortController,m.value.set(M,{..._}),r==null||r(_);try{const L={onProgress:B=>{_.progress=B,m.value.set(M,{..._}),l==null||l(_)},signal:_.abortController.signal};i&&(L.collection=i);const j=await n.upload(_.file,L);c&&(_.status="attaching",m.value.set(M,{..._}),l==null||l(_),await c(_,j.media,n)),_.status="completed",_.progress=100,_.media=j.media,m.value.set(M,{..._}),s==null||s(_,j.media)}catch(L){L.name==="AbortError"?m.value.delete(M):(_.status="error",_.error=L.message,m.value.set(M,{..._}),d==null||d(_,L))}finally{p.value.delete(M),delete _.abortController,h()}}async function E(M){var j;const _=Array.from(M),L=[];for(const B of _){const U=await v(B),S=bD(),R=yD(B),O={id:S,file:B,progress:0,status:U.valid?"pending":"error"};!U.valid&&((j=U.errors[0])!=null&&j.message)&&(O.error=U.errors[0].message),R&&(O.previewUrl=R),m.value.set(S,O);const K={media:null,clientId:S,name:B.name,order:0,upload:O,errors:U.errors};L.push(K)}for(let B=0;B<t;B++)h();return L}function w(M){const _=m.value.get(M);_&&(_.abortController&&_.abortController.abort(),_.previewUrl&&URL.revokeObjectURL(_.previewUrl),m.value.delete(M),p.value.delete(M),h())}async function b(M){const _=m.value.get(M);!_||_.status!=="error"||(_.status="pending",_.progress=0,delete _.error,m.value.set(M,{..._}),h())}function g(){for(const[M,_]of m.value.entries())(_.status==="completed"||_.status==="error")&&(_.previewUrl&&URL.revokeObjectURL(_.previewUrl),m.value.delete(M))}function D(){for(const M of m.value.values())M.abortController&&M.abortController.abort(),M.previewUrl&&URL.revokeObjectURL(M.previewUrl);m.value.clear(),p.value.clear()}function T(M){return m.value.get(M)}const F=e.computed(()=>p.value.size>0),V=e.computed(()=>p.value.size),I=e.computed(()=>Array.from(m.value.values()).filter(M=>M.status==="pending").length),$=e.computed(()=>m.value.size===0?!0:Array.from(m.value.values()).every(M=>M.status==="completed"||M.status==="error")),C=e.computed(()=>Array.from(m.value.values()));return{uploads:m,isUploading:F,activeCount:V,pendingCount:I,isComplete:$,addFiles:E,cancelUpload:w,retryUpload:b,clearCompleted:g,clearAll:D,getUpload:T,uploadsArray:C}}const wD=["missing_alt","has_alt","missing_caption","has_caption","has_tags","decorative"];function Oo(a){return typeof a=="object"&&a!==null&&!Array.isArray(a)}function kD(a){return typeof a=="string"&&wD.includes(a)}function ar(a){return typeof a=="string"?a:null}function Bi(a){return typeof a=="number"?a:null}function _D(a){return typeof a=="boolean"?a:null}function Ff(a){return Oo(a)&&typeof a.uuid=="string"&&typeof a.file_name=="string"&&typeof a.mime_type=="string"&&(typeof a.original_url=="string"||a.original_url===null)&&typeof a.size=="number"&&typeof a.disk=="string"&&typeof a.created_at=="string"&&typeof a.updated_at=="string"}function ED(a){return!Oo(a)||typeof a.id!="string"||typeof a.status!="string"?null:a.status==="ready"?Ff(a.media)?{id:a.id,status:"ready",media:a.media}:null:a.status==="missing"||a.status==="forbidden"?{id:a.id,status:a.status}:null}function SD(a){return Oo(a)?{next_cursor:ar(a.next_cursor),previous_cursor:ar(a.previous_cursor),has_more:_D(a.has_more)??!1,per_page:Bi(a.per_page),count:Bi(a.count),total:Bi(a.total),current_page:Bi(a.current_page),last_page:Bi(a.last_page)}:null}function Xc(a){const n=Oo(a)?a:{},t=Array.isArray(n.data)?n.data.filter(Ff):[],o=Oo(n.meta)?n.meta:{},i=SD(o.pagination),r=(i==null?void 0:i.next_cursor)??ar(o.next_cursor)??ar(o.cursor),l=(i==null?void 0:i.has_more)??o.has_more===!0,s=Array.isArray(n.hydrated)?n.hydrated.map(ED).filter(u=>u!==null):[],d={cursor:r,has_more:l};return i!==null&&(d.pagination=i),{data:t,meta:d,hydrated:s}}function Kc(a,n,t,o,i,r){const l={view:a.scope==="album"?{scope:"album",album_id:a.albumId}:{scope:a.scope},per_page:t,sort:n.sort??"newest"};return n.query&&n.query.trim()!==""&&(l.query=n.query.trim()),n.kinds&&n.kinds.length>0&&(l.kinds=n.kinds),n.created_after&&n.created_after.trim()!==""&&(l.created_after=n.created_after.trim()),n.created_before&&n.created_before.trim()!==""&&(l.created_before=n.created_before.trim()),(n.usage_status==="used"||n.usage_status==="not_used")&&(l.usage_status=n.usage_status),kD(n.metadata_status)&&(l.metadata_status=n.metadata_status),(n.unfiled_only===!0||a.scope==="unfiled")&&(l.unfiled_only=1),n.selected_uuids&&n.selected_uuids.length>0&&(l.selected_uuids=[...n.selected_uuids]),r!=null?(l.page=r,l.include_total=1):o!==null&&(l.cursor=o),i&&i.length>0&&(l.hydrate_ids=i),l}function Jc(a){const n=new Set,t=[];for(const o of a)n.has(o.uuid)||(n.add(o.uuid),t.push(o));return t}function xD(a){var t;if(!(a instanceof Error))return null;const n=(t=a.response)==null?void 0:t.status;return typeof n=="number"?n:null}function CD(a){var n;return a instanceof Error?((n=a.response)==null?void 0:n.data)??null:null}function VD(a){if(!Oo(a))return[];const n=[];for(const t of Object.values(a)){if(typeof t=="string"&&t.trim()!==""){n.push(t.trim());continue}if(Array.isArray(t))for(const o of t){if(typeof o!="string")continue;const i=o.trim();i!==""&&n.push(i)}}return Array.from(new Set(n))}function ND(a){var r;const n=CD(a),t=Oo(n)?n:null,o=((r=ar(t==null?void 0:t.message))==null?void 0:r.trim())??null,i=VD(t==null?void 0:t.errors);return o!==null&&i.length>0?o==="Validation failed"?i.join(" "):i.every(s=>o.includes(s))?o:`${o} ${i.join(" ")}`:o!==null?o:i.length>0?i.join(" "):a instanceof Error?a.message:"Failed to load media."}function qc(a,n){const t=ND(n),o=xD(n);return{code:o===403?"permission_denied":a,message:t,retriable:o!==403,cause:n}}function Jd(a){const n=()=>{const T=a.perPage!==void 0?e.toValue(a.perPage):40;return T>0?T:40},t=()=>{const T=a.page!==void 0?e.toValue(a.page):null;return T==null?null:T>0?T:1},o=e.ref([]),i=e.ref([]),r=e.ref(null),l=e.ref(!1),s=e.ref(!1),d=e.ref(!1),u=e.ref(!1),c=e.ref(null),m=e.ref(null),p=e.ref(null),f=e.ref(null);let v=null,h=0;const k=async(T,F)=>{h+=1;const V=h;v==null||v.abort();const I=new AbortController;v=I,T?d.value=!0:s.value=!0,c.value=null,u.value=!1;const $=F??t(),C=$!==null;try{const M=await a.httpClient.get("/v1/media/library",{params:Kc(a.view.value,a.filters.value,n(),C?null:T?r.value:null,void 0,$),signal:I.signal});if(V!==h)return;const _=Xc(M);o.value=T&&!C?Jc([...o.value,..._.data]):_.data,i.value=_.hydrated,r.value=_.meta.cursor,l.value=_.meta.has_more;const L=_.meta.pagination;m.value=(L==null?void 0:L.total)??null,p.value=(L==null?void 0:L.current_page)??(C&&$!==null?$:null);const j=(L==null?void 0:L.per_page)??n();f.value=(L==null?void 0:L.last_page)??(m.value!==null&&j>0?Math.max(1,Math.ceil(m.value/j)):null)}catch(M){if(I.signal.aborted||V!==h)return;const _=qc(T?"load_more_failed":"query_failed",M);c.value=_,u.value=_.code==="permission_denied",T||(o.value=[],r.value=null,l.value=!1)}finally{V===h&&(s.value=!1,d.value=!1)}},E=async T=>{if(T.length===0)return i.value=[],[];try{const F=await a.httpClient.get("/v1/media/library",{params:Kc(a.view.value,a.filters.value,1,null,T)}),V=Xc(F);return i.value=V.hydrated,V.hydrated}catch(F){return c.value=qc("hydration_failed",F),[]}},w=T=>{o.value=Jc([T,...o.value])},b=async()=>{!l.value||d.value||t()===null&&await k(!0)};return{items:o,hydrated:i,cursor:r,hasMore:l,loading:s,loadingMore:d,permissionDenied:u,error:c,total:m,currentPage:p,totalPages:f,loadInitial:async()=>{r.value=null,await k(!1)},loadMore:b,loadAll:async T=>{const F=(T==null?void 0:T.maxItems)??5e3;if(!(s.value||d.value))for(;l.value&&o.value.length<F;){const V=o.value.length;if(await b(),c.value!==null||o.value.length===V)return}},goToPage:async T=>{!Number.isFinite(T)||T<1||s.value||d.value||await k(!1,T)},refresh:async()=>{r.value=null,await k(!1)},hydrateSelection:E,prepend:w}}const TD="mediables.media-library.";function BD(a){return!a||a.key.trim()===""?null:`${TD}${a.key}`}function ys(){return typeof window>"u"||typeof window.sessionStorage>"u"?null:window.sessionStorage}function MD(a,n){const t=Date.parse(a);return Number.isFinite(t)?Date.now()-t>n*60*1e3:!0}function Af(a){const n=BD(a),t=(a==null?void 0:a.ttlMinutes)??30,o=`${(a==null?void 0:a.key)??"media-library"}:${Date.now()}`;return{restore:()=>{if(n===null)return null;const s=ys();if(s===null)return null;const d=s.getItem(n);if(d===null)return null;let u;try{u=JSON.parse(d)}catch{return s.removeItem(n),null}if(typeof u!="object"||u===null||Array.isArray(u))return s.removeItem(n),null;const c=u;if(c.version!==1||typeof c.savedAt!="string"||MD(c.savedAt,t))return s.removeItem(n),null;const m={selectedIds:Array.isArray(c.selectedIds)?c.selectedIds.filter(p=>typeof p=="string"&&p.trim()!==""):[]};return((a==null?void 0:a.restoreView)??!0)&&c.view&&(m.view=c.view),c.filters&&(m.filters=c.filters),m},save:s=>{if(n===null)return;const d=ys();if(d===null)return;const u={version:1,savedAt:new Date().toISOString(),selectedIds:[...s.selectedIds]};((a==null?void 0:a.restoreView)??!0)&&s.view&&(u.view=s.view),s.filters&&(u.filters=s.filters),d.setItem(n,JSON.stringify(u))},clear:()=>{if(n===null)return;const s=ys();s==null||s.removeItem(n)},sessionId:o}}function Rf(a){const n=e.ref(a);return{state:n,transition:o=>{n.value=o}}}function Lf(a){return{emitMetric:(t,o)=>{const i={name:t,timestamp:new Date().toISOString()};o!==void 0&&(i.payload=o),a==null||a(i)}}}function ti(a){return typeof a=="object"&&a!==null&&!Array.isArray(a)}function $D(a){const n=ti(a)?a:{};return(Array.isArray(n.data)?n.data:ti(n.data)&&Array.isArray(n.data.data)?n.data.data:Array.isArray(a)?a:[]).map(o=>{if(!ti(o)||typeof o.id!="string"||typeof o.name!="string")return null;const i={id:o.id,name:o.name};return typeof o.description=="string"&&o.description.trim()!==""&&(i.description=o.description),typeof o.media_count=="number"&&(i.mediaCount=o.media_count),i}).filter(o=>o!==null)}function ID(a){const n=ti(a)?a:{},t=ti(n.data)?n.data:ti(a)?a:null;if(t===null||typeof t.id!="string"||typeof t.name!="string")return null;const o={id:t.id,name:t.name};return typeof t.description=="string"&&t.description.trim()!==""&&(o.description=t.description),o}function DD(a){return a==="ready"||a==="uploading"||a==="failed"}function Eo(a,n="ready"){return{id:a.uuid,media:a,status:n,countsTowardMax:DD(n)}}function FD(a,n){return a.scope==="library"?!0:a.scope!=="album"?!1:n.type==="album"&&n.albumId===a.albumId}function AD(a,n){return a.scope==="library"?n.type==="library"||n.type==="album":a.scope!=="album"?!1:n.type==="album"&&n.albumId===a.albumId}function ws(a){return{code:"configuration_error",message:a,retriable:!1}}const Pf="/v1/albums";function RD(a){var n;return((n=a.deps.albumEndpoints)==null?void 0:n.list)??Pf}function LD(a){var n,t;return((n=a.deps.albumEndpoints)==null?void 0:n.create)??((t=a.deps.albumEndpoints)==null?void 0:t.list)??Pf}function PD(a){return typeof a!="string"||a.length===0?"document":a.startsWith("image/")?"image":a.startsWith("video/")?"video":a.startsWith("audio/")?"audio":"document"}function UD(a,n){return n.length===0||a===null?!0:n.includes(PD(a.mime_type))}function Yc(a){return{...a??{},...(a==null?void 0:a.kinds)!==void 0?{kinds:[...a.kinds]}:{},...(a==null?void 0:a.selected_uuids)!==void 0?{selected_uuids:[...a.selected_uuids]}:{}}}function Uf(a){var H,y;const n=a.selectionMode??"multiple",t=a.maxSelection,o=a.uploadBehavior??"adapter",i=e.ref(a.initialView??{scope:"library"}),r=((H=a.initialFilters)==null?void 0:H.kinds)??(a.allowedMediaKinds&&a.allowedMediaKinds.length>0?[...a.allowedMediaKinds]:void 0),l=e.ref({...Yc(a.initialFilters),sort:((y=a.initialFilters)==null?void 0:y.sort)??"newest",...r?{kinds:r}:{}}),s=a.allowedMediaKinds?[...a.allowedMediaKinds]:[],d=e.ref([]),u=e.ref([]),c=e.ref(null),m=e.ref(null),p=Af(a.sessionPolicy),{emitMetric:f}=Lf(a.telemetry),v=Rf("idle"),h=Jd({httpClient:a.deps.httpClient,view:i,filters:l}),k=e.computed(()=>u.value.map(A=>A.id)),E=e.computed(()=>{const A=c.value;return A===null?null:h.items.value[A]??null}),w=e.computed(()=>a.uploadTarget??{type:"library"}),b=Kd({adapter:a.deps.uploadAdapter??{name:"missing-upload-adapter",upload:async()=>{throw new Error("Upload adapter is not configured.")},attach:async()=>{},attachMany:async()=>{},detach:async()=>{},reorder:async()=>{},fetchModelMedia:async()=>[],getUrl:A=>A.original_url,getThumbnailUrl:A=>A.thumbnail_url??A.preview_url??A.original_url},postUpload:async(A,W,q)=>{const de=w.value;de.type!=="album"||!de.albumId||await q.attach(W.uuid,{modelType:"album",modelId:de.albumId})},onUploadComplete:(A,W)=>{const q=w.value;FD(i.value,q)&&h.prepend(W),a.autoSelectUploaded&&AD(i.value,q)&&$(W),f("upload-complete",{mediaId:W.uuid,targetType:q.type,targetAlbumId:q.albumId})},onUploadError:(A,W)=>{m.value={code:"upload_failed",message:W.message,retriable:!0,cause:W}}}),g=e.computed(()=>b.isUploading.value),D=()=>{p.save({selectedIds:[...k.value],view:i.value,filters:l.value})},T=async A=>{const W=await h.hydrateSelection(A);u.value=W.map(q=>q.status==="ready"&&q.media?Eo(q.media):{id:q.id,media:null,status:q.status,countsTowardMax:!1})},F=e.computed(()=>u.value.filter(A=>A.countsTowardMax).length),V=()=>n==="single"||t===void 0?!0:F.value<t,I=A=>{if(u.value.findIndex(q=>q.id===A.uuid)>=0){n==="multiple"?u.value=u.value.filter(q=>q.id!==A.uuid):u.value=[Eo(A)],D();return}if(!V()){m.value={code:"selection_invalid",message:t!==void 0?`You can only select up to ${t} items.`:"You cannot select more items.",retriable:!0};return}n==="single"?u.value=[Eo(A)]:u.value=[...u.value,Eo(A)],m.value=null,D()},$=A=>{const W=u.value.findIndex(q=>q.id===A.uuid);if(W>=0){u.value=u.value.map((q,de)=>de===W?Eo(A):q),m.value=null,D();return}if(!V()){m.value={code:"selection_invalid",message:t!==void 0?`You can only select up to ${t} items.`:"You cannot select more items.",retriable:!0};return}n==="single"?u.value=[Eo(A)]:u.value=[...u.value,Eo(A)],m.value=null,D()},C=async()=>{var W;v.transition("restoring");const A=p.restore();if(A===null){v.transition("ready");return}A.view&&(i.value=A.view),A.filters&&(l.value={...Yc(A.filters),sort:A.filters.sort??"newest"}),await h.loadInitial(),(((W=a.sessionPolicy)==null?void 0:W.restoreSelection)??!0)&&await T(A.selectedIds),v.transition("ready")};e.watch(()=>h.error.value,A=>{A!==null&&(m.value=A,v.transition("error"))});const M=async()=>{m.value=null,v.transition("idle"),await C(),h.items.value.length===0&&!h.loading.value&&!h.permissionDenied.value&&await h.loadInitial();const A=a.defaultSelectedIds??[];u.value.length===0&&A.length>0&&await T(A),v.transition("ready")},_=async(A,W="user")=>{const q=i.value;i.value=A,W==="user"&&a.preserveSelectionOnViewChange===!1&&(u.value=[]),f("view-change",{from:q.scope,to:A.scope,reason:W}),await h.loadInitial(),D()},L=async()=>{const A=await a.deps.httpClient.get(RD(a));d.value=$D(A)},j=async(A,W)=>{try{const q={name:A,visibility:"private"};W&&W.trim()!==""&&(q.parent_id=W);const de=await a.deps.httpClient.post(LD(a),q),Pe=ID(de);return Pe===null?ws("Album creation response was invalid."):(d.value=[Pe,...d.value.filter(ge=>ge.id!==Pe.id)],await _({scope:"album",albumId:Pe.id,albumName:Pe.name},"inline-album-created"),Pe)}catch(q){const de={code:"album_create_failed",message:q instanceof Error?q.message:"Album creation failed.",retriable:!0,cause:q};return m.value=de,de}},B=async A=>{if(!a.enableUpload){m.value=ws("Uploads are not enabled for this picker.");return}if(o!=="delegate"){if(!a.deps.uploadAdapter){m.value=ws("Uploads require a configured upload adapter.");return}await b.addFiles(A)}},U=()=>{var q;if(s.length>0&&u.value.find(Pe=>Pe.media!==null&&!UD(Pe.media,s))){const ge={code:"selection_invalid",message:`Selected media is not allowed here. Choose one of: ${s.join(", ")}.`,retriable:!0};return m.value=ge,ge}const A=((q=a.validateSelection)==null?void 0:q.call(a,u.value))??null;if(A!==null){const de={code:"selection_invalid",message:A,retriable:!0};return m.value=de,de}if(u.value.filter(de=>de.status==="ready"&&de.media!==null).length===0){const de={code:"selection_invalid",message:"Select at least one available media item.",retriable:!0};return m.value=de,de}return{orderedIds:k.value,items:[...u.value],view:i.value,filters:l.value,dirty:!0,sessionId:p.sessionId}},S=A=>{const W=h.items.value.findIndex(q=>q.uuid===A.uuid);c.value=W>=0?W:null},R=()=>{c.value=null},O=()=>{c.value===null||c.value<=0||(c.value-=1)},K=()=>{c.value===null||c.value>=h.items.value.length-1||(c.value+=1)},se=A=>{u.value=u.value.filter(W=>W.id!==A),D()},xe=async()=>{await h.refresh()},ue=async A=>{l.value={...l.value,...A&&A.trim()!==""?{query:A.trim()}:{}},(!A||A.trim()==="")&&delete l.value.query,await h.loadInitial(),D()},le=async()=>{await _({scope:"library"},"permission-unavailable")};return{view:i,filters:l,albums:d,selectedItems:u,orderedIds:k,queryItems:h.items,cursor:h.cursor,hasMore:h.hasMore,loading:h.loading,loadingMore:h.loadingMore,permissionDenied:h.permissionDenied,error:m,uploadQueue:b.uploadsArray,isUploading:g,previewIndex:c,previewItem:E,initialize:M,refresh:xe,loadMore:h.loadMore,setQuery:ue,setView:_,toggleSelection:I,removeSelected:se,confirmSelection:U,openPreview:S,closePreview:R,showPreviousPreview:O,showNextPreview:K,loadAlbums:L,createAlbum:j,addUploadFiles:B,goToLibrary:le,sessionId:p.sessionId}}const OD=["data-testid"],zD={class:"mlp-location-bar"},jD={class:"mlp-location-bar__left"},WD={class:"mlp-location-bar__label"},ZD={class:"mlp-tabs","data-testid":"media-picker-tabs"},HD={key:0,class:"mlp-search-row"},GD=["placeholder"],XD={key:2,class:"mlp-overlay-panel"},KD={key:0,class:"mlp-error","data-testid":"media-picker-error"},JD={key:5,class:"mlp-bottom-bar"},qD={key:0,class:"mlp-bottom-bar__selection"},YD={class:"mlp-bottom-bar__count"},QD={class:"mlp-bottom-bar__thumbs"},eF=["src","alt"],tF={key:1,class:"mlp-bottom-bar__thumb-placeholder"},aF=["aria-label","onClick"],nF={class:"mlp-bottom-bar__actions"},oF=e.defineComponent({__name:"MediaLibraryPicker",props:{deps:{},mode:{default:"picker-multi"},capabilities:{default:()=>({})},itemFilter:{},modelValue:{default:()=>[]},defaultSelectedIds:{default:()=>[]},selectionMode:{default:"multiple"},maxSelection:{},preserveSelectionOnViewChange:{type:Boolean,default:!0},initialView:{default:()=>({scope:"library"})},initialFilters:{default:()=>({sort:"newest"})},enableUpload:{type:Boolean,default:!1},uploadBehavior:{default:"adapter"},enablePreview:{type:Boolean,default:!0},enableAlbumCreation:{type:Boolean,default:!1},allowedMediaKinds:{},accept:{},validateSelection:{},uploadTarget:{},autoSelectUploaded:{type:Boolean,default:!1},createAlbumDefaultVisibility:{default:"private"},sessionPolicy:{},labels:{default:()=>({})},showFooter:{type:Boolean,default:!0},testIdPrefix:{default:"media-picker"},telemetry:{}},emits:["update:modelValue","confirm","cancel","selection-change","select","view-change","error","metric","request-upload-files"],setup(a,{expose:n,emit:t}){const o=a,i=t,r=e.computed(()=>{var y,A,W,q,de,Pe,ge,ke,be,Ce,Ee,Ae,Ue,ot,it,Lt,gt,St,ct,mt,Ct,Se,Ve,Re,at,He,Je,kt,ft,jt,Le,Wt,Zt,Mt,Pt,Ht,ra,ae,he;return{title:((y=o.labels)==null?void 0:y.title)??"Media library",searchPlaceholder:((A=o.labels)==null?void 0:A.searchPlaceholder)??"Search your media",viewLibrary:((W=o.labels)==null?void 0:W.viewLibrary)??"Library",browseAlbums:((q=o.labels)==null?void 0:q.browseAlbums)??"Albums",createAlbum:((de=o.labels)==null?void 0:de.createAlbum)??"Create album",createAlbumNameLabel:((Pe=o.labels)==null?void 0:Pe.createAlbumNameLabel)??"Album name",emptyLibrary:((ge=o.labels)==null?void 0:ge.emptyLibrary)??"No media found in your library.",emptyAlbum:((ke=o.labels)==null?void 0:ke.emptyAlbum)??"No media found in this album.",networkError:((be=o.labels)==null?void 0:be.networkError)??"Unable to load media right now.",retry:((Ce=o.labels)==null?void 0:Ce.retry)??"Retry",selectedCount:((Ee=o.labels)==null?void 0:Ee.selectedCount)??(me=>`${me} selected`),confirmAction:((Ae=o.labels)==null?void 0:Ae.confirmAction)??"Attach selected",cancel:((Ue=o.labels)==null?void 0:Ue.cancel)??"Cancel",dismiss:((ot=o.labels)==null?void 0:ot.dismiss)??"Remove",uploadLabel:((it=o.labels)==null?void 0:it.uploadLabel)??"Upload",albumUnavailableTitle:((Lt=o.labels)==null?void 0:Lt.albumUnavailableTitle)??"Album unavailable",albumUnavailableBody:((gt=o.labels)==null?void 0:gt.albumUnavailableBody)??"You no longer have access to this album.",goToLibrary:((St=o.labels)==null?void 0:St.goToLibrary)??"Go to library",allMediaTab:((ct=o.labels)==null?void 0:ct.allMediaTab)??"All Media",loadingMedia:((mt=o.labels)==null?void 0:mt.loadingMedia)??"Loading media…",loadMore:((Ct=o.labels)==null?void 0:Ct.loadMore)??"Load more",loadingMore:((Se=o.labels)==null?void 0:Se.loadingMore)??"Loading…",uploadDropzone:((Ve=o.labels)==null?void 0:Ve.uploadDropzone)??"Drop files here or browse",uploadDropzoneHelper:((Re=o.labels)==null?void 0:Re.uploadDropzoneHelper)??"",uploadDone:((at=o.labels)==null?void 0:at.uploadDone)??"Done",uploadDoneAria:((He=o.labels)==null?void 0:He.uploadDoneAria)??"Close upload panel",uploadFileInputLabel:((Je=o.labels)==null?void 0:Je.uploadFileInputLabel)??"Choose media files",previewClose:((kt=o.labels)==null?void 0:kt.previewClose)??"Close preview",previewPrevious:((ft=o.labels)==null?void 0:ft.previewPrevious)??"Previous media",previewNext:((jt=o.labels)==null?void 0:jt.previewNext)??"Next media",previewSelect:((Le=o.labels)==null?void 0:Le.previewSelect)??"Select media",previewDeselect:((Wt=o.labels)==null?void 0:Wt.previewDeselect)??"Deselect media",selectAction:((Zt=o.labels)==null?void 0:Zt.selectAction)??"Select",allMedia:((Mt=o.labels)==null?void 0:Mt.allMedia)??((Pt=o.labels)==null?void 0:Pt.allMediaTab)??"All media",unfiled:((Ht=o.labels)==null?void 0:Ht.unfiled)??"Unfiled",pageTitle:((ra=o.labels)==null?void 0:ra.pageTitle)??((ae=o.labels)==null?void 0:ae.title)??"Media library",albumLabel:((he=o.labels)==null?void 0:he.albumLabel)??"Album"}}),l=e.computed(()=>o.mode),s=e.computed(()=>l.value==="picker-single"?"single":o.selectionMode),d=e.computed(()=>o.showFooter===!0&&l.value!=="picker-single"),u=e.computed(()=>o.enablePreview===!0&&l.value!=="picker-single"),c={deps:o.deps,selectionMode:s.value,initialView:o.initialView,initialFilters:o.initialFilters,...o.maxSelection!==void 0?{maxSelection:o.maxSelection}:{},...o.modelValue.length>0||o.defaultSelectedIds.length>0?{defaultSelectedIds:o.modelValue.length>0?o.modelValue:o.defaultSelectedIds}:{},...o.sessionPolicy?{sessionPolicy:o.sessionPolicy}:{},...o.enableUpload?{enableUpload:!0}:{},uploadBehavior:o.uploadBehavior,...o.uploadTarget?{uploadTarget:o.uploadTarget}:{},...o.autoSelectUploaded?{autoSelectUploaded:!0}:{},...o.validateSelection?{validateSelection:o.validateSelection}:{},...o.allowedMediaKinds&&o.allowedMediaKinds.length>0?{allowedMediaKinds:o.allowedMediaKinds}:{},preserveSelectionOnViewChange:o.preserveSelectionOnViewChange,telemetry:y=>{var A;(A=o.telemetry)==null||A.call(o,y),i("metric",y)}},m=Uf(c),p=e.ref(o.initialFilters.query??""),f=e.ref(o.enableUpload?"upload":"media"),v=e.ref(!1),h=JSON.stringify(o.modelValue.length>0?o.modelValue:o.defaultSelectedIds);let k=null;const E=e.computed(()=>JSON.stringify(m.orderedIds.value)!==h),w=e.computed(()=>m.view.value.scope==="album"?r.value.emptyAlbum:r.value.emptyLibrary),b=e.computed(()=>r.value.selectedCount(m.selectedItems.value.length));function g(y){return typeof y=="boolean"?{allowed:y}:typeof y=="string"?{allowed:!1,reason:y}:y}function D(y){return o.itemFilter?g(o.itemFilter(y)):{allowed:!0}}const T=e.computed(()=>o.itemFilter?m.queryItems.value.filter(y=>D(y).allowed):m.queryItems.value),F=e.computed(()=>m.view.value.scope==="album"?m.view.value.albumName??"Album":r.value.viewLibrary),V=e.computed(()=>m.view.value.scope==="album"),I=()=>{k!==null&&(window.clearTimeout(k),k=null)},$=()=>{i("update:modelValue",[...m.orderedIds.value]),i("selection-change",{orderedIds:[...m.orderedIds.value],items:[...m.selectedItems.value],dirty:E.value})},C=y=>{y!==null&&i("error",y)},M=y=>typeof y.code=="string",_=y=>typeof y=="object"&&y!==null&&"code"in y&&typeof y.code=="string",L=()=>{const y=m.confirmSelection();if(M(y)){C(y);return}i("confirm",{...y,dirty:E.value})},j=y=>{const A=D(y);if(!A.allowed){C({code:"selection_invalid",message:A.reason??"This media item is not available for this picker.",retriable:!0});return}m.toggleSelection(y),l.value==="picker-single"&&i("select",y)},B=(y="user")=>{i("cancel",{dirty:E.value,reason:y,sessionId:m.sessionId})},U=async()=>{f.value="albums",await m.loadAlbums()},S=async()=>{await m.goToLibrary(),f.value="albums",await m.loadAlbums()},R=y=>{m.setView({scope:"album",albumId:y.id,albumName:y.name}),f.value="media"},O=async(y,A)=>{const W=m.view.value,q=await m.createAlbum(y,A);if(_(q)){C(q);return}v.value=!1,f.value="media",i("view-change",{from:W,to:{scope:"album",albumId:q.id,albumName:q.name},reason:"inline-album-created",restoredFromSession:!1})},K=async y=>{if(o.uploadBehavior==="delegate"){i("request-upload-files",{files:[...y],view:m.view.value,filters:m.filters.value,sessionId:m.sessionId});return}await m.addUploadFiles(y)};function se(y){var A;return y?y.thumbnail_url??((A=y.conversion_urls)==null?void 0:A.thumb)??y.preview_url??y.original_url??y.url??null:null}function xe(y){return y!=null&&y.mime_type?y.mime_type.startsWith("image/"):!1}e.watch(()=>p.value,y=>{I(),k=window.setTimeout(()=>{m.setQuery(y)},250)}),e.watch(()=>m.selectedItems.value,()=>{$()},{deep:!0}),e.watch(()=>m.error.value,y=>{C(y)}),e.watch(()=>o.enableUpload,y=>{!y&&f.value==="upload"&&(f.value="media")}),e.onMounted(()=>{m.initialize()}),e.onBeforeUnmount(()=>{I()}),n({refresh:m.refresh});function ue(y){if(y==="albums"){U();return}if(y==="upload"&&!o.enableUpload){f.value="media";return}f.value=y}const le=e.computed(()=>({activeTab:f.value,setActiveTab:ue,enableUpload:o.enableUpload,labels:{uploadLabel:r.value.uploadLabel,allMediaTab:r.value.allMediaTab,browseAlbums:r.value.browseAlbums}})),H=e.computed(()=>({query:p.value,setQuery:y=>{p.value=y},placeholder:r.value.searchPlaceholder}));return(y,A)=>(e.openBlock(),e.createElementBlock("section",{class:"media-library-picker","data-testid":y.testIdPrefix},[e.createElementVNode("header",zD,[e.createElementVNode("div",jD,[V.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mlp-location-bar__back","aria-label":"Back to library","data-testid":"btn-media-picker-back",onClick:S},[...A[8]||(A[8]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("polyline",{points:"15 18 9 12 15 6"})],-1)])])):e.createCommentVNode("",!0),e.createElementVNode("span",WD,e.toDisplayString(F.value),1)])]),e.renderSlot(y.$slots,"tabs",e.normalizeProps(e.guardReactiveProps(le.value)),()=>[e.createElementVNode("nav",ZD,[y.enableUpload?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(["mlp-tabs__tab",{"is-active":f.value==="upload"}]),"data-testid":"tab-media-picker-upload",onClick:A[0]||(A[0]=W=>f.value="upload")},e.toDisplayString(r.value.uploadLabel),3)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["mlp-tabs__tab",{"is-active":f.value==="media"}]),"data-testid":"tab-media-picker-all",onClick:A[1]||(A[1]=W=>f.value="media")},e.toDisplayString(r.value.allMediaTab),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["mlp-tabs__tab",{"is-active":f.value==="albums"}]),"data-testid":"tab-media-picker-albums",onClick:U},e.toDisplayString(r.value.browseAlbums),3)])],!0),f.value==="media"||f.value==="albums"?(e.openBlock(),e.createElementBlock("div",HD,[e.renderSlot(y.$slots,"search",e.normalizeProps(e.guardReactiveProps(H.value)),()=>[A[9]||(A[9]=e.createElementVNode("svg",{class:"mlp-search-row__icon",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("circle",{cx:"11",cy:"11",r:"8"}),e.createElementVNode("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})],-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[2]||(A[2]=W=>p.value=W),class:"mlp-search-row__input",type:"search",placeholder:r.value.searchPlaceholder,"data-testid":"input-media-picker-search"},null,8,GD),[[e.vModelText,p.value]])],!0)])):e.createCommentVNode("",!0),y.enableUpload&&f.value==="upload"?(e.openBlock(),e.createBlock(Tf,{key:1,open:!0,queue:e.unref(m).uploadQueue.value,accept:y.accept,"upload-label":r.value.uploadLabel,"dropzone-label":r.value.uploadDropzone,"dropzone-helper-text":r.value.uploadDropzoneHelper,"file-input-label":r.value.uploadFileInputLabel,"close-button-label":r.value.uploadDone,"close-button-aria-label":r.value.uploadDoneAria,onClose:A[3]||(A[3]=W=>f.value="media"),onFilesSelected:K},null,8,["queue","accept","upload-label","dropzone-label","dropzone-helper-text","file-input-label","close-button-label","close-button-aria-label"])):e.createCommentVNode("",!0),v.value?(e.openBlock(),e.createElementBlock("div",XD,[e.createVNode(Zd,{open:v.value,"name-label":r.value.createAlbumNameLabel,albums:e.unref(m).albums.value,onCancel:A[4]||(A[4]=W=>v.value=!1),onCreate:O},null,8,["open","name-label","albums"])])):e.createCommentVNode("",!0),e.unref(m).permissionDenied.value&&e.unref(m).view.value.scope==="album"?(e.openBlock(),e.createBlock(kf,{key:3,title:r.value.albumUnavailableTitle,body:r.value.albumUnavailableBody,"action-label":r.value.goToLibrary,onGoToLibrary:e.unref(m).goToLibrary},null,8,["title","body","action-label","onGoToLibrary"])):e.createCommentVNode("",!0),!e.unref(m).permissionDenied.value||e.unref(m).view.value.scope!=="album"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.unref(m).error.value?(e.openBlock(),e.createElementBlock("div",KD,[e.createElementVNode("p",null,e.toDisplayString(e.unref(m).error.value.message||r.value.networkError),1),e.createElementVNode("button",{type:"button",class:"mlp-error__retry",onClick:A[5]||(A[5]=(...W)=>e.unref(m).refresh&&e.unref(m).refresh(...W))},e.toDisplayString(r.value.retry),1)])):e.createCommentVNode("",!0),f.value==="media"?(e.openBlock(),e.createBlock(Mf,{key:1,items:T.value,"selected-items":e.unref(m).selectedItems.value,loading:e.unref(m).loading.value,"loading-more":e.unref(m).loadingMore.value,"has-more":e.unref(m).hasMore.value,"empty-message":w.value,"loading-message":r.value.loadingMedia,"load-more-label":r.value.loadMore,"loading-more-label":r.value.loadingMore,"test-id-prefix":`${y.testIdPrefix}-item`,onToggle:j,onPreview:e.unref(m).openPreview,onLoadMore:e.unref(m).loadMore},null,8,["items","selected-items","loading","loading-more","has-more","empty-message","loading-message","load-more-label","loading-more-label","test-id-prefix","onPreview","onLoadMore"])):f.value==="albums"?(e.openBlock(),e.createBlock(Nf,{key:2,open:!0,"current-view":e.unref(m).view.value,albums:e.unref(m).albums.value,"view-library-label":r.value.viewLibrary,"browse-albums-label":r.value.browseAlbums,"create-album-label":r.value.createAlbum,"enable-album-creation":y.enableAlbumCreation,onSelectLibrary:S,onSelectAlbum:R,onCreateAlbum:A[6]||(A[6]=W=>v.value=!0)},null,8,["current-view","albums","view-library-label","browse-albums-label","create-album-label","enable-album-creation"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("footer",JD,[e.unref(m).selectedItems.value.length>0?(e.openBlock(),e.createElementBlock("div",qD,[e.createElementVNode("span",YD,e.toDisplayString(b.value),1),e.createElementVNode("div",QD,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m).selectedItems.value,W=>{var q,de,Pe;return e.openBlock(),e.createElementBlock("div",{key:W.id,class:"mlp-bottom-bar__thumb-item"},[xe(W.media)&&se(W.media)?(e.openBlock(),e.createElementBlock("img",{key:0,src:se(W.media),alt:((q=W.media)==null?void 0:q.alt_text)??((de=W.media)==null?void 0:de.file_name)??"Selected",class:"mlp-bottom-bar__thumb-img"},null,8,eF)):(e.openBlock(),e.createElementBlock("div",tF,[...A[10]||(A[10]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e.createElementVNode("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e.createElementVNode("polyline",{points:"14 2 14 8 20 8"})],-1)])])),e.createElementVNode("button",{type:"button",class:"mlp-bottom-bar__thumb-remove","aria-label":`${r.value.dismiss} ${((Pe=W.media)==null?void 0:Pe.file_name)??W.id}`,"data-testid":"btn-media-picker-remove-selected",onClick:ge=>e.unref(m).removeSelected(W.id)},[...A[11]||(A[11]=[e.createElementVNode("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round"},[e.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,aF)])}),128))])])):e.createCommentVNode("",!0),e.createElementVNode("div",nF,[e.createElementVNode("button",{type:"button",class:"mlp-bottom-bar__cancel","data-testid":"btn-media-picker-cancel",onClick:A[7]||(A[7]=W=>B())},e.toDisplayString(r.value.cancel),1),e.createElementVNode("button",{type:"button",class:"mlp-bottom-bar__confirm","data-testid":"btn-media-picker-confirm",onClick:L},e.toDisplayString(r.value.confirmAction),1)])])):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createBlock(Hd,{key:6,open:e.unref(m).previewItem.value!==null,media:e.unref(m).previewItem.value,"can-go-previous":e.unref(m).previewIndex.value!==null&&e.unref(m).previewIndex.value>0,"can-go-next":e.unref(m).previewIndex.value!==null&&e.unref(m).previewIndex.value<e.unref(m).queryItems.value.length-1,selected:e.unref(m).previewItem.value!==null&&e.unref(m).orderedIds.value.includes(e.unref(m).previewItem.value.uuid),"close-label":r.value.previewClose,"previous-label":r.value.previewPrevious,"next-label":r.value.previewNext,"select-label":r.value.previewSelect,"deselect-label":r.value.previewDeselect,onClose:e.unref(m).closePreview,onPrevious:e.unref(m).showPreviousPreview,onNext:e.unref(m).showNextPreview,onToggleSelect:e.unref(m).toggleSelection},null,8,["open","media","can-go-previous","can-go-next","selected","close-label","previous-label","next-label","select-label","deselect-label","onClose","onPrevious","onNext","onToggleSelect"])):e.createCommentVNode("",!0)],8,OD))}}),Of=Ie(oF,[["__scopeId","data-v-307fef12"]]),iF={key:0,class:"media-library-picker-modal","data-testid":"media-library-picker-modal"},rF={class:"media-library-picker-modal__panel"},lF=e.defineComponent({__name:"MediaLibraryPickerModal",props:{deps:{},mode:{},capabilities:{},itemFilter:{},modelValue:{},defaultSelectedIds:{},selectionMode:{},maxSelection:{},preserveSelectionOnViewChange:{type:Boolean},initialView:{},initialFilters:{},enableUpload:{type:Boolean},uploadBehavior:{},enablePreview:{type:Boolean},enableAlbumCreation:{type:Boolean},allowedMediaKinds:{},accept:{},validateSelection:{},uploadTarget:{},autoSelectUploaded:{type:Boolean},createAlbumDefaultVisibility:{},sessionPolicy:{},labels:{},showFooter:{type:Boolean},testIdPrefix:{},telemetry:{},isOpen:{type:Boolean,default:!1},closeOnBackdrop:{type:Boolean,default:!0}},emits:["update:modelValue","confirm","cancel","close"],setup(a,{emit:n}){const t=a,o=n,i=()=>{t.closeOnBackdrop&&o("close")};return(r,l)=>r.isOpen?(e.openBlock(),e.createElementBlock("div",iF,[e.createElementVNode("button",{type:"button",class:"media-library-picker-modal__backdrop","aria-label":"Close media picker",onClick:i}),e.createElementVNode("div",rF,[e.createVNode(Of,e.mergeProps(t,{"onUpdate:modelValue":l[0]||(l[0]=s=>o("update:modelValue",s)),onConfirm:l[1]||(l[1]=s=>o("confirm",s)),onCancel:l[2]||(l[2]=s=>o("cancel",s))}),null,16)])])):e.createCommentVNode("",!0)}}),sF=Ie(lF,[["__scopeId","data-v-a92e8703"]]),dF=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function uF(a){return a.getAttribute("aria-hidden")==="true"||a.hasAttribute("disabled")?!1:a.tabIndex>=0}function jl(a){return Array.from(a.querySelectorAll(dF)).filter(uF)}function ma(a){a instanceof HTMLElement&&typeof a.focus=="function"&&a.focus()}function qd(a,n){if(a.key!=="Tab"||!(n instanceof HTMLElement))return;const t=jl(n);if(t.length===0){a.preventDefault(),ma(n);return}const o=t[0],i=t[t.length-1];if(a.shiftKey&&document.activeElement===o){a.preventDefault(),ma(i);return}!a.shiftKey&&document.activeElement===i&&(a.preventDefault(),ma(o))}function cd(a,n){if(!(n instanceof HTMLElement)||!["ArrowDown","ArrowUp","Home","End"].includes(a.key))return!1;const t=jl(n);if(t.length===0)return!1;a.preventDefault();const o=t.findIndex(d=>d===document.activeElement);if(a.key==="Home")return ma(t[0]),!0;if(a.key==="End")return ma(t[t.length-1]),!0;const i=a.key==="ArrowDown"?-1:0,r=o>=0?o:i,l=a.key==="ArrowDown"?1:-1,s=(r+l+t.length)%t.length;return ma(t[s]),!0}const cF=["aria-labelledby","aria-describedby"],mF={class:"media-album-picker-modal__header"},pF=["id"],fF=["id"],vF={key:0,class:"media-album-picker-modal__create-row"},hF={class:"media-album-picker-modal__create-field",for:"media-album-picker-create-name"},gF={class:"media-album-picker-modal__create-label"},bF=["maxlength","aria-invalid","disabled"],yF={class:"media-album-picker-modal__create-meta"},wF={key:0,id:"media-album-picker-create-error",class:"media-album-picker-modal__create-error","data-testid":"media-album-picker-create-error",role:"alert"},kF={key:1,class:"media-album-picker-modal__create-helper"},_F={class:"media-album-picker-modal__create-actions"},EF=["disabled"],SF=["disabled"],xF={key:0},CF={key:1},VF={key:2,class:"media-album-picker-modal__selection","data-testid":"media-album-picker-selection"},NF={class:"media-album-picker-modal__actions"},TF=["disabled"],BF=e.defineComponent({__name:"MediaAlbumPickerModal",props:{open:{type:Boolean},selectedCount:{},labels:{default:()=>({})},nameMaxLength:{default:120}},emits:["cancel","confirm","error"],setup(a,{emit:n}){const t=a,o=n,i=Ol(),r=e.ref(null),l=e.ref(!1),s=e.ref(""),d=e.ref(""),u=e.ref(!1),c=e.ref(null),m=e.ref(null),p=e.ref(null),f=e.ref(null),v=e.ref(null),h=e.ref(null),k=e.useId(),E=e.useId(),w=e.computed(()=>{var S,R,O,K,se,xe,ue,le,H,y,A,W;return{title:((S=t.labels)==null?void 0:S.title)??"Add to album",body:((R=t.labels)==null?void 0:R.body)??`Choose an album for ${t.selectedCount} selected item${t.selectedCount===1?"":"s"}.`,confirm:((O=t.labels)==null?void 0:O.confirm)??"Add",cancel:((K=t.labels)==null?void 0:K.cancel)??"Cancel",selectedAlbum:((se=t.labels)==null?void 0:se.selectedAlbum)??(q=>`Selected: ${q}`),createNew:((xe=t.labels)==null?void 0:xe.createNew)??"+ Create new album",createNewPrompt:((ue=t.labels)==null?void 0:ue.createNewPrompt)??"Name this album",createNewSubmit:((le=t.labels)==null?void 0:le.createNewSubmit)??"Create",createNewCancel:((H=t.labels)==null?void 0:H.createNewCancel)??"Cancel",createNewEmptyError:((y=t.labels)==null?void 0:y.createNewEmptyError)??"Please enter a name.",createNewTooLongError:((A=t.labels)==null?void 0:A.createNewTooLongError)??`Name must be ${t.nameMaxLength} characters or fewer.`,createNewGenericError:((W=t.labels)==null?void 0:W.createNewGenericError)??"Could not create album. Try again."}}),b=e.computed(()=>s.value.trim()),g=e.computed(()=>b.value===""),D=e.computed(()=>b.value.length>t.nameMaxLength),T=e.computed(()=>!u.value&&!g.value&&!D.value),F=e.computed(()=>b.value.length),V=e.computed(()=>s.value.length>t.nameMaxLength*.6);function I(){s.value="",d.value="",u.value=!1}function $(){r.value=null,l.value=!1,I()}e.watch(()=>t.open,S=>{if(S)h.value=typeof document<"u"&&document.activeElement instanceof HTMLElement?document.activeElement:null,e.nextTick(()=>{ma(p.value??f.value??m.value)});else{$();const R=h.value;h.value=null,e.nextTick(()=>ma(R))}},{immediate:!0});function C(S){l.value||(r.value=S)}function M(){r.value!==null&&o("confirm",r.value.id)}async function _(){var S;l.value=!0,I(),await e.nextTick(),(S=v.value)==null||S.focus()}function L(){l.value=!1,I(),e.nextTick(()=>ma(p.value))}function j(){d.value!==""&&!g.value&&!D.value&&(d.value="")}async function B(){var S,R,O,K;if(!u.value){if(g.value){d.value=w.value.createNewEmptyError,(S=v.value)==null||S.focus();return}if(D.value){d.value=w.value.createNewTooLongError,(R=v.value)==null||R.focus();return}u.value=!0,d.value="";try{const se=await i.createAlbum({name:b.value});if(se==null){d.value=w.value.createNewGenericError,u.value=!1,(O=v.value)==null||O.focus();return}r.value=se,l.value=!1,I(),o("confirm",se.id)}catch(se){const xe=se instanceof Error?se:new Error(String(se));d.value=xe.message!==""?xe.message:w.value.createNewGenericError,u.value=!1,(K=v.value)==null||K.focus(),o("error",xe)}}}function U(S){if(S.key==="Escape"&&l.value){S.preventDefault(),S.stopPropagation(),L();return}if(S.key==="Escape"){S.preventDefault(),S.stopPropagation(),o("cancel");return}S.key==="Tab"&&qd(S,c.value)}return(S,R)=>{var O;return e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[t.open?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"modalRef",ref:c,class:"media-album-picker-modal","data-testid":"media-album-picker-modal",role:"dialog","aria-modal":"true","aria-labelledby":e.unref(k),"aria-describedby":e.unref(E),tabindex:"-1",onKeydown:U},[e.createElementVNode("div",{ref_key:"panelRef",ref:m,class:"media-album-picker-modal__panel"},[e.createElementVNode("header",mF,[e.createElementVNode("h2",{id:e.unref(k)},e.toDisplayString(w.value.title),9,pF),e.createElementVNode("p",{id:e.unref(E)},e.toDisplayString(w.value.body),9,fF)]),l.value?(e.openBlock(),e.createElementBlock("form",{key:1,class:"media-album-picker-modal__create-form","data-testid":"media-album-picker-create-form",novalidate:"",onSubmit:R[2]||(R[2]=e.withModifiers(K=>void B(),["prevent"]))},[e.createElementVNode("label",hF,[e.createElementVNode("span",gF,e.toDisplayString(w.value.createNewPrompt),1),e.withDirectives(e.createElementVNode("input",{id:"media-album-picker-create-name",ref_key:"createInputRef",ref:v,"onUpdate:modelValue":R[1]||(R[1]=K=>s.value=K),type:"text",class:e.normalizeClass(["media-album-picker-modal__create-input",{"media-album-picker-modal__create-input--error":d.value!==""}]),maxlength:t.nameMaxLength+16,"aria-invalid":d.value!==""?"true":"false","aria-describedby":"media-album-picker-create-error media-album-picker-create-counter",autocomplete:"off","data-testid":"input-media-album-picker-create-name",disabled:u.value,onInput:j},null,42,bF),[[e.vModelText,s.value]]),e.createElementVNode("div",yF,[d.value!==""?(e.openBlock(),e.createElementBlock("span",wF,e.toDisplayString(d.value),1)):(e.openBlock(),e.createElementBlock("span",kF," Press Enter to create. ")),V.value?(e.openBlock(),e.createElementBlock("span",{key:2,id:"media-album-picker-create-counter",class:e.normalizeClass(["media-album-picker-modal__create-counter",{"media-album-picker-modal__create-counter--over":D.value}]),"data-testid":"media-album-picker-create-counter"},e.toDisplayString(F.value)+" / "+e.toDisplayString(t.nameMaxLength),3)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",_F,[e.createElementVNode("button",{type:"button",class:"media-album-picker-modal__btn media-album-picker-modal__btn--ghost","data-testid":"btn-media-album-picker-create-cancel",disabled:u.value,onClick:L},e.toDisplayString(w.value.createNewCancel),9,EF),e.createElementVNode("button",{type:"submit",class:"media-album-picker-modal__btn media-album-picker-modal__btn--primary","data-testid":"btn-media-album-picker-create-submit",disabled:!T.value},[u.value?(e.openBlock(),e.createElementBlock("span",xF,"…")):(e.openBlock(),e.createElementBlock("span",CF,e.toDisplayString(w.value.createNewSubmit),1))],8,SF)])],32)):(e.openBlock(),e.createElementBlock("div",vF,[e.createElementVNode("button",{ref_key:"createNewButtonRef",ref:p,type:"button",class:"media-album-picker-modal__create-new","data-testid":"btn-media-album-picker-create-new","aria-label":"Create new album",onClick:R[0]||(R[0]=K=>void _())},e.toDisplayString(w.value.createNew),513)])),e.createVNode(zl,{class:"media-album-picker-modal__tree","model-value":((O=r.value)==null?void 0:O.id)??null,draggable:!1,compact:!0,"data-testid":"media-album-picker-tree",onAlbumSelected:C},null,8,["model-value"]),r.value!==null&&!l.value?(e.openBlock(),e.createElementBlock("p",VF,e.toDisplayString(w.value.selectedAlbum(r.value.name)),1)):e.createCommentVNode("",!0),e.createElementVNode("footer",NF,[e.createElementVNode("button",{ref_key:"cancelButtonRef",ref:f,type:"button",class:"media-album-picker-modal__btn media-album-picker-modal__btn--ghost","data-testid":"btn-media-album-picker-cancel",onClick:R[3]||(R[3]=K=>o("cancel"))},e.toDisplayString(w.value.cancel),513),e.createElementVNode("button",{type:"button",class:"media-album-picker-modal__btn media-album-picker-modal__btn--primary","data-testid":"btn-media-album-picker-confirm",disabled:r.value===null||l.value,onClick:M},e.toDisplayString(w.value.confirm),9,TF)])],512)],40,cF)):e.createCommentVNode("",!0)])}}}),zf=Ie(BF,[["__scopeId","data-v-4bc0ef5f"]]),MF={key:0,class:"media-bulk-action-bar","data-testid":"media-bulk-action-bar","aria-live":"polite"},$F=["aria-label"],IF={class:"media-bulk-action-bar__actions"},DF=["disabled"],FF=e.defineComponent({__name:"MediaBulkActionBar",props:{selectedCount:{},crossPageCount:{default:0},overCap:{type:Boolean,default:!1},totalMatching:{default:null},scope:{},sourceAlbum:{default:null},capabilities:{default:()=>({})},labels:{default:()=>({})}},emits:["bulk-add-to-album","bulk-move-between-albums","bulk-remove-from-current-album","bulk-move-to-trash","bulk-create-post","bulk-create-gallery","bulk-restore","bulk-purge","bulk-download","clear","inspect"],setup(a,{emit:n}){const t=a,o=n,i=e.computed(()=>{var s,d,u,c,m,p,f,v,h,k,E,w,b,g;return{selectedCount:((s=t.labels)==null?void 0:s.selectedCount)??(D=>`${D} selected`),selectedAcrossPages:((d=t.labels)==null?void 0:d.selectedAcrossPages)??((D,T)=>`${D} selected, including ${T} not on this page`),cappedSelection:((u=t.labels)==null?void 0:u.cappedSelection)??((D,T)=>`Selected first ${D} of ${T??"many"} matching items`),addToAlbum:((c=t.labels)==null?void 0:c.addToAlbum)??"Add to album",moveBetweenAlbums:((m=t.labels)==null?void 0:m.moveBetweenAlbums)??(D=>`Move from ${D} to...`),removeFromCurrentAlbum:((p=t.labels)==null?void 0:p.removeFromCurrentAlbum)??"Remove from this album",moveToTrash:((f=t.labels)==null?void 0:f.moveToTrash)??"Move to trash",createPost:((v=t.labels)==null?void 0:v.createPost)??"Create post",createGallery:((h=t.labels)==null?void 0:h.createGallery)??"Create gallery",restore:((k=t.labels)==null?void 0:k.restore)??"Restore",purge:((E=t.labels)==null?void 0:E.purge)??"Delete forever",download:((w=t.labels)==null?void 0:w.download)??"Download",inspect:((b=t.labels)==null?void 0:b.inspect)??"Inspect",clear:((g=t.labels)==null?void 0:g.clear)??"Clear"}}),r=e.computed(()=>t.overCap?i.value.cappedSelection(t.selectedCount,t.totalMatching):t.crossPageCount>0?i.value.selectedAcrossPages(t.selectedCount,t.crossPageCount):i.value.selectedCount(t.selectedCount)),l=e.computed(()=>t.sourceAlbum?i.value.moveBetweenAlbums(t.sourceAlbum.name):i.value.addToAlbum);return(s,d)=>(e.openBlock(),e.createBlock(e.Transition,{name:"media-bulk-action-bar"},{default:e.withCtx(()=>[t.selectedCount>0?(e.openBlock(),e.createElementBlock("aside",MF,[e.createElementVNode("button",{type:"button",class:"media-bulk-action-bar__count","data-testid":"media-bulk-action-count","aria-label":`${i.value.inspect}: ${r.value}`,onClick:d[0]||(d[0]=u=>o("inspect"))},e.toDisplayString(r.value),9,$F),e.createElementVNode("div",IF,[t.scope!=="trash"&&t.capabilities.allowAddToAlbum===!0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-media-bulk-add-album",onClick:d[1]||(d[1]=u=>t.scope==="album"?o("bulk-move-between-albums"):o("bulk-add-to-album"))},e.toDisplayString(t.scope==="album"?l.value:i.value.addToAlbum),1)):e.createCommentVNode("",!0),t.scope!=="trash"&&t.capabilities.allowCreatePost===!0?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":"btn-media-bulk-create-post",onClick:d[2]||(d[2]=u=>o("bulk-create-post"))},e.toDisplayString(i.value.createPost),1)):e.createCommentVNode("",!0),t.scope!=="trash"&&t.capabilities.allowCreateGallery===!0?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button","data-testid":"btn-media-bulk-create-gallery",onClick:d[3]||(d[3]=u=>o("bulk-create-gallery"))},e.toDisplayString(i.value.createGallery),1)):e.createCommentVNode("",!0),t.scope==="album"?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button","data-testid":"btn-media-bulk-remove-current-album",onClick:d[4]||(d[4]=u=>o("bulk-remove-from-current-album"))},e.toDisplayString(i.value.removeFromCurrentAlbum),1)):e.createCommentVNode("",!0),t.scope!=="trash"?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button","data-testid":"btn-media-bulk-trash",onClick:d[5]||(d[5]=u=>o("bulk-move-to-trash"))},e.toDisplayString(i.value.moveToTrash),1)):e.createCommentVNode("",!0),t.scope==="trash"?(e.openBlock(),e.createElementBlock("button",{key:5,type:"button","data-testid":"btn-media-bulk-restore",onClick:d[6]||(d[6]=u=>o("bulk-restore"))},e.toDisplayString(i.value.restore),1)):e.createCommentVNode("",!0),t.scope==="trash"?(e.openBlock(),e.createElementBlock("button",{key:6,type:"button","data-testid":"btn-media-bulk-purge",onClick:d[7]||(d[7]=u=>o("bulk-purge"))},e.toDisplayString(i.value.purge),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button","data-testid":"btn-media-bulk-download",disabled:t.capabilities.allowDownloadZip!==!0,onClick:d[8]||(d[8]=u=>o("bulk-download"))},e.toDisplayString(i.value.download),9,DF),e.createElementVNode("button",{type:"button","data-testid":"btn-media-bulk-clear",onClick:d[9]||(d[9]=u=>o("clear"))},e.toDisplayString(i.value.clear),1)])])):e.createCommentVNode("",!0)]),_:1}))}}),Yd=Ie(FF,[["__scopeId","data-v-f934b5b2"]]),AF={class:"media-library-toolbar__group"},RF=["aria-controls","aria-expanded"],LF=["id"],PF={class:"media-library-toolbar__group"},UF=["aria-controls","aria-expanded"],OF=["id"],zF={key:0,class:"media-library-toolbar__menu-status"},jF={key:1,class:"media-library-toolbar__menu-status"},WF=["data-testid","onClick"],ZF={"aria-hidden":"true"},HF={class:"media-library-toolbar__group"},GF=["aria-controls","aria-expanded"],XF=["id"],KF=e.defineComponent({__name:"MediaLibraryToolbar",props:{sort:{default:"newest"},density:{default:"comfortable"},hasDateFilter:{type:Boolean,default:!1},httpClient:{},timelineEndpoint:{default:"/v1/media/library/timeline"},labels:{default:()=>({})}},emits:["update:sort","update:density","jump-to","jump-to-all","upload-files"],setup(a,{emit:n}){const t=a,o=n,i=e.computed(()=>{var U,S,R,O,K,se,xe,ue,le,H,y,A;return{sort:((U=t.labels)==null?void 0:U.sort)??"Sort",sortNewest:((S=t.labels)==null?void 0:S.sortNewest)??"Newest",sortOldest:((R=t.labels)==null?void 0:R.sortOldest)??"Oldest",sortName:((O=t.labels)==null?void 0:O.sortName)??"Name A–Z",sortLargest:((K=t.labels)==null?void 0:K.sortLargest)??"Largest first",jumpTo:((se=t.labels)==null?void 0:se.jumpTo)??"Jump to",jumpToAll:((xe=t.labels)==null?void 0:xe.jumpToAll)??"All time",jumpToEmpty:((ue=t.labels)==null?void 0:ue.jumpToEmpty)??"No history yet",density:((le=t.labels)==null?void 0:le.density)??"Density",densityComfortable:((H=t.labels)==null?void 0:H.densityComfortable)??"Comfortable",densityCompact:((y=t.labels)==null?void 0:y.densityCompact)??"Compact",upload:((A=t.labels)==null?void 0:A.upload)??"Upload"}}),r=e.ref(null);function l(){var U;(U=r.value)==null||U.click()}function s(U){const S=U.target;!(S instanceof HTMLInputElement)||S.files===null||S.files.length===0||(o("upload-files",Array.from(S.files)),S.value="")}const d=e.ref(null),u=e.ref(null),c=e.ref(null),m=e.ref(null),p=e.ref(null),f=e.useId(),v={sort:`${f}-sort`,jump:`${f}-jump`,density:`${f}-density`};function h(U){return U==="sort"?c.value:U==="jump"?m.value:p.value}function k(){e.nextTick(()=>{const U=u.value;if(U===null)return;const S=U.querySelector('[role="menu"]');S!==null&&ma(jl(S)[0]??null)})}function E(U){if(d.value===U){w(!0);return}d.value=U,k()}function w(U=!1){const S=d.value;d.value=null,U&&S!==null&&e.nextTick(()=>ma(h(S)))}function b(U){if(d.value===null)return;const S=u.value;S!==null&&(U.target instanceof Node&&S.contains(U.target)||w())}function g(U){d.value!==null&&U.key==="Escape"&&(U.preventDefault(),w(!0))}function D(U){if(U.key==="Escape"){U.preventDefault(),w(!0);return}cd(U,U.currentTarget instanceof HTMLElement?U.currentTarget:null)}const T=e.computed(()=>{switch(t.sort){case"oldest":return i.value.sortOldest;case"name":return i.value.sortName;case"largest":return i.value.sortLargest;default:return i.value.sortNewest}}),F=e.computed(()=>t.density==="compact"?i.value.densityCompact:i.value.densityComfortable);function V(U){w(!0),o("update:sort",U)}function I(U){w(!0),o("update:density",U)}const $=e.ref([]),C=e.ref(!1),M=e.ref(!1);async function _(){if(!(C.value||M.value||t.httpClient===void 0)){M.value=!0;try{const U=await t.httpClient.get(t.timelineEndpoint),S=U.data,R=(S==null?void 0:S.buckets)??U.buckets??[];$.value=Array.isArray(R)?R:[],C.value=!0}finally{M.value=!1}}}async function L(){E("jump"),d.value==="jump"&&await _()}function j(U){w(!0),o("jump-to",U)}function B(){w(!0),o("jump-to-all")}return e.onMounted(()=>{typeof window<"u"&&(document.addEventListener("pointerdown",b,!0),document.addEventListener("keydown",g))}),e.onBeforeUnmount(()=>{typeof window<"u"&&(document.removeEventListener("pointerdown",b,!0),document.removeEventListener("keydown",g))}),(U,S)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"toolbarRoot",ref:u,class:"media-library-toolbar","data-testid":"media-library-toolbar"},[e.createElementVNode("button",{type:"button",class:"media-library-toolbar__upload","data-testid":"btn-media-toolbar-upload",onClick:l}," ⤴ "+e.toDisplayString(i.value.upload),1),e.createElementVNode("input",{ref_key:"fileInputRef",ref:r,type:"file",multiple:"",accept:"image/*,video/*","data-testid":"input-media-toolbar-upload",class:"media-library-toolbar__file-input",onChange:s},null,544),e.createElementVNode("div",AF,[e.createElementVNode("button",{ref_key:"sortTriggerRef",ref:c,type:"button",class:"media-library-toolbar__trigger","data-testid":"btn-media-toolbar-sort","aria-haspopup":"menu","aria-controls":v.sort,"aria-expanded":d.value==="sort"?"true":"false",onClick:S[0]||(S[0]=R=>E("sort"))},e.toDisplayString(i.value.sort)+": "+e.toDisplayString(T.value),9,RF),d.value==="sort"?(e.openBlock(),e.createElementBlock("div",{key:0,id:v.sort,class:"media-library-toolbar__menu",role:"menu","data-testid":"media-library-toolbar-sort-menu",onKeydown:D},[e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"opt-sort-newest",onClick:S[1]||(S[1]=R=>V("newest"))},e.toDisplayString(i.value.sortNewest),1),e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"opt-sort-oldest",onClick:S[2]||(S[2]=R=>V("oldest"))},e.toDisplayString(i.value.sortOldest),1),e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"opt-sort-name",onClick:S[3]||(S[3]=R=>V("name"))},e.toDisplayString(i.value.sortName),1),e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"opt-sort-largest",onClick:S[4]||(S[4]=R=>V("largest"))},e.toDisplayString(i.value.sortLargest),1)],40,LF)):e.createCommentVNode("",!0)]),e.createElementVNode("div",PF,[e.createElementVNode("button",{ref_key:"jumpTriggerRef",ref:m,type:"button",class:"media-library-toolbar__trigger","data-testid":"btn-media-toolbar-jump-to","aria-haspopup":"menu","aria-controls":v.jump,"aria-expanded":d.value==="jump"?"true":"false",onClick:S[5]||(S[5]=R=>void L())},e.toDisplayString(i.value.jumpTo),9,UF),d.value==="jump"?(e.openBlock(),e.createElementBlock("div",{key:0,id:v.jump,class:"media-library-toolbar__menu",role:"menu","data-testid":"media-library-toolbar-jump-menu",onKeydown:D},[e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"opt-jump-all",onClick:B},e.toDisplayString(i.value.jumpToAll),1),M.value?(e.openBlock(),e.createElementBlock("p",zF,"Loading…")):C.value&&$.value.length===0?(e.openBlock(),e.createElementBlock("p",jF,e.toDisplayString(i.value.jumpToEmpty),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,R=>(e.openBlock(),e.createElementBlock("button",{key:R.starts_at,type:"button",role:"menuitem","data-testid":`opt-jump-${R.starts_at}`,onClick:O=>j(R)},[e.createTextVNode(e.toDisplayString(R.label)+" ",1),e.createElementVNode("span",ZF,"("+e.toDisplayString(R.count)+")",1)],8,WF))),128))],40,OF)):e.createCommentVNode("",!0)]),e.createElementVNode("div",HF,[e.createElementVNode("button",{ref_key:"densityTriggerRef",ref:p,type:"button",class:"media-library-toolbar__trigger","data-testid":"btn-media-toolbar-density","aria-haspopup":"menu","aria-controls":v.density,"aria-expanded":d.value==="density"?"true":"false",onClick:S[6]||(S[6]=R=>E("density"))},e.toDisplayString(i.value.density)+": "+e.toDisplayString(F.value),9,GF),d.value==="density"?(e.openBlock(),e.createElementBlock("div",{key:0,id:v.density,class:"media-library-toolbar__menu",role:"menu","data-testid":"media-library-toolbar-density-menu",onKeydown:D},[e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"opt-density-comfortable",onClick:S[7]||(S[7]=R=>I("comfortable"))},e.toDisplayString(i.value.densityComfortable),1),e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"opt-density-compact",onClick:S[8]||(S[8]=R=>I("compact"))},e.toDisplayString(i.value.densityCompact),1)],40,XF)):e.createCommentVNode("",!0)])],512))}}),jf=Ie(KF,[["__scopeId","data-v-2bd00d6a"]]),JF={class:"media-shortcut-help__panel"},qF={class:"media-shortcut-help__header"},YF=e.defineComponent({__name:"MediaShortcutHelp",props:{open:{type:Boolean},shortcuts:{default:()=>[{key:"j / k",label:"Move focus",group:"Navigation"},{key:"x",label:"Toggle selection",group:"Selection"},{key:"?",label:"Open shortcuts",group:"Help"},{key:"Esc",label:"Close panel",group:"Navigation"}]},title:{default:"Shortcuts"},closeLabel:{default:"Close"}},emits:["close"],setup(a,{emit:n}){const t=a,o=n;function i(){const r=new Map;for(const l of t.shortcuts)r.set(l.group,[...r.get(l.group)??[],l]);return Array.from(r.entries()).map(([l,s])=>({group:l,shortcuts:s}))}return(r,l)=>t.open?(e.openBlock(),e.createElementBlock("div",{key:0,class:"media-shortcut-help",role:"dialog","aria-modal":"true","data-testid":"media-shortcut-help",onKeydown:l[1]||(l[1]=e.withKeys(s=>o("close"),["escape"]))},[e.createElementVNode("div",JF,[e.createElementVNode("header",qF,[e.createElementVNode("h3",null,e.toDisplayString(t.title),1),e.createElementVNode("button",{type:"button","data-testid":"btn-media-shortcut-close",onClick:l[0]||(l[0]=s=>o("close"))},e.toDisplayString(t.closeLabel),1)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i(),s=>(e.openBlock(),e.createElementBlock("section",{key:s.group,class:"media-shortcut-help__group"},[e.createElementVNode("h4",null,e.toDisplayString(s.group),1),e.createElementVNode("dl",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.shortcuts,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`${s.group}-${d.key}`},[e.createElementVNode("dt",null,[e.createElementVNode("kbd",null,e.toDisplayString(d.key),1)]),e.createElementVNode("dd",null,e.toDisplayString(d.label),1)],64))),128))])]))),128))])],32)):e.createCommentVNode("",!0)}}),Wf=Ie(YF,[["__scopeId","data-v-abcdccb6"]]),QF="/v1/media/upload";function Zf(a){const n=a.endpoint??QF,t=e.ref([]),o=e.computed(()=>t.value.some(c=>c.status==="uploading"||c.status==="queued"));function i(){return`upload-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function r(c){if(c.type.startsWith("image/")&&typeof URL<"u")try{return URL.createObjectURL(c)}catch{return}}function l(c){t.value=t.value.filter(m=>m.cid!==c)}async function s(c){const m=i(),p=r(c),f={cid:m,fileName:c.name,size:c.size,status:"uploading",progress:0,...p!==void 0?{previewUrl:p}:{}};t.value=[f,...t.value];const v=new FormData;v.append("file",c);try{const h=await a.httpClient.post(n,v),k=h.data??h;return t.value=t.value.map(E=>E.cid===m?{...E,status:"success",progress:100}:E),typeof a.onMediaUploaded=="function"&&k&&typeof k.uuid=="string"&&await a.onMediaUploaded(k),setTimeout(()=>l(m),350),t.value.find(E=>E.cid===m)??f}catch(h){const k=h instanceof Error?h.message:"Upload failed";return t.value=t.value.map(E=>E.cid===m?{...E,status:"error",errorMessage:k}:E),t.value.find(E=>E.cid===m)??f}finally{if(p!==void 0&&typeof URL<"u")try{URL.revokeObjectURL(p)}catch{}}}async function d(c){const m=Array.from(c);return Promise.all(m.map(p=>s(p)))}function u(){t.value=[]}return{uploads:t,hasActiveUploads:o,uploadFile:s,uploadFiles:d,dismiss:l,clear:u}}const eA={class:"media-usage-list","data-testid":"media-usage-list"},tA={class:"media-usage-list__title"},aA={key:0,class:"media-usage-list__empty","data-testid":"media-usage-loading"},nA={key:1,class:"media-usage-list__empty","data-testid":"media-usage-empty"},oA={key:2,class:"media-usage-list__items"},iA=["data-testid"],rA=["href"],lA={key:1},sA={key:2,class:"media-usage-list__count"},dA=e.defineComponent({__name:"MediaUsageList",props:{media:{},httpClient:{},items:{default:()=>[]},title:{default:"Used in"},emptyLabel:{default:"No visible usages"}},setup(a){const n=a,t=e.ref(!1),o=e.ref([]),i=e.computed(()=>n.items.length>0?n.items:o.value);function r(s){var m;if(typeof s!="object"||s===null||!("data"in s))return[];const d=s.data;if(!Array.isArray(d))return[];const u=d[0];return(Array.isArray((m=u==null?void 0:u.report)==null?void 0:m.blocks)?u.report.blocks:[]).map((p,f)=>({id:`${p.type??"usage"}-${f}`,label:p.context??p.type??"Usage"}))}async function l(){if(!n.httpClient||n.media===null){o.value=[];return}t.value=!0;try{const s=await n.httpClient.post("/v1/media/deletion/check",{uuids:[n.media.uuid]});o.value=r(s)}finally{t.value=!1}}return e.watch(()=>{var s;return(s=n.media)==null?void 0:s.uuid},()=>{l()}),e.onMounted(()=>{l()}),(s,d)=>(e.openBlock(),e.createElementBlock("section",eA,[e.createElementVNode("h4",tA,e.toDisplayString(n.title),1),t.value?(e.openBlock(),e.createElementBlock("p",aA," Loading... ")):i.value.length===0?(e.openBlock(),e.createElementBlock("p",nA,e.toDisplayString(n.emptyLabel),1)):(e.openBlock(),e.createElementBlock("ul",oA,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock("li",{key:u.id,class:"media-usage-list__item","data-testid":`media-usage-${u.id}`},[u.href?(e.openBlock(),e.createElementBlock("a",{key:0,href:u.href},e.toDisplayString(u.label),9,rA)):(e.openBlock(),e.createElementBlock("span",lA,e.toDisplayString(u.label),1)),typeof u.count=="number"?(e.openBlock(),e.createElementBlock("span",sA,e.toDisplayString(u.count),1)):e.createCommentVNode("",!0)],8,iA))),128))]))]))}}),Hf=Ie(dA,[["__scopeId","data-v-ef6f09cf"]]),uA={class:"media-variant-strip","data-testid":"media-variant-strip"},cA={class:"media-variant-strip__title"},mA={key:0,class:"media-variant-strip__empty"},pA={key:1,class:"media-variant-strip__empty"},fA={key:2,class:"media-variant-strip__list"},vA=["data-testid"],hA=["src","alt"],gA={key:1,class:"media-variant-strip__placeholder"},bA={class:"media-variant-strip__label"},yA=e.defineComponent({__name:"MediaVariantStrip",props:{media:{},httpClient:{},variants:{default:()=>[]},title:{default:"Variants"}},setup(a){const n=a,t=e.ref(!1),o=e.ref([]),i=e.computed(()=>{const u=n.variants.length>0?n.variants:o.value;return n.media?[n.media,...u.filter(c=>{var m;return c.uuid!==((m=n.media)==null?void 0:m.uuid)})]:u});function r(u){if(typeof u!="object"||u===null||!("data"in u))return[];const c=u.data;return Array.isArray(c)?c.filter(m=>typeof m=="object"&&m!==null&&typeof m.uuid=="string"&&typeof m.file_name=="string"):[]}async function l(){if(!n.httpClient||n.media===null){o.value=[];return}t.value=!0;try{const u=await n.httpClient.get(`/v1/media/${encodeURIComponent(n.media.uuid)}/variants`);o.value=r(u)}finally{t.value=!1}}function s(u){return u.thumbnail_url??u.preview_url??u.original_url??null}function d(u,c){if(u===0)return"Current";if(u===1)return"Original";const m=new Date(c.created_at);if(Number.isNaN(m.getTime()))return"Edited";const p=Math.max(0,Math.round((Date.now()-m.getTime())/864e5));return p===0?"Edited today":p===1?"Edited 1 day ago":`Edited ${p} days ago`}return e.watch(()=>{var u;return(u=n.media)==null?void 0:u.uuid},()=>{l()}),e.onMounted(()=>{l()}),(u,c)=>(e.openBlock(),e.createElementBlock("section",uA,[e.createElementVNode("h4",cA,e.toDisplayString(n.title),1),t.value?(e.openBlock(),e.createElementBlock("p",mA,"Loading...")):i.value.length<=1?(e.openBlock(),e.createElementBlock("p",pA," No edits ")):(e.openBlock(),e.createElementBlock("ol",fA,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(m,p)=>(e.openBlock(),e.createElementBlock("li",{key:m.uuid,class:"media-variant-strip__item","data-testid":`media-variant-${m.uuid}`},[s(m)?(e.openBlock(),e.createElementBlock("img",{key:0,src:s(m)??"",alt:m.alt_text??m.file_name},null,8,hA)):(e.openBlock(),e.createElementBlock("span",gA,e.toDisplayString(m.file_name),1)),e.createElementVNode("span",bA,e.toDisplayString(d(p,m)),1)],8,vA))),128))]))]))}}),Gf=Ie(yA,[["__scopeId","data-v-adb529cb"]]),wA=/[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/ig,Qc=/[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i;function em(a){const n=a.replace(/\.[^.]+$/,""),t=n.replace(wA,""),o=t.replace(/(?:[-_\s]+edited)+$/i,""),i=t.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/(?:[-_\s]+edited)+$/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim();return i!==""?i:o||n||a}function tm(a,n){var o;const t=(o=a.custom_properties)==null?void 0:o[n];return typeof t=="string"&&t.trim()!==""?t.trim():null}function Xf(a){const n=tm(a,"display_name");if(n!==null&&!Qc.test(n))return n;const t=tm(a,"original_filename");return t!==null&&!Qc.test(t)?em(t):em(a.file_name)}const kA=a=>`/v1/media/${encodeURIComponent(a)}`,_A=new Set(["caption","alt_text","is_decorative","tags"]);function ks(a){return typeof a=="object"&&a!==null&&!Array.isArray(a)}function Br(a,n){return Object.prototype.hasOwnProperty.call(a,n)}function am(a){if(a==null)return null;const n=a.trim();return n===""?null:n}function EA(a){const n=[];for(const t of a){const o=t.trim();o===""||n.includes(o)||n.push(o)}return n}function SA(a){const n=a,t={};for(const o of Object.keys(n))if(!_A.has(o))throw new Error(`Unsupported media metadata field: ${o}`);if(Br(a,"caption")&&(t.caption=am(a.caption)),Br(a,"alt_text")&&(t.alt_text=am(a.alt_text)),Br(a,"is_decorative")&&(t.is_decorative=a.is_decorative===!0),Br(a,"tags")&&(t.tags=Array.isArray(a.tags)?EA(a.tags):[]),Object.keys(t).length===0)throw new Error("At least one media metadata field must be provided");return t}function xA(a){const n=ks(a)&&ks(a.data)?a.data:a;if(ks(n)&&typeof n.uuid=="string")return n;throw new Error("Media metadata update response did not include a media record")}function Kf(a){const n=e.ref(!1),t=e.ref(null),o=a.endpoint??kA;async function i(r,l){const s=r.trim();if(s==="")throw new Error("media uuid must not be empty");if(typeof a.httpClient.patch!="function")throw new Error("httpClient.patch is required to update media metadata");const d=SA(l);n.value=!0,t.value=null;try{const u=await a.httpClient.patch(o(s),d,a.requestConfig);return xA(u)}catch(u){throw t.value=u instanceof Error?u.message:"Failed to update media metadata",u}finally{n.value=!1}}return{updateMetadata:i,isUpdating:n,error:t}}const CA=["role","aria-modal"],VA={key:0,class:"media-inspector-panel__overlay-bar"},NA=["aria-label"],TA={class:"media-inspector-panel__header"},BA={key:0,class:"media-inspector-panel__raw-name"},MA={class:"media-inspector-panel__preview"},$A=["src","alt"],IA={class:"media-inspector-panel__meta"},DA={class:"media-inspector-panel__metadata","data-testid":"media-inspector-metadata-editor","aria-labelledby":"media-inspector-metadata-heading"},FA={class:"media-inspector-panel__metadata-heading"},AA={id:"media-inspector-metadata-heading"},RA={key:0,class:"media-inspector-panel__metadata-warning","data-testid":"media-inspector-missing-alt"},LA={class:"media-inspector-panel__field"},PA={class:"media-inspector-panel__field"},UA=["disabled"],OA={class:"media-inspector-panel__checkbox"},zA={id:"media-inspector-decorative-help",class:"media-inspector-panel__metadata-help"},jA={class:"media-inspector-panel__field"},WA={key:0,class:"media-inspector-panel__metadata-error","data-testid":"media-inspector-metadata-error",role:"alert"},ZA={class:"media-inspector-panel__metadata-actions"},HA=["disabled"],GA=["disabled"],XA={key:2,class:"media-inspector-panel__metadata-read"},KA={key:0,class:"media-inspector-panel__metadata-status","data-testid":"media-inspector-metadata-status",role:"status"},JA={class:"media-inspector-panel__actions"},qA=["aria-label"],YA=["aria-label"],QA=["aria-label"],eR=["aria-label"],tR=["aria-label"],aR=["aria-label"],nR=["aria-label"],oR=["aria-label"],iR={class:"media-inspector-panel__actions"},rR=["aria-label"],lR=["aria-label"],sR=["aria-label"],dR=["aria-label"],uR={key:3,class:"media-inspector-panel__empty"},cR=e.defineComponent({__name:"MediaInspectorPanel",props:{target:{},httpClient:{},capabilities:{default:()=>({})},inAlbumScope:{type:Boolean,default:!1},labels:{default:()=>({})},mode:{default:"pinned"}},emits:["edit","replace","download","set-visibility","move-to-trash","remove-from-this-album","remove-from-albums","set-as-album-cover","bulk-add-to-album","bulk-create-album","bulk-move-to-trash","bulk-download","metadata-updated","close"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r=e.ref(null),l=e.ref(null),s=e.ref(null),d=e.ref(!1),u=e.ref(""),c=e.ref(""),m=e.ref(!1),p=e.ref(""),f=e.ref(""),v=e.ref("");function h(){return Promise.reject(new Error("Media metadata editing requires a PATCH-capable httpClient."))}const E=Kf({httpClient:{get:async(y,A)=>{var W;return((W=t.httpClient)==null?void 0:W.get(y,A))??h()},post:async(y,A,W)=>{var q;return((q=t.httpClient)==null?void 0:q.post(y,A,W))??h()},patch:async(y,A,W)=>{var q,de;return((de=(q=t.httpClient)==null?void 0:q.patch)==null?void 0:de.call(q,y,A,W))??h()}}});e.watch(()=>t.target,(y,A)=>{const W=A==null,q=y==null;if(W&&!q){typeof document<"u"&&document.activeElement instanceof HTMLElement&&(s.value=document.activeElement),e.nextTick(()=>{var de,Pe;if(t.mode==="overlay"){(de=l.value)==null||de.focus();return}(Pe=r.value)==null||Pe.focus()});return}if(!W&&q){const de=s.value;s.value=null,de instanceof HTMLElement&&de.focus()}});function w(y){if(t.mode==="overlay"&&y.key==="Escape"){y.preventDefault(),y.stopPropagation(),o("close");return}t.mode==="overlay"&&y.key==="Tab"&&qd(y,i.value)}const b=e.computed(()=>t.mode==="overlay"?"dialog":"complementary"),g=e.computed(()=>{var y,A,W,q,de,Pe,ge,ke,be,Ce,Ee,Ae,Ue,ot,it,Lt,gt,St,ct,mt,Ct,Se,Ve,Re,at,He;return{title:((y=t.labels)==null?void 0:y.title)??"Inspector",emptyTitle:((A=t.labels)==null?void 0:A.emptyTitle)??"Select media to inspect",multiTitle:((W=t.labels)==null?void 0:W.multiTitle)??(Je=>`${Je} selected`),edit:((q=t.labels)==null?void 0:q.edit)??"Edit",replace:((de=t.labels)==null?void 0:de.replace)??"Replace",download:((Pe=t.labels)==null?void 0:Pe.download)??"Download",setVisibility:((ge=t.labels)==null?void 0:ge.setVisibility)??"Set visibility",moveToTrash:((ke=t.labels)==null?void 0:ke.moveToTrash)??"Move to trash",removeFromThisAlbum:((be=t.labels)==null?void 0:be.removeFromThisAlbum)??"Remove from this album",removeFromAlbums:((Ce=t.labels)==null?void 0:Ce.removeFromAlbums)??(t.inAlbumScope?"Move to another album":"Add to album"),addToAlbum:((Ee=t.labels)==null?void 0:Ee.addToAlbum)??"Add to album",createAlbum:((Ae=t.labels)==null?void 0:Ae.createAlbum)??"Create album from selection",setAsAlbumCover:((Ue=t.labels)==null?void 0:Ue.setAsAlbumCover)??"Set as album cover",metadataTitle:((ot=t.labels)==null?void 0:ot.metadataTitle)??"Metadata",metadataEdit:((it=t.labels)==null?void 0:it.metadataEdit)??"Edit metadata",caption:((Lt=t.labels)==null?void 0:Lt.caption)??"Caption",altText:((gt=t.labels)==null?void 0:gt.altText)??"Alt text",decorative:((St=t.labels)==null?void 0:St.decorative)??"Decorative image",tags:((ct=t.labels)==null?void 0:ct.tags)??"Tags",saveMetadata:((mt=t.labels)==null?void 0:mt.saveMetadata)??"Save metadata",cancelMetadata:((Ct=t.labels)==null?void 0:Ct.cancelMetadata)??"Cancel",metadataSaved:((Se=t.labels)==null?void 0:Se.metadataSaved)??"Metadata saved",close:((Ve=t.labels)==null?void 0:Ve.close)??"Close inspector",missingAltTitle:((Re=t.labels)==null?void 0:Re.missingAltTitle)??"Missing alt text",missingAltDescription:((at=t.labels)==null?void 0:at.missingAltDescription)??"Add alt text or mark this image as decorative.",decorativeHelp:((He=t.labels)==null?void 0:He.decorativeHelp)??"Decorative media does not need alt text."}}),D=e.computed(()=>{var y;return((y=t.target)==null?void 0:y.kind)==="single"?t.target.media:null});function T(y){const A=y.mime_type.toLowerCase();return y.is_image===!0||A.startsWith("image/")?"image":A.startsWith("video/")?"video":null}const F=e.computed(()=>{const y=D.value;if(y===null)return!1;const A=T(y);return A==="image"?t.capabilities.allowImageEdit===!0:A==="video"?t.capabilities.allowVideoEdit===!0:!1}),V=e.computed(()=>t.capabilities.allowReplaceMedia===!0),I=e.computed(()=>t.capabilities.allowDownloadOriginal===!0),$=e.computed(()=>t.capabilities.allowBulkDelete===!0),C=e.computed(()=>t.inAlbumScope||t.capabilities.allowAddToAlbum===!0),M=e.computed(()=>t.capabilities.allowAddToAlbum===!0),_=e.computed(()=>t.capabilities.allowBulkDelete===!0),L=e.computed(()=>t.capabilities.allowDownloadZip===!0),j=e.computed(()=>{var y;return D.value!==null&&t.capabilities.allowMetadataEdit===!0&&typeof((y=t.httpClient)==null?void 0:y.patch)=="function"}),B=e.computed(()=>{const y=D.value;return y===null?null:T(y)}),U=e.computed(()=>{const y=D.value;return y!==null&&B.value==="image"&&y.is_decorative!==!0&&!O(y.alt_text)}),S=e.computed(()=>E.isUpdating.value),R=e.computed(()=>{var y;return K((y=D.value)==null?void 0:y.tags)});function O(y){return typeof y=="string"&&y.trim()!==""}function K(y){return Array.isArray(y)?y.filter(A=>A.trim()!=="").join(", "):""}function se(y){const A=[];for(const W of y.split(",")){const q=W.trim();q===""||A.includes(q)||A.push(q)}return A}function xe(y,A=!0){u.value=(y==null?void 0:y.caption)??"",c.value=(y==null?void 0:y.alt_text)??"",m.value=(y==null?void 0:y.is_decorative)===!0,p.value=K(y==null?void 0:y.tags),f.value="",A&&(v.value="")}function ue(){xe(D.value),d.value=!0}function le(){xe(D.value),d.value=!1}async function H(){const y=D.value;if(!(y===null||!j.value||S.value)){f.value="",v.value="";try{const A=await E.updateMetadata(y.uuid,{caption:u.value,alt_text:m.value?null:c.value,is_decorative:m.value,tags:se(p.value)});xe(A,!1),d.value=!1,v.value=g.value.metadataSaved,o("metadata-updated",A)}catch(A){f.value=A instanceof Error?A.message:"Failed to save media metadata"}}}return e.watch(D,(y,A)=>{const W=(y==null?void 0:y.uuid)!==(A==null?void 0:A.uuid);xe(y,W),d.value=!1},{immediate:!0}),e.watch(m,y=>{y&&(c.value="")}),(y,A)=>{var W;return e.openBlock(),e.createElementBlock("aside",{ref_key:"panelRef",ref:i,class:"media-inspector-panel","data-testid":"media-inspector-panel",role:b.value,"aria-modal":t.mode==="overlay"?"true":void 0,"aria-labelledby":"media-inspector-heading",onKeydown:w},[t.mode==="overlay"?(e.openBlock(),e.createElementBlock("div",VA,[e.createElementVNode("button",{ref_key:"closeButtonRef",ref:l,type:"button",class:"media-inspector-panel__close","data-testid":"btn-media-inspector-close","aria-label":g.value.close,onClick:A[0]||(A[0]=q=>o("close"))}," × ",8,NA)])):e.createCommentVNode("",!0),D.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("header",TA,[e.createElementVNode("h3",{id:"media-inspector-heading",ref_key:"headingRef",ref:r,tabindex:"-1"},e.toDisplayString(e.unref(Xf)(D.value)),513),D.value.file_name?(e.openBlock(),e.createElementBlock("p",BA,e.toDisplayString(D.value.file_name),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",MA,[D.value.thumbnail_url??D.value.preview_url??D.value.original_url?(e.openBlock(),e.createElementBlock("img",{key:0,src:D.value.thumbnail_url??D.value.preview_url??D.value.original_url,alt:D.value.alt_text??D.value.file_name},null,8,$A)):e.createCommentVNode("",!0)]),e.createElementVNode("dl",IA,[e.createElementVNode("div",null,[A[17]||(A[17]=e.createElementVNode("dt",null,"Type",-1)),e.createElementVNode("dd",null,e.toDisplayString(D.value.mime_type),1)]),e.createElementVNode("div",null,[A[18]||(A[18]=e.createElementVNode("dt",null,"Size",-1)),e.createElementVNode("dd",null,e.toDisplayString(D.value.formatted_size??D.value.size),1)])]),e.createElementVNode("section",DA,[e.createElementVNode("div",FA,[e.createElementVNode("h4",AA,e.toDisplayString(g.value.metadataTitle),1),j.value&&!d.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-media-inspector-metadata-edit",onClick:ue},e.toDisplayString(g.value.metadataEdit),1)):e.createCommentVNode("",!0)]),U.value?(e.openBlock(),e.createElementBlock("p",RA,[e.createElementVNode("strong",null,e.toDisplayString(g.value.missingAltTitle),1),e.createElementVNode("span",null,e.toDisplayString(g.value.missingAltDescription),1)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("form",{key:1,class:"media-inspector-panel__metadata-form",onSubmit:e.withModifiers(H,["prevent"])},[e.createElementVNode("label",LA,[e.createElementVNode("span",null,e.toDisplayString(g.value.caption),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":A[1]||(A[1]=q=>u.value=q),"data-testid":"textarea-media-inspector-caption",rows:"3"},null,512),[[e.vModelText,u.value]])]),e.createElementVNode("label",PA,[e.createElementVNode("span",null,e.toDisplayString(g.value.altText),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":A[2]||(A[2]=q=>c.value=q),"data-testid":"textarea-media-inspector-alt-text",rows:"3",disabled:m.value,"aria-describedby":"media-inspector-decorative-help"},null,8,UA),[[e.vModelText,c.value]])]),e.createElementVNode("label",OA,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[3]||(A[3]=q=>m.value=q),type:"checkbox","data-testid":"checkbox-media-inspector-decorative","aria-describedby":"media-inspector-decorative-help"},null,512),[[e.vModelCheckbox,m.value]]),e.createElementVNode("span",null,e.toDisplayString(g.value.decorative),1)]),e.createElementVNode("p",zA,e.toDisplayString(g.value.decorativeHelp),1),e.createElementVNode("label",jA,[e.createElementVNode("span",null,e.toDisplayString(g.value.tags),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[4]||(A[4]=q=>p.value=q),type:"text","data-testid":"input-media-inspector-tags"},null,512),[[e.vModelText,p.value]])]),f.value?(e.openBlock(),e.createElementBlock("p",WA,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",ZA,[e.createElementVNode("button",{type:"submit","data-testid":"btn-media-inspector-metadata-save",disabled:S.value,onClick:e.withModifiers(H,["prevent"])},e.toDisplayString(g.value.saveMetadata),9,HA),e.createElementVNode("button",{type:"button","data-testid":"btn-media-inspector-metadata-cancel",disabled:S.value,onClick:le},e.toDisplayString(g.value.cancelMetadata),9,GA)])],32)):(e.openBlock(),e.createElementBlock("div",XA,[e.createElementVNode("dl",null,[e.createElementVNode("div",null,[e.createElementVNode("dt",null,e.toDisplayString(g.value.caption),1),e.createElementVNode("dd",null,e.toDisplayString(D.value.caption||"None"),1)]),e.createElementVNode("div",null,[e.createElementVNode("dt",null,e.toDisplayString(g.value.altText),1),e.createElementVNode("dd",null,e.toDisplayString(D.value.alt_text||"None"),1)]),e.createElementVNode("div",null,[e.createElementVNode("dt",null,e.toDisplayString(g.value.decorative),1),e.createElementVNode("dd",null,e.toDisplayString(D.value.is_decorative===!0?"Yes":"No"),1)]),e.createElementVNode("div",null,[e.createElementVNode("dt",null,e.toDisplayString(g.value.tags),1),e.createElementVNode("dd",null,e.toDisplayString(R.value||"None"),1)])]),v.value?(e.openBlock(),e.createElementBlock("p",KA,e.toDisplayString(v.value),1)):e.createCommentVNode("",!0)]))]),e.createVNode(Hf,{media:D.value,"http-client":t.httpClient},null,8,["media","http-client"]),e.createVNode(Gf,{media:D.value,"http-client":t.httpClient},null,8,["media","http-client"]),e.createElementVNode("div",JA,[F.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-media-inspector-edit","aria-label":g.value.edit,onClick:A[5]||(A[5]=q=>o("edit",D.value))},e.toDisplayString(g.value.edit),9,qA)):e.createCommentVNode("",!0),V.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":"btn-media-inspector-replace","aria-label":g.value.replace,onClick:A[6]||(A[6]=q=>o("replace",D.value))},e.toDisplayString(g.value.replace),9,YA)):e.createCommentVNode("",!0),I.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button","data-testid":"btn-media-inspector-download","aria-label":g.value.download,onClick:A[7]||(A[7]=q=>o("download",D.value))},e.toDisplayString(g.value.download),9,QA)):e.createCommentVNode("",!0),t.capabilities.allowVisibilityChange?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button","data-testid":"btn-media-inspector-visibility","aria-label":g.value.setVisibility,onClick:A[8]||(A[8]=q=>o("set-visibility",D.value))},e.toDisplayString(g.value.setVisibility),9,eR)):e.createCommentVNode("",!0),t.inAlbumScope?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button","data-testid":"btn-set-as-album-cover","aria-label":g.value.setAsAlbumCover,onClick:A[9]||(A[9]=q=>o("set-as-album-cover",D.value))},e.toDisplayString(g.value.setAsAlbumCover),9,tR)):e.createCommentVNode("",!0),t.inAlbumScope?(e.openBlock(),e.createElementBlock("button",{key:5,type:"button","data-testid":"btn-media-inspector-remove-current-album","aria-label":g.value.removeFromThisAlbum,onClick:A[10]||(A[10]=q=>o("remove-from-this-album",D.value))},e.toDisplayString(g.value.removeFromThisAlbum),9,aR)):e.createCommentVNode("",!0),C.value?(e.openBlock(),e.createElementBlock("button",{key:6,type:"button","data-testid":"btn-media-inspector-album-membership","aria-label":g.value.removeFromAlbums,onClick:A[11]||(A[11]=q=>o("remove-from-albums",D.value))},e.toDisplayString(g.value.removeFromAlbums),9,nR)):e.createCommentVNode("",!0),$.value?(e.openBlock(),e.createElementBlock("button",{key:7,type:"button","data-testid":"btn-media-inspector-trash","aria-label":g.value.moveToTrash,onClick:A[12]||(A[12]=q=>o("move-to-trash",D.value))},e.toDisplayString(g.value.moveToTrash),9,oR)):e.createCommentVNode("",!0)])],64)):((W=t.target)==null?void 0:W.kind)==="multi"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("h3",{id:"media-inspector-heading",ref_key:"headingRef",ref:r,tabindex:"-1"},e.toDisplayString(g.value.multiTitle(t.target.count)),513),e.createElementVNode("div",iR,[M.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-media-inspector-bulk-add-album","aria-label":g.value.addToAlbum,onClick:A[13]||(A[13]=q=>o("bulk-add-to-album"))},e.toDisplayString(g.value.addToAlbum),9,rR)):e.createCommentVNode("",!0),M.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":"btn-media-inspector-bulk-create-album","aria-label":g.value.createAlbum,onClick:A[14]||(A[14]=q=>o("bulk-create-album"))},e.toDisplayString(g.value.createAlbum),9,lR)):e.createCommentVNode("",!0),_.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button","data-testid":"btn-media-inspector-bulk-trash","aria-label":g.value.moveToTrash,onClick:A[15]||(A[15]=q=>o("bulk-move-to-trash"))},e.toDisplayString(g.value.moveToTrash),9,sR)):e.createCommentVNode("",!0),L.value?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button","data-testid":"btn-media-inspector-bulk-download","aria-label":g.value.download,onClick:A[16]||(A[16]=q=>o("bulk-download"))},e.toDisplayString(g.value.download),9,dR)):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock("p",uR,e.toDisplayString(g.value.emptyTitle),1))],40,CA)}}}),Jf=Ie(cR,[["__scopeId","data-v-f6d70239"]]),mR={class:"media-filter-chips__scroll"},pR={key:0,class:"media-filter-chips__chip media-filter-chips__chip--scope","data-testid":"media-filter-scope-chip"},fR=["data-testid","aria-label","onClick"],vR={class:"media-filter-chips__add-wrap"},hR=["aria-controls","aria-expanded"],gR=["id","aria-label"],bR=["placeholder","aria-label"],yR={class:"media-filter-chips__search-actions"},wR={type:"submit",class:"media-filter-chips__search-button","data-testid":"btn-media-filter-query-apply"},kR=e.defineComponent({__name:"MediaFilterChips",props:{filters:{},scopeLabel:{default:""},labels:{default:()=>({})}},emits:["update:filters","change","clear"],setup(a,{emit:n}){var U;const t=a,o=n,i=e.ref(!1),r=e.ref(((U=t.filters.query)==null?void 0:U.trim())??""),l=e.ref(null),s=e.ref(null),d=e.ref(null),u=e.useId(),c=e.computed(()=>{var S,R,O,K,se,xe,ue,le,H,y,A,W,q,de,Pe,ge,ke,be,Ce,Ee,Ae;return{addFilter:((S=t.labels)==null?void 0:S.addFilter)??"Filter",clearAll:((R=t.labels)==null?void 0:R.clearAll)??"Clear all filters",typeLabel:((O=t.labels)==null?void 0:O.typeLabel)??"Type",usageLabel:((K=t.labels)==null?void 0:K.usageLabel)??"Usage",metadataLabel:((se=t.labels)==null?void 0:se.metadataLabel)??"Metadata",imageLabel:((xe=t.labels)==null?void 0:xe.imageLabel)??"Image",videoLabel:((ue=t.labels)==null?void 0:ue.videoLabel)??"Video",usedLabel:((le=t.labels)==null?void 0:le.usedLabel)??"Used",notUsedLabel:((H=t.labels)==null?void 0:H.notUsedLabel)??"Not used",missingAltLabel:((y=t.labels)==null?void 0:y.missingAltLabel)??"Missing alt text",hasAltLabel:((A=t.labels)==null?void 0:A.hasAltLabel)??"Has alt text",missingCaptionLabel:((W=t.labels)==null?void 0:W.missingCaptionLabel)??"Missing caption",hasCaptionLabel:((q=t.labels)==null?void 0:q.hasCaptionLabel)??"Has caption",hasTagsLabel:((de=t.labels)==null?void 0:de.hasTagsLabel)??"Has tags",decorativeLabel:((Pe=t.labels)==null?void 0:Pe.decorativeLabel)??"Decorative",dateAfterLabel:((ge=t.labels)==null?void 0:ge.dateAfterLabel)??"After",dateBeforeLabel:((ke=t.labels)==null?void 0:ke.dateBeforeLabel)??"Before",searchLabel:((be=t.labels)==null?void 0:be.searchLabel)??"Search",searchPlaceholder:((Ce=t.labels)==null?void 0:Ce.searchPlaceholder)??"Search media",applySearch:((Ee=t.labels)==null?void 0:Ee.applySearch)??"Apply",clearSearch:((Ae=t.labels)==null?void 0:Ae.clearSearch)??"Clear"}});e.watch(()=>t.filters.query,S=>{r.value=(S==null?void 0:S.trim())??""});function m(){return{...t.filters,...t.filters.kinds!==void 0?{kinds:[...t.filters.kinds]}:{},...t.filters.selected_uuids!==void 0?{selected_uuids:[...t.filters.selected_uuids]}:{}}}function p(S){o("update:filters",S),o("change",S)}function f(S){const R=m(),O=(R.kinds??[]).filter(K=>K!==S);O.length>0?R.kinds=O:delete R.kinds,p(R)}function v(S){const R=m(),O=new Set(R.kinds??[]);O.add(S),R.kinds=Array.from(O),p(R),g(!0)}function h(){const S=m();delete S.usage_status,p(S)}function k(S){const R=m();R.usage_status=S,p(R),g(!0)}function E(S){const R=c.value;return{missing_alt:R.missingAltLabel,has_alt:R.hasAltLabel,missing_caption:R.missingCaptionLabel,has_caption:R.hasCaptionLabel,has_tags:R.hasTagsLabel,decorative:R.decorativeLabel}[S]}function w(){const S=m();delete S.metadata_status,p(S)}function b(S){const R=m();R.metadata_status=S,p(R),g(!0)}function g(S=!1){i.value&&(i.value=!1,S&&e.nextTick(()=>ma(s.value)))}function D(){var S;i.value=!0,r.value=((S=t.filters.query)==null?void 0:S.trim())??"",e.nextTick(()=>ma(d.value))}function T(){if(i.value){g(!0);return}D()}function F(){const S=m(),R=r.value.trim();R===""?delete S.query:S.query=R,p(S),g(!0)}function V(){const S=m();delete S.query,r.value="",p(S),g(!0)}function I(S){const R=new Date;return R.setHours(0,0,0,0),R.setDate(R.getDate()-S),R.toISOString()}function $(){const S=new Date;return new Date(S.getFullYear(),0,1).toISOString()}function C(S,R=null){const O=m();S===null?delete O.created_after:O.created_after=S,R===null?delete O.created_before:O.created_before=R,p(O),g(!0)}function M(S){const R=m();delete R[S],p(R)}function _(){p({sort:t.filters.sort??"newest"}),o("clear")}function L(S){if(!i.value)return;const R=l.value;R!==null&&(S.target instanceof Node&&R.contains(S.target)||g(!1))}function j(S){!i.value||S.key!=="Escape"||(S.preventDefault(),g(!0))}e.onMounted(()=>{document.addEventListener("pointerdown",L,!0),document.addEventListener("keydown",j)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",L,!0),document.removeEventListener("keydown",j)});const B=e.computed(()=>{const S=[];for(const R of t.filters.kinds??[]){const O=R==="image"?c.value.imageLabel:R==="video"?c.value.videoLabel:String(R);S.push({key:`kind-${R}`,label:`${c.value.typeLabel}: ${O}`,remove:()=>f(R)})}return(t.filters.usage_status==="used"||t.filters.usage_status==="not_used")&&S.push({key:"usage",label:`${c.value.usageLabel}: ${t.filters.usage_status==="used"?c.value.usedLabel:c.value.notUsedLabel}`,remove:h}),t.filters.metadata_status&&S.push({key:"metadata-status",label:`${c.value.metadataLabel}: ${E(t.filters.metadata_status)}`,remove:w}),t.filters.created_after&&S.push({key:"created-after",label:`${c.value.dateAfterLabel}: ${t.filters.created_after}`,remove:()=>M("created_after")}),t.filters.created_before&&S.push({key:"created-before",label:`${c.value.dateBeforeLabel}: ${t.filters.created_before}`,remove:()=>M("created_before")}),t.filters.query&&t.filters.query.trim()!==""&&S.push({key:"query",label:`${c.value.searchLabel}: "${t.filters.query.trim()}"`,remove:()=>M("query")}),S});return(S,R)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:l,class:"media-filter-chips","data-testid":"media-filter-chips"},[e.createElementVNode("div",mR,[t.scopeLabel!==""?(e.openBlock(),e.createElementBlock("span",pR,e.toDisplayString(t.scopeLabel),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,O=>(e.openBlock(),e.createElementBlock("button",{key:O.key,type:"button",class:"media-filter-chips__chip","data-testid":`media-filter-chip-${O.key}`,"aria-label":`Remove filter ${O.label}`,onClick:O.remove},[e.createElementVNode("span",null,e.toDisplayString(O.label),1),R[14]||(R[14]=e.createElementVNode("span",{"aria-hidden":"true"},"×",-1))],8,fR))),128)),B.value.length>=2?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"media-filter-chips__clear","data-testid":"btn-media-filter-clear-all",onClick:_},e.toDisplayString(c.value.clearAll),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",vR,[e.createElementVNode("button",{ref_key:"triggerRef",ref:s,type:"button",class:"media-filter-chips__add","data-testid":"btn-media-filter-add","aria-haspopup":"dialog","aria-controls":e.unref(u),"aria-expanded":i.value?"true":"false",onClick:T}," + "+e.toDisplayString(c.value.addFilter),9,hR),i.value?(e.openBlock(),e.createElementBlock("div",{key:0,id:e.unref(u),class:"media-filter-chips__menu","data-testid":"media-filter-menu",role:"dialog","aria-label":c.value.addFilter},[e.createElementVNode("form",{class:"media-filter-chips__search","data-testid":"media-filter-query-form",onSubmit:e.withModifiers(F,["prevent"])},[e.withDirectives(e.createElementVNode("input",{ref_key:"queryInputRef",ref:d,"onUpdate:modelValue":R[0]||(R[0]=O=>r.value=O),type:"search",class:"media-filter-chips__search-input","data-testid":"input-media-filter-query",placeholder:c.value.searchPlaceholder,"aria-label":c.value.searchPlaceholder},null,8,bR),[[e.vModelText,r.value]]),e.createElementVNode("div",yR,[e.createElementVNode("button",wR,e.toDisplayString(c.value.applySearch),1),e.createElementVNode("button",{type:"button",class:"media-filter-chips__search-button media-filter-chips__search-button--muted","data-testid":"btn-media-filter-query-clear",onClick:V},e.toDisplayString(c.value.clearSearch),1)])],32),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-image",onClick:R[1]||(R[1]=O=>v("image"))},e.toDisplayString(c.value.typeLabel)+": "+e.toDisplayString(c.value.imageLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-video",onClick:R[2]||(R[2]=O=>v("video"))},e.toDisplayString(c.value.typeLabel)+": "+e.toDisplayString(c.value.videoLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-used",onClick:R[3]||(R[3]=O=>k("used"))},e.toDisplayString(c.value.usageLabel)+": "+e.toDisplayString(c.value.usedLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-not-used",onClick:R[4]||(R[4]=O=>k("not_used"))},e.toDisplayString(c.value.usageLabel)+": "+e.toDisplayString(c.value.notUsedLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-missing-alt",onClick:R[5]||(R[5]=O=>b("missing_alt"))},e.toDisplayString(c.value.metadataLabel)+": "+e.toDisplayString(c.value.missingAltLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-has-alt",onClick:R[6]||(R[6]=O=>b("has_alt"))},e.toDisplayString(c.value.metadataLabel)+": "+e.toDisplayString(c.value.hasAltLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-missing-caption",onClick:R[7]||(R[7]=O=>b("missing_caption"))},e.toDisplayString(c.value.metadataLabel)+": "+e.toDisplayString(c.value.missingCaptionLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-has-caption",onClick:R[8]||(R[8]=O=>b("has_caption"))},e.toDisplayString(c.value.metadataLabel)+": "+e.toDisplayString(c.value.hasCaptionLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-has-tags",onClick:R[9]||(R[9]=O=>b("has_tags"))},e.toDisplayString(c.value.metadataLabel)+": "+e.toDisplayString(c.value.hasTagsLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-decorative",onClick:R[10]||(R[10]=O=>b("decorative"))},e.toDisplayString(c.value.metadataLabel)+": "+e.toDisplayString(c.value.decorativeLabel),1),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-date-7d",onClick:R[11]||(R[11]=O=>C(I(7)))},"Date: Last 7 days"),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-date-30d",onClick:R[12]||(R[12]=O=>C(I(30)))},"Date: Last 30 days"),e.createElementVNode("button",{type:"button","data-testid":"opt-filter-date-year",onClick:R[13]||(R[13]=O=>C($()))},"Date: This year")],8,gR)):e.createCommentVNode("",!0)])],512))}}),qf=Ie(kR,[["__scopeId","data-v-42cb25b6"]]);class Wl extends Error{constructor(n,t="Media deletion requires explicit confirmation."){super(t),this.name="RequiresConfirmationError",this.softBlocks=n}}const _R="/v1/media/deletion/check",ER="/v1/media/deletion/delete",Mr=100;function nm(a){const n=new Set,t=[];for(const o of a){const i=o.trim().toLowerCase();i===""||n.has(i)||(n.add(i),t.push(i))}return t.sort()}function Qd(a){const n=a.checkEndpoint??_R,t=a.deleteEndpoint??ER,o=e.ref(!1),i=e.ref(!1),r=e.ref(null),l=e.ref(null),s=e.ref(null);async function d(f){s.value=null;const v=nm(f);if(v.length===0)return r.value=[],[];if(v.length>Mr){const h=new Error(`Cannot check more than ${Mr} media items at once.`);throw s.value=h,h}o.value=!0;try{const h=await a.httpClient.post(n,{uuids:v}),k=((h==null?void 0:h.data)??[]).map(E=>{var w,b,g,D;return{uuid:E.uuid,canDelete:((w=E.report)==null?void 0:w.canDelete)??!1,blocks:Array.isArray((b=E.report)==null?void 0:b.blocks)?E.report.blocks:[],cascade:Array.isArray((g=E.report)==null?void 0:g.cascade)?E.report.cascade:[],variantCount:typeof((D=E.report)==null?void 0:D.variantCount)=="number"?E.report.variantCount:0}});return r.value=k,k}catch(h){throw s.value=h instanceof Error?h:new Error(String(h)),s.value}finally{o.value=!1}}async function u(f,v={}){s.value=null;const h=nm(f);if(h.length===0){const k={results:[],summary:{}};return l.value=k,k}if(h.length>Mr){const k=new Error(`Cannot delete more than ${Mr} media items at once.`);throw s.value=k,k}i.value=!0;try{const k=await a.httpClient.post(t,{uuids:h,force:v.force===!0,confirmed:v.confirmed===!0}),E={results:Array.isArray(k==null?void 0:k.results)?k.results:[],summary:(k==null?void 0:k.summary)??{}};return l.value=E,E}catch(k){const E=c(k);if(E&&E.requires_confirmation===!0){const w=m(E.soft_blocks),b=new Wl(w);throw s.value=b,b}throw s.value=k instanceof Error?k:new Error(String(k)),s.value}finally{i.value=!1}}function c(f){if(typeof f!="object"||f===null)return null;const v=f;if(v.response&&typeof v.response=="object"&&v.response.data&&typeof v.response.data=="object")return v.response.data;const h=f;return"requires_confirmation"in h||"soft_blocks"in h?h:null}function m(f){if(typeof f!="object"||f===null)return{};const v={};for(const[h,k]of Object.entries(f)){if(!Array.isArray(k))continue;const E=[];for(const w of k){if(typeof w!="object"||w===null)continue;const b=w;typeof b.type=="string"&&typeof b.context=="string"&&E.push({type:b.type,context:b.context})}v[h]=E}return v}function p(){r.value=null,l.value=null,s.value=null}return{isChecking:o,isDeleting:i,lastReport:r,lastResponse:l,error:s,checkDependencies:d,deleteMany:u,reset:p}}const SR="/v1/user/media/trash";function xR(a){return`/v1/user/media/${encodeURIComponent(a)}/restore`}function CR(a){return`/v1/user/media/${encodeURIComponent(a)}/purge`}function eu(a){const n=a.listEndpoint??SR,t=a.buildRestoreEndpoint??xR,o=a.buildPurgeEndpoint??CR,i=a.perPage??50,r=e.ref([]),l=e.ref(0),s=e.ref(1),d=e.ref(!1),u=e.ref(!1),c=e.ref(!1),m=e.ref(null);async function p(k=1){var E,w;m.value=null,d.value=!0;try{const b=await a.httpClient.get(n,{params:{page:k,per_page:i}});r.value=Array.isArray(b==null?void 0:b.data)?b.data:[],l.value=typeof((E=b==null?void 0:b.meta)==null?void 0:E.total)=="number"?b.meta.total:0,s.value=typeof((w=b==null?void 0:b.meta)==null?void 0:w.current_page)=="number"?b.meta.current_page:k}catch(b){throw m.value=b instanceof Error?b:new Error(String(b)),m.value}finally{d.value=!1}}async function f(k){m.value=null,u.value=!0;try{const E=await a.httpClient.post(t(k)),w={status:(E==null?void 0:E.status)??"failed",data:(E==null?void 0:E.data)??null,duplicate_uuid:(E==null?void 0:E.duplicate_uuid)??null};return typeof(E==null?void 0:E.message)=="string"&&(w.message=E.message),w.status==="restored"&&(r.value=r.value.filter(b=>b.uuid!==k),l.value=Math.max(0,l.value-1)),w}catch(E){const w=om(E);if(w&&typeof w.status=="string"){const b={status:w.status,duplicate_uuid:typeof w.duplicate_uuid=="string"?w.duplicate_uuid:null};return typeof w.message=="string"&&(b.message=w.message),b}throw m.value=E instanceof Error?E:new Error(String(E)),m.value}finally{u.value=!1}}async function v(k){m.value=null,c.value=!0;try{if(typeof a.httpClient.delete!="function")throw new Error("Media trash purge requires an HTTP client with delete support.");const E=await a.httpClient.delete(o(k)),w={status:(E==null?void 0:E.status)??"failed"};return typeof(E==null?void 0:E.message)=="string"&&(w.message=E.message),w.status==="purging"&&(r.value=r.value.filter(b=>b.uuid!==k),l.value=Math.max(0,l.value-1)),w}catch(E){const w=om(E);if(w&&typeof w.status=="string"){const b={status:w.status};return typeof w.message=="string"&&(b.message=w.message),b}throw m.value=E instanceof Error?E:new Error(String(E)),m.value}finally{c.value=!1}}function h(){r.value=[],l.value=0,s.value=1,m.value=null}return{items:r,total:l,currentPage:s,isLoading:d,isRestoring:u,isPurging:c,error:m,fetch:p,restore:f,purge:v,reset:h}}function om(a){var t;if(typeof a!="object"||a===null)return null;const n=a;return(t=n.response)!=null&&t.data&&typeof n.response.data=="object"?n.response.data:null}const VR={class:"media-management-view","data-testid":"media-management-view"},NR={key:0,class:"media-management-view__header"},TR={class:"media-management-view__title"},BR={class:"media-management-view__actions"},MR={key:0,class:"media-management-view__badge"},$R={key:1,class:"media-management-view__panel","data-testid":"panel-library"},IR={key:0,class:"media-management-view__view-mode",role:"radiogroup","aria-label":"Media library layout","data-testid":"media-management-layout-mode"},DR=["aria-checked"],FR=["aria-checked"],AR={key:1,class:"media-management-view__status","data-testid":"library-loading"},RR={key:2,class:"media-management-view__status media-management-view__status--error","data-testid":"library-error"},LR={key:3,class:"media-management-view__empty","data-testid":"library-empty"},PR={class:"media-management-view__empty-state"},UR={class:"media-management-view__empty-title","data-testid":"library-empty-title"},OR={class:"media-management-view__empty-description","data-testid":"library-empty-description"},zR={key:4,class:"media-management-view__table","data-testid":"library-table"},jR={scope:"col","data-testid":"table-header-select"},WR={class:"media-management-view__checkbox-label"},ZR=["checked",".indeterminate","aria-label"],HR={class:"media-management-view__sr-only"},GR={scope:"col","data-testid":"table-header-thumbnail"},XR={scope:"col","data-testid":"table-header-name"},KR={scope:"col","data-testid":"table-header-type"},JR={scope:"col","data-testid":"table-header-created"},qR={scope:"col","data-testid":"table-header-size"},YR={scope:"col","data-testid":"table-header-status"},QR={scope:"col","data-testid":"table-header-actions"},eL=["data-testid"],tL={class:"media-management-view__checkbox-label"},aL=["checked","aria-label","data-testid","onChange"],nL=["data-testid","onClick"],oL=["src","alt","onError"],iL=["data-testid"],rL=["title","data-testid"],lL=["data-testid"],sL=["data-testid"],dL={class:"media-management-view__item-actions"},uL=["onKeydown"],cL=["data-testid","aria-label","aria-expanded","onClick"],mL=["data-testid"],pL=["data-testid","onClick"],fL={key:5,class:"media-management-view__grid","data-testid":"library-grid"},vL=["data-testid"],hL=["data-testid","aria-pressed","onClick"],gL=["src","alt","onError"],bL=["data-testid"],yL={class:"media-management-view__selection-corner"},wL={class:"media-management-view__sr-only"},kL=["checked","data-testid","onChange"],_L={class:"media-management-view__item-meta"},EL=["title","data-testid"],SL=["data-testid"],xL=["data-testid"],CL={key:2,class:"media-management-view__item-badge","data-testid":"badge-orphaned"},VL=["data-testid"],NL={class:"media-management-view__item-actions media-management-view__item-actions--grid"},TL=["onKeydown"],BL=["data-testid","aria-label","aria-expanded","onClick"],ML=["data-testid"],$L=["data-testid","onClick"],IL={class:"media-management-view__bulk-bar","data-testid":"bulk-bar"},DL={"data-testid":"bulk-count"},FL=["disabled"],AL={key:7,class:"media-management-view__pagination","data-testid":"media-management-pagination"},RL={class:"media-management-view__pagination-count","data-testid":"media-management-pagination-count","aria-live":"polite"},LL={key:0,class:"media-management-view__page-size",role:"group","aria-label":"Items per page","data-testid":"media-management-page-size"},PL=["value","disabled"],UL=["value","data-testid"],OL=["disabled"],zL={key:2,class:"media-management-view__page-bar","aria-label":"Media library pagination","data-testid":"media-management-page-bar"},jL=["disabled"],WL=["data-testid","disabled","aria-current","aria-label","onClick"],ZL=["disabled"],HL={key:2,class:"media-management-view__panel","data-testid":"panel-trash"},GL={key:0,class:"media-management-view__status","data-testid":"trash-loading"},XL={key:1,class:"media-management-view__empty","data-testid":"trash-empty"},KL={class:"media-management-view__empty-state"},JL={class:"media-management-view__empty-title","data-testid":"trash-empty-title"},qL={class:"media-management-view__empty-description","data-testid":"trash-empty-description"},YL={key:2,class:"media-management-view__grid","data-testid":"trash-grid"},QL=["data-testid"],eP={class:"media-management-view__item-thumb"},tP=["src","alt","onError"],aP=["data-testid"],nP={class:"media-management-view__item-meta"},oP={class:"media-management-view__item-name"},iP={key:0,class:"media-management-view__item-meta-line"},rP=["data-testid","disabled","onClick"],lP=["data-testid"],sP=e.defineComponent({__name:"MediaManagementView",props:{httpClient:{},capabilities:{default:()=>({})},labels:{default:()=>({})},filters:{},initialView:{},perPage:{},pageSizeOptions:{default:()=>[]},showAllOption:{type:Boolean,default:!1},loadAllMaxItems:{},paginated:{type:Boolean,default:!1},groupVariants:{type:Boolean,default:!0},paginationWindow:{default:7},initialLayoutMode:{},layoutMode:{},confirmBulkDelete:{},confirmDestructiveAction:{},onRestoreCollision:{}},emits:["deleted","restored","restore-conflict","create-post","create-gallery","add-to-album","edit","update:layoutMode","error"],setup(a,{expose:n,emit:t}){const o=a,i=t,r=e.computed(()=>({showTrash:!0,showHeader:!0,showLayoutSwitcher:!0,allowBulkDelete:!0,allowPreview:!0,allowCreatePost:!1,allowCreateGallery:!1,allowAddToAlbum:!1,allowImageEdit:!1,allowVideoEdit:!1,showOwner:!1,showRawFileName:!1,...o.capabilities})),l=e.computed(()=>{var J,we,oe,$e,Ft,Ot,It,yt,bt,qt,_t,Xt,Sa,X,Y,pe,fe,Ne,Xe,dt,et,Ke,vt,ht,nt,Yt,At,Ha,pa,Vn,Ta,xa,Aa,fa,tn,jn,Ga,Wn,va;return{title:((J=o.labels)==null?void 0:J.title)??"My Media",libraryTab:((we=o.labels)==null?void 0:we.libraryTab)??"Library",trashTab:((oe=o.labels)==null?void 0:oe.trashTab)??"Trash",loading:(($e=o.labels)==null?void 0:$e.loading)??"Loading…",emptyLibrary:((Ft=o.labels)==null?void 0:Ft.emptyLibrary)??"No media yet — upload your first creation.",emptyLibraryTitle:((Ot=o.labels)==null?void 0:Ot.emptyLibraryTitle)??"Your media library is ready",emptyLibraryDescription:((It=o.labels)==null?void 0:It.emptyLibraryDescription)??"Images and videos you upload for creations are saved here so you can reuse them later.",emptyTrash:((yt=o.labels)==null?void 0:yt.emptyTrash)??"Trash is empty.",emptyTrashTitle:((bt=o.labels)==null?void 0:bt.emptyTrashTitle)??"No media in trash",emptyTrashDescription:((qt=o.labels)==null?void 0:qt.emptyTrashDescription)??"Deleted files appear here for 30 days before permanent removal.",orphanedBadge:((_t=o.labels)==null?void 0:_t.orphanedBadge)??"Not in use",selectedCount:((Xt=o.labels)==null?void 0:Xt.selectedCount)??(Ra=>`${Ra} selected`),deleteButton:((Sa=o.labels)==null?void 0:Sa.deleteButton)??"Delete",createPostButton:((X=o.labels)==null?void 0:X.createPostButton)??"Create Post",createGalleryButton:((Y=o.labels)==null?void 0:Y.createGalleryButton)??"Create Gallery",addToAlbumButton:((pe=o.labels)==null?void 0:pe.addToAlbumButton)??"Add to Album",previewButton:((fe=o.labels)==null?void 0:fe.previewButton)??"Preview",previewCloseButton:((Ne=o.labels)==null?void 0:Ne.previewCloseButton)??"Close",previewPreviousButton:((Xe=o.labels)==null?void 0:Xe.previewPreviousButton)??"Previous",previewNextButton:((dt=o.labels)==null?void 0:dt.previewNextButton)??"Next",previewSelectButton:((et=o.labels)==null?void 0:et.previewSelectButton)??"Select",previewDeselectButton:((Ke=o.labels)==null?void 0:Ke.previewDeselectButton)??"Deselect",editButton:((vt=o.labels)==null?void 0:vt.editButton)??"Edit",loadMoreButton:((ht=o.labels)==null?void 0:ht.loadMoreButton)??"Load more",loadingMoreButton:((nt=o.labels)==null?void 0:nt.loadingMoreButton)??"Loading more...",restoreButton:((Yt=o.labels)==null?void 0:Yt.restoreButton)??"Restore",restoreUnavailable:((At=o.labels)==null?void 0:At.restoreUnavailable)??"Restore unavailable",gridView:((Ha=o.labels)==null?void 0:Ha.gridView)??"Grid",tableView:((pa=o.labels)==null?void 0:pa.tableView)??"Table",tableSelectHeader:((Vn=o.labels)==null?void 0:Vn.tableSelectHeader)??"Select",tableThumbnailHeader:((Ta=o.labels)==null?void 0:Ta.tableThumbnailHeader)??"Preview",tableNameHeader:((xa=o.labels)==null?void 0:xa.tableNameHeader)??"Name",tableTypeHeader:((Aa=o.labels)==null?void 0:Aa.tableTypeHeader)??"Type",tableCreatedHeader:((fa=o.labels)==null?void 0:fa.tableCreatedHeader)??"Uploaded",tableSizeHeader:((tn=o.labels)==null?void 0:tn.tableSizeHeader)??"Size",tableStatusHeader:((jn=o.labels)==null?void 0:jn.tableStatusHeader)??"Status",tableActionsHeader:((Ga=o.labels)==null?void 0:Ga.tableActionsHeader)??"Actions",purgeAfter:((Wn=o.labels)==null?void 0:Wn.purgeAfter)??(Ra=>`Purges ${Ra}`),ownerLabel:((va=o.labels)==null?void 0:va.ownerLabel)??(Ra=>`User ${Ra.user_id??""}`)}}),s=e.computed(()=>l.value.title),d=e.computed(()=>l.value.libraryTab),u=e.computed(()=>l.value.trashTab),c=e.computed(()=>l.value.loading),m=e.computed(()=>l.value.emptyLibraryTitle),p=e.computed(()=>l.value.emptyLibraryDescription),f=e.computed(()=>l.value.emptyTrashTitle),v=e.computed(()=>l.value.emptyTrashDescription),h=e.computed(()=>l.value.orphanedBadge),k=e.computed(()=>l.value.deleteButton),E=e.computed(()=>l.value.restoreButton),w=e.computed(()=>l.value.restoreUnavailable),b=e.computed(()=>l.value.gridView),g=e.computed(()=>l.value.tableView);function D(J){const we=r.value.canRestore;return we?we(J):!0}const T=e.ref("library"),F=e.ref(o.layoutMode??o.initialLayoutMode??"grid"),V=e.ref(null),I=e.ref(null);function $(J){return{...J??{},...(J==null?void 0:J.kinds)!==void 0?{kinds:[...J.kinds]}:{}}}const C=e.ref(o.initialView??{scope:"library"}),M=e.ref($(o.filters)),_=e.ref(o.perPage??50),L=e.ref(!1),j=e.ref(o.paginated?1:null),B=Jd({httpClient:o.httpClient,view:C,filters:M,perPage:_,page:j}),U=e.computed(()=>o.groupVariants!==!0?B.items.value:B.items.value.filter(J=>typeof J.parent_media_uuid!="string"||J.parent_media_uuid.trim()==="")),S=e.computed(()=>B.loading.value),R=e.computed(()=>{var J;return((J=B.error.value)==null?void 0:J.message)??null}),O=e.computed(()=>r.value.allowBulkDelete!==!1||r.value.allowCreatePost===!0||r.value.allowCreateGallery===!0||r.value.allowAddToAlbum===!0),K=e.computed(()=>{const J=V.value;return J===null?null:U.value[J]??null}),se=vl(U),xe=Qd({httpClient:o.httpClient}),ue=eu({httpClient:o.httpClient});function le(J){return l.value.selectedCount(J)}function H(J){return l.value.purgeAfter(J)}function y(J){return l.value.ownerLabel(J)}const A=e.computed(()=>{const J=U.value.length;return J===0?"":B.hasMore.value?J===1?"Showing 1 item":`Showing ${J} items`:J===1?"Showing all 1 item":`Showing all ${J} items`});function W(J){F.value!==J&&(Pt(),F.value=J,i("update:layoutMode",J))}function q(J){return J.mime_type.startsWith("image/")}function de(J){return J.mime_type.startsWith("video/")}function Pe(J){return q(J)?"image":de(J)?"video":null}function ge(J){return q(J)?r.value.allowImageEdit===!0:de(J)?r.value.allowVideoEdit===!0:!1}const ke=Xf;function be(J){return typeof J.variant_count=="number"&&Number.isFinite(J.variant_count)?Math.max(0,J.variant_count):0}function Ce(J){return J===1?"1 edit":`${J} edits`}function Ee(J){return q(J)?"Image":de(J)?"Video":J.mime_type.startsWith("audio/")?"Audio":"File"}function Ae(J){if(typeof J.formatted_size=="string"&&J.formatted_size.trim()!=="")return J.formatted_size;if(!Number.isFinite(J.size)||J.size<=0)return"";const we=["B","KB","MB","GB"];let oe=J.size,$e=0;for(;oe>=1024&&$e<we.length-1;)oe/=1024,$e+=1;return`${oe>=10||$e===0?Math.round(oe):oe.toFixed(1)} ${we[$e]}`}function Ue(J){const we=new Date(J.created_at);return Number.isNaN(we.getTime())?J.created_at:new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"}).format(we)}function ot(J){return J.deletion_status==="active"||J.deletion_status===void 0||J.deletion_status===null?"Ready":J.deletion_status.replace(/_/g," ").replace(/\b\w/g,we=>we.toUpperCase())}function it(J){if(typeof J.thumbnail_url=="string"&&J.thumbnail_url.length>0)return J.thumbnail_url;const we=typeof J.mime_type=="string"&&J.mime_type.startsWith("image/"),oe=typeof J.mime_type=="string"&&J.mime_type.startsWith("video/");return we?J.original_url||null:oe&&typeof J.preview_url=="string"&&J.preview_url.length>0?J.preview_url:null}function Lt(J){return typeof J.mime_type=="string"&&J.mime_type.startsWith("video/")?`Video — ${J.file_name}`:J.file_name}const gt=e.ref(new Set);function St(J){if(gt.value.has(J.uuid))return;const we=new Set(gt.value);we.add(J.uuid),gt.value=we}function ct(J){if(r.value.allowPreview===!1)return;const we=U.value.findIndex(oe=>oe.uuid===J.uuid);V.value=we>=0?we:null}function mt(){V.value=null}function Ct(){V.value===null||V.value<=0||(V.value-=1)}function Se(){V.value===null||V.value>=U.value.length-1||(V.value+=1)}async function Ve(){try{await B.loadMore()}catch(J){i("error",J instanceof Error?J:new Error(String(J)))}}const Re=e.computed(()=>{const J=B.totalPages.value??0,we=B.currentPage.value??1;if(J<=1)return[];const oe=Math.max(3,o.paginationWindow);if(J<=oe)return Array.from({length:J},(bt,qt)=>({kind:"page",key:`p-${qt+1}`,value:qt+1}));const $e=oe-2,Ft=Math.floor($e/2);let Ot=Math.max(2,we-Ft),It=Math.min(J-1,Ot+$e-1);It===J-1&&(Ot=Math.max(2,It-$e+1));const yt=[{kind:"page",key:"p-1",value:1}];Ot>2&&yt.push({kind:"ellipsis",key:"el-left"});for(let bt=Ot;bt<=It;bt++)yt.push({kind:"page",key:`p-${bt}`,value:bt});return It<J-1&&yt.push({kind:"ellipsis",key:"el-right"}),yt.push({kind:"page",key:`p-${J}`,value:J}),yt});async function at(J){if(!(J===B.currentPage.value||B.loading.value)){j.value=J;try{await B.goToPage(J)}catch(we){i("error",we instanceof Error?we:new Error(String(we)))}}}async function He(J){const we=B.currentPage.value??1,oe=B.totalPages.value??1,$e=Math.min(Math.max(1,we+J),oe);$e!==we&&await at($e)}const Je=e.computed(()=>{const J=o.pageSizeOptions.map(we=>({value:String(we),label:String(we)}));return J.length===0&&!o.showAllOption?[]:(o.showAllOption&&J.push({value:"all",label:"All"}),J)}),kt=e.computed(()=>L.value?"all":String(_.value));async function ft(J){const we=J.target;if(!(we instanceof HTMLSelectElement))return;const oe=we.value;try{if(oe==="all"){const $e=o.pageSizeOptions,Ft=$e.length>0?Math.max(...$e):_.value;j.value=null,_.value=Ft,L.value=!1,await B.refresh();const Ot=o.loadAllMaxItems!==void 0?{maxItems:o.loadAllMaxItems}:void 0;await B.loadAll(Ot),L.value=!B.hasMore.value}else{const $e=Number.parseInt(oe,10);Number.isFinite($e)&&$e>0&&(_.value=$e),L.value=!1,o.paginated&&(j.value=1),await B.refresh()}}catch($e){i("error",$e instanceof Error?$e:new Error(String($e)))}}function jt(J,we){i("create-post",{mediaIds:J.map(oe=>oe.uuid),items:J,source:we})}function Le(J,we){i("create-gallery",{mediaIds:J.map(oe=>oe.uuid),items:J,source:we})}function Wt(J,we){i("add-to-album",{mediaIds:J.map(oe=>oe.uuid),items:J,source:we})}function Zt(J){const we=Pe(J);we===null||!ge(J)||i("edit",{media:J,kind:we})}function Mt(J){I.value=I.value===J?null:J}function Pt(){I.value=null}function Ht(J){J.run(),Pt()}function ra(J){const we=[];return r.value.allowPreview!==!1&&we.push({id:"preview",label:l.value.previewButton,testId:`btn-preview-${J.uuid}`,run:()=>ct(J)}),ge(J)&&we.push({id:"edit",label:l.value.editButton,testId:`btn-edit-${J.uuid}`,run:()=>Zt(J)}),r.value.allowCreatePost===!0&&we.push({id:"create-post",label:l.value.createPostButton,testId:`btn-create-post-${J.uuid}`,run:()=>jt([J],"item")}),r.value.allowCreateGallery===!0&&we.push({id:"create-gallery",label:l.value.createGalleryButton,testId:`btn-create-gallery-${J.uuid}`,run:()=>Le([J],"item")}),r.value.allowAddToAlbum===!0&&we.push({id:"add-to-album",label:l.value.addToAlbumButton,testId:`btn-add-to-album-${J.uuid}`,run:()=>Wt([J],"item")}),we}async function ae(J){const we=J.results.filter(oe=>oe.status==="trashed"||oe.status==="already_trashed").map(oe=>oe.uuid);if(we.length!==0){for(const oe of we)se.deselect(oe);i("deleted",we),await B.refresh(),r.value.showTrash!==!1&&await ue.fetch(ue.currentPage.value).catch(()=>{})}}function he(J){const we=new Set;for(const Ft of J)for(const Ot of Ft.blocks)Ot.context&&we.add(Ot.context);const oe=Array.from(we),$e=oe.length>0?`This media is still attached to: ${oe.map(Ft=>`"${Ft}"`).join(", ")}. Remove from those and delete?`:"This media is still attached to other items. Remove from those and delete?";return window.confirm($e)}function me(J){return Object.entries(J).map(([we,oe])=>({uuid:we,blocks:oe}))}async function ce(){const J=se.selectedItems.value;if(J.length===0)return;const we=r.value.canDelete?J.filter($e=>r.value.canDelete($e)):J;if(we.length===0||o.confirmBulkDelete&&!await o.confirmBulkDelete(we))return;const oe=we.map($e=>$e.uuid);try{const $e=await xe.deleteMany(oe);await ae($e)}catch($e){if($e instanceof Wl){const Ft=me($e.softBlocks);if(!(o.confirmDestructiveAction?await o.confirmDestructiveAction({items:we,softBlocks:Ft}):he(Ft)))return;try{const It=await xe.deleteMany(oe,{confirmed:!0});await ae(It)}catch(It){i("error",It instanceof Error?It:new Error(String(It)))}return}i("error",$e instanceof Error?$e:new Error(String($e)))}}async function Te(J){var oe;const we=ue.items.value.find($e=>$e.uuid===J);if(!(we&&!D(we)))try{const $e=await ue.restore(J);if($e.status==="restored"){i("restored",J),await B.refresh().catch(()=>{});return}if($e.status==="duplicate_conflict"){i("restore-conflict",{uuid:J,duplicateUuid:$e.duplicate_uuid??null}),(oe=o.onRestoreCollision)==null||oe.call(o,J,$e.duplicate_uuid??null);return}}catch($e){i("error",$e instanceof Error?$e:new Error(String($e)))}}async function We(){T.value="trash",ue.items.value.length===0&&!ue.isLoading.value&&await ue.fetch().catch(J=>{i("error",J instanceof Error?J:new Error(String(J)))})}function rt(J){if(J==="trash"){We();return}T.value=J}const Vt=e.computed(()=>({activeTab:T.value,setActiveTab:rt,trashCount:ue.total.value,showTrash:r.value.showTrash!==!1,labels:{libraryTab:l.value.libraryTab,trashTab:l.value.trashTab}})),Ut=e.computed(()=>({selectedCount:se.selectedCount.value,selectedItemIds:Array.from(se.selectedIds.value),selectedItems:se.selectedItems.value,crossPageCount:se.crossPageCount.value,isDeleting:xe.isDeleting.value,onBulkDelete:ce,...r.value.allowCreatePost===!0?{onCreatePost:()=>jt(se.selectedItems.value,"bulk")}:{},...r.value.allowCreateGallery===!0?{onCreateGallery:()=>Le(se.selectedItems.value,"bulk")}:{},...r.value.allowAddToAlbum===!0?{onAddToAlbum:()=>Wt(se.selectedItems.value,"bulk")}:{},clearSelection:se.clear,labels:{deleteButton:l.value.deleteButton,...r.value.allowCreatePost===!0?{createPostButton:l.value.createPostButton}:{},...r.value.allowCreateGallery===!0?{createGalleryButton:l.value.createGalleryButton}:{},...r.value.allowAddToAlbum===!0?{addToAlbumButton:l.value.addToAlbumButton}:{},selectedCount:l.value.selectedCount}})),$t=e.computed(()=>({filters:M.value,view:C.value,total:B.total.value,shown:U.value.length,loading:B.loading.value}));function lt(J){return{media:J,selected:se.isSelected(J.uuid),canEdit:ge(J),onPreview:()=>ct(J),...ge(J)?{onEdit:()=>Zt(J)}:{},...r.value.allowCreatePost===!0?{onCreatePost:()=>jt([J],"item")}:{},...r.value.allowCreateGallery===!0?{onCreateGallery:()=>Le([J],"item")}:{},...r.value.allowAddToAlbum===!0?{onAddToAlbum:()=>Wt([J],"item")}:{},labels:{previewButton:l.value.previewButton,editButton:l.value.editButton,createPostButton:l.value.createPostButton,createGalleryButton:l.value.createGalleryButton,addToAlbumButton:l.value.addToAlbumButton}}}function Jt(J){return{media:J,canRestore:D(J),isRestoring:ue.isRestoring.value,onRestore:()=>Te(J.uuid),labels:{restoreButton:l.value.restoreButton,restoreUnavailable:l.value.restoreUnavailable}}}return e.watch(T,async J=>{J==="library"&&U.value.length===0&&!S.value&&await B.refresh().catch(()=>{})}),e.watch(()=>o.layoutMode,J=>{J!==void 0&&(F.value=J)}),e.watch(()=>o.filters,async J=>{M.value=$(J),se.clear(),mt(),await B.refresh().catch(we=>{i("error",we instanceof Error?we:new Error(String(we)))})},{deep:!0}),e.onMounted(async()=>{await B.refresh().catch(J=>{i("error",J instanceof Error?J:new Error(String(J)))}),r.value.showTrash!==!1&&ue.fetch().catch(()=>{})}),n({refresh:()=>B.refresh(),refreshTrash:()=>ue.fetch(),selection:se,deletion:xe,trash:ue}),(J,we)=>(e.openBlock(),e.createElementBlock("div",VR,[r.value.showHeader!==!1?(e.openBlock(),e.createElementBlock("header",NR,[e.createElementVNode("h2",TR,e.toDisplayString(s.value),1),e.createElementVNode("div",BR,[e.renderSlot(J.$slots,"tabs",e.normalizeProps(e.guardReactiveProps(Vt.value)),()=>[r.value.showTrash!==!1?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["media-management-view__tab-button",{"is-active":T.value==="library"}]),"data-testid":"tab-library",onClick:we[0]||(we[0]=oe=>T.value="library")},e.toDisplayString(d.value),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["media-management-view__tab-button",{"is-active":T.value==="trash"}]),"data-testid":"tab-trash",onClick:We},[e.createTextVNode(e.toDisplayString(u.value)+" ",1),e.unref(ue).total.value>0?(e.openBlock(),e.createElementBlock("span",MR,e.toDisplayString(e.unref(ue).total.value),1)):e.createCommentVNode("",!0)],2)],64)):e.createCommentVNode("",!0)],!0)])])):e.createCommentVNode("",!0),T.value==="library"?(e.openBlock(),e.createElementBlock("section",$R,[r.value.showLayoutSwitcher!==!1?(e.openBlock(),e.createElementBlock("div",IR,[e.createElementVNode("button",{type:"button",role:"radio",class:e.normalizeClass(["media-management-view__view-mode-button",{"is-active":F.value==="grid"}]),"aria-checked":F.value==="grid"?"true":"false","data-testid":"view-mode-grid",onClick:we[1]||(we[1]=oe=>W("grid"))},e.toDisplayString(b.value),11,DR),e.createElementVNode("button",{type:"button",role:"radio",class:e.normalizeClass(["media-management-view__view-mode-button",{"is-active":F.value==="table"}]),"aria-checked":F.value==="table"?"true":"false","data-testid":"view-mode-table",onClick:we[2]||(we[2]=oe=>W("table"))},e.toDisplayString(g.value),11,FR)])):e.createCommentVNode("",!0),e.renderSlot(J.$slots,"filter-bar",e.normalizeProps(e.guardReactiveProps($t.value)),void 0,!0),S.value?(e.openBlock(),e.createElementBlock("div",AR,e.toDisplayString(c.value),1)):R.value?(e.openBlock(),e.createElementBlock("div",RR,e.toDisplayString(R.value),1)):U.value.length===0?(e.openBlock(),e.createElementBlock("div",LR,[e.renderSlot(J.$slots,"empty-library",{},()=>[e.createElementVNode("div",PR,[e.createElementVNode("p",UR,e.toDisplayString(m.value),1),e.createElementVNode("p",OR,e.toDisplayString(p.value),1)])],!0)])):F.value==="table"?(e.openBlock(),e.createElementBlock("table",zR,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",jR,[e.createElementVNode("label",WR,[e.createElementVNode("input",{class:"media-management-view__checkbox",type:"checkbox",checked:e.unref(se).isAllSelected.value,".indeterminate":e.unref(se).isSomeSelected.value&&!e.unref(se).isAllSelected.value,"aria-label":l.value.tableSelectHeader,"data-testid":"checkbox-select-all",onChange:we[3]||(we[3]=(...oe)=>e.unref(se).toggleAll&&e.unref(se).toggleAll(...oe))},null,40,ZR),e.createElementVNode("span",HR,e.toDisplayString(l.value.tableSelectHeader),1)])]),e.createElementVNode("th",GR,e.toDisplayString(l.value.tableThumbnailHeader),1),e.createElementVNode("th",XR,e.toDisplayString(l.value.tableNameHeader),1),e.createElementVNode("th",KR,e.toDisplayString(l.value.tableTypeHeader),1),e.createElementVNode("th",JR,e.toDisplayString(l.value.tableCreatedHeader),1),e.createElementVNode("th",qR,e.toDisplayString(l.value.tableSizeHeader),1),e.createElementVNode("th",YR,e.toDisplayString(l.value.tableStatusHeader),1),e.createElementVNode("th",QR,e.toDisplayString(l.value.tableActionsHeader),1)])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(U.value,oe=>(e.openBlock(),e.createElementBlock("tr",{key:oe.uuid,class:e.normalizeClass({"is-selected":e.unref(se).isSelected(oe.uuid),"has-open-actions":I.value===oe.uuid}),"data-testid":`media-row-${oe.uuid}`},[e.createElementVNode("td",null,[e.createElementVNode("label",tL,[e.createElementVNode("input",{class:"media-management-view__checkbox",type:"checkbox",checked:e.unref(se).isSelected(oe.uuid),"aria-label":`${l.value.tableSelectHeader} ${e.unref(ke)(oe)}`,"data-testid":`checkbox-select-${oe.uuid}`,onChange:$e=>e.unref(se).toggle(oe.uuid)},null,40,aL)])]),e.createElementVNode("td",null,[e.createElementVNode("button",{type:"button",class:"media-management-view__table-thumb","data-testid":`btn-preview-thumb-${oe.uuid}`,onClick:$e=>ct(oe)},[it(oe)&&!gt.value.has(oe.uuid)?(e.openBlock(),e.createElementBlock("img",{key:0,src:it(oe)??"",alt:oe.alt_text||oe.file_name,loading:"lazy",onError:$e=>St(oe)},null,40,oL)):(e.openBlock(),e.createElementBlock("span",{key:1,class:"media-management-view__item-placeholder","data-testid":`placeholder-${oe.uuid}`},e.toDisplayString(Lt(oe)),9,iL))],8,nL)]),e.createElementVNode("td",null,[e.createElementVNode("span",{class:"media-management-view__display-name",title:oe.file_name,"data-testid":`media-display-name-${oe.uuid}`},e.toDisplayString(e.unref(ke)(oe)),9,rL),be(oe)>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:"media-management-view__variant-badge","data-testid":`media-variant-badge-${oe.uuid}`},e.toDisplayString(Ce(be(oe))),9,lL)):e.createCommentVNode("",!0),r.value.showRawFileName===!0?(e.openBlock(),e.createElementBlock("span",{key:1,class:"media-management-view__raw-filename","data-testid":`media-raw-filename-${oe.uuid}`},e.toDisplayString(oe.file_name),9,sL)):e.createCommentVNode("",!0)]),e.createElementVNode("td",null,e.toDisplayString(Ee(oe)),1),e.createElementVNode("td",null,e.toDisplayString(Ue(oe)),1),e.createElementVNode("td",null,e.toDisplayString(Ae(oe)),1),e.createElementVNode("td",null,e.toDisplayString(ot(oe)),1),e.createElementVNode("td",null,[e.renderSlot(J.$slots,"item-actions",e.mergeProps({ref_for:!0},lt(oe)),()=>[e.createElementVNode("div",dL,[e.createElementVNode("div",{class:"media-management-view__action-menu",onKeydown:e.withKeys(e.withModifiers(Pt,["stop"]),["escape"])},[e.createElementVNode("button",{type:"button",class:"media-management-view__action-menu-trigger","data-testid":`btn-actions-menu-${oe.uuid}`,"aria-label":`Actions for ${e.unref(ke)(oe)}`,"aria-haspopup":"menu","aria-expanded":I.value===oe.uuid?"true":"false",onClick:$e=>Mt(oe.uuid)}," ... ",8,cL),I.value===oe.uuid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"media-management-view__action-menu-panel",role:"menu","data-testid":`media-item-actions-menu-${oe.uuid}`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ra(oe),$e=>(e.openBlock(),e.createElementBlock("button",{key:$e.id,type:"button",class:"media-management-view__action-menu-item",role:"menuitem","data-testid":$e.testId,onClick:Ft=>Ht($e)},e.toDisplayString($e.label),9,pL))),128))],8,mL)):e.createCommentVNode("",!0)],40,uL)])],!0)])],10,eL))),128))])])):(e.openBlock(),e.createElementBlock("ul",fL,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(U.value,oe=>(e.openBlock(),e.createElementBlock("li",{key:oe.uuid,class:e.normalizeClass(["media-management-view__item",{"is-selected":e.unref(se).isSelected(oe.uuid),"has-open-actions":I.value===oe.uuid}]),"data-testid":`media-item-${oe.uuid}`},[e.createElementVNode("button",{type:"button",class:"media-management-view__item-thumb","data-testid":`btn-select-${oe.uuid}`,"aria-pressed":e.unref(se).isSelected(oe.uuid),onClick:$e=>e.unref(se).toggle(oe.uuid)},[it(oe)&&!gt.value.has(oe.uuid)?(e.openBlock(),e.createElementBlock("img",{key:0,src:it(oe)??"",alt:oe.alt_text||oe.file_name,loading:"lazy",onError:$e=>St(oe)},null,40,gL)):(e.openBlock(),e.createElementBlock("span",{key:1,class:"media-management-view__item-placeholder","data-testid":`placeholder-${oe.uuid}`},e.toDisplayString(Lt(oe)),9,bL))],8,hL),e.createElementVNode("label",yL,[e.createElementVNode("span",wL,e.toDisplayString(l.value.tableSelectHeader)+" "+e.toDisplayString(e.unref(ke)(oe)),1),e.createElementVNode("input",{class:"media-management-view__checkbox media-management-view__checkbox--overlay",type:"checkbox",checked:e.unref(se).isSelected(oe.uuid),"data-testid":`checkbox-select-${oe.uuid}`,onClick:we[4]||(we[4]=e.withModifiers(()=>{},["stop"])),onChange:$e=>e.unref(se).toggle(oe.uuid)},null,40,kL)]),e.createElementVNode("div",_L,[e.createElementVNode("span",{class:"media-management-view__item-name",title:oe.file_name,"data-testid":`media-display-name-${oe.uuid}`},e.toDisplayString(e.unref(ke)(oe)),9,EL),r.value.showRawFileName===!0?(e.openBlock(),e.createElementBlock("span",{key:0,class:"media-management-view__raw-filename","data-testid":`media-raw-filename-${oe.uuid}`},e.toDisplayString(oe.file_name),9,SL)):e.createCommentVNode("",!0),r.value.showOwner&&oe.user_id?(e.openBlock(),e.createElementBlock("span",{key:1,class:"media-management-view__item-owner","data-testid":`owner-${oe.uuid}`},e.toDisplayString(y(oe)),9,xL)):e.createCommentVNode("",!0),oe.is_orphaned?(e.openBlock(),e.createElementBlock("span",CL,e.toDisplayString(h.value),1)):e.createCommentVNode("",!0),be(oe)>0?(e.openBlock(),e.createElementBlock("span",{key:3,class:"media-management-view__variant-badge","data-testid":`media-variant-badge-${oe.uuid}`},e.toDisplayString(Ce(be(oe))),9,VL)):e.createCommentVNode("",!0)]),e.renderSlot(J.$slots,"item-actions",e.mergeProps({ref_for:!0},lt(oe)),()=>[e.createElementVNode("div",NL,[e.createElementVNode("div",{class:"media-management-view__action-menu",onKeydown:e.withKeys(e.withModifiers(Pt,["stop"]),["escape"])},[e.createElementVNode("button",{type:"button",class:"media-management-view__action-menu-trigger","data-testid":`btn-actions-menu-${oe.uuid}`,"aria-label":`Actions for ${e.unref(ke)(oe)}`,"aria-haspopup":"menu","aria-expanded":I.value===oe.uuid?"true":"false",onClick:$e=>Mt(oe.uuid)}," ... ",8,BL),I.value===oe.uuid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"media-management-view__action-menu-panel",role:"menu","data-testid":`media-item-actions-menu-${oe.uuid}`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ra(oe),$e=>(e.openBlock(),e.createElementBlock("button",{key:$e.id,type:"button",class:"media-management-view__action-menu-item",role:"menuitem","data-testid":$e.testId,onClick:Ft=>Ht($e)},e.toDisplayString($e.label),9,$L))),128))],8,ML)):e.createCommentVNode("",!0)],40,TL)])],!0)],10,vL))),128))])),e.unref(se).selectedCount.value>0&&O.value?e.renderSlot(J.$slots,"bulk-actions",e.normalizeProps(e.mergeProps({key:6},Ut.value)),()=>[e.createElementVNode("footer",IL,[e.createElementVNode("span",DL,e.toDisplayString(le(e.unref(se).selectedCount.value)),1),r.value.allowCreatePost===!0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-management-view__btn-action","data-testid":"btn-bulk-create-post",onClick:we[5]||(we[5]=oe=>jt(e.unref(se).selectedItems.value,"bulk"))},e.toDisplayString(l.value.createPostButton),1)):e.createCommentVNode("",!0),r.value.allowCreateGallery===!0?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"media-management-view__btn-action","data-testid":"btn-bulk-create-gallery",onClick:we[6]||(we[6]=oe=>Le(e.unref(se).selectedItems.value,"bulk"))},e.toDisplayString(l.value.createGalleryButton),1)):e.createCommentVNode("",!0),r.value.allowAddToAlbum===!0?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"media-management-view__btn-action","data-testid":"btn-bulk-add-to-album",onClick:we[7]||(we[7]=oe=>Wt(e.unref(se).selectedItems.value,"bulk"))},e.toDisplayString(l.value.addToAlbumButton),1)):e.createCommentVNode("",!0),r.value.allowBulkDelete!==!1?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"media-management-view__btn-delete","data-testid":"btn-bulk-delete",disabled:e.unref(xe).isDeleting.value,onClick:ce},e.toDisplayString(k.value),9,FL)):e.createCommentVNode("",!0)])],!0):e.createCommentVNode("",!0),U.value.length>0?(e.openBlock(),e.createElementBlock("footer",AL,[e.createElementVNode("span",RL,e.toDisplayString(A.value),1),Je.value.length>0?(e.openBlock(),e.createElementBlock("div",LL,[we[11]||(we[11]=e.createElementVNode("label",{class:"media-management-view__page-size-label",for:"media-management-page-size-select"},"Show:",-1)),e.createElementVNode("select",{id:"media-management-page-size-select",class:"media-management-view__page-size-select","data-testid":"select-media-management-page-size",value:kt.value,disabled:e.unref(B).loading.value||e.unref(B).loadingMore.value,onChange:ft},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Je.value,oe=>(e.openBlock(),e.createElementBlock("option",{key:oe.value,value:oe.value,"data-testid":`option-page-size-${oe.value}`},e.toDisplayString(oe.label),9,UL))),128))],40,PL)])):e.createCommentVNode("",!0),!J.paginated&&e.unref(B).hasMore.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"media-management-view__load-more","data-testid":"btn-media-management-load-more",disabled:e.unref(B).loadingMore.value,onClick:Ve},e.toDisplayString(e.unref(B).loadingMore.value?l.value.loadingMoreButton:l.value.loadMoreButton),9,OL)):e.createCommentVNode("",!0),J.paginated&&(e.unref(B).totalPages.value??0)>1?(e.openBlock(),e.createElementBlock("nav",zL,[e.createElementVNode("button",{type:"button",class:"media-management-view__page-bar-step","data-testid":"btn-media-management-page-prev",disabled:(e.unref(B).currentPage.value??1)<=1||e.unref(B).loading.value,"aria-label":"Previous page",onClick:we[8]||(we[8]=oe=>He(-1))}," ‹ ",8,jL),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Re.value,oe=>(e.openBlock(),e.createElementBlock("button",{key:oe.key,type:"button",class:e.normalizeClass(["media-management-view__page-bar-page",{"is-current":oe.kind==="page"&&oe.value===e.unref(B).currentPage.value}]),"data-testid":oe.kind==="page"?`btn-media-management-page-${oe.value}`:"media-management-page-ellipsis",disabled:oe.kind!=="page"||e.unref(B).loading.value,"aria-current":oe.kind==="page"&&oe.value===e.unref(B).currentPage.value?"page":void 0,"aria-label":oe.kind==="page"?`Page ${oe.value}`:void 0,onClick:$e=>oe.kind==="page"?at(oe.value):void 0},e.toDisplayString(oe.kind==="page"?oe.value:"…"),11,WL))),128)),e.createElementVNode("button",{type:"button",class:"media-management-view__page-bar-step","data-testid":"btn-media-management-page-next",disabled:(e.unref(B).currentPage.value??1)>=(e.unref(B).totalPages.value??1)||e.unref(B).loading.value,"aria-label":"Next page",onClick:we[9]||(we[9]=oe=>He(1))}," › ",8,ZL)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):T.value==="trash"?(e.openBlock(),e.createElementBlock("section",HL,[e.unref(ue).isLoading.value?(e.openBlock(),e.createElementBlock("div",GL,e.toDisplayString(c.value),1)):e.unref(ue).items.value.length===0?(e.openBlock(),e.createElementBlock("div",XL,[e.renderSlot(J.$slots,"empty-trash",{},()=>[e.createElementVNode("div",KL,[e.createElementVNode("p",JL,e.toDisplayString(f.value),1),e.createElementVNode("p",qL,e.toDisplayString(v.value),1)])],!0)])):(e.openBlock(),e.createElementBlock("ul",YL,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ue).items.value,oe=>(e.openBlock(),e.createElementBlock("li",{key:oe.uuid,class:"media-management-view__item is-trashed","data-testid":`trash-item-${oe.uuid}`},[e.createElementVNode("div",eP,[it(oe)&&!gt.value.has(oe.uuid)?(e.openBlock(),e.createElementBlock("img",{key:0,src:it(oe)??"",alt:oe.alt_text||oe.file_name,loading:"lazy",onError:$e=>St(oe)},null,40,tP)):(e.openBlock(),e.createElementBlock("span",{key:1,class:"media-management-view__item-placeholder","data-testid":`placeholder-trash-${oe.uuid}`},e.toDisplayString(Lt(oe)),9,aP))]),e.createElementVNode("div",nP,[e.createElementVNode("span",oP,e.toDisplayString(oe.file_name),1),oe.purge_after?(e.openBlock(),e.createElementBlock("span",iP,e.toDisplayString(H(oe.purge_after)),1)):e.createCommentVNode("",!0)]),e.renderSlot(J.$slots,"trash-action",e.mergeProps({ref_for:!0},Jt(oe)),()=>[D(oe)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-management-view__btn-restore","data-testid":`btn-restore-${oe.uuid}`,disabled:e.unref(ue).isRestoring.value,onClick:$e=>Te(oe.uuid)},e.toDisplayString(E.value),9,rP)):(e.openBlock(),e.createElementBlock("span",{key:1,class:"media-management-view__btn-restore is-unavailable","data-testid":`btn-restore-${oe.uuid}-unavailable`,"aria-disabled":!0},e.toDisplayString(w.value),9,lP))],!0)],8,QL))),128))]))])):e.createCommentVNode("",!0),r.value.allowPreview!==!1?(e.openBlock(),e.createBlock(Hd,{key:3,open:K.value!==null,media:K.value,"can-go-previous":V.value!==null&&V.value>0,"can-go-next":V.value!==null&&V.value<U.value.length-1,selected:K.value!==null&&e.unref(se).isSelected(K.value.uuid),"close-label":l.value.previewCloseButton,"previous-label":l.value.previewPreviousButton,"next-label":l.value.previewNextButton,"select-label":l.value.previewSelectButton,"deselect-label":l.value.previewDeselectButton,onClose:mt,onPrevious:Ct,onNext:Se,onToggleSelect:we[10]||(we[10]=oe=>e.unref(se).toggle(oe.uuid))},null,8,["open","media","can-go-previous","can-go-next","selected","close-label","previous-label","next-label","select-label","deselect-label"])):e.createCommentVNode("",!0)]))}}),Yf=Ie(sP,[["__scopeId","data-v-8c4b53f6"]]),dP={class:"media-library-workspace","data-testid":"media-library-workspace"},uP=e.defineComponent({__name:"MediaLibraryWorkspace",props:{httpClient:{},filters:{default:()=>({sort:"newest"})},initialView:{default:()=>({scope:"library"})},capabilities:{default:()=>({})},labels:{default:()=>({})},groupVariants:{type:Boolean,default:!0}},emits:["filters-change","create-post","create-gallery","add-to-album","edit","deleted","restored","restore-conflict","error"],setup(a,{emit:n}){const t=a,o=n;function i(s){return{...s,...s.kinds!==void 0?{kinds:[...s.kinds]}:{},...s.selected_uuids!==void 0?{selected_uuids:[...s.selected_uuids]}:{}}}const r=e.ref(i(t.filters));e.watch(()=>t.filters,s=>{r.value=i(s)},{deep:!0});function l(s){r.value=i(s),o("filters-change",r.value)}return(s,d)=>(e.openBlock(),e.createElementBlock("section",dP,[e.createVNode(Yf,{"http-client":t.httpClient,filters:r.value,"initial-view":t.initialView,"group-variants":t.groupVariants,capabilities:{showHeader:!1,showTrash:!1,allowAddToAlbum:t.capabilities.allowAddToAlbum,allowBulkDelete:t.capabilities.allowBulkDelete,allowCreateGallery:t.capabilities.allowCreateGallery,allowCreatePost:t.capabilities.allowCreatePost,showRawFileName:t.capabilities.showRawFileName,allowPreview:t.capabilities.allowPreview,allowImageEdit:t.capabilities.allowImageEdit,allowVideoEdit:t.capabilities.allowVideoEdit},labels:{title:t.labels.title??"Media"},onCreatePost:d[0]||(d[0]=u=>o("create-post",u)),onCreateGallery:d[1]||(d[1]=u=>o("create-gallery",u)),onAddToAlbum:d[2]||(d[2]=u=>o("add-to-album",u)),onEdit:d[3]||(d[3]=u=>o("edit",u)),onDeleted:d[4]||(d[4]=u=>o("deleted",u)),onRestored:d[5]||(d[5]=u=>o("restored",u)),onRestoreConflict:d[6]||(d[6]=u=>o("restore-conflict",u)),onError:d[7]||(d[7]=u=>o("error",u))},{"filter-bar":e.withCtx(()=>[e.createVNode(qf,{filters:r.value,"scope-label":t.labels.scopeLabel??"","onUpdate:filters":l},null,8,["filters","scope-label"])]),"bulk-actions":e.withCtx(u=>[e.renderSlot(s.$slots,"bulk-actions",e.normalizeProps(e.guardReactiveProps(u)),void 0,!0)]),"item-actions":e.withCtx(u=>[e.renderSlot(s.$slots,"item-actions",e.normalizeProps(e.guardReactiveProps(u)),void 0,!0)]),"empty-library":e.withCtx(()=>[e.renderSlot(s.$slots,"empty-library",{},void 0,!0)]),_:3},8,["http-client","filters","initial-view","group-variants","capabilities","labels"])]))}}),Qf=Ie(uP,[["__scopeId","data-v-54a820dd"]]),cP=["data-testid"],mP={class:"media-empty-state__illustration","aria-hidden":"true"},pP={class:"media-empty-state__copy"},fP={class:"media-empty-state__title"},vP={key:0,class:"media-empty-state__description"},hP={class:"media-empty-state__actions"},gP=e.defineComponent({__name:"MediaEmptyState",props:{title:{},description:{default:""},actionLabel:{default:""},testId:{default:"media-empty-state"}},emits:["action"],setup(a,{emit:n}){const t=a,o=n;return(i,r)=>(e.openBlock(),e.createElementBlock("section",{class:"media-empty-state","data-testid":t.testId},[e.createElementVNode("div",mP,[e.renderSlot(i.$slots,"illustration",{},()=>[r[1]||(r[1]=e.createElementVNode("span",{class:"media-empty-state__icon"},"□",-1))],!0)]),e.createElementVNode("div",pP,[e.createElementVNode("h3",fP,e.toDisplayString(t.title),1),t.description!==""?(e.openBlock(),e.createElementBlock("p",vP,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",hP,[e.renderSlot(i.$slots,"actions",{},()=>[t.actionLabel!==""?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-empty-state__action","data-testid":"btn-media-empty-state-action",onClick:r[0]||(r[0]=l=>o("action"))},e.toDisplayString(t.actionLabel),1)):e.createCommentVNode("",!0)],!0)])],8,cP))}}),ev=Ie(gP,[["__scopeId","data-v-7b8e2619"]]),bP=["aria-busy"],yP={class:"media-trash-workspace__header"},wP=["disabled"],kP={key:0,class:"media-trash-workspace__status media-trash-workspace__status--error","data-testid":"media-trash-error",role:"alert"},_P={key:1,class:"media-trash-workspace__status","data-testid":"media-trash-status","aria-live":"polite"},EP={key:2,class:"media-trash-workspace__status"},SP={key:4,class:"media-trash-workspace__grid"},xP=["data-testid"],CP={class:"media-trash-workspace__select"},VP=["checked","data-testid","onChange"],NP=["src","alt"],TP={key:1,class:"media-trash-workspace__purge"},BP=e.defineComponent({__name:"MediaTrashWorkspace",props:{httpClient:{},labels:{default:()=>({})}},emits:["restored","purged","error"],setup(a,{emit:n}){const t=a,o=n,i=e.computed(()=>{var k,E,w,b,g,D,T,F,V,I,$;return{title:((k=t.labels)==null?void 0:k.title)??"Trash",emptyTitle:((E=t.labels)==null?void 0:E.emptyTitle)??"Your trash is empty",emptyDescription:((w=t.labels)==null?void 0:w.emptyDescription)??"Deleted files appear here before permanent removal.",restore:((b=t.labels)==null?void 0:b.restore)??"Restore",purge:((g=t.labels)==null?void 0:g.purge)??"Delete forever",emptyTrash:((D=t.labels)==null?void 0:D.emptyTrash)??"Empty trash",confirmPurgeSelected:((T=t.labels)==null?void 0:T.confirmPurgeSelected)??(C=>`Delete ${C} ${C===1?"item":"items"} forever? This cannot be undone.`),confirmEmptyTrash:((F=t.labels)==null?void 0:F.confirmEmptyTrash)??(C=>`Empty trash and permanently delete ${C} ${C===1?"item":"items"}? This cannot be undone.`),purgeSuccess:((V=t.labels)==null?void 0:V.purgeSuccess)??(C=>`${C} ${C===1?"item":"items"} deleted forever.`),purgeError:((I=t.labels)==null?void 0:I.purgeError)??"Could not delete one or more items forever. Try again.",restoreError:(($=t.labels)==null?void 0:$.restoreError)??"Could not restore one or more items. Try again."}}),r=eu({httpClient:t.httpClient}),l=vl(r.items),s=e.ref(""),d=e.ref(""),u=e.computed(()=>r.isPurging.value||r.isRestoring.value);function c(k){return k.thumbnail_url??k.preview_url??k.original_url??null}async function m(){const k=Array.from(l.selectedIds.value),E=[];s.value="",d.value="";try{for(const w of k){const b=await r.restore(w);b.status==="restored"?E.push(w):s.value=b.message??i.value.restoreError}l.clear(),E.length>0&&o("restored",E)}catch(w){const b=w instanceof Error?w:new Error(String(w));s.value=b.message!==""?b.message:i.value.restoreError,o("error",b)}}async function p(){const k=Array.from(l.selectedIds.value);v(i.value.confirmPurgeSelected(k.length),k.length)&&await h(k)}async function f(){const k=r.items.value.map(E=>E.uuid);v(i.value.confirmEmptyTrash(k.length),k.length)&&await h(k)}function v(k,E){return E===0||typeof window>"u"||typeof window.confirm!="function"?!1:window.confirm(k)}async function h(k){if(k.length===0)return;const E=[],w=[];s.value="",d.value="";try{for(const b of k){const g=await r.purge(b);g.status==="purging"?E.push(b):w.push(g.message??i.value.purgeError)}l.clear(),E.length>0&&(d.value=i.value.purgeSuccess(E.length),o("purged",E)),w.length>0&&(s.value=Array.from(new Set(w)).join(" "),o("error",new Error(s.value)))}catch(b){const g=b instanceof Error?b:new Error(String(b));s.value=g.message!==""?g.message:i.value.purgeError,o("error",g)}}return e.onMounted(()=>{r.fetch().catch(k=>{o("error",k instanceof Error?k:new Error(String(k)))})}),(k,E)=>(e.openBlock(),e.createElementBlock("section",{class:"media-trash-workspace","data-testid":"media-trash-workspace","aria-busy":u.value?"true":"false"},[e.createElementVNode("header",yP,[e.createElementVNode("h2",null,e.toDisplayString(i.value.title),1),e.unref(r).items.value.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-media-empty-trash",disabled:e.unref(r).isPurging.value,onClick:f},e.toDisplayString(i.value.emptyTrash),9,wP)):e.createCommentVNode("",!0)]),s.value?(e.openBlock(),e.createElementBlock("p",kP,e.toDisplayString(s.value),1)):d.value?(e.openBlock(),e.createElementBlock("p",_P,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0),e.unref(r).isLoading.value?(e.openBlock(),e.createElementBlock("p",EP,"Loading...")):e.unref(r).items.value.length===0?(e.openBlock(),e.createBlock(ev,{key:3,title:i.value.emptyTitle,description:i.value.emptyDescription,"test-id":"media-empty-trash"},null,8,["title","description"])):(e.openBlock(),e.createElementBlock("ul",SP,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).items.value,w=>(e.openBlock(),e.createElementBlock("li",{key:w.uuid,class:e.normalizeClass(["media-trash-workspace__item",{"is-selected":e.unref(l).isSelected(w.uuid)}]),"data-testid":`media-trash-item-${w.uuid}`},[e.createElementVNode("label",CP,[e.createElementVNode("input",{type:"checkbox",checked:e.unref(l).isSelected(w.uuid),"data-testid":`checkbox-trash-${w.uuid}`,onChange:b=>e.unref(l).toggle(w.uuid)},null,40,VP),e.createElementVNode("span",null,e.toDisplayString(w.file_name),1)]),c(w)?(e.openBlock(),e.createElementBlock("img",{key:0,src:c(w)??"",alt:w.alt_text??w.file_name},null,8,NP)):e.createCommentVNode("",!0),w.purge_after?(e.openBlock(),e.createElementBlock("span",TP,e.toDisplayString(w.purge_after),1)):e.createCommentVNode("",!0)],10,xP))),128))])),e.createVNode(Yd,{"selected-count":e.unref(l).selectedCount.value,"cross-page-count":e.unref(l).crossPageCount.value,scope:"trash",labels:{restore:i.value.restore,purge:i.value.purge},onBulkRestore:m,onBulkPurge:p,onClear:e.unref(l).clear},null,8,["selected-count","cross-page-count","labels","onClear"])],8,bP))}}),tv=Ie(BP,[["__scopeId","data-v-1bce0570"]]),MP=["data-density"],$P={class:"media-library-shell__toolbar"},IP={class:"media-library-shell__tabs","aria-label":"Media library sections"},DP=["aria-label"],FP=["data-testid","onClick"],AP={key:2,class:"media-library-shell__uploads","data-testid":"media-library-uploads","aria-live":"polite"},RP=["data-testid"],LP={class:"media-library-shell__upload-thumb"},PP=["src","alt"],UP={key:1,"aria-hidden":"true"},OP={class:"media-library-shell__upload-meta"},zP={class:"media-library-shell__upload-name"},jP={class:"media-library-shell__upload-status"},WP=["data-testid","onClick"],ZP={class:"media-library-shell__workspace"},HP={key:0,class:"media-library-shell__breadcrumb","data-testid":"media-album-breadcrumb"},GP={class:"media-library-shell__breadcrumb-current"},XP={class:"media-library-shell__breadcrumb-name"},KP={key:0,class:"media-library-shell__album-actions","data-media-album-menu-root":""},JP=["aria-label","aria-controls","aria-expanded"],qP=["id"],YP=["aria-label"],QP={class:"media-album-grid__toolbar"},e9=["placeholder","aria-label"],t9={class:"media-album-grid__tiles",role:"list"},a9={class:"media-album-grid__new-tile-label"},n9={class:"media-album-grid__new-tile-field",for:"media-album-grid-new-name"},o9={class:"media-album-grid__new-tile-field-label"},i9=["maxlength","aria-invalid","disabled"],r9={key:0,id:"media-album-grid-new-error",class:"media-album-grid__new-tile-error","data-testid":"media-album-new-tile-error",role:"alert"},l9={class:"media-album-grid__new-tile-actions"},s9=["disabled"],d9=["disabled"],u9={key:0},c9={key:1},m9=["data-testid"],p9=["data-testid","onClick"],f9={class:"media-album-grid__cover","aria-hidden":"true"},v9=["src"],h9={key:1,class:"media-album-grid__cover-initial"},g9={class:"media-album-grid__tile-meta"},b9={class:"media-album-grid__tile-name"},y9={class:"media-album-grid__tile-count"},w9={class:"media-album-grid__tile-actions","data-media-album-menu-root":""},k9=["data-testid","aria-label","aria-controls","aria-expanded","onClick"],_9=["id","data-testid"],E9=["data-testid","onClick"],S9=["data-testid","onClick"],x9={key:0,class:"media-album-grid__empty","data-testid":"media-album-grid-empty-search"},C9={key:1,class:"media-album-grid__empty","data-testid":"media-album-grid-empty"},V9={class:"media-library-shell__item-actions"},N9={class:"media-library-shell__item-action-menu","data-media-item-menu-root":""},T9=["data-testid","aria-label","aria-controls","aria-expanded","onClick"],B9=["id","data-testid"],M9=["data-testid","onClick"],$9=["data-testid","onClick"],I9=["data-testid","onClick"],D9=["data-testid","onClick"],F9=["data-testid","onClick"],A9=["data-testid","onClick"],R9=["data-testid","onClick"],L9=["aria-label"],P9=["aria-describedby"],U9={class:"media-album-dialog__header"},O9={id:"media-album-dialog-title"},z9={class:"media-album-dialog__field"},j9=["maxlength","aria-invalid","disabled"],W9={class:"media-album-dialog__field"},Z9=["disabled"],H9={key:0,id:"media-album-dialog-error",class:"media-album-dialog__error","data-testid":"media-album-edit-error",role:"alert"},G9={class:"media-album-dialog__actions"},X9=["disabled"],K9=["disabled"],J9={key:1,class:"media-album-dialog__form","data-testid":"media-album-delete-confirmation"},q9={class:"media-album-dialog__header"},Y9={id:"media-album-dialog-title"},Q9={id:"media-album-dialog-delete-description",class:"media-album-dialog__description"},eU={key:0,id:"media-album-dialog-error",class:"media-album-dialog__error","data-testid":"media-album-delete-error",role:"alert"},tU={class:"media-album-dialog__actions"},aU=["disabled"],nU=["disabled"],im="media-library:density",rm="media-library:recent-albums",lm=5,$r=120,oU=e.defineComponent({__name:"MediaLibraryShell",props:{httpClient:{},albumHttpClient:{},albumBaseUrl:{},initialTab:{default:"library"},initialAlbumId:{default:null},initialFilters:{default:()=>({sort:"newest"})},capabilities:{default:()=>({})},labels:{default:()=>({})},currentRoute:{},routerPush:{},routerReplace:{}},emits:["tab-change","album-change","filters-change","selection-change","create-post","create-gallery","add-to-album","edit","deleted","restored","restore-conflict","metadata-updated","error"],setup(a,{emit:n}){function t(){if(typeof window>"u")return"comfortable";try{return window.localStorage.getItem(im)==="compact"?"compact":"comfortable"}catch{return"comfortable"}}function o(Z){if(!(typeof window>"u"))try{window.localStorage.setItem(im,Z)}catch{}}function i(){if(typeof window>"u")return[];try{const Z=window.localStorage.getItem(rm);if(typeof Z!="string"||Z==="")return[];const Q=JSON.parse(Z);return Array.isArray(Q)?Q.filter(De=>typeof De=="string"):[]}catch{return[]}}function r(Z){if(!(typeof window>"u"))try{window.localStorage.setItem(rm,JSON.stringify(Z.slice(0,lm)))}catch{}}const l=a,s=n,d=e.ref(l.initialTab),u=e.ref(l.initialAlbumId),c=e.ref({...l.initialFilters}),m=e.ref(null),p=e.ref(null),f=e.ref(null),v=e.ref(null),h=e.ref(!1),k=e.ref(null),E=e.ref(null),w=e.ref(t()),b=e.ref(i()),g=e.ref(!1),D=e.ref(""),T=e.ref(null),F=e.ref(null),V=e.ref(null),I=e.ref(null),$=e.ref(""),C=e.ref(""),M=e.ref(""),_=e.ref(!1),L=e.ref(!1),j=e.ref(null),B=e.ref(null),U=e.ref(null),S=e.ref(null),R=e.ref(!1);let O=null;function K(){if(typeof document>"u")return!1;const Z=document.activeElement;if(!(Z instanceof HTMLElement))return!1;if(Z.isContentEditable)return!0;const Q=Z.tagName.toLowerCase();return Q==="input"||Q==="textarea"||Q==="select"}function se(Z){Z.key==="?"&&(Z.metaKey||Z.ctrlKey||Z.altKey||K()||(Z.preventDefault(),g.value=!0))}function xe(Z){Z.target instanceof Element&&(T.value!==null&&Z.target.closest("[data-media-album-menu-root]")===null&&ot(!1),f.value!==null&&Z.target.closest("[data-media-item-menu-root]")===null&&Ga(!1))}function ue(Z){R.value=Z.matches}function le(){typeof window>"u"||typeof window.matchMedia=="function"&&(O=window.matchMedia("(max-width: 1535px)"),R.value=O.matches,O.addEventListener("change",ue))}function H(){O==null||O.removeEventListener("change",ue),O=null}const y=e.computed(()=>R.value?"overlay":"pinned");function A(){m.value=null}const W=e.computed(()=>d.value==="albums"&&u.value===null),q=e.computed(()=>d.value==="albums"&&u.value!==null&&u.value!=="unfiled"),de=e.computed(()=>{var Z;return u.value===null||u.value==="unfiled"?"":((Z=He.albumsById.value.get(u.value))==null?void 0:Z.name)??""}),Pe=e.computed(()=>u.value===null||u.value==="unfiled"?null:He.albumsById.value.get(u.value)??null),ge=e.computed(()=>{const Z=D.value.trim().toLowerCase(),Q=He.albums.value;return Z===""?Q:Q.filter(De=>De.name.toLowerCase().includes(Z)||(De.description??"").toLowerCase().includes(Z))});function ke(Z){const Q=Z.name.trim();return Q.length===0?"·":Q.charAt(0).toUpperCase()}function be(Z){var ne,Ye,Nt;const Q=Z.cover_media;if(Q==null)return null;const De=((ne=Q.urls)==null?void 0:ne.thumb)??((Ye=Q.urls)==null?void 0:Ye.preview)??((Nt=Q.urls)==null?void 0:Nt.original)??null;return typeof De=="string"&&De!==""?De:null}function Ce(Z){return Le.value.itemsCount(Z.media_count)}function Ee(Z){return`media-album-action-menu-${Z}`}function Ae(Z){e.nextTick(()=>{if(typeof document>"u")return;const Q=document.getElementById(Z);Q!==null&&ma(jl(Q)[0]??null)})}function Ue(Z,Q){if(T.value===Z){ot(!0);return}F.value=(Q==null?void 0:Q.currentTarget)instanceof HTMLElement?Q.currentTarget:null,T.value=Z,Ae(Ee(Z))}function ot(Z=!1){T.value=null,Z&&e.nextTick(()=>ma(F.value))}function it(Z){if(Z.key==="Escape"){Z.preventDefault(),Z.stopPropagation(),ot(!0);return}cd(Z,Z.currentTarget instanceof HTMLElement?Z.currentTarget:null)}function Lt(){S.value=typeof document<"u"&&document.activeElement instanceof HTMLElement?document.activeElement:F.value}function gt(Z){Lt(),ot(!1),V.value="edit",I.value=Z,$.value=Z.name,C.value=Z.description??"",M.value="",_.value=!1,L.value=!1,e.nextTick(()=>{var Q,De;(Q=j.value)==null||Q.focus(),(De=j.value)==null||De.select()})}function St(Z){Lt(),ot(!1),V.value="delete",I.value=Z,M.value="",_.value=!1,L.value=!1,e.nextTick(()=>{var Q;(Q=B.value)==null||Q.focus()})}function ct(){if(_.value||L.value)return;const Z=S.value;V.value=null,I.value=null,$.value="",C.value="",M.value="",S.value=null,e.nextTick(()=>ma(Z))}function mt(Z){if(Z.key==="Escape"){Z.preventDefault(),Z.stopPropagation(),ct();return}Z.key==="Tab"&&qd(Z,U.value)}async function Ct(){var Q,De,ne;const Z=I.value;if(!(Z===null||V.value!=="edit"||_.value)){if(rt.value){M.value=Le.value.albumEditEmptyError,(Q=j.value)==null||Q.focus();return}if(We.value){M.value=Le.value.albumEditTooLongError,(De=j.value)==null||De.focus();return}_.value=!0,M.value="";try{await He.updateAlbum(Z.id,{name:Te.value,description:C.value.trim()}),_.value=!1,ct()}catch(Ye){_.value=!1;const Nt=Ye instanceof Error?Ye:new Error(String(Ye));M.value=Nt.message!==""?Nt.message:Le.value.albumEditGenericError,(ne=j.value)==null||ne.focus(),s("error",Nt)}}}async function Se(){const Z=I.value;if(!(Z===null||V.value!=="delete"||L.value)){L.value=!0,M.value="";try{await He.deleteAlbum(Z.id),b.value=b.value.filter(Q=>Q!==Z.id),r(b.value),L.value=!1,ct(),u.value===Z.id&&Ft(),He.fetchAlbums({parent_id:null}).catch(Q=>{s("error",Q instanceof Error?Q:new Error(String(Q)))})}catch(Q){L.value=!1;const De=Q instanceof Error?Q:new Error(String(Q));M.value=De.message!==""?De.message:Le.value.albumDeleteGenericError,s("error",De)}}}const Ve=e.computed(()=>b.value.map(Z=>{const Q=He.albumsById.value.get(Z);return Q?{id:Z,name:Q.name}:null}).filter(Z=>Z!==null));function Re(Z){const Q=[Z,...b.value.filter(De=>De!==Z)].slice(0,lm);b.value=Q,r(Q)}const at=e.computed(()=>c.value.sort??"newest"),He=Ol(),Je=Qd({httpClient:l.httpClient}),kt=Zf({httpClient:l.httpClient,onMediaUploaded:()=>{ft.value+=1}}),ft=e.ref(0);function jt(Z){Z.length!==0&&kt.uploadFiles(Z).catch(Q=>{s("error",Q instanceof Error?Q:new Error(String(Q)))})}const Le=e.computed(()=>{var Z,Q,De,ne,Ye,Nt,cn,La,Gn,Tn,Pa,ga,Xn,po,mn,Bn,Ua,fo,Mn,$n,on,Kn,pn,In,fn,Dn,rn,vo,Jn,bi,yi,Fn,qn,Yn,ho,go,bo,yo,wo,x,P,te,ye,Oe,ze,ut,Tt,Kt,sa;return{library:((Z=l.labels)==null?void 0:Z.library)??((Q=l.labels)==null?void 0:Q.libraryTab)??"Library",libraryTab:((De=l.labels)==null?void 0:De.libraryTab)??((ne=l.labels)==null?void 0:ne.library)??"Library",albums:((Ye=l.labels)==null?void 0:Ye.albums)??((Nt=l.labels)==null?void 0:Nt.albumsTab)??"Albums",albumsTab:((cn=l.labels)==null?void 0:cn.albumsTab)??((La=l.labels)==null?void 0:La.albums)??"Albums",trash:((Gn=l.labels)==null?void 0:Gn.trash)??((Tn=l.labels)==null?void 0:Tn.trashTab)??"Trash",trashTab:((Pa=l.labels)==null?void 0:Pa.trashTab)??((ga=l.labels)==null?void 0:ga.trash)??"Trash",allMedia:((Xn=l.labels)==null?void 0:Xn.allMedia)??"All media",unfiled:((po=l.labels)==null?void 0:po.unfiled)??"Unfiled",newAlbum:((mn=l.labels)==null?void 0:mn.newAlbum)??"New album",selectionScope:((Bn=l.labels)==null?void 0:Bn.selectionScope)??"Showing selected items",exitSelectionScope:((Ua=l.labels)==null?void 0:Ua.exitSelectionScope)??"Exit selection view",findAlbum:((fo=l.labels)==null?void 0:fo.findAlbum)??"Find album…",noAlbumsYet:((Mn=l.labels)==null?void 0:Mn.noAlbumsYet)??"No albums yet — albums are private buckets where you group photos and videos. Create your first one above to start organising your work.",noAlbumMatchesFound:(($n=l.labels)==null?void 0:$n.noAlbumMatchesFound)??"No albums match your search.",itemsCount:((on=l.labels)==null?void 0:on.itemsCount)??(Ca=>`${Ca} ${Ca===1?"item":"items"}`),newAlbumNamePrompt:((Kn=l.labels)==null?void 0:Kn.newAlbumNamePrompt)??"Name this album",newAlbumSubmit:((pn=l.labels)==null?void 0:pn.newAlbumSubmit)??"Create",newAlbumCancel:((In=l.labels)==null?void 0:In.newAlbumCancel)??"Cancel",newAlbumEmptyError:((fn=l.labels)==null?void 0:fn.newAlbumEmptyError)??"Please enter a name.",newAlbumTooLongError:((Dn=l.labels)==null?void 0:Dn.newAlbumTooLongError)??"Name must be 120 characters or fewer.",newAlbumGenericError:((rn=l.labels)==null?void 0:rn.newAlbumGenericError)??"Could not create album. Try again.",recentSection:((vo=l.labels)==null?void 0:vo.recentSection)??"Recent albums",albumActions:((Jn=l.labels)==null?void 0:Jn.albumActions)??(Ca=>`Album actions for ${Ca}`),editAlbum:((bi=l.labels)==null?void 0:bi.editAlbum)??"Edit album",deleteAlbum:((yi=l.labels)==null?void 0:yi.deleteAlbum)??"Delete album",editAlbumTitle:((Fn=l.labels)==null?void 0:Fn.editAlbumTitle)??"Edit album",albumNameLabel:((qn=l.labels)==null?void 0:qn.albumNameLabel)??"Album name",albumDescriptionLabel:((Yn=l.labels)==null?void 0:Yn.albumDescriptionLabel)??"Description",saveAlbum:((ho=l.labels)==null?void 0:ho.saveAlbum)??"Save changes",cancelAlbumEdit:((go=l.labels)==null?void 0:go.cancelAlbumEdit)??"Cancel",albumEditEmptyError:((bo=l.labels)==null?void 0:bo.albumEditEmptyError)??"Please enter a name.",albumEditTooLongError:((yo=l.labels)==null?void 0:yo.albumEditTooLongError)??"Name must be 120 characters or fewer.",albumEditGenericError:((wo=l.labels)==null?void 0:wo.albumEditGenericError)??"Could not update album. Try again.",deleteAlbumTitle:((x=l.labels)==null?void 0:x.deleteAlbumTitle)??(Ca=>`Delete ${Ca}?`),deleteAlbumDescription:((P=l.labels)==null?void 0:P.deleteAlbumDescription)??"This deletes the album only. The photos and videos inside it stay in your media library.",confirmDeleteAlbum:((te=l.labels)==null?void 0:te.confirmDeleteAlbum)??"Delete album",cancelDeleteAlbum:((ye=l.labels)==null?void 0:ye.cancelDeleteAlbum)??"Cancel",albumDeleteGenericError:((Oe=l.labels)==null?void 0:Oe.albumDeleteGenericError)??"Could not delete album. Try again.",closeAlbumDialog:((ze=l.labels)==null?void 0:ze.closeAlbumDialog)??"Close album dialog",itemActions:((ut=l.labels)==null?void 0:ut.itemActions)??(Ca=>`Actions for ${Ca}`),moveToAnotherAlbum:((Tt=l.labels)==null?void 0:Tt.moveToAnotherAlbum)??"Move to another album",removeFromThisAlbum:((Kt=l.labels)==null?void 0:Kt.removeFromThisAlbum)??"Remove from this album",addToAlbum:((sa=l.labels)==null?void 0:sa.addToAlbum)??"Add to album"}}),Wt=e.ref(!1),Zt=e.ref(""),Mt=e.ref(""),Pt=e.ref(!1),Ht=e.ref(null),ra=e.computed(()=>Zt.value.trim()),ae=e.computed(()=>ra.value.length>$r),he=e.computed(()=>ra.value===""),me=e.computed(()=>!Pt.value&&!he.value&&!ae.value),ce=e.computed(()=>V.value!==null&&I.value!==null),Te=e.computed(()=>$.value.trim()),We=e.computed(()=>Te.value.length>$r),rt=e.computed(()=>Te.value===""),Vt=e.computed(()=>!_.value&&!rt.value&&!We.value),Ut=e.computed(()=>k.value!==null?{scope:"library"}:u.value==="unfiled"?{scope:"unfiled"}:u.value!==null?{scope:"album",albumId:u.value}:{scope:"library"}),$t=e.computed(()=>k.value!==null?{...c.value,selected_uuids:[...k.value],unfiled_only:!1}:c.value),lt=e.computed(()=>{if(u.value===null||u.value==="unfiled")return null;const Z=He.albumsById.value.get(u.value);return{uuid:u.value,name:(Z==null?void 0:Z.name)??"this album"}}),Jt=e.computed(()=>d.value==="trash"?"trash":k.value!==null?"selection":lt.value!==null?"album":"all"),J=e.computed(()=>({...l.capabilities,allowReplaceMedia:!1,allowVisibilityChange:!1,allowDownloadZip:!1})),we=e.computed(()=>d.value==="trash"?Le.value.trash:k.value!==null?Le.value.selectionScope:u.value==="unfiled"?Le.value.unfiled:lt.value!==null?lt.value.name:Le.value.allMedia);function oe(Z){var Q,De,ne;d.value!==Z&&(d.value=Z,s("tab-change",Z),Z==="trash"?(Q=l.routerPush)==null||Q.call(l,"/media/trash"):Z==="albums"?(De=l.routerPush)==null||De.call(l,"/media/albums"):(ne=l.routerPush)==null||ne.call(l,"/media"))}function $e(Z){var Q;Y(),u.value=Z,d.value="albums",Re(Z),c.value={...c.value,unfiled_only:!1},s("album-change",Z),(Q=l.routerPush)==null||Q.call(l,`/media/album/${encodeURIComponent(Z)}`)}function Ft(){var Z;Y(),u.value=null,d.value="albums",c.value={...c.value,unfiled_only:!1},s("album-change",null),(Z=l.routerPush)==null||Z.call(l,"/media/albums")}async function Ot(Z){if(u.value===null||u.value==="unfiled")return;const Q=u.value;try{await He.updateAlbum(Q,{meta:{cover_media_uuid:Z.uuid}}),He.fetchAlbums({parent_id:null})}catch(De){s("error",De instanceof Error?De:new Error(String(De)))}}function It(){Zt.value="",Mt.value="",Pt.value=!1}async function yt(){var Z;Wt.value=!0,It(),await e.nextTick(),(Z=Ht.value)==null||Z.focus()}function bt(){Wt.value=!1,It()}function qt(){Mt.value!==""&&!he.value&&!ae.value&&(Mt.value="")}async function _t(){var Z,Q,De,ne;if(!Pt.value){if(he.value){Mt.value=Le.value.newAlbumEmptyError,(Z=Ht.value)==null||Z.focus();return}if(ae.value){Mt.value=Le.value.newAlbumTooLongError,(Q=Ht.value)==null||Q.focus();return}Pt.value=!0,Mt.value="";try{const Ye=await He.createAlbum({name:ra.value});if(Ye==null){Mt.value=Le.value.newAlbumGenericError,Pt.value=!1,(De=Ht.value)==null||De.focus();return}Wt.value=!1,It(),$e(Ye.id)}catch(Ye){const Nt=Ye instanceof Error?Ye:new Error(String(Ye));Mt.value=Nt.message!==""?Nt.message:Le.value.newAlbumGenericError,Pt.value=!1,(ne=Ht.value)==null||ne.focus(),s("error",Nt)}}}function Xt(Z){Z.key==="Escape"&&(Z.stopPropagation(),bt())}function Sa(){return d.value==="trash"?"/media/trash":u.value==="unfiled"?"/media/unfiled":u.value!==null?`/media/album/${encodeURIComponent(u.value)}`:"/media"}function X(Z){var Q;Z.length!==0&&(k.value===null&&(E.value=Sa()),k.value=[...Z],(Q=l.routerPush)==null||Q.call(l,{path:"/media",query:{view:"selection"}}))}function Y(){k.value=null,E.value=null}function pe(){var Q;const Z=E.value;Y(),Z!==null&&((Q=l.routerPush)==null||Q.call(l,Z))}function fe(Z){var Q;c.value={...c.value,sort:Z},s("filters-change",c.value),(Q=l.routerReplace)==null||Q.call(l,{query:c.value})}function Ne(Z){w.value=Z,o(Z)}function Xe(Z){var Q;c.value={...c.value,created_after:Z.starts_at,created_before:Z.ends_at},s("filters-change",c.value),(Q=l.routerReplace)==null||Q.call(l,{query:c.value})}function dt(){var Q;const Z={...c.value};delete Z.created_after,delete Z.created_before,c.value=Z,s("filters-change",c.value),(Q=l.routerReplace)==null||Q.call(l,{query:c.value})}const et=e.computed(()=>c.value.created_after!==void 0||c.value.created_before!==void 0);function Ke(Z){var Q;c.value={...Z,...Z.kinds!==void 0?{kinds:[...Z.kinds]}:{},...Z.selected_uuids!==void 0?{selected_uuids:[...Z.selected_uuids]}:{}},s("filters-change",c.value),(Q=l.routerReplace)==null||Q.call(l,{query:c.value})}function vt(){gf({...l.albumHttpClient!==void 0?{httpClient:l.albumHttpClient}:{},...l.albumBaseUrl!==void 0?{albumBaseUrl:l.albumBaseUrl}:{}})}function ht(Z){Z.mediaIds.length!==0&&(p.value=Z,h.value=!0)}function nt(){h.value=!1,p.value=null,pa.value=null}function Yt(Z){const Q=new Set(Z.mediaIds),De=m.value;if((De==null?void 0:De.kind)==="single"&&Q.has(De.media.uuid)){m.value=null;return}(De==null?void 0:De.kind)==="multi"&&(m.value=null)}function At(Z){ft.value+=1,Yt(Z)}async function Ha(Z){const Q=p.value;if(Q===null)return;const De=pa.value;try{await He.attachMedia(Z,Q.mediaIds),De!==null&&await Promise.all(Q.mediaIds.map(ne=>He.detachMedia(De,ne))),h.value=!1,p.value=null,pa.value=null,At(Q),s("add-to-album",Q)}catch(ne){s("error",ne instanceof Error?ne:new Error(String(ne)))}}const pa=e.ref(null);function Vn(Z){Z.mediaIds.length===0||lt.value===null||(p.value=Z,pa.value=lt.value.uuid,h.value=!0)}async function Ta(Z){if(Z.mediaIds.length===0||lt.value===null)return;const Q=lt.value.uuid;try{await Promise.all(Z.mediaIds.map(De=>He.detachMedia(Q,De))),At(Z)}catch(De){s("error",De instanceof Error?De:new Error(String(De)))}}function xa(Z){return{mediaIds:[Z.uuid],items:[Z],source:"item"}}function Aa(){const Z=m.value;if(Z===null)return null;if(Z.kind==="single")return xa(Z.media);const Q=Z.items??[];return Q.length===0?null:{mediaIds:Q.map(De=>De.uuid),items:Q,source:"bulk"}}function fa(Z){return Z.name??Z.file_name}function tn(Z){return`media-shell-item-actions-menu-${Z}`}function jn(Z,Q){if(f.value===Z){Ga(!0);return}v.value=(Q==null?void 0:Q.currentTarget)instanceof HTMLElement?Q.currentTarget:null,f.value=Z,Ae(tn(Z))}function Ga(Z=!1){f.value=null,Z&&e.nextTick(()=>ma(v.value))}function Wn(Z){if(Z.key==="Escape"){Z.preventDefault(),Z.stopPropagation(),Ga(!0);return}cd(Z,Z.currentTarget instanceof HTMLElement?Z.currentTarget:null)}function va(Z){Z(),Ga(!1)}function Ra(Z){Vn(xa(Z))}async function Ho(Z){await Ta(xa(Z))}function uo(Z){Ho(Z)}function hi(Z){const Q=Z.mime_type.toLowerCase();return(Z.is_image===!0||Q.startsWith("image/"))&&l.capabilities.allowImageEdit===!0?"image":Q.startsWith("video/")&&l.capabilities.allowVideoEdit===!0?"video":null}function gi(Z){const Q=hi(Z);Q!==null&&s("edit",{media:Z,kind:Q})}function Nn(Z){const Q=m.value;(Q==null?void 0:Q.kind)==="single"&&Q.media.uuid===Z.uuid&&(m.value={kind:"single",media:Z}),ft.value+=1,s("metadata-updated",Z)}function ha(Z){const Q=Z.original_url!==""?Z.original_url:Z.url;if(typeof document>"u"||typeof Q!="string"||Q==="")return;const De=document.createElement("a");De.href=Q,De.download=Z.file_name,De.rel="noopener",De.target="_blank",document.body.appendChild(De),De.click(),De.remove()}function un(Z){return Object.entries(Z).map(([Q,De])=>({uuid:Q,blocks:De}))}function co(Z){if(typeof window>"u"||typeof window.confirm!="function")return!1;const Q=new Set;for(const Ye of Z)for(const Nt of Ye.blocks)Nt.context&&Q.add(Nt.context);const De=Array.from(Q),ne=De.length>0?`This media is still attached to: ${De.map(Ye=>`"${Ye}"`).join(", ")}. Remove from those and move to trash?`:"This media is still attached to other items. Remove from those and move to trash?";return window.confirm(ne)}function Zn(Z,Q){const De=Z.results.filter(ne=>ne.status==="trashed"||ne.status==="already_trashed").map(ne=>ne.uuid);if(De.length!==0){if(k.value!==null){const ne=new Set(De);k.value=k.value.filter(Ye=>!ne.has(Ye)),k.value.length===0&&Y()}At(Q),s("deleted",De)}}async function an(Z){if(!(l.capabilities.allowBulkDelete!==!0||Z.mediaIds.length===0))try{const Q=await Je.deleteMany(Z.mediaIds);Zn(Q,Z)}catch(Q){if(Q instanceof Wl){const De=un(Q.softBlocks);if(!co(De))return;try{const ne=await Je.deleteMany(Z.mediaIds,{confirmed:!0});Zn(ne,Z)}catch(ne){s("error",ne instanceof Error?ne:new Error(String(ne)))}return}s("error",Q instanceof Error?Q:new Error(String(Q)))}}function Hn(Z){an(xa(Z))}function Xa(){const Z=Aa();Z!==null&&ht(Z)}function la(){const Z=Aa();Z!==null&&an(Z)}function Ba(Z){if(lt.value!==null){Ra(Z);return}l.capabilities.allowAddToAlbum===!0&&ht(xa(Z))}function nn(Z,Q){if(Q>0){X(Z.mediaIds);return}if(Z.mediaIds.length===1&&Z.items.length===1){m.value={kind:"single",media:Z.items[0]};return}m.value={kind:"multi",count:Z.mediaIds.length,items:Z.items}}e.watch(()=>l.initialAlbumId,Z=>{u.value=Z});function mo(Z){Z===null||Z==="unfiled"||He.albumsById.value.has(Z)||He.fetchAlbum(Z).catch(Q=>{s("error",Q instanceof Error?Q:new Error(String(Q)))})}return e.watch(()=>u.value,Z=>mo(Z)),vt(),e.onMounted(()=>{mo(u.value),He.fetchAlbums({parent_id:null}).catch(Z=>{s("error",Z instanceof Error?Z:new Error(String(Z)))}),typeof window<"u"&&(window.addEventListener("keydown",se),document.addEventListener("pointerdown",xe,!0),le())}),e.onUnmounted(()=>{typeof window<"u"&&(window.removeEventListener("keydown",se),document.removeEventListener("pointerdown",xe,!0),H())}),e.watch(()=>[l.albumHttpClient,l.albumBaseUrl],()=>vt()),(Z,Q)=>{var De;return e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["media-library-shell",{"is-density-compact":w.value==="compact"}]),"data-density":w.value,"data-testid":"media-library-shell"},[e.createElementVNode("header",$P,[e.createElementVNode("nav",IP,[e.createElementVNode("button",{type:"button",class:e.normalizeClass({"is-active":d.value==="library"}),"data-testid":"tab-media-library",onClick:Q[0]||(Q[0]=ne=>oe("library"))},e.toDisplayString(Le.value.library),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({"is-active":d.value==="albums"}),"data-testid":"tab-media-albums",onClick:Q[1]||(Q[1]=ne=>oe("albums"))},e.toDisplayString(Le.value.albums),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass({"is-active":d.value==="trash"}),"data-testid":"tab-media-trash",onClick:Q[2]||(Q[2]=ne=>oe("trash"))},e.toDisplayString(Le.value.trash),3)]),e.createElementVNode("button",{type:"button",class:"media-library-shell__shortcut-trigger","data-testid":"btn-media-shortcuts","aria-label":"Show keyboard shortcuts",onClick:Q[3]||(Q[3]=ne=>g.value=!0)}," ? "),k.value!==null?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-library-shell__exit-selection","data-testid":"btn-media-exit-selection-scope",onClick:pe},e.toDisplayString(Le.value.exitSelectionScope),1)):e.createCommentVNode("",!0)]),d.value!=="trash"&&!W.value?(e.openBlock(),e.createBlock(jf,{key:0,class:"media-library-shell__toolbar-row",sort:at.value,density:w.value,"has-date-filter":et.value,"http-client":l.httpClient,"onUpdate:sort":fe,"onUpdate:density":Ne,onJumpTo:Xe,onJumpToAll:dt,onUploadFiles:jt},null,8,["sort","density","has-date-filter","http-client"])):e.createCommentVNode("",!0),Ve.value.length>0&&d.value!=="trash"&&!W.value&&!q.value?(e.openBlock(),e.createElementBlock("nav",{key:1,class:"media-library-shell__recent-albums","data-testid":"media-library-recent-albums","aria-label":Le.value.recentSection},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ve.value,ne=>(e.openBlock(),e.createElementBlock("button",{key:ne.id,type:"button",class:"media-library-shell__recent-chip","data-testid":`btn-media-recent-album-${ne.id}`,onClick:Ye=>$e(ne.id)},e.toDisplayString(ne.name),9,FP))),128))],8,DP)):e.createCommentVNode("",!0),e.unref(kt).uploads.value.length>0&&d.value!=="trash"?(e.openBlock(),e.createElementBlock("div",AP,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(kt).uploads.value,ne=>(e.openBlock(),e.createElementBlock("article",{key:ne.cid,class:e.normalizeClass(["media-library-shell__upload-tile",`is-status-${ne.status}`]),"data-testid":`upload-tile-${ne.cid}`},[e.createElementVNode("div",LP,[ne.previewUrl?(e.openBlock(),e.createElementBlock("img",{key:0,src:ne.previewUrl,alt:ne.fileName},null,8,PP)):(e.openBlock(),e.createElementBlock("span",UP,"⤴"))]),e.createElementVNode("div",OP,[e.createElementVNode("span",zP,e.toDisplayString(ne.fileName),1),e.createElementVNode("span",jP,[ne.status==="uploading"||ne.status==="queued"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode("Uploading…")],64)):ne.status==="success"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode("Uploaded")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(ne.errorMessage??"Upload failed"),1)],64))])]),e.createElementVNode("button",{type:"button",class:"media-library-shell__upload-dismiss","data-testid":`btn-upload-dismiss-${ne.cid}`,onClick:Ye=>e.unref(kt).dismiss(ne.cid)}," × ",8,WP)],10,RP))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["media-library-shell__body",{"has-inspector-target":m.value!==null}])},[e.createElementVNode("main",ZP,[q.value?(e.openBlock(),e.createElementBlock("header",HP,[e.createElementVNode("button",{type:"button",class:"media-library-shell__breadcrumb-back","data-testid":"btn-media-album-back",onClick:Ft}," ← "+e.toDisplayString(Le.value.albums),1),Q[25]||(Q[25]=e.createElementVNode("span",{class:"media-library-shell__breadcrumb-sep","aria-hidden":"true"},"/",-1)),e.createElementVNode("div",GP,[e.createElementVNode("span",XP,e.toDisplayString(de.value),1),Pe.value?(e.openBlock(),e.createElementBlock("div",KP,[e.createElementVNode("button",{type:"button",class:"media-library-shell__album-action-trigger","data-testid":"btn-media-active-album-actions","aria-label":Le.value.albumActions(Pe.value.name),"aria-haspopup":"menu","aria-controls":Ee(Pe.value.id),"aria-expanded":T.value===Pe.value.id?"true":"false",onClick:Q[4]||(Q[4]=e.withModifiers(ne=>Ue(Pe.value.id,ne),["stop"]))}," ⋯ ",8,JP),T.value===Pe.value.id?(e.openBlock(),e.createElementBlock("div",{key:0,id:Ee(Pe.value.id),class:"media-library-shell__album-action-menu",role:"menu","data-testid":"media-active-album-action-menu",onKeydown:it},[e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"btn-media-active-album-edit",onClick:Q[5]||(Q[5]=e.withModifiers(ne=>gt(Pe.value),["stop"]))},e.toDisplayString(Le.value.editAlbum),1),e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":"btn-media-active-album-delete",onClick:Q[6]||(Q[6]=e.withModifiers(ne=>St(Pe.value),["stop"]))},e.toDisplayString(Le.value.deleteAlbum),1)],40,qP)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),d.value==="trash"?(e.openBlock(),e.createBlock(tv,{key:1,"http-client":l.httpClient,onError:Q[7]||(Q[7]=ne=>s("error",ne))},null,8,["http-client"])):W.value?(e.openBlock(),e.createElementBlock("section",{key:2,class:"media-album-grid","data-testid":"media-album-grid","aria-label":Le.value.albums},[e.createElementVNode("header",QP,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":Q[8]||(Q[8]=ne=>D.value=ne),type:"search",class:"media-album-grid__search",placeholder:Le.value.findAlbum,"data-testid":"input-media-album-filter","aria-label":Le.value.findAlbum},null,8,e9),[[e.vModelText,D.value]])]),e.createElementVNode("div",t9,[Wt.value?(e.openBlock(),e.createElementBlock("form",{key:1,class:"media-album-grid__new-tile media-album-grid__new-tile--form","data-testid":"media-album-new-tile-form",role:"listitem",novalidate:"",onSubmit:Q[11]||(Q[11]=e.withModifiers(ne=>void _t(),["prevent"])),onKeydown:Xt},[e.createElementVNode("label",n9,[e.createElementVNode("span",o9,e.toDisplayString(Le.value.newAlbumNamePrompt),1),e.withDirectives(e.createElementVNode("input",{id:"media-album-grid-new-name",ref_key:"newAlbumInputRef",ref:Ht,"onUpdate:modelValue":Q[10]||(Q[10]=ne=>Zt.value=ne),type:"text",class:e.normalizeClass(["media-album-grid__new-tile-input",{"media-album-grid__new-tile-input--error":Mt.value!==""}]),maxlength:$r+16,"aria-invalid":Mt.value!==""?"true":"false","aria-describedby":"media-album-grid-new-error",autocomplete:"off","data-testid":"input-media-album-new-tile-name",disabled:Pt.value,onInput:qt},null,42,i9),[[e.vModelText,Zt.value]])]),Mt.value!==""?(e.openBlock(),e.createElementBlock("p",r9,e.toDisplayString(Mt.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",l9,[e.createElementVNode("button",{type:"button",class:"media-album-grid__new-tile-btn media-album-grid__new-tile-btn--ghost","data-testid":"btn-media-album-new-tile-cancel",disabled:Pt.value,onClick:bt},e.toDisplayString(Le.value.newAlbumCancel),9,s9),e.createElementVNode("button",{type:"submit",class:"media-album-grid__new-tile-btn media-album-grid__new-tile-btn--primary","data-testid":"btn-media-album-new-tile-submit",disabled:!me.value},[Pt.value?(e.openBlock(),e.createElementBlock("span",u9,"…")):(e.openBlock(),e.createElementBlock("span",c9,e.toDisplayString(Le.value.newAlbumSubmit),1))],8,d9)])],32)):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-album-grid__new-tile","data-testid":"btn-media-album-new-tile",role:"listitem","aria-label":"Create new album",onClick:Q[9]||(Q[9]=ne=>void yt())},[Q[26]||(Q[26]=e.createElementVNode("span",{class:"media-album-grid__new-tile-glyph","aria-hidden":"true"},"+",-1)),e.createElementVNode("span",a9,e.toDisplayString(Le.value.newAlbum),1)])),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ge.value,ne=>(e.openBlock(),e.createElementBlock("article",{key:ne.id,class:"media-album-grid__tile","data-testid":`media-album-tile-${ne.id}`,role:"listitem"},[e.createElementVNode("button",{type:"button",class:"media-album-grid__tile-button","data-testid":`btn-media-album-open-${ne.id}`,onClick:Ye=>$e(ne.id)},[e.createElementVNode("div",f9,[be(ne)!==null?(e.openBlock(),e.createElementBlock("img",{key:0,class:"media-album-grid__cover-image",src:be(ne),alt:"",loading:"lazy"},null,8,v9)):(e.openBlock(),e.createElementBlock("span",h9,e.toDisplayString(ke(ne)),1))]),e.createElementVNode("div",g9,[e.createElementVNode("span",b9,e.toDisplayString(ne.name),1),e.createElementVNode("span",y9,e.toDisplayString(Ce(ne)),1)])],8,p9),e.createElementVNode("div",w9,[e.createElementVNode("button",{type:"button",class:"media-album-grid__tile-action-trigger","data-testid":`btn-media-album-actions-${ne.id}`,"aria-label":Le.value.albumActions(ne.name),"aria-haspopup":"menu","aria-controls":Ee(ne.id),"aria-expanded":T.value===ne.id?"true":"false",onClick:e.withModifiers(Ye=>Ue(ne.id,Ye),["stop"])}," ⋯ ",8,k9),T.value===ne.id?(e.openBlock(),e.createElementBlock("div",{key:0,id:Ee(ne.id),class:"media-album-grid__action-menu",role:"menu","data-testid":`media-album-action-menu-${ne.id}`,onKeydown:it},[e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":`btn-media-album-edit-${ne.id}`,onClick:e.withModifiers(Ye=>gt(ne),["stop"])},e.toDisplayString(Le.value.editAlbum),9,E9),e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":`btn-media-album-delete-${ne.id}`,onClick:e.withModifiers(Ye=>St(ne),["stop"])},e.toDisplayString(Le.value.deleteAlbum),9,S9)],40,_9)):e.createCommentVNode("",!0)])],8,m9))),128))]),ge.value.length===0&&D.value!==""?(e.openBlock(),e.createElementBlock("p",x9,e.toDisplayString(Le.value.noAlbumMatchesFound),1)):ge.value.length===0?(e.openBlock(),e.createElementBlock("p",C9,e.toDisplayString(Le.value.noAlbumsYet),1)):e.createCommentVNode("",!0)],8,YP)):(e.openBlock(),e.createBlock(Qf,{key:`workspace-${ft.value}`,"http-client":l.httpClient,filters:$t.value,"initial-view":Ut.value,capabilities:l.capabilities,labels:{scopeLabel:we.value},onFiltersChange:Ke,onCreatePost:Q[12]||(Q[12]=ne=>s("create-post",ne)),onCreateGallery:Q[13]||(Q[13]=ne=>s("create-gallery",ne)),onAddToAlbum:ht,onEdit:Q[14]||(Q[14]=ne=>s("edit",ne)),onDeleted:Q[15]||(Q[15]=ne=>s("deleted",ne)),onRestored:Q[16]||(Q[16]=ne=>s("restored",ne)),onRestoreConflict:Q[17]||(Q[17]=ne=>s("restore-conflict",ne)),onError:Q[18]||(Q[18]=ne=>s("error",ne))},{"bulk-actions":e.withCtx(ne=>[e.createVNode(Yd,{"selected-count":ne.selectedCount,"cross-page-count":ne.crossPageCount,scope:Jt.value,"source-album":lt.value,capabilities:l.capabilities,onClear:ne.clearSelection,onBulkMoveToTrash:ne.onBulkDelete,onBulkAddToAlbum:Ye=>{var Nt;return(Nt=ne.onAddToAlbum)==null?void 0:Nt.call(ne)},onBulkMoveBetweenAlbums:Ye=>Vn({mediaIds:ne.selectedItemIds,items:ne.selectedItems,source:"bulk"}),onBulkRemoveFromCurrentAlbum:Ye=>void Ta({mediaIds:ne.selectedItemIds,items:ne.selectedItems,source:"bulk"}),onBulkCreatePost:Ye=>{var Nt;return(Nt=ne.onCreatePost)==null?void 0:Nt.call(ne)},onBulkCreateGallery:Ye=>{var Nt;return(Nt=ne.onCreateGallery)==null?void 0:Nt.call(ne)},onInspect:Ye=>nn({mediaIds:ne.selectedItemIds,items:ne.selectedItems},ne.crossPageCount)},null,8,["selected-count","cross-page-count","scope","source-album","capabilities","onClear","onBulkMoveToTrash","onBulkAddToAlbum","onBulkMoveBetweenAlbums","onBulkRemoveFromCurrentAlbum","onBulkCreatePost","onBulkCreateGallery","onInspect"])]),"item-actions":e.withCtx(ne=>[e.createElementVNode("div",V9,[e.createElementVNode("div",N9,[e.createElementVNode("button",{type:"button",class:"media-library-shell__item-action-trigger","data-testid":`btn-media-shell-item-actions-${ne.media.uuid}`,"aria-label":Le.value.itemActions(fa(ne.media)),"aria-haspopup":"menu","aria-controls":tn(ne.media.uuid),"aria-expanded":f.value===ne.media.uuid?"true":"false",onClick:Ye=>jn(ne.media.uuid,Ye)}," ... ",8,T9),f.value===ne.media.uuid?(e.openBlock(),e.createElementBlock("div",{key:0,id:tn(ne.media.uuid),class:"media-library-shell__item-action-panel",role:"menu","data-testid":`media-shell-item-actions-menu-${ne.media.uuid}`,onKeydown:Wn},[e.createElementVNode("button",{type:"button",role:"menuitem","data-testid":`btn-media-shell-preview-${ne.media.uuid}`,onClick:Ye=>va(ne.onPreview)},e.toDisplayString(ne.labels.previewButton),9,M9),ne.onEdit?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",role:"menuitem","data-testid":`btn-media-shell-edit-${ne.media.uuid}`,onClick:Ye=>va(ne.onEdit)},e.toDisplayString(ne.labels.editButton),9,$9)):e.createCommentVNode("",!0),ne.onCreatePost?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",role:"menuitem","data-testid":`btn-media-shell-create-post-${ne.media.uuid}`,onClick:Ye=>va(ne.onCreatePost)},e.toDisplayString(ne.labels.createPostButton),9,I9)):e.createCommentVNode("",!0),ne.onCreateGallery?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",role:"menuitem","data-testid":`btn-media-shell-create-gallery-${ne.media.uuid}`,onClick:Ye=>va(ne.onCreateGallery)},e.toDisplayString(ne.labels.createGalleryButton),9,D9)):e.createCommentVNode("",!0),lt.value!==null&&l.capabilities.allowAddToAlbum===!0?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",role:"menuitem","data-testid":`btn-media-shell-move-album-${ne.media.uuid}`,onClick:Ye=>va(()=>Ra(ne.media))},e.toDisplayString(Le.value.moveToAnotherAlbum),9,F9)):ne.onAddToAlbum?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button",role:"menuitem","data-testid":`btn-media-shell-add-album-${ne.media.uuid}`,onClick:Ye=>va(ne.onAddToAlbum)},e.toDisplayString(ne.labels.addToAlbumButton),9,A9)):e.createCommentVNode("",!0),lt.value!==null?(e.openBlock(),e.createElementBlock("button",{key:5,type:"button",role:"menuitem","data-testid":`btn-media-shell-remove-current-album-${ne.media.uuid}`,onClick:Ye=>va(()=>Ho(ne.media))},e.toDisplayString(Le.value.removeFromThisAlbum),9,R9)):e.createCommentVNode("",!0)],40,B9)):e.createCommentVNode("",!0)])])]),_:1},8,["http-client","filters","initial-view","capabilities","labels"]))]),e.createVNode(zf,{open:h.value,"selected-count":((De=p.value)==null?void 0:De.mediaIds.length)??0,onCancel:nt,onConfirm:Ha,onError:Q[19]||(Q[19]=ne=>s("error",ne))},null,8,["open","selected-count"]),e.createVNode(Jf,{class:"media-library-shell__inspector",target:m.value,"http-client":l.httpClient,capabilities:J.value,mode:y.value,"in-album-scope":u.value!==null&&u.value!=="unfiled",labels:{removeFromThisAlbum:Le.value.removeFromThisAlbum,removeFromAlbums:lt.value!==null?Le.value.moveToAnotherAlbum:Le.value.addToAlbum},onEdit:gi,onDownload:ha,onMoveToTrash:Hn,onSetAsAlbumCover:Ot,onRemoveFromThisAlbum:uo,onRemoveFromAlbums:Ba,onBulkAddToAlbum:Xa,onBulkCreateAlbum:Xa,onBulkMoveToTrash:la,onMetadataUpdated:Nn,onClose:A},null,8,["target","http-client","capabilities","mode","in-album-scope","labels"])],2),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[ce.value&&I.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"media-album-dialog","data-testid":"media-album-dialog",role:"presentation",onKeydown:mt},[e.createElementVNode("button",{type:"button",class:"media-album-dialog__backdrop","data-testid":"btn-media-album-dialog-backdrop","aria-label":Le.value.closeAlbumDialog,tabindex:"-1",onClick:ct},null,8,L9),e.createElementVNode("section",{ref_key:"albumDialogPanelRef",ref:U,class:"media-album-dialog__panel",role:"dialog","aria-modal":"true","aria-labelledby":"media-album-dialog-title","aria-describedby":V.value==="delete"?"media-album-dialog-delete-description media-album-dialog-error":void 0},[V.value==="edit"?(e.openBlock(),e.createElementBlock("form",{key:0,class:"media-album-dialog__form","data-testid":"media-album-edit-form",onSubmit:Q[22]||(Q[22]=e.withModifiers(ne=>void Ct(),["prevent"]))},[e.createElementVNode("header",U9,[e.createElementVNode("h3",O9,e.toDisplayString(Le.value.editAlbumTitle),1)]),e.createElementVNode("label",z9,[e.createElementVNode("span",null,e.toDisplayString(Le.value.albumNameLabel),1),e.withDirectives(e.createElementVNode("input",{ref_key:"albumEditNameRef",ref:j,"onUpdate:modelValue":Q[20]||(Q[20]=ne=>$.value=ne),type:"text","data-testid":"input-media-album-edit-name",maxlength:$r+16,"aria-invalid":M.value!==""?"true":"false",autocomplete:"off",disabled:_.value},null,8,j9),[[e.vModelText,$.value]])]),e.createElementVNode("label",W9,[e.createElementVNode("span",null,e.toDisplayString(Le.value.albumDescriptionLabel),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":Q[21]||(Q[21]=ne=>C.value=ne),"data-testid":"textarea-media-album-edit-description",rows:"4",disabled:_.value},null,8,Z9),[[e.vModelText,C.value]])]),M.value!==""?(e.openBlock(),e.createElementBlock("p",H9,e.toDisplayString(M.value),1)):e.createCommentVNode("",!0),e.createElementVNode("footer",G9,[e.createElementVNode("button",{type:"button",class:"media-album-dialog__button","data-testid":"btn-media-album-edit-cancel",disabled:_.value,onClick:ct},e.toDisplayString(Le.value.cancelAlbumEdit),9,X9),e.createElementVNode("button",{type:"submit",class:"media-album-dialog__button media-album-dialog__button--primary","data-testid":"btn-media-album-edit-save",disabled:!Vt.value},e.toDisplayString(Le.value.saveAlbum),9,K9)])],32)):(e.openBlock(),e.createElementBlock("div",J9,[e.createElementVNode("header",q9,[e.createElementVNode("h3",Y9,e.toDisplayString(Le.value.deleteAlbumTitle(I.value.name)),1)]),e.createElementVNode("p",Q9,e.toDisplayString(Le.value.deleteAlbumDescription),1),M.value!==""?(e.openBlock(),e.createElementBlock("p",eU,e.toDisplayString(M.value),1)):e.createCommentVNode("",!0),e.createElementVNode("footer",tU,[e.createElementVNode("button",{ref_key:"albumDeleteCancelRef",ref:B,type:"button",class:"media-album-dialog__button","data-testid":"btn-media-album-delete-cancel",disabled:L.value,onClick:ct},e.toDisplayString(Le.value.cancelDeleteAlbum),9,aU),e.createElementVNode("button",{type:"button",class:"media-album-dialog__button media-album-dialog__button--danger","data-testid":"btn-media-album-delete-confirm",disabled:L.value,onClick:Q[23]||(Q[23]=ne=>void Se())},e.toDisplayString(Le.value.confirmDeleteAlbum),9,nU)])]))],8,P9)],32)):e.createCommentVNode("",!0)])),e.createVNode(Wf,{open:g.value,onClose:Q[24]||(Q[24]=ne=>g.value=!1)},null,8,["open"])],10,MP)}}}),iU=Ie(oU,[["__scopeId","data-v-ad1d5942"]]),rU={class:"album-nav-rail__search"},lU={class:"album-nav-rail__sr-only"},sU=["placeholder"],dU={class:"album-nav-rail__primary","aria-label":"Media scopes"},uU={class:"album-nav-rail__count"},cU={class:"album-nav-rail__count"},mU={key:0,class:"album-nav-rail__recent","data-testid":"album-rail-recent","aria-label":"Recent albums"},pU={class:"album-nav-rail__section-label"},fU=["data-testid","onClick"],vU={class:"album-nav-rail__tree"},hU={class:"album-nav-rail__utility"},gU={class:"album-nav-rail__count"},bU=e.defineComponent({__name:"AlbumNavRail",props:{activeAlbumId:{},collapsed:{type:Boolean,default:!1},allowDragDropTarget:{type:Boolean,default:!1},mediaCounts:{default:()=>({})},labels:{default:()=>({})},recentAlbums:{default:()=>[]}},emits:["change-album","create-album","drop-media","open-trash"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(!1),r=e.ref(""),l=e.ref([]),s=e.ref(null),d=e.computed(()=>{var E,w,b,g,D,T;return{allMedia:((E=t.labels)==null?void 0:E.allMedia)??"All media",unfiled:((w=t.labels)==null?void 0:w.unfiled)??"Unfiled",newAlbum:((b=t.labels)==null?void 0:b.newAlbum)??"New album",findAlbum:((g=t.labels)==null?void 0:g.findAlbum)??"Find album...",trash:((D=t.labels)==null?void 0:D.trash)??"Trash",recentSection:((T=t.labels)==null?void 0:T.recentSection)??"Recent"}});function u(E){return typeof E=="number"&&Number.isFinite(E)?String(E):""}function c(E){o("change-album",E.id)}function m(E,w){i.value=!1,o("create-album",w?{name:E,parentId:w}:{name:E})}function p(E){var b;const w=((b=E.dataTransfer)==null?void 0:b.getData("application/x-mediables-media-ids"))??"";if(w.trim()==="")return l.value;try{const g=JSON.parse(w);return Array.isArray(g)?g.filter(D=>typeof D=="string"&&D.trim()!==""):[]}catch{return w.split(",").map(g=>g.trim()).filter(g=>g!=="")}}function f(E,w){t.allowDragDropTarget&&(E.preventDefault(),s.value=w)}function v(){s.value=null}function h(E,w){if(!t.allowDragDropTarget)return;E.preventDefault();const b=p(E);s.value=null,b.length!==0&&o("drop-media",{albumId:w==="all"||w==="unfiled"?null:w,mediaIds:b})}const k=e.computed(()=>({"is-collapsed":t.collapsed}));return(E,w)=>(e.openBlock(),e.createElementBlock("aside",{class:e.normalizeClass(["album-nav-rail",k.value]),"data-testid":"album-rail"},[e.createElementVNode("label",rU,[e.createElementVNode("span",lU,e.toDisplayString(d.value.findAlbum),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[0]||(w[0]=b=>r.value=b),type:"search",placeholder:d.value.findAlbum,"data-testid":"input-album-rail-search"},null,8,sU),[[e.vModelText,r.value]])]),e.createElementVNode("nav",dU,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["album-nav-rail__row",{"is-active":t.activeAlbumId===null,"is-drop-target":s.value==="all"}]),"data-testid":"album-rail-row-all",onClick:w[1]||(w[1]=b=>o("change-album",null)),onDragover:w[2]||(w[2]=b=>f(b,"all")),onDragleave:v,onDrop:w[3]||(w[3]=b=>h(b,"all"))},[e.createElementVNode("span",null,e.toDisplayString(d.value.allMedia),1),e.createElementVNode("span",uU,e.toDisplayString(u(t.mediaCounts.all)),1)],34),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["album-nav-rail__row",{"is-active":t.activeAlbumId==="unfiled","is-drop-target":s.value==="unfiled"}]),"data-testid":"album-rail-row-unfiled",onClick:w[4]||(w[4]=b=>o("change-album","unfiled")),onDragover:w[5]||(w[5]=b=>f(b,"unfiled")),onDragleave:v,onDrop:w[6]||(w[6]=b=>h(b,"unfiled"))},[e.createElementVNode("span",null,e.toDisplayString(d.value.unfiled),1),e.createElementVNode("span",cU,e.toDisplayString(u(t.mediaCounts.unfiled)),1)],34)]),t.recentAlbums.length>0?(e.openBlock(),e.createElementBlock("section",mU,[e.createElementVNode("p",pU,e.toDisplayString(d.value.recentSection),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.recentAlbums,b=>(e.openBlock(),e.createElementBlock("button",{key:`recent-${b.id}`,type:"button",class:e.normalizeClass(["album-nav-rail__row album-nav-rail__row--recent",{"is-active":t.activeAlbumId===b.id}]),"data-testid":`album-rail-recent-${b.id}`,onClick:g=>o("change-album",b.id)},[e.createElementVNode("span",null,e.toDisplayString(b.name),1)],10,fU))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",vU,[e.createVNode(zl,{"model-value":t.activeAlbumId==="unfiled"?null:t.activeAlbumId,mode:"rail",compact:!0,draggable:!1,onAlbumSelected:c},null,8,["model-value"])]),e.createElementVNode("button",{type:"button",class:"album-nav-rail__new","data-testid":"btn-album-rail-new",onClick:w[7]||(w[7]=b=>i.value=!0)}," + "+e.toDisplayString(d.value.newAlbum),1),e.createVNode(Zd,{open:i.value,onCancel:w[8]||(w[8]=b=>i.value=!1),onCreate:m},null,8,["open"]),e.createElementVNode("div",hU,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["album-nav-rail__row album-nav-rail__row--utility",{"is-drop-target":s.value==="trash"}]),"data-testid":"album-rail-row-trash",onClick:w[9]||(w[9]=b=>o("open-trash")),onDragover:w[10]||(w[10]=b=>f(b,"trash")),onDragleave:v,onDrop:w[11]||(w[11]=b=>h(b,"trash"))},[e.createElementVNode("span",null,e.toDisplayString(d.value.trash),1),e.createElementVNode("span",gU,e.toDisplayString(u(t.mediaCounts.trash)),1)],34)])],2))}}),yU=Ie(bU,[["__scopeId","data-v-0913c5b6"]]),wU=a=>`/v1/media/${a}/hide`,kU=a=>`/v1/media/${a}/unhide`,_U="/v1/media/bulk-hide",EU="/v1/media/bulk-unhide";function SU(a){const n=e.ref(!1),t=a.hideEndpoint??wU,o=a.unhideEndpoint??kU,i=a.bulkHideEndpoint??_U,r=a.bulkUnhideEndpoint??EU;async function l(d){n.value=!0;try{await a.httpClient.post(d,{})}finally{n.value=!1}}async function s(d,u){if(u.length===0)throw new Error("media_uuids must not be empty");n.value=!0;try{const c=await a.httpClient.post(d,{media_uuids:u});return{updated_count:Number((c==null?void 0:c.updated_count)??0),skipped_count:Number((c==null?void 0:c.skipped_count)??0)}}finally{n.value=!1}}return{hide:d=>l(t(d)),unhide:d=>l(o(d)),bulkHide:d=>s(i,d),bulkUnhide:d=>s(r,d),isMutating:n}}const xU={key:0,class:"media-selection-tray","data-testid":"media-selection-tray"},CU={class:"media-selection-tray__header"},VU={class:"media-selection-tray__title"},NU={class:"media-selection-tray__items"},TU={class:"media-selection-tray__item-preview"},BU=["src","alt"],MU={key:1,class:"media-selection-tray__file-icon"},$U={class:"media-selection-tray__item-copy"},IU=["aria-label","onClick"],DU=e.defineComponent({__name:"MediaSelectionTray",props:{items:{},selectedCountLabel:{default:"Selected items"},dismissLabel:{default:"Remove"}},emits:["remove"],setup(a,{emit:n}){const t=n;function o(r){var l;return r?r.thumbnail_url??((l=r.conversion_urls)==null?void 0:l.thumb)??r.preview_url??r.original_url??r.url??null:null}function i(r){return r!=null&&r.mime_type?r.mime_type.startsWith("image/"):!1}return(r,l)=>r.items.length>0?(e.openBlock(),e.createElementBlock("section",xU,[e.createElementVNode("header",CU,[e.createElementVNode("h3",VU,e.toDisplayString(r.selectedCountLabel),1)]),e.createElementVNode("div",NU,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.items,s=>{var d,u,c,m;return e.openBlock(),e.createElementBlock("article",{key:s.id,class:"media-selection-tray__item"},[e.createElementVNode("div",TU,[i(s.media)&&o(s.media)?(e.openBlock(),e.createElementBlock("img",{key:0,src:o(s.media),alt:((d=s.media)==null?void 0:d.alt_text)??((u=s.media)==null?void 0:u.file_name)??"Selected media",class:"media-selection-tray__thumb"},null,8,BU)):(e.openBlock(),e.createElementBlock("div",MU,[...l[0]||(l[0]=[e.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[e.createElementVNode("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e.createElementVNode("polyline",{points:"14 2 14 8 20 8"})],-1)])]))]),e.createElementVNode("div",$U,[e.createElementVNode("strong",null,e.toDisplayString(((c=s.media)==null?void 0:c.file_name)??s.id),1),e.createElementVNode("span",null,e.toDisplayString(s.status),1)]),e.createElementVNode("button",{type:"button",class:"media-selection-tray__remove","aria-label":`${r.dismissLabel} ${((m=s.media)==null?void 0:m.file_name)??s.id}`,onClick:p=>t("remove",s.id)},e.toDisplayString(r.dismissLabel),9,IU)])}),128))])])):e.createCommentVNode("",!0)}}),FU=Ie(DU,[["__scopeId","data-v-f2a3d69d"]]);function tu(a={}){const n=e.ref(!1),t=e.ref(!1),o=e.ref(null),i=e.ref(null),r=e.ref(0),l=e.ref(0),s=e.ref(null),d=e.ref(null),u=e.computed(()=>d.value!==null),c=w=>{if(r.value++,d.value=null,i.value=null,t.value=!1,w!=null&&typeof w=="object"&&!(w instanceof Blob)&&("image"in w||"state"in w||"sessionKey"in w)){const b=w;o.value=b.image??null,s.value=b.state??null,l.value=b.sessionKey??r.value}else o.value=w??null,s.value=null,l.value=r.value;n.value=!0},m=()=>{n.value=!1,o.value=null,i.value=null,d.value=null,t.value=!1,s.value=null},p=async w=>{try{return t.value=!0,i.value=w,a.onSave&&await a.onSave(w),m(),w}catch(b){const g=b;throw d.value=g,a.onError&&a.onError(g),g}finally{t.value=!1}},f=()=>{a.onCancel&&a.onCancel(),m()},v=w=>{d.value=w,a.onError&&a.onError(w)},h=()=>{d.value=null},k=()=>i.value,E=e.computed(()=>n.value&&i.value!==null&&!t.value);return{isOpen:n,isProcessing:t,uploadedImage:o,editedImage:i,sessionKey:l,initialState:s,error:d,hasError:u,hasUnsavedChanges:E,open:c,close:m,handleSave:p,handleCancel:f,handleError:v,clearError:h,getEditedImage:k}}let _s=null;function AU(a){return _s||(_s=tu(a)),_s}function RU(a){return n=>new Promise((t,o)=>{tu({...a,onSave:async r=>{a!=null&&a.onSave&&await a.onSave(r),t(r)},onError:r=>{a!=null&&a.onError&&a.onError(r),o(r)},onCancel:()=>{a!=null&&a.onCancel&&a.onCancel(),o(new Error("User cancelled"))}}).open(n)})}function au(a){return a.filter(n=>n.media&&!n.markedForRemoval).map((n,t)=>{const o={uuid:n.media.uuid,name:n.name,order:t};return n.customProperties&&(o.custom_properties=n.customProperties),o})}function md(a){return a.map((n,t)=>{const o={media:n,clientId:n.uuid,name:n.name||n.file_name,order:t};return n.custom_properties&&(o.customProperties=n.custom_properties),o})}function nu(a){if(a){const t={};a.apiBaseUrl!==void 0&&(t.apiBaseUrl=a.apiBaseUrl),a.isAdmin!==void 0&&(t.isAdmin=a.isAdmin),ai(t)}return{name:"mediables",async upload(t,o){const r=await ja().uploadFile(t,{collection:(o==null?void 0:o.collection)||"default",customProperties:o==null?void 0:o.customProperties});if(!r)throw new Error("Upload failed: No media returned");return{media:r,uuid:r.uuid}},async attach(t,o){await ja().attachMedia(o.modelType,String(o.modelId),[t],o.collection||"images")},async attachMany(t,o){await ja().attachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async detach(t,o){await ja().detachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async reorder(t,o){await ja().reorderMedia(t.modelType,String(t.modelId),o,t.collection||"images")},async fetchModelMedia(t){return await ja().fetchModelMedia(t.modelType,String(t.modelId),t.collection||"images")},getUrl(t,o){return ja().getMediaUrl(t,o)},getThumbnailUrl(t){var o,i;return(o=t.conversion_urls)!=null&&o.thumb?t.conversion_urls.thumb:(i=t.conversion_urls)!=null&&i.thumbnail?t.conversion_urls.thumbnail:t.thumbnail_url?t.thumbnail_url:t.original_url||t.url||""},async delete(t){await ja().deleteMedia(t)},async update(t,o){const r=await ja().updateMedia(t,o);if(!r)throw new Error("Update failed: No media returned");return r},configure(t){const o={};t.apiBaseUrl!==void 0&&(o.apiBaseUrl=t.apiBaseUrl),t.isAdmin!==void 0&&(o.isAdmin=t.isAdmin),ai(o)}}}let Zr=null;function LU(){return Zr||(Zr=nu()),Zr}function PU(){Zr=null}const UU={apiBaseUrl:"/media-library-pro"};function Ir(){var a;return typeof document>"u"?null:((a=document.querySelector('meta[name="csrf-token"]'))==null?void 0:a.getAttribute("content"))||null}function Es(a){const n={uuid:a.uuid,file_name:a.fileName||a.name,mime_type:`application/${a.extension}`,size:a.size,disk:"public",original_url:a.original_url||"",created_at:new Date().toISOString(),updated_at:new Date().toISOString()};return a.name&&(n.name=a.name),a.original_url&&(n.url=a.original_url),a.preview_url&&(n.thumbnail_url=a.preview_url,n.preview_url=a.preview_url),a.custom_properties&&(n.custom_properties=a.custom_properties),n}function ou(a){const n={...UU,...a};return{name:"spatie",async upload(o,i){const r=new FormData;r.append("file",o),i!=null&&i.collection&&r.append("collection",i.collection),i!=null&&i.customProperties&&r.append("custom_properties",JSON.stringify(i.customProperties));const l={Accept:"application/json",...n.headers},s=n.csrfToken||Ir();s&&(l["X-CSRF-TOKEN"]=s);const d={method:"POST",headers:l,body:r,credentials:"include"};i!=null&&i.signal&&(d.signal=i.signal);const u=await fetch(`${n.apiBaseUrl}/uploads`,d);if(!u.ok){const p=await u.json().catch(()=>({message:"Upload failed"}));throw new Error(p.message||`HTTP ${u.status}`)}const c=await u.json(),m=Es(c);return i!=null&&i.onProgress&&i.onProgress(100),{media:m,uuid:c.uuid}},async attach(o,i){},async attachMany(o,i){},async detach(o,i){},async reorder(o,i){},async fetchModelMedia(o){const i={Accept:"application/json",...n.headers},r=n.csrfToken||Ir();r&&(i["X-CSRF-TOKEN"]=r);const l=new URLSearchParams;l.append("model_type",o.modelType),l.append("model_id",String(o.modelId)),o.collection&&l.append("collection",o.collection);try{const s=await fetch(`${n.apiBaseUrl}/media?${l}`,{method:"GET",headers:i,credentials:"include"});if(!s.ok)throw new Error(`HTTP ${s.status}`);return(await s.json()).map(Es)}catch{return[]}},getUrl(o,i){var r;if(i){const l=(r=o.conversion_urls)==null?void 0:r[i];if(l)return l}return o.original_url||o.url||""},getThumbnailUrl(o){var i,r;return o.preview_url?o.preview_url:(i=o.conversion_urls)!=null&&i.preview?o.conversion_urls.preview:o.thumbnail_url?o.thumbnail_url:(r=o.conversion_urls)!=null&&r.thumb?o.conversion_urls.thumb:o.original_url||o.url||""},async delete(o){const i={Accept:"application/json",...n.headers},r=n.csrfToken||Ir();r&&(i["X-CSRF-TOKEN"]=r);const l=await fetch(`${n.apiBaseUrl}/uploads/${o}`,{method:"DELETE",headers:i,credentials:"include"});if(!l.ok){const s=await l.json().catch(()=>({message:"Delete failed"}));throw new Error(s.message||`HTTP ${l.status}`)}},async update(o,i){const r={Accept:"application/json","Content-Type":"application/json",...n.headers},l=n.csrfToken||Ir();l&&(r["X-CSRF-TOKEN"]=l);const s=await fetch(`${n.apiBaseUrl}/uploads/${o}`,{method:"PATCH",headers:r,body:JSON.stringify(i),credentials:"include"});if(!s.ok){const u=await s.json().catch(()=>({message:"Update failed"}));throw new Error(u.message||`HTTP ${s.status}`)}const d=await s.json();return Es(d)},configure(o){Object.assign(n,o)}}}let Hr=null;function OU(){return Hr||(Hr=ou()),Hr}function zU(){Hr=null}function av(a,n){switch(a){case"mediables":return nu(n);case"spatie":return ou(n);default:throw new Error(`Unknown adapter: ${a}`)}}function nv(a={}){const{enabled:n=!0,onReorder:t,onDragStart:o,onDragEnd:i,draggingClass:r="is-dragging",dropTargetClass:l="is-drop-target"}=a,s=e.ref({isDragging:!1,dragIndex:null,dropIndex:null,draggedItem:null}),d=e.ref(!1);let u=null;function c(w,b,g){n&&("dataTransfer"in w&&w.dataTransfer&&(w.dataTransfer.effectAllowed="move",w.dataTransfer.setData("text/plain",String(g))),u=w.target,u&&u.classList.add(r),s.value={isDragging:!0,dragIndex:g,dropIndex:g,draggedItem:b},d.value=!0,o==null||o(b,g))}function m(w,b){var g;if(!(!n||!s.value.isDragging)&&(w.preventDefault(),s.value.dropIndex!==b)){const D=document.querySelector(`.${l}`);D==null||D.classList.remove(l);const T=(g=w.target)==null?void 0:g.closest("[data-index]");T==null||T.classList.add(l),s.value.dropIndex=b}}function p(){if(!s.value.isDragging)return;const{dragIndex:w,dropIndex:b,draggedItem:g}=s.value;u&&u.classList.remove(r);const D=document.querySelector(`.${l}`);D==null||D.classList.remove(l),w!==null&&b!==null&&w!==b&&g&&(t==null||t({fromIndex:w,toIndex:b,item:g})),v(),i==null||i()}function f(){u&&u.classList.remove(r);const w=document.querySelector(`.${l}`);w==null||w.classList.remove(l),v(),i==null||i()}function v(){s.value={isDragging:!1,dragIndex:null,dropIndex:null,draggedItem:null},d.value=!1,u=null}function h(w,b,g){const D=[...w],[T]=D.splice(b,1);return D.splice(g,0,T),D.map((F,V)=>({...F,order:V}))}function k(w,b){return{draggable:n,"data-index":b,onDragstart:g=>c(g,w,b),onDragover:g=>m(g,b),onDragend:()=>p(),onDrop:g=>{g.preventDefault(),p()}}}function E(w){w.key==="Escape"&&s.value.isDragging&&f()}return e.onMounted(()=>{document.addEventListener("keydown",E)}),e.onUnmounted(()=>{document.removeEventListener("keydown",E),f()}),{dragState:s,isDragging:d,startDrag:c,handleDragOver:m,endDrag:p,cancelDrag:f,reorderItems:h,getDragProps:k}}function Zl(a={}){const{initialItems:n=[],modelType:t,modelId:o,collection:i="images",maxItems:r,maxFileSize:l,acceptedMimeTypes:s,sortable:d=!0,disabled:u=!1,rules:c={},adapterType:m="mediables",adapter:p,maxConcurrentUploads:f=3,onChange:v,onUpload:h,onUploadComplete:k,onUploadError:E,onRemove:w,onReorder:b,onError:g,onReadyToSubmitChange:D}=a,T={maxItems:r,maxFileSize:l,acceptedMimeTypes:s,...c},F=p||av(m),V=e.ref([]),I=e.ref(!1),$=e.ref([]);function C(be){if(be.length===0)return[];const Ce=be[0];return"media"in Ce&&"clientId"in Ce?be:md(be)}V.value=C(n);const{acceptString:M,canAddFiles:_}=Xd({rules:T}),L=Kd({adapter:F,maxConcurrent:f,rules:T,collection:i,onUploadStart:be=>{h==null||h(be)},onUploadComplete:(be,Ce)=>{const Ee=V.value.findIndex(Ae=>Ae.clientId===be.id);Ee!==-1&&(V.value[Ee]={...V.value[Ee],media:Ce,name:Ce.name||Ce.file_name,upload:{...be,status:"completed"}}),k==null||k(Ce)},onUploadError:(be,Ce)=>{const Ee=V.value.findIndex(Ae=>Ae.clientId===be.id);Ee!==-1&&(V.value[Ee]={...V.value[Ee],upload:{...be,status:"error",error:Ce.message},errors:[{field:"upload",message:Ce.message,code:"UPLOAD_ERROR"}]}),E==null||E({file:be.file,message:Ce.message})},onQueueComplete:()=>{v==null||v(V.value)}}),{dragState:j,getDragProps:B,reorderItems:U}=nv({enabled:d&&!u,onReorder:be=>{V.value=U(V.value,be.fromIndex,be.toIndex),b==null||b(V.value),v==null||v(V.value)}}),S=e.computed(()=>L.isUploading.value),R=e.computed(()=>!L.isUploading.value&&L.pendingCount.value===0),O=e.computed(()=>r?V.value.length>=r:!1),K=e.computed(()=>au(V.value)),se=e.computed(()=>V.value.length),xe=e.computed(()=>r?Math.max(0,r-V.value.length):1/0);e.watch(R,be=>{D==null||D(be)});function ue(be){V.value=C(be),v==null||v(V.value)}async function le(be){if(u)return;const Ce=Array.from(be);if(!_(Ce.length,V.value.length)){const ot={field:"count",message:`Maximum ${r} files allowed`,code:"MAX_ITEMS"};$.value=[ot],g==null||g([ot]);return}const Ee=await L.addFiles(Ce),Ae=V.value.length,Ue=Ee.map((ot,it)=>({...ot,order:Ae+it}));V.value=[...V.value,...Ue],v==null||v(V.value)}function H(be){u||(be.upload&&(be.upload.status==="uploading"||be.upload.status==="pending")&&L.cancelUpload(be.clientId),V.value=V.value.filter(Ce=>Ce.clientId!==be.clientId),V.value=V.value.map((Ce,Ee)=>({...Ce,order:Ee})),w==null||w(be),v==null||v(V.value))}function y(be){const Ce=V.value.find(Ee=>Ee.clientId===be);Ce&&H(Ce)}function A(){u||(L.clearAll(),V.value=[],v==null||v(V.value))}function W(be,Ce){u||!d||(V.value=U(V.value,be,Ce),b==null||b(V.value),v==null||v(V.value))}function q(be,Ce){if(u)return;const Ee=V.value.findIndex(Ae=>Ae.clientId===be);Ee!==-1&&(V.value[Ee]={...V.value[Ee],...Ce},v==null||v(V.value))}function de(be){L.cancelUpload(be),y(be)}async function Pe(be){await L.retryUpload(be)}async function ge(){if(!t||!o)throw new Error("modelType and modelId are required for save()");const be={modelType:t,modelId:o,collection:i},Ce=V.value.filter(Ee=>Ee.media&&!Ee.markedForRemoval).map(Ee=>Ee.media.uuid);I.value=!0;try{await F.attachMany(Ce,be),await F.reorder(be,Ce)}finally{I.value=!1}}async function ke(){if(!t||!o)throw new Error("modelType and modelId are required for load()");const be={modelType:t,modelId:o,collection:i};I.value=!0;try{const Ce=await F.fetchModelMedia(be);V.value=md(Ce),v==null||v(V.value)}finally{I.value=!1}}return e.onMounted(()=>{t&&o&&n.length===0&&ke().catch(console.error)}),e.onUnmounted(()=>{L.clearAll()}),{items:V,setItems:ue,addFiles:le,removeItem:H,removeItemById:y,clearAll:A,reorderItems:W,updateItem:q,cancelUpload:de,retryUpload:Pe,save:ge,load:ke,isLoading:I,isUploading:S,isReadyToSubmit:R,isAtMaxItems:O,errors:$,dragState:j,getDragProps:B,adapter:F,formValues:K,acceptString:M,count:se,remainingSlots:xe}}const jU=["aria-disabled"],WU=["accept","multiple","disabled"],ZU={class:"media-dropzone__content"},HU={class:"media-dropzone__title"},GU={class:"media-dropzone__subtitle"},XU=["disabled"],KU={key:0,class:"media-dropzone__helper"},JU=e.defineComponent({__name:"MediaCollectionDropzone",props:{accept:{default:"*"},multiple:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},maxFileSize:{},maxItems:{},title:{default:"Drop files here"},subtitle:{default:"or click to browse"},buttonText:{default:"Select files"}},emits:["files"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(!1),r=e.ref(null),l=e.computed(()=>({"media-dropzone":!0,"media-dropzone--drag-over":i.value,"media-dropzone--disabled":t.disabled})),s=e.computed(()=>{const h=[];return t.maxFileSize&&h.push(`Max size: ${cl(t.maxFileSize)}`),t.maxItems&&t.maxItems>1&&h.push(`Max files: ${t.maxItems}`),h.join(" • ")});function d(h){h.preventDefault(),!t.disabled&&(i.value=!0)}function u(h){h.preventDefault(),i.value=!1}function c(h){h.preventDefault()}function m(h){var E;if(h.preventDefault(),i.value=!1,t.disabled)return;const k=(E=h.dataTransfer)==null?void 0:E.files;k&&k.length>0&&o("files",k)}function p(){var h;t.disabled||(h=r.value)==null||h.click()}function f(h){const k=h.target,E=k.files;E&&E.length>0&&o("files",E),k.value=""}function v(h){(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),p())}return(h,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(l.value),role:"button",tabindex:"0","aria-disabled":h.disabled,"aria-label":"Upload files",onClick:p,onKeydown:v,onDragenter:d,onDragleave:u,onDragover:c,onDrop:m},[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",accept:h.accept,multiple:h.multiple,disabled:h.disabled,class:"media-dropzone__input",onChange:f},null,40,WU),e.createElementVNode("div",ZU,[e.renderSlot(h.$slots,"icon",{},()=>[k[0]||(k[0]=e.createElementVNode("svg",{class:"media-dropzone__icon",xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.createElementVNode("polyline",{points:"17 8 12 3 7 8"}),e.createElementVNode("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1))],!0),e.createElementVNode("p",HU,[e.renderSlot(h.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(h.title),1)],!0)]),e.createElementVNode("p",GU,[e.renderSlot(h.$slots,"subtitle",{},()=>[e.createTextVNode(e.toDisplayString(h.subtitle),1)],!0)]),e.createElementVNode("button",{type:"button",class:"media-dropzone__button",disabled:h.disabled,onClick:e.withModifiers(p,["stop"])},[e.renderSlot(h.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(h.buttonText),1)],!0)],8,XU),s.value?(e.openBlock(),e.createElementBlock("p",KU,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0)])],42,jU))}}),iu=Ie(JU,[["__scopeId","data-v-b1366c1e"]]),qU=["data-index"],YU={key:0,class:"media-item__drag-handle","aria-label":"Drag to reorder",role:"button",tabindex:"0"},QU={class:"media-item__thumbnail"},e7=["src","alt"],t7={key:1,class:"media-item__file-icon"},a7={key:2,class:"media-item__progress-overlay"},n7={class:"media-item__progress-text"},o7={key:3,class:"media-item__processing-overlay"},i7={key:4,class:"media-item__error-overlay"},r7={class:"media-item__info"},l7=["title"],s7={key:0,class:"media-item__size"},d7={key:1,class:"media-item__error-message"},u7={class:"media-item__actions"},c7=["disabled"],m7=["disabled"],p7=["disabled"],f7=["disabled"],v7=e.defineComponent({__name:"MediaCollectionItem",props:{item:{},adapter:{},disabled:{type:Boolean,default:!1},sortable:{type:Boolean,default:!1},showRemove:{type:Boolean,default:!0},showEdit:{type:Boolean,default:!1},index:{default:0}},emits:["remove","edit","retry","cancel"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(!1),r=e.computed(()=>{var b;return(b=t.item.upload)!=null&&b.previewUrl?t.item.upload.previewUrl:t.item.media?t.adapter.getThumbnailUrl(t.item.media):null}),l=e.computed(()=>{var b,g,D;return((b=t.item.upload)==null?void 0:b.status)==="uploading"||((g=t.item.upload)==null?void 0:g.status)==="pending"||((D=t.item.upload)==null?void 0:D.status)==="queued"}),s=e.computed(()=>{var b;return((b=t.item.upload)==null?void 0:b.status)==="processing"}),d=e.computed(()=>{var b;return((b=t.item.upload)==null?void 0:b.status)==="error"||t.item.errors&&t.item.errors.length>0}),u=e.computed(()=>{var b;return(b=t.item.upload)!=null&&b.error?t.item.upload.error:t.item.errors&&t.item.errors.length>0?t.item.errors[0].message:null}),c=e.computed(()=>{var b;return((b=t.item.upload)==null?void 0:b.progress)||0}),m=e.computed(()=>{var b;return t.item.name||((b=t.item.media)==null?void 0:b.file_name)||"Unknown file"}),p=e.computed(()=>{var F,V;const b=((F=t.item.media)==null?void 0:F.size)||((V=t.item.upload)==null?void 0:V.file.size);if(!b)return"";const g=1024,D=["Bytes","KB","MB","GB"],T=Math.floor(Math.log(b)/Math.log(g));return parseFloat((b/Math.pow(g,T)).toFixed(2))+" "+D[T]}),f=e.computed(()=>{var g,D;const b=((g=t.item.media)==null?void 0:g.mime_type)||((D=t.item.upload)==null?void 0:D.file.type);return b==null?void 0:b.startsWith("image/")}),v=e.computed(()=>({"media-item":!0,"media-item--uploading":l.value,"media-item--processing":s.value,"media-item--error":d.value,"media-item--disabled":t.disabled,"media-item--sortable":t.sortable}));function h(){t.disabled||o("remove",t.item)}function k(){t.disabled||o("edit",t.item)}function E(){t.disabled||o("retry",t.item)}function w(){t.disabled||o("cancel",t.item)}return(b,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(v.value),"data-index":b.index,onMouseenter:g[0]||(g[0]=D=>i.value=!0),onMouseleave:g[1]||(g[1]=D=>i.value=!1)},[b.sortable&&!b.disabled?(e.openBlock(),e.createElementBlock("div",YU,[...g[2]||(g[2]=[e.createStaticVNode('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-v-ff81c9ec><circle cx="9" cy="5" r="1" data-v-ff81c9ec></circle><circle cx="9" cy="12" r="1" data-v-ff81c9ec></circle><circle cx="9" cy="19" r="1" data-v-ff81c9ec></circle><circle cx="15" cy="5" r="1" data-v-ff81c9ec></circle><circle cx="15" cy="12" r="1" data-v-ff81c9ec></circle><circle cx="15" cy="19" r="1" data-v-ff81c9ec></circle></svg>',1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",QU,[r.value&&f.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:r.value,alt:m.value,class:"media-item__image"},null,8,e7)):(e.openBlock(),e.createElementBlock("div",t7,[...g[3]||(g[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e.createElementVNode("polyline",{points:"14 2 14 8 20 8"})],-1)])])),l.value?(e.openBlock(),e.createElementBlock("div",a7,[e.createElementVNode("div",{class:"media-item__progress-bar",style:e.normalizeStyle({width:`${c.value}%`})},null,4),e.createElementVNode("span",n7,e.toDisplayString(c.value)+"%",1)])):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("div",o7,[...g[4]||(g[4]=[e.createElementVNode("div",{class:"media-item__spinner","aria-label":"Processing"},null,-1)])])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",i7,[...g[5]||(g[5]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10"}),e.createElementVNode("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),e.createElementVNode("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})],-1)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",r7,[e.createElementVNode("span",{class:"media-item__name",title:m.value},e.toDisplayString(m.value),9,l7),p.value?(e.openBlock(),e.createElementBlock("span",s7,e.toDisplayString(p.value),1)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("span",d7,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",u7,[l.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-item__action media-item__action--cancel",disabled:b.disabled,"aria-label":"Cancel upload",onClick:w},[...g[6]||(g[6]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,c7)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"media-item__action media-item__action--retry",disabled:b.disabled,"aria-label":"Retry upload",onClick:E},[...g[7]||(g[7]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("polyline",{points:"23 4 23 10 17 10"}),e.createElementVNode("path",{d:"M20.49 15a9 9 0 1 1-2.12-9.36L23 10"})],-1)])],8,m7)):e.createCommentVNode("",!0),b.showEdit&&b.item.media&&!l.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"media-item__action media-item__action--edit",disabled:b.disabled,"aria-label":"Edit",onClick:k},[...g[8]||(g[8]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e.createElementVNode("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,p7)):e.createCommentVNode("",!0),b.showRemove?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"media-item__action media-item__action--remove",disabled:b.disabled,"aria-label":"Remove",onClick:h},[...g[9]||(g[9]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("polyline",{points:"3 6 5 6 21 6"}),e.createElementVNode("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])],8,f7)):e.createCommentVNode("",!0)])],42,qU))}}),ru=Ie(v7,[["__scopeId","data-v-ff81c9ec"]]),h7=["aria-label"],g7=["draggable","data-index","onDragstart","onDragover","onDragend","onDrop"],b7={key:0,class:"media-collection__footer"},y7={class:"media-collection__count"},w7={key:0},k7={key:0,class:"media-collection__uploading"},_7=["name","value"],E7=["name","value"],S7=["name","value"],x7=["name","value"],C7={key:3,class:"media-collection__errors",role:"alert","aria-live":"polite"},V7=e.defineComponent({__name:"MediaCollection",props:{modelValue:{default:()=>[]},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxItems:{},maxFileSize:{},acceptedMimeTypes:{},sortable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","reorder","is-ready-to-submit-change","validation-error"],setup(a,{emit:n}){const t=a,o=n,i={initialItems:t.modelValue,modelType:t.modelType,modelId:t.modelId,collection:t.collection,maxItems:t.maxItems,maxFileSize:t.maxFileSize,acceptedMimeTypes:t.acceptedMimeTypes,sortable:t.sortable,disabled:t.disabled,rules:t.rules,adapterType:t.adapter,onChange:S=>{o("update:modelValue",S),o("change",S)},onUpload:S=>{o("upload",S)},onUploadComplete:S=>{o("upload-complete",S)},onUploadError:S=>{o("upload-error",S)},onRemove:S=>{o("remove",S)},onReorder:S=>{o("reorder",S)},onError:S=>{o("validation-error",S)},onReadyToSubmitChange:S=>{o("is-ready-to-submit-change",S)}},{items:r,setItems:l,addFiles:s,removeItem:d,reorderItems:u,cancelUpload:c,retryUpload:m,isLoading:p,isUploading:f,isAtMaxItems:v,errors:h,dragState:k,getDragProps:E,adapter:w,formValues:b,acceptString:g,count:D,remainingSlots:T}=Zl(i);e.provide("mediaAdapter",w),e.provide("mediaCollection",{items:r,addFiles:s,removeItem:d,reorderItems:u}),e.watch(()=>t.modelValue,S=>{S!==r.value&&l(S)},{deep:!0});const F=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!v.value),V=e.computed(()=>({"media-collection":!0,"media-collection--disabled":t.disabled,"media-collection--readonly":t.readonly,"media-collection--loading":p.value,"media-collection--has-items":r.value.length>0,"media-collection--dragging":k.value.isDragging}));function I(S){s(S)}function $(S){d(S)}function C(S){m(S.clientId)}function M(S){c(S.clientId)}function _(S){}function L(S,R,O){if(!t.sortable||t.disabled)return;const K=E(R,O);K.onDragstart&&K.onDragstart(S)}function j(S,R){if(!t.sortable||t.disabled)return;S.preventDefault();const O=r.value[R],K=E(O,R);K.onDragover&&K.onDragover(S)}function B(S,R){const O=E(S,R);O.onDragend&&O.onDragend()}function U(S,R){S.preventDefault();const O=r.value[R],K=E(O,R);K.onDrop&&K.onDrop(S)}return(S,R)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(V.value)},[e.renderSlot(S.$slots,"dropzone",{addFiles:e.unref(s)},()=>[F.value?(e.openBlock(),e.createBlock(iu,{key:0,accept:e.unref(g),multiple:S.maxItems!==1,disabled:S.disabled,"max-file-size":S.maxFileSize,"max-items":e.unref(T),onFiles:I},null,8,["accept","multiple","disabled","max-file-size","max-items"])):e.createCommentVNode("",!0)],!0),e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"media-collection__list",role:"list","aria-label":`${e.unref(D)} media items`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r),(O,K)=>e.renderSlot(S.$slots,"item",{key:O.clientId,item:O,index:K,remove:()=>$(O)},()=>[e.createElementVNode("div",{class:e.normalizeClass(["media-collection__item-wrapper",{"media-collection__item-wrapper--drag-over":e.unref(k).dropIndex===K}]),draggable:S.sortable&&!S.disabled,"data-index":K,onDragstart:se=>L(se,O,K),onDragover:se=>j(se,K),onDragend:se=>B(O,K),onDrop:se=>U(se,K)},[e.createVNode(ru,{item:O,adapter:e.unref(w),disabled:S.disabled,sortable:S.sortable,"show-remove":!S.readonly,"show-edit":!1,index:K,onRemove:$,onRetry:C,onCancel:M,onEdit:_},null,8,["item","adapter","disabled","sortable","show-remove","index"])],42,g7)],!0)),128))],8,h7)):F.value?e.createCommentVNode("",!0):e.renderSlot(S.$slots,"empty",{key:1},()=>[R[0]||(R[0]=e.createElementVNode("div",{class:"media-collection__empty"},[e.createElementVNode("p",null,"No files uploaded")],-1))],!0),e.renderSlot(S.$slots,"footer",{count:e.unref(D),isUploading:e.unref(f)},()=>[e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",b7,[e.createElementVNode("span",y7,[e.createTextVNode(e.toDisplayString(e.unref(D))+" "+e.toDisplayString(e.unref(D)===1?"file":"files")+" ",1),S.maxItems?(e.openBlock(),e.createElementBlock("span",w7," / "+e.toDisplayString(S.maxItems)+" max",1)):e.createCommentVNode("",!0)]),e.unref(f)?(e.openBlock(),e.createElementBlock("span",k7," Uploading... ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],!0),S.generateFormFields?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b),(O,K)=>(e.openBlock(),e.createElementBlock("input",{key:`${S.name}-${O.uuid}`,type:"hidden",name:`${S.name}[${K}][uuid]`,value:O.uuid},null,8,_7))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b),(O,K)=>(e.openBlock(),e.createElementBlock("input",{key:`${S.name}-${O.uuid}-name`,type:"hidden",name:`${S.name}[${K}][name]`,value:O.name},null,8,E7))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b),(O,K)=>(e.openBlock(),e.createElementBlock("input",{key:`${S.name}-${O.uuid}-order`,type:"hidden",name:`${S.name}[${K}][order]`,value:O.order},null,8,S7))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b),(O,K)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`${S.name}-${O.uuid}-props`},[O.custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${S.name}[${K}][custom_properties]`,value:JSON.stringify(O.custom_properties)},null,8,x7)):e.createCommentVNode("",!0)],64))),128))],64)):e.createCommentVNode("",!0),e.unref(h).length>0?(e.openBlock(),e.createElementBlock("div",C7,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),O=>(e.openBlock(),e.createElementBlock("p",{key:O.code||O.message,class:"media-collection__error"},e.toDisplayString(O.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),N7=Ie(V7,[["__scopeId","data-v-10a5bfff"]]);function lu(a={}){const{initialItem:n,onChange:t,onReplace:o,onUpload:i,onUploadComplete:r,onUploadError:l,onRemove:s,onError:d,onReadyToSubmitChange:u,...c}=a,p={...c,initialItems:n?[n]:[],maxItems:1,sortable:!1,onChange:F=>{t==null||t(F[0]||null)},onUpload:i,onUploadComplete:r,onUploadError:l,onRemove:s,onError:d,onReadyToSubmitChange:u},f=Zl(p),v=e.computed(()=>f.items.value[0]||null),h=e.computed(()=>v.value!==null),k=e.computed(()=>f.formValues.value[0]||null);function E(F){F===null?f.clearAll():f.setItems([F])}async function w(F){const V=v.value;V&&f.removeItem(V),await f.addFiles([F])}function b(){v.value&&f.removeItem(v.value)}async function g(F){const V=v.value;V&&f.removeItem(V),await f.addFiles([F]);const I=f.items.value[0];I&&(o==null||o(V,I))}function D(){var F;(F=v.value)!=null&&F.upload&&f.cancelUpload(v.value.clientId)}async function T(){var F,V;((V=(F=v.value)==null?void 0:F.upload)==null?void 0:V.status)==="error"&&await f.retryUpload(v.value.clientId)}return{item:v,setItem:E,addFile:w,removeItem:b,replaceItem:g,cancelUpload:D,retryUpload:T,save:f.save,load:f.load,isLoading:f.isLoading,isUploading:f.isUploading,isReadyToSubmit:f.isReadyToSubmit,hasItem:h,errors:f.errors,adapter:f.adapter,formValue:k,acceptString:f.acceptString}}const T7=["accept","disabled"],B7={class:"media-attachment__preview"},M7=["name","value"],$7=["name","value"],I7=["name","value"],D7=["name","value"],F7={key:4,class:"media-attachment__errors",role:"alert","aria-live":"polite"},A7=e.defineComponent({__name:"MediaAttachment",props:{modelValue:{default:null},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxFileSize:{},acceptedMimeTypes:{},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0},showReplaceButton:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","replace","is-ready-to-submit-change","validation-error"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r={initialItem:t.modelValue,modelType:t.modelType,modelId:t.modelId,collection:t.collection,maxFileSize:t.maxFileSize,acceptedMimeTypes:t.acceptedMimeTypes,disabled:t.disabled,rules:t.rules,adapterType:t.adapter,onChange:C=>{o("update:modelValue",C),o("change",C)},onUpload:C=>{o("upload",C)},onUploadComplete:C=>{o("upload-complete",C)},onUploadError:C=>{o("upload-error",C)},onRemove:C=>{o("remove",C)},onReplace:(C,M)=>{o("replace",M)},onError:C=>{o("validation-error",C)},onReadyToSubmitChange:C=>{o("is-ready-to-submit-change",C)}},{item:l,setItem:s,addFile:d,removeItem:u,replaceItem:c,cancelUpload:m,retryUpload:p,isLoading:f,hasItem:v,errors:h,adapter:k,formValue:E,acceptString:w}=lu(r);e.provide("mediaAdapter",k),e.watch(()=>t.modelValue,C=>{C!==l.value&&s(C)},{deep:!0});const b=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!v.value),g=e.computed(()=>({"media-attachment":!0,"media-attachment--disabled":t.disabled,"media-attachment--readonly":t.readonly,"media-attachment--loading":f.value,"media-attachment--has-item":v.value}));function D(C){C.length>0&&d(C[0])}function T(){var C;(C=i.value)==null||C.click()}function F(C){const M=C.target,_=M.files;_&&_.length>0&&c(_[0]),M.value=""}function V(C){u()}function I(C){p()}function $(C){m()}return(C,M)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(g.value)},[e.createElementVNode("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:e.unref(w),disabled:C.disabled,class:"media-attachment__hidden-input",onChange:F},null,40,T7),b.value?e.renderSlot(C.$slots,"dropzone",{key:0,addFile:e.unref(d)},()=>[e.createVNode(iu,{accept:e.unref(w),multiple:!1,disabled:C.disabled,"max-file-size":C.maxFileSize,onFiles:D},null,8,["accept","disabled","max-file-size"])],!0):e.unref(v)&&e.unref(l)?e.renderSlot(C.$slots,"preview",{key:1,item:e.unref(l),remove:e.unref(u),replace:T},()=>[e.createElementVNode("div",B7,[e.createVNode(ru,{item:e.unref(l),adapter:e.unref(k),disabled:C.disabled,sortable:!1,"show-remove":!C.readonly,"show-edit":!1,onRemove:V,onRetry:I,onCancel:$},null,8,["item","adapter","disabled","show-remove"]),C.showReplaceButton&&!C.readonly&&!C.disabled&&e.unref(l).media?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-attachment__replace-button",onClick:T},[...M[0]||(M[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.createElementVNode("polyline",{points:"17 8 12 3 7 8"}),e.createElementVNode("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1),e.createTextVNode(" Replace ",-1)])])):e.createCommentVNode("",!0)])],!0):e.renderSlot(C.$slots,"empty",{key:2},()=>[M[1]||(M[1]=e.createElementVNode("div",{class:"media-attachment__empty"},[e.createElementVNode("p",null,"No file selected")],-1))],!0),C.generateFormFields&&e.unref(E)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("input",{type:"hidden",name:`${C.name}[uuid]`,value:e.unref(E).uuid},null,8,M7),e.createElementVNode("input",{type:"hidden",name:`${C.name}[name]`,value:e.unref(E).name},null,8,$7),e.createElementVNode("input",{type:"hidden",name:`${C.name}[order]`,value:e.unref(E).order},null,8,I7),e.unref(E).custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${C.name}[custom_properties]`,value:JSON.stringify(e.unref(E).custom_properties)},null,8,D7)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.unref(h).length>0?(e.openBlock(),e.createElementBlock("div",F7,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),_=>(e.openBlock(),e.createElementBlock("p",{key:_.code||_.message,class:"media-attachment__error"},e.toDisplayString(_.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),R7=Ie(A7,[["__scopeId","data-v-26911174"]]),ov={dropzone:{title:"Drop files here",subtitle:"or click to browse",button:"Select files"},item:{remove:"Remove",replace:"Replace",edit:"Edit",download:"Download"},errors:{maxItems:"Maximum {max} files allowed",maxFileSize:"File exceeds maximum size of {max}",invalidType:"File type not allowed",uploadFailed:"Upload failed"},status:{uploading:"Uploading...",processing:"Processing...",completed:"Complete",error:"Error"}},L7=e.defineComponent({__name:"MediaCollectionProvider",props:{modelValue:{default:()=>[]},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxItems:{},maxFileSize:{},acceptedMimeTypes:{},sortable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","reorder","is-ready-to-submit-change","validation-error"],setup(a,{expose:n,emit:t}){const o=a,i=t,r={initialItems:o.modelValue,modelType:o.modelType,modelId:o.modelId,collection:o.collection,maxItems:o.maxItems,maxFileSize:o.maxFileSize,acceptedMimeTypes:o.acceptedMimeTypes,sortable:o.sortable,disabled:o.disabled,rules:o.rules,adapterType:o.adapter,onChange:C=>{i("update:modelValue",C),i("change",C)},onUpload:C=>{i("upload",C)},onUploadComplete:C=>{i("upload-complete",C)},onUploadError:C=>{i("upload-error",C)},onRemove:C=>{i("remove",C)},onReorder:C=>{i("reorder",C)},onError:C=>{i("validation-error",C)},onReadyToSubmitChange:C=>{i("is-ready-to-submit-change",C)}},{items:l,setItems:s,addFiles:d,removeItem:u,reorderItems:c,updateItem:m,cancelUpload:p,retryUpload:f,isLoading:v,isUploading:h,isReadyToSubmit:k,isAtMaxItems:E,errors:w,dragState:b,getDragProps:g,adapter:D,formValues:T,acceptString:F}=Zl(r);e.provide("mediaAdapter",D),e.provide("mediaCollection",{items:l,addFiles:d,removeItem:u,reorderItems:c}),e.watch(()=>o.modelValue,C=>{C!==l.value&&s(C)},{deep:!0});const V=e.computed(()=>({...ov,...o.labels})),I=e.computed(()=>({accept:F.value,multiple:o.maxItems!==1,disabled:o.disabled||o.readonly||E.value})),$=e.computed(()=>({items:l.value,isLoading:v.value,isUploading:h.value,isReadyToSubmit:k.value,isAtMaxItems:E.value,errors:w.value,addFiles:d,removeItem:u,reorderItems:c,clearAll:()=>{l.value.forEach(C=>u(C))},cancelUpload:p,retryUpload:f,labels:V.value,dropzoneProps:I.value}));return n({items:l,addFiles:d,removeItem:u,reorderItems:c,updateItem:m,cancelUpload:p,retryUpload:f,isLoading:v,isUploading:h,isReadyToSubmit:k,isAtMaxItems:E,errors:w,dragState:b,getDragProps:g,adapter:D,formValues:T,acceptString:F}),(C,M)=>e.renderSlot(C.$slots,"default",e.normalizeProps(e.guardReactiveProps($.value)))}}),P7=e.defineComponent({__name:"MediaAttachmentProvider",props:{modelValue:{default:null},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxFileSize:{},acceptedMimeTypes:{},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0},showReplaceButton:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","replace","is-ready-to-submit-change","validation-error"],setup(a,{expose:n,emit:t}){const o=a,i=t,r={initialItem:o.modelValue,modelType:o.modelType,modelId:o.modelId,collection:o.collection,maxFileSize:o.maxFileSize,acceptedMimeTypes:o.acceptedMimeTypes,disabled:o.disabled,rules:o.rules,adapterType:o.adapter,onChange:V=>{i("update:modelValue",V),i("change",V)},onUpload:V=>{i("upload",V)},onUploadComplete:V=>{i("upload-complete",V)},onUploadError:V=>{i("upload-error",V)},onRemove:V=>{i("remove",V)},onReplace:(V,I)=>{i("replace",I)},onError:V=>{i("validation-error",V)},onReadyToSubmitChange:V=>{i("is-ready-to-submit-change",V)}},{item:l,setItem:s,addFile:d,removeItem:u,replaceItem:c,cancelUpload:m,retryUpload:p,isLoading:f,isUploading:v,isReadyToSubmit:h,hasItem:k,errors:E,adapter:w,formValue:b,acceptString:g}=lu(r);e.provide("mediaAdapter",w),e.watch(()=>o.modelValue,V=>{V!==l.value&&s(V)},{deep:!0});const D=e.computed(()=>({...ov,...o.labels})),T=e.computed(()=>({accept:g.value,multiple:!1,disabled:o.disabled||o.readonly||k.value})),F=e.computed(()=>({item:l.value,hasItem:k.value,isLoading:f.value,isUploading:v.value,isReadyToSubmit:h.value,errors:E.value,addFile:d,removeItem:u,replaceItem:c,cancelUpload:m,retryUpload:p,labels:D.value,dropzoneProps:T.value}));return n({item:l,setItem:s,addFile:d,removeItem:u,replaceItem:c,cancelUpload:m,retryUpload:p,isLoading:f,isUploading:v,isReadyToSubmit:h,hasItem:k,errors:E,adapter:w,formValue:b,acceptString:g}),(V,I)=>e.renderSlot(V.$slots,"default",e.normalizeProps(e.guardReactiveProps(F.value)))}}),U7=["name","value"],O7=["name","value"],z7=["name","value"],j7=["name","value"],W7=e.defineComponent({__name:"MediaHiddenFields",props:{items:{default:()=>[]},item:{default:null},name:{default:"media"},format:{default:"mediables"}},setup(a){const n=a,t=e.computed(()=>n.item?[n.item]:n.items),o=e.computed(()=>au(t.value));function i(s,d){var c;const u=((c=o.value[s])==null?void 0:c.uuid)||"";return`${n.name}[${u}][${d}]`}function r(s,d){return`${n.name}[${s}][${d}]`}function l(s,d){return n.format==="spatie"?i(s,d):r(s,d)}return(s,d)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(u,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:u.uuid},[e.createElementVNode("input",{type:"hidden",name:l(c,"uuid"),value:u.uuid},null,8,U7),e.createElementVNode("input",{type:"hidden",name:l(c,"name"),value:u.name},null,8,O7),e.createElementVNode("input",{type:"hidden",name:l(c,"order"),value:u.order},null,8,z7),u.custom_properties&&Object.keys(u.custom_properties).length>0?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:l(c,"custom_properties"),value:JSON.stringify(u.custom_properties)},null,8,j7)):e.createCommentVNode("",!0)],64))),128))}}),Z7=["data-testid"],H7=["data-testid"],G7=["id"],X7=["value","maxlength","disabled","aria-labelledby","placeholder","data-testid","onInput"],K7=e.defineComponent({__name:"MediaAttachmentMetadataFields",props:{items:{},disabled:{type:Boolean,default:!1},label:{default:"Caption"},placeholder:{default:"Add an optional caption"},maxLength:{default:500},testIdPrefix:{default:"media-attachment-metadata"},getItemLabel:{type:Function,default:(a,n)=>`${a.type==="video"?"video":"photo"} ${n+1}`}},emits:["update:items"],setup(a,{emit:n}){const t=a,o=n;function i(r,l){const s=l.target;s instanceof HTMLInputElement&&o("update:items",t.items.map((d,u)=>u!==r?d:{...d,caption:s.value===""?null:s.value}))}return(r,l)=>r.items.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"media-attachment-metadata-fields","data-testid":r.testIdPrefix},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.items,(s,d)=>(e.openBlock(),e.createElementBlock("div",{key:s._key??s.id??`${s.url}:${d}`,class:"media-attachment-metadata-fields__row","data-testid":`${r.testIdPrefix}-${d}`},[e.createElementVNode("p",{id:`${r.testIdPrefix}-label-${d}`,class:"media-attachment-metadata-fields__label"},e.toDisplayString(r.label)+" for "+e.toDisplayString(r.getItemLabel(s,d)),9,G7),e.createElementVNode("input",{value:s.caption??"",type:"text",class:"media-attachment-metadata-fields__input",maxlength:r.maxLength,disabled:r.disabled,"aria-labelledby":`${r.testIdPrefix}-label-${d}`,placeholder:r.placeholder,"data-testid":`input-${r.testIdPrefix}-${d}`,onInput:u=>i(d,u)},null,40,X7)],8,H7))),128))],8,Z7)):e.createCommentVNode("",!0)}}),J7=Ie(K7,[["__scopeId","data-v-a153768a"]]);exports.AlbumBrowser=wf;exports.AlbumManager=w8;exports.AlbumMediaGrid=$8;exports.AlbumNavRail=yU;exports.AlbumTree=zl;exports.ArrayBufferTarget=kd;exports.CoverFocalPointPicker=vm;exports.CoverPhotoUploader=Eh;exports.ExistingMediaSelector=Hb;exports.ImageEditor=pm;exports.ImageEditorModal=fm;exports.LiveStreamManager=I5;exports.ManagedMediaGallery=qv;exports.MediaAlbumInlineCreate=Zd;exports.MediaAlbumPickerModal=zf;exports.MediaAlbumUnavailableState=kf;exports.MediaAttachment=R7;exports.MediaAttachmentMetadataFields=J7;exports.MediaBulkActionBar=Yd;exports.MediaCollection=N7;exports.MediaCollectionDropzone=iu;exports.MediaCollectionItem=ru;exports.MediaEmptyState=ev;exports.MediaFilterChips=qf;exports.MediaInspectorPanel=Jf;exports.MediaLibraryPicker=Of;exports.MediaLibraryPickerModal=sF;exports.MediaLibraryShell=iU;exports.MediaLibraryToolbar=jf;exports.MediaLibraryWorkspace=Qf;exports.MediaManagementView=Yf;exports.MediaPreviewSheet=Hd;exports.MediaSelectionTray=FU;exports.MediaShortcutHelp=Wf;exports.MediaSourceSheet=Nf;exports.MediaThumbnailCell=Bf;exports.MediaTrashWorkspace=tv;exports.MediaUploadSheet=Tf;exports.MediaUsageList=Hf;exports.MediaVariantStrip=Gf;exports.MediaWorkspace=Gv;exports.ModelMediaManager=fb;exports.Muxer=Lm;exports.RequiresConfirmationError=Wl;exports.VideoEditor=cf;exports.VideoEditorDialog=v3;exports.VideoEditorSimple=P3;exports.VideoExportPanel=b$;exports.VideoJobClient=Pl;exports.VideoPlayer=hf;exports.VideoTimeline=dM;exports.VideoToolsPanel=YM;exports.VideoUploader=rI;exports.VirtualMediaGrid=Mf;exports._sfc_main=L7;exports._sfc_main$1=P7;exports._sfc_main$2=W7;exports.applyTemporaryMediaStoreConfig=um;exports.configureAlbumStore=gf;exports.configureMediaStore=ai;exports.createAdapter=av;exports.createImageEditor=RU;exports.createMediablesAdapter=nu;exports.createSpatieAdapter=ou;exports.filterToCssFunction=mm;exports.formatFileSize=cl;exports.fromMediaArray=md;exports.getFileExtension=$f;exports.getImageDimensions=If;exports.getMediablesAdapter=LU;exports.getSpatieAdapter=OU;exports.hasUsableFilterPayload=Ss;exports.isImageFile=Gd;exports.normalizeRecipeForServerRender=JB;exports.normalizeRecipePlaceholderDuration=ff;exports.recipeHasFilters=$v;exports.recipeHasServerRenderableEdits=KB;exports.recipeHasUnsupportedServerEdits=vf;exports.recipeNoiseAmount=Iv;exports.resetMediablesAdapter=PU;exports.resetSpatieAdapter=zU;exports.resolveFilterType=pl;exports.resolveFilterValue=Va;exports.resolvedRecipeFilters=pd;exports.restoreAlbumStoreConfig=j5;exports.restoreMediaStoreConfig=dm;exports.snapshotAlbumStoreConfig=z5;exports.snapshotMediaStoreConfig=sm;exports.toFormValues=au;exports.useAdminMediaStore=cm;exports.useAlbumDragDrop=yf;exports.useAlbumStore=Ul;exports.useAlbums=Ol;exports.useGlobalImageEditor=AU;exports.useImageEditorModal=tu;exports.useMediaAttachment=lu;exports.useMediaCollection=Zl;exports.useMediaDeletion=Qd;exports.useMediaDragSort=nv;exports.useMediaLibraryPickerController=Uf;exports.useMediaLibraryQuery=Jd;exports.useMediaLibrarySession=Af;exports.useMediaLibraryStateMachine=Rf;exports.useMediaLibraryTelemetry=Lf;exports.useMediaLibraryUploads=Zf;exports.useMediaLibraryVisibility=SU;exports.useMediaMetadata=Kf;exports.useMediaSelection=vl;exports.useMediaStore=ja;exports.useMediaTrash=eu;exports.useMediaUploadQueue=Kd;exports.useMediaValidation=Xd;exports.validateFile=Df;exports.videoRecipeToCssFilter=Dv;
357
+ //# sourceMappingURL=index-Bvo95NTy.cjs.map