@codingfactory/mediables-vue 2.4.21 → 2.4.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{PixiFrameExporter-FqchRwLH.js → PixiFrameExporter-B3vV4VNa.js} +2 -2
- package/dist/{PixiFrameExporter-FqchRwLH.js.map → PixiFrameExporter-B3vV4VNa.js.map} +1 -1
- package/dist/{PixiFrameExporter-C_Ga17dU.cjs → PixiFrameExporter-plVSI1Cq.cjs} +2 -2
- package/dist/{PixiFrameExporter-C_Ga17dU.cjs.map → PixiFrameExporter-plVSI1Cq.cjs.map} +1 -1
- package/dist/{editor-DWDUrVRz.js → editor-2Q72CZjK.js} +19 -19
- package/dist/editor-2Q72CZjK.js.map +1 -0
- package/dist/{editor-DKRFjaUq.cjs → editor-DjvxEsss.cjs} +3 -3
- package/dist/editor-DjvxEsss.cjs.map +1 -0
- package/dist/{index-D6Bzhz_r.js → index-CKq0Hx5v.js} +3 -3
- package/dist/{index-D6Bzhz_r.js.map → index-CKq0Hx5v.js.map} +1 -1
- package/dist/{index-BNKYj_dh.cjs → index-Dqxd2fFw.cjs} +3 -3
- package/dist/{index-BNKYj_dh.cjs.map → index-Dqxd2fFw.cjs.map} +1 -1
- package/dist/mediables-vanilla.cjs +1 -1
- package/dist/mediables-vanilla.mjs +1 -1
- package/dist/mediables-vue.cjs +1 -1
- package/dist/mediables-vue.mjs +2 -2
- package/package.json +1 -1
- package/dist/editor-DKRFjaUq.cjs.map +0 -1
- package/dist/editor-DWDUrVRz.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Dd=Object.defineProperty;var Ad=(a,n,t)=>n in a?Dd(a,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[n]=t;var z=(a,n,t)=>Ad(a,typeof n!="symbol"?n+"":n,t);const ba=require("pinia"),e=require("vue"),ze=require("pixi.js"),ct=require("./editor-DKRFjaUq.cjs"),$=require("@ionic/vue"),Ud=require("pixi-filters");function Od(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 Ke=Od(ze),_i=1,Ld=new Set(["free","square","circle"]);function zd(a){const n=typeof a;return n==="string"||n==="number"||n==="boolean"}function Pd(a){if(!a||typeof a!="object")return!1;const n=a;return typeof n.x=="number"&&typeof n.y=="number"&&typeof n.width=="number"&&typeof n.height=="number"}function Ki(a){if(!a||typeof a!="object")return null;const n=a;if(n.version!==_i)return null;const t=n.crop,o=t&&Pd(t.rect)?{...t.rect}:null,i=t&&typeof t.shape=="string"&&Ld.has(t.shape)?t.shape:"free",r=t&&typeof t.aspectRatio=="string"?t.aspectRatio:"free",s=n.filters,c=[];if(Array.isArray(s))for(const l of s){if(!l||typeof l!="object")continue;const d=l;if(typeof d.id!="string")continue;const u={},p=d.values;if(p&&typeof p=="object"&&!Array.isArray(p))for(const[f,h]of Object.entries(p))zd(h)&&(u[f]=h);c.push({id:d.id,enabled:d.enabled!==!1,values:u})}return{version:_i,crop:{rect:o,aspectRatio:r,shape:i},filters:c}}function tl(a){const n=Ki(a);return n?JSON.stringify(n):null}function jd(a){try{const n=JSON.parse(a);return Ki(n)}catch{return null}}function Wd(){return{version:_i,crop:{rect:null,aspectRatio:"free",shape:"free"},filters:[]}}let Vt={apiBaseUrl:"/api/v1",isAdmin:!1};function Rn(a){Vt={...Vt,...a}}function nl(){return{...Vt}}function ol(a){Vt={...a}}function al(a){const n=nl();return Rn(a),()=>{ol(n)}}const Zd=async(a,n={})=>{var c;const t=(c=document.querySelector('meta[name="csrf-token"]'))==null?void 0:c.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 s=await fetch(a,r);if(!s.ok){const l=await s.json().catch(()=>({message:"Request failed"}));throw new Error(l.message||`HTTP ${s.status}`)}if(s.status!==204)return await s.json()},xt=ba.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),s=e.ref(24),c=e.ref({type:null,uuid:null}),l=e.ref([]),d=e.ref(!1),u=e.ref(null),p=e.ref(new Map),f=e.ref(new Map),h=e.ref(new Set),v=e.ref(new Map),g=e.ref({}),E=5*60*1e3,T=e.computed(()=>{if(Vt.apiScope)return Vt.apiScope;if(Vt.isAdmin)return"admin"}),_=e.computed(()=>T.value==="admin");function w(){return Vt.httpClient||Zd}function m(ce){const re=Vt.apiBaseUrl||"/api/v1",ke=T.value?`/${T.value}`:"";return`${re}${ke}${ce}`}function k(ce,re){return`${T.value??"default"}-${ce}-${JSON.stringify(re)}`}function N(ce){return Date.now()-ce<E}function S(){v.value.clear(),g.value={}}function y(ce){if(!ce||!ce.data)return;const re={};ce.data.forEach(ke=>{const oe=`${ke.file_name}-${ke.collection_name||"default"}`,le=re[oe];(!le||Object.keys(ke.generated_conversions||{}).length>Object.keys(le.generated_conversions||{}).length)&&(re[oe]=ke)}),a.value=Object.values(re),ce.meta&&(i.value=ce.meta.current_page,r.value=Math.ceil(ce.meta.total/ce.meta.per_page))}async function C(ce=1,re={}){const ke=k(ce,re),oe=v.value.get(ke);if(oe&&N(oe.timestamp)){const le=oe.data;return y(le),le}t.value=!0,o.value=null;try{const le=new URLSearchParams;le.append("page",ce.toString()),le.append("per_page",s.value.toString()),_.value&&le.append("linked","1");for(const dt in re)if(Object.prototype.hasOwnProperty.call(re,dt)){const Ze=re[dt];Ze!=null&&Ze!==""&&le.append(dt,String(Ze))}const Ce=await w()(m(`/media?${le}`));return v.value.set(ke,{data:Ce,timestamp:Date.now()}),y(Ce),Ce}catch(le){throw o.value=le instanceof Error?le.message:"Failed to fetch media",a.value=[],new Error(o.value)}finally{t.value=!1}}async function U(ce,re){t.value=!0,o.value=null;const ke=`${ce.name}-${Date.now()}`,oe={file:ce,progress:0,status:"uploading"};p.value.set(ke,oe);try{const le=new FormData;le.append("file",ce),le.append("collection",re.collection),re.ownerUuid&&(le.append("owner_uuid",re.ownerUuid),le.append("owner_type",re.ownerType||"")),re.usageUuid&&(le.append("usage_uuid",re.usageUuid),le.append("usage_type",re.usageType||""),le.append("usage_purpose",re.usagePurpose||"")),re.customProperties&&le.append("custom_properties",JSON.stringify(re.customProperties));const Ce=await w()(m("/media"),{method:"POST",body:le});return oe.status="completed",oe.progress=100,oe.media=Ce==null?void 0:Ce.data,i.value===1&&(Ce!=null&&Ce.data)&&(a.value=[Ce.data,...a.value]),S(),(Ce==null?void 0:Ce.data)||null}catch(le){throw oe.status="error",oe.error=le instanceof Error?le.message:"Upload failed",o.value=oe.error,new Error(o.value)}finally{t.value=!1,setTimeout(()=>{p.value.delete(ke)},5e3)}}async function x(ce){t.value=!0,o.value=null;const re=a.value.findIndex(oe=>oe.uuid===ce);let ke;re!==-1&&(ke=a.value.splice(re,1)[0]);try{return await w()(m(`/media/${ce}`),{method:"DELETE"}),h.value.delete(ce),S(),!0}catch(oe){throw ke&&re!==-1&&a.value.splice(re,0,ke),o.value=oe instanceof Error?oe.message:"Failed to delete media",new Error(o.value)}finally{t.value=!1}}async function I(ce,re){t.value=!0,o.value=null;try{const oe=await w()(m(`/media/${ce}`),{method:"PATCH",body:re,data:re});if(oe!=null&&oe.data){const le=a.value.findIndex(xe=>xe.uuid===ce);return le!==-1&&(a.value[le]={...a.value[le],...oe.data}),S(),oe.data}return null}catch(ke){throw o.value=ke instanceof Error?ke.message:"Failed to update media",new Error(o.value)}finally{t.value=!1}}async function R(){t.value=!0,o.value=null;try{const re=await w()(m("/media/collections"));return n.value=(re==null?void 0:re.data)||[],n.value}catch(ce){throw o.value=ce instanceof Error?ce.message:"Failed to fetch collections",n.value=[],new Error(o.value)}finally{t.value=!1}}async function A(ce,re,ke="images",oe){d.value=!0,u.value=null;try{const le=new URLSearchParams;le.append("collection",ke),oe&&le.append("search",oe);const Ce=await w()(m(`/media/model/${ce}/${re}?${le}`));return Ce!=null&&Ce.data?(l.value=Ce.data,Ce.data):[]}catch(le){throw u.value=le instanceof Error?le.message:"Failed to fetch model media",l.value=[],new Error(u.value)}finally{d.value=!1}}async function M(ce,re,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value];try{const Ce=await w()(m(`/media/model/${ce}/${re}/attach`),{method:"POST",body:{media_uuids:ke,collection:oe}});return await A(ce,re,oe),(Ce==null?void 0:Ce.data)||[]}catch(xe){throw l.value=le,u.value=xe instanceof Error?xe.message:"Failed to attach media",new Error(u.value)}finally{d.value=!1}}async function P(ce,re,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value];l.value=l.value.filter(xe=>xe.uuid!==ke);try{return await w()(m(`/media/model/${ce}/${re}/detach`),{method:"POST",body:{media_uuid:ke,collection:oe}}),!0}catch(xe){throw l.value=le,u.value=xe instanceof Error?xe.message:"Failed to detach media",new Error(u.value)}finally{d.value=!1}}async function H(ce,re,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value],xe=new Map(l.value.map(Ce=>[Ce.uuid,Ce]));l.value=ke.map(Ce=>xe.get(Ce)).filter(Ce=>Ce!==void 0);try{return await w()(m(`/media/model/${ce}/${re}/reorder`),{method:"POST",body:{media_uuids:ke,collection:oe}}),!0}catch(Ce){throw l.value=le,u.value=Ce instanceof Error?Ce.message:"Failed to reorder media",new Error(u.value)}finally{d.value=!1}}async function B(ce,re,ke={}){const oe=w(),le=Vt.apiBaseUrl||"/api/v1",xe=new FormData,Ce=re.imageData,dt=Ce.match(/^data:(image\/\w+);base64,/),Ze=dt?dt[1]:"image/png",vt=Ce.replace(/^data:image\/\w+;base64,/,""),Y=atob(vt),me=new Uint8Array(Y.length);for(let Ve=0;Ve<Y.length;Ve++)me[Ve]=Y.charCodeAt(Ve);const ae=new Blob([me],{type:Ze});xe.append("image_file",ae,`edited.${Ze==="image/jpeg"?"jpg":"png"}`);const ve=tl(re.state);ve&&xe.append("editor_state",ve),re.metadata&&(xe.append("filters",JSON.stringify(re.metadata.filters)),re.metadata.cropRect&&xe.append("crop_data",JSON.stringify(re.metadata.cropRect))),xe.append("save_as_new","true"),ke.asVariant&&xe.append("as_variant","true"),ke.name!==void 0&&xe.append("name",ke.name);const Ne=await oe(`${le}/editor/${ce}/save`,{method:"POST",body:xe});if("media"in Ne&&Ne.media)return Ne.media;if("status_url"in Ne&&Ne.status_url)return D(oe,Ne.status_url,ke.pollTimeout??6e4);throw new Error("Unexpected response from editor save endpoint")}async function D(ce,re,ke){const oe=Date.now(),le=2e3;for(;Date.now()-oe<ke;){await new Promise(Ce=>setTimeout(Ce,le));const xe=await ce(re);if(xe.status==="completed"&&xe.media)return xe.media;if(xe.status==="failed")throw new Error(xe.error??"Image processing failed")}throw new Error("Image processing timed out")}function X(ce,re,ke){c.value=ke!==void 0?{type:ce,uuid:re,collection:ke}:{type:ce,uuid:re},g.value[`${ce}-${re}`]={timestamp:Date.now()}}function Z(){c.value={type:null,uuid:null},l.value=[],u.value=null}async function ee(){if(!c.value.type||!c.value.uuid)return;const ce=await A(c.value.type,c.value.uuid,c.value.collection||"images");l.value=ce||[]}function ge(){a.value.forEach(ce=>h.value.add(ce.uuid))}function Ee(){h.value.clear()}function te(ce){h.value.has(ce)?h.value.delete(ce):h.value.add(ce)}function F(ce){return h.value.has(ce)}function j(){return Array.from(p.value.values()).some(ce=>ce.status==="uploading")}function de(ce){return p.value.get(ce)||f.value.get(ce)}function ne(){return[...Array.from(p.value.values()),...Array.from(f.value.values())]}async function J(){const ce=Array.from(h.value);let re=0;for(const ke of ce)try{await x(ke),re++}catch{}return Ee(),re}function Be(ce,re){var ke;return re&&((ke=ce.conversion_urls)!=null&&ke[re])?ce.conversion_urls[re]||"":ce.original_url||ce.url||""}return{items:a,collections:n,loading:t,error:o,currentPage:i,totalPages:r,itemsPerPage:s,isAdmin:_,modelContext:c,modelMedia:l,isLoadingModelMedia:d,modelMediaError:u,selectedItems:h,uploadProgress:p,uploadQueue:f,cachedResponses:g,fetchMedia:C,uploadFile:U,deleteMedia:x,updateMedia:I,clearCache:S,fetchCollections:R,fetchModelMedia:A,attachMedia:M,detachMedia:P,reorderMedia:H,saveEditedImage:B,setModelContext:X,clearModelContext:Z,refreshModelMedia:ee,selectAllItems:ge,clearSelection:Ee,toggleSelection:te,isSelected:F,deleteSelectedItems:J,getHttpClient:w,getApiUrl:m,hasActiveUploads:j,getUploadProgress:de,getAllUploadProgress:ne,getMediaUrl:Be}}),il=()=>((Vt.apiScope!=="admin"||Vt.isAdmin!==!0)&&Rn({...Vt,apiScope:"admin",isAdmin:!0}),xt());function Xd(a,n){try{let t=ct.getFilter(a);if(t||(ct.registerCorePixiFilters(),t=ct.getFilter(a)),!t){try{const r=ct.getAllFilters()}catch{}return null}const o={...t.defaultParams,...n};return t.createFilter(o)}catch{return null}}const Hd=e.defineComponent({__name:"ImageEditor",props:{initialImage:{},initialState:{default:null},sessionKey:{default:0},theme:{default:"auto"},cropShape:{default:"square"},preset:{},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,s=null;function c(){var T;if(!r){o("error",new Error("Editor not initialized"));return}const p=r.exportImage("png",.92);if(!p){o("error",new Error("Failed to export image — the image could not be processed"));return}const f=r.getSerializableState(),h=r._renderer,v=((T=h.getExportDimensions)==null?void 0:T.call(h))??{width:0,height:0},g={width:Math.round(v.width),height:Math.round(v.height)};o("save",{imageData:p,dimensions:g,state:f})}function l(){o("cancel")}function d(){if(!i.value||r)return;window.PIXI=Ke,ct.initializeFilterRegistry();const p={theme:t.theme};t.preset&&(p.preset=t.preset),t.preset?t.cropShape==="circle"&&(p.cropShape="circle",p.initialAspectRatio="1:1",p.initialMode="crop"):(p.cropShape=t.cropShape==="circle"?"circle":"free",p.initialAspectRatio=t.cropShape==="circle"?"1:1":"free",p.initialMode=t.cropShape==="circle"?"crop":"adjust"),r=new ct.VanillaImageEditor(i.value,p),r.setFilterRegistry({getAllFilters:ct.getAllFilters,getFilter:ct.getFilter,getFiltersByCategory:ct.getFiltersByCategory}),r.save=function(){c()},r.on("cancel",l),t.initialImage&&r.loadImage(t.initialImage,{state:t.initialState??null,sessionKey:t.sessionKey})}e.onMounted(()=>{i.value&&(i.value.clientWidth>0?d():(s=new ResizeObserver(p=>{const f=p[0];f&&f.contentRect.width>0&&!r&&(d(),s==null||s.disconnect(),s=null)}),s.observe(i.value)))});const u=()=>{!r||!t.initialImage||r.loadImage(t.initialImage,{state:t.initialState??null,sessionKey:t.sessionKey})};return e.watch(()=>t.initialImage,(p,f)=>{!r||!p||p===f||u()}),e.watch(()=>t.sessionKey,(p,f)=>{p!==f&&u()}),e.watch(()=>t.initialState,(p,f)=>{p!==f&&u()}),e.onUnmounted(()=>{s==null||s.disconnect(),s=null,r&&(r.destroy(),r=null)}),(p,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:i,class:"vanilla-editor-wrapper","data-testid":"vanilla-image-editor"},null,512))}}),Me=(a,n)=>{const t=a.__vccOpts||a;for(const[o,i]of n)t[o]=i;return t},rl=Me(Hd,[["__scopeId","data-v-d5646104"]]),Gd={class:"editor-modal-panel"},Jd={class:"editor-fill"},Yd=e.defineComponent({__name:"ImageEditorModal",props:{modelValue:{type:Boolean,default:!1},initialImage:{},initialState:{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:{},primaryColor:{default:"#3880ff"},secondaryColor:{default:"#5260ff"},saveButtonColor:{default:"#3880ff"},downloadButtonColor:{default:"#2dd36f"}},emits:["update:modelValue","save","cancel","error"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r=e.ref(t.modelValue),s=e.ref(!1),c=e.ref(null),l=g=>{o("error",g)},d=()=>{e.nextTick(()=>{if(i.value){const g=i.value.querySelector("button:not([disabled]), [href], input:not([disabled])");g&&g.focus()}})};e.watch(()=>t.modelValue,g=>{r.value=g,g&&(c.value=document.activeElement,d())},{immediate:!0});const u=g=>{try{s.value=!0,o("save",g)}catch(E){l(E)}finally{s.value=!1}},p=()=>{o("cancel"),h()},f=()=>{s.value||h()},h=()=>{r.value=!1,o("update:modelValue",!1),c.value&&c.value instanceof HTMLElement&&(c.value.focus(),c.value=null)},v=g=>{if(g.key==="Escape"&&r.value&&!s.value){h();return}if(g.key==="Tab"&&r.value&&i.value){const E=i.value.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])');if(E.length===0)return;const T=E[0],_=E[E.length-1];g.shiftKey&&document.activeElement===T?(g.preventDefault(),_.focus()):!g.shiftKey&&document.activeElement===_&&(g.preventDefault(),T.focus())}};return e.onMounted(()=>{document.addEventListener("keydown",v)}),e.onBeforeUnmount(()=>{document.removeEventListener("keydown",v)}),(g,E)=>(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(f,["escape"])},[e.createElementVNode("div",{class:"editor-modal-backdrop",onClick:f}),e.createElementVNode("div",Gd,[e.createElementVNode("div",Jd,[e.createVNode(rl,{"initial-image":g.initialImage,"initial-state":g.initialState,"session-key":g.sessionKey,theme:g.theme,"crop-shape":g.cropShape,preset:g.preset,"primary-color":g.primaryColor,"secondary-color":g.secondaryColor,"save-button-color":g.saveButtonColor,"download-button-color":g.downloadButtonColor,onSave:u,onCancel:p,onError:l},null,8,["initial-image","initial-state","session-key","theme","crop-shape","preset","primary-color","secondary-color","save-button-color","download-button-color"])])])],544)):e.createCommentVNode("",!0)]))}}),sl=Me(Yd,[["__scopeId","data-v-437b6a27"]]),Kd={class:"media-workspace"},qd={class:"media-workspace-toolbar"},Qd={class:"media-workspace-label"},eu=["value"],tu={class:"media-workspace-grid"},nu=["onClick"],ou=e.defineComponent({__name:"MediaWorkspace",props:{apiScope:{},subScopes:{},initialScopeId:{}},emits:["scope-change","update:media","upload","preview"],setup(a,{emit:n}){var p;const t=a,o=n,i=xt(),r=e.ref(t.initialScopeId??((p=t.subScopes[0])==null?void 0:p.id)??""),s=e.computed(()=>t.subScopes),c=e.computed(()=>s.value.find(f=>f.id===r.value));let l=null;function d(){l&&(l(),l=null),t.apiScope&&(l=al({apiScope:t.apiScope,isAdmin:t.apiScope==="admin"}))}async function u(){var h;const f={};(h=c.value)!=null&&h.collection&&(f.collection=c.value.collection),await i.fetchMedia(1,f),o("update:media",[...i.items])}return e.watch(()=>t.initialScopeId,f=>{f&&f!==r.value&&(r.value=f)}),e.watch(()=>t.subScopes,f=>{if(f.length===0){r.value="";return}f.some(h=>h.id===r.value)||(r.value=f[0].id)},{deep:!0}),e.watch(()=>t.apiScope,()=>{d(),u()}),e.watch(r,f=>{f&&(o("scope-change",f),u())}),e.onMounted(()=>{d(),u()}),e.onUnmounted(()=>{l&&(l(),l=null)}),(f,h)=>(e.openBlock(),e.createElementBlock("div",Kd,[e.createElementVNode("div",qd,[e.createElementVNode("label",Qd,[h[2]||(h[2]=e.createElementVNode("span",{class:"media-workspace-label-text"},"Scope",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[0]||(h[0]=v=>r.value=v),"data-testid":"scope-select",class:"media-workspace-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,v=>(e.openBlock(),e.createElementBlock("option",{key:v.id,value:v.id},e.toDisplayString(v.label),9,eu))),128))],512),[[e.vModelSelect,r.value]])]),e.createElementVNode("button",{type:"button",class:"media-workspace-upload","data-testid":"upload-button",onClick:h[1]||(h[1]=v=>o("upload"))}," Upload ")]),e.createElementVNode("div",tu,[(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:g=>o("preview",v)},e.toDisplayString(v.file_name),9,nu))),128))])]))}}),au=Me(ou,[["__scopeId","data-v-895f26fe"]]),iu={class:"managed-media-gallery"},ru={class:"gallery-grid"},su=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",iu,[e.createElementVNode("div",ru,[e.renderSlot(n.$slots,"default",{},void 0,!0)])]))}}),lu=Me(su,[["__scopeId","data-v-a60fdcd7"]]),cu="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>",qi="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>",du="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>",Qi="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>",uu="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>",mu="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>",oo="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>",pu="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>",ll="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>",cl="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>",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' stroke-width='48' d='M328 112L184 256l144 144' class='ionicon-fill-none'/></svg>",fu="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>",hu="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>",is="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>",Dn="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>",rs="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>",vu="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>",sn="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>",gu="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>",Kn="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>",yu="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>",wu="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>",ss="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>",dl="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>",vo="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>",bu="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>",ku="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>",xu="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>",ao="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>",ls="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>",di="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>",Eu="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>",Vu="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>",ui="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>",Su="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>",Cu="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>",_u="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>",Nu="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>",ul="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>",ml="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>",Tu="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>",Mu="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>",Bu="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>",Iu="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>",pl="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>",Fu="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>",$u="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>",fl="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>",Ru="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>",Du="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>",Ln="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>",Au="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>",Uu="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>",cs="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>",er="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>",Ou="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>",mi="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>",rn="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>",qn="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>",ds="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>",Lu="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>",hl="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>",zu="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>",vl="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>",Pu="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>",ju="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>",Wu="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>",Zu="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>",Xu="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>",Hu="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>",Gu="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>",Oo="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 us=()=>{};function Ju(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 Yu(a,n={}){let t,o,i=us;const r=l=>{clearTimeout(l),i(),i=us};let s;return l=>{const d=e.toValue(a),u=e.toValue(n.maxWait);return t&&r(t),d<=0||u!==void 0&&u<=0?(o&&(r(o),o=null),Promise.resolve(l())):new Promise((p,f)=>{i=n.rejectOnCancel?f:p,s=l,u&&!o&&(o=setTimeout(()=>{t&&r(t),o=null,p(s())},u)),t=setTimeout(()=>{o&&r(o),o=null,p(l())},d)})}}function Ku(a,n=200,t={}){return Ju(Yu(n,t),a)}const Qn=new Map;function qu(a){const n=e.getCurrentScope();function t(c){var l;const d=Qn.get(a)||new Set;d.add(c),Qn.set(a,d);const u=()=>i(c);return(l=n==null?void 0:n.cleanups)==null||l.push(u),u}function o(c){function l(...d){i(l),c(...d)}return t(l)}function i(c){const l=Qn.get(a);l&&(l.delete(c),l.size||r())}function r(){Qn.delete(a)}function s(c,l){var d;(d=Qn.get(a))==null||d.forEach(u=>u(c,l))}return{on:t,once:o,off:i,emit:s,reset:r}}function Qu(){var r,s;const a=typeof window<"u"&&"Capacitor"in window&&((s=(r=window.Capacitor)==null?void 0:r.isNativePlatform)==null?void 0:s.call(r));return{selection:()=>{var c,l;if(a)try{const d=(l=(c=window.Capacitor)==null?void 0:c.Plugins)==null?void 0:l.Haptics;d&&d.impact({style:"LIGHT"})}catch{}else"vibrate"in navigator&&navigator.vibrate(10)},success:()=>{var c,l;if(a)try{const d=(l=(c=window.Capacitor)==null?void 0:c.Plugins)==null?void 0:l.Haptics;d&&d.impact({style:"MEDIUM"})}catch{}else"vibrate"in navigator&&navigator.vibrate(30)},error:()=>{var c,l;if(a)try{const d=(l=(c=window.Capacitor)==null?void 0:c.Plugins)==null?void 0:l.Haptics;d&&d.impact({style:"HEAVY"})}catch{}else"vibrate"in navigator&&navigator.vibrate([50,50,50])},notification:()=>{var c,l;if(a)try{const d=(l=(c=window.Capacitor)==null?void 0:c.Plugins)==null?void 0:l.Haptics;d&&d.notification({type:"SUCCESS"})}catch{}else"vibrate"in navigator&&navigator.vibrate([20,100,20])}}}function em(a){const n=e.ref(new Set),t=e.ref(null),o=e.ref(-1),i=qu("media-selection"),r=Qu(),s=e.computed(()=>a.value.filter(k=>n.value.has(k.uuid))),c=e.computed(()=>n.value.size);e.watch(n,k=>{i.emit({type:"selection:changed",count:k.size,selectedIds:Array.from(k)})},{deep:!0});const l=e.computed(()=>a.value.length>0&&a.value.every(k=>n.value.has(k.uuid))),d=e.computed(()=>a.value.some(k=>n.value.has(k.uuid)));function u(k){return n.value.has(k)}function p(k){n.value.has(k)?(n.value.delete(k),t.value===k&&(t.value=null,o.value=-1)):(n.value.add(k),t.value=k,o.value=a.value.findIndex(N=>N.uuid===k),n.value.size===1&&r.selection())}function f(k){n.value.add(k),t.value=k,o.value=a.value.findIndex(N=>N.uuid===k)}function h(k){n.value.delete(k),t.value===k&&(t.value=null,o.value=-1)}function v(){a.value.forEach(k=>n.value.add(k.uuid))}function g(){n.value.clear(),t.value=null,o.value=-1}function E(){l.value?g():v()}function T(k,N){const S=a.value.findIndex(y=>y.uuid===k);if(S!==-1)if(N!=null&&N.shiftKey&&o.value!==-1){const y=Math.min(o.value,S),C=Math.max(o.value,S);for(let U=y;U<=C;U++)n.value.add(a.value[U].uuid)}else p(k)}function _(){if(a.value.length===0)return;let k=o.value+1;k>=a.value.length&&(k=0),g(),f(a.value[k].uuid)}function w(){if(a.value.length===0)return;let k=o.value-1;k<0&&(k=a.value.length-1),g(),f(a.value[k].uuid)}function m(k){switch(k.key){case"ArrowDown":k.preventDefault(),_();break;case"ArrowUp":k.preventDefault(),w();break;case"a":(k.ctrlKey||k.metaKey)&&(k.preventDefault(),v());break;case"Escape":k.preventDefault(),g();break;case" ":t.value&&(k.preventDefault(),p(t.value));break}}return{selectedIds:e.computed(()=>n.value),selectedItems:s,selectedCount:c,isAllSelected:l,isSomeSelected:d,lastSelectedId:e.computed(()=>t.value),isSelected:u,toggle:p,select:f,deselect:h,selectAll:v,clear:g,toggleAll:E,rangeSelect:T,selectNext:_,selectPrevious:w,handleKeydown:m,selectionBus:i}}const tm={class:"flex items-center justify-between w-full px-4"},nm={class:"p-4"},om={key:0,class:"mb-4 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg"},am={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},im=["value"],rm={class:"flex gap-2 mt-4"},sm={class:"flex justify-end mb-4"},lm={key:1,class:"flex justify-center items-center h-64"},cm={key:2,class:"flex flex-col items-center justify-center h-64 text-center"},dm={class:"text-sm text-theme-secondary"},um={key:0},mm={class:"mb-4"},pm={class:"mb-4"},fm={class:"flex gap-2"},hm={class:"flex items-center justify-between px-4 py-2"},vm={class:"text-sm text-theme-secondary"},gm={key:0},ym={key:0},wm={key:1},bm={class:"flex gap-2"},km=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"),s=e.ref(""),c=e.ref(!1),l=e.ref([]),{selectedItems:d}=e.toRefs(t),u=e.ref(new Set(d.value)),p=e.ref(!1),f=e.ref({}),h=e.ref(["images","documents","videos"]),v=e.ref(1),g=e.ref(!0),E=e.ref(!1),T=il(),_=em(l);function w(F){var re;const j=F.conversion_urls||{},de=F.proxy_url||F.original_url||F.url||"",ne=j.thumb||j.preview||F.preview_url||F.thumbnail_url||de,J=F.custom_properties||{},Be=J.width,ce=J.height;return{...F,uuid:F.uuid,name:F.name||F.file_name,file_name:F.file_name,filename:F.file_name,mime_type:F.mime_type,size:F.size,collection_name:F.collection_name||"images",disk:F.disk,original_url:de,url:de,thumbnail_url:ne,conversions:F.conversions||{},conversion_urls:j,generated_conversions:F.generated_conversions||{},custom_properties:J,caption:F.caption||null,alt_text:F.alt_text||null,created_at:F.created_at,updated_at:F.updated_at,is_image:((re=F.mime_type)==null?void 0:re.startsWith("image/"))||!1,...typeof Be=="number"?{width:Be}:{},...typeof ce=="number"?{height:ce}:{},...F.formatted_size!==void 0?{formatted_size:F.formatted_size}:{}}}e.watch(()=>t.selectedItems,F=>{u.value=new Set(F),_.clear(),F.forEach(j=>_.select(j))});const m=e.computed(()=>{var j;let F=l.value;return(j=f.value.types)!=null&&j.length&&(F=F.filter(de=>{var J,Be;const ne=(J=de.mime_type)==null?void 0:J.split("/")[0];return(Be=f.value.types)==null?void 0:Be.includes(ne)})),(f.value.sizeMin!==void 0||f.value.sizeMax!==void 0)&&(F=F.filter(de=>{const ne=de.size/1048576;return!(f.value.sizeMin!==void 0&&ne<f.value.sizeMin||f.value.sizeMax!==void 0&&ne>f.value.sizeMax)})),F}),k=e.computed(()=>{var j;let F=0;return f.value.search&&F++,f.value.collection&&F++,(f.value.dateFrom||f.value.dateTo)&&F++,(j=f.value.types)!=null&&j.length&&(F+=f.value.types.length),(f.value.sizeMin!==void 0||f.value.sizeMax!==void 0)&&F++,F}),N=e.computed(()=>{const F=_.selectedCount.value;return F===0?"Select Media":`Select ${t.selectionMode==="multiple"?`${F} ${F===1?"Item":"Items"}`:"Item"}`}),S=e.computed(()=>{const F=_.selectedCount.value;return!!(F===0||t.selectionMode==="single"&&F>1||t.maxSelection&&F>t.maxSelection)}),y=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 C(F=!0){F?(c.value=!0,l.value=[],v.value=1,g.value=!0):E.value=!0;try{const j={collection:f.value.collection||t.collection,per_page:24};switch((s.value||f.value.search)&&(j.search=s.value||f.value.search||""),f.value.dateFrom&&(j.from_date=f.value.dateFrom),f.value.dateTo&&(j.to_date=f.value.dateTo),i.value){case"recent":await T.fetchMedia(v.value,j),F?l.value=T.items.map(de=>w(de)):l.value=[...l.value,...T.items.map(de=>w(de))],g.value=T.currentPage<T.totalPages;break;case"model":if(t.modelType&&t.modelId){const de=await T.fetchModelMedia(t.modelType,t.modelId,j.collection,j.search);l.value=de?de.map(ne=>w(ne)):[],g.value=!1}break;case"library":await T.fetchMedia(v.value,j),F?l.value=T.items.map(de=>w(de)):l.value=[...l.value,...T.items.map(de=>w(de))],g.value=T.currentPage<T.totalPages;break}}catch{}finally{c.value=!1,E.value=!1}}async function U(F){if(!g.value||E.value){F!=null&&F.target&&F.target.complete();return}v.value++,await C(!1),F!=null&&F.target&&(F.target.complete(),g.value||(F.target.disabled=!0))}function x(F){return F==="recent"||F==="model"||F==="library"}function I(F){i.value=F,C()}function R(F){typeof F=="string"&&x(F)&&I(F)}async function A(F){t.selectionMode==="single"?(_.clear(),_.select(F.uuid)):(_.toggle(F.uuid),t.maxSelection&&_.selectedCount.value>t.maxSelection&&(_.deselect(F.uuid),await(await $.toastController.create({message:`Maximum ${t.maxSelection} items can be selected`,duration:2e3,color:"warning"})).present()))}function M(){o("confirm",_.selectedItems.value)}function P(){o("close")}function H(F){}const B=e.ref(null),D=e.ref(!1);function X(F){B.value=F,D.value=!0}function Z(F){const j=l.value.findIndex(ne=>ne.uuid===F.uuid);j!==-1&&(l.value[j]=F);const de={};F.alt_text!==void 0&&(de.alt_text=F.alt_text),F.caption!==void 0&&(de.caption=F.caption),F.custom_properties!==void 0&&(de.custom_properties=F.custom_properties),T.updateMedia(F.uuid,de)}function ee(){C()}function ge(){f.value={},s.value="",C()}const Ee=Ku(()=>{C(!0)},300);e.watch(s,()=>{t.isOpen&&Ee()});async function te(F){try{await(await $.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 T.deleteMedia(F),await C()}}]})).present()}catch{}}return e.watch(()=>t.isOpen,F=>{F&&C()}),e.onMounted(()=>{t.selectedItems.length>0&&t.selectedItems.forEach(F=>_.select(F))}),(F,j)=>{const de=e.resolveComponent("AdminMediaGrid"),ne=e.resolveComponent("AdminMediaListItem");return e.openBlock(),e.createBlock(e.unref($.IonModal),{"is-open":F.isOpen,onDidDismiss:P,"backdrop-dismiss":!1,class:"media-browser-modal"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref($.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{onClick:P},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref($.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.value),1)]),_:1})]),_:1}),e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",tm,[e.createVNode(e.unref($.IonSegment),{value:i.value,onIonChange:j[0]||(j[0]=J=>R(J.detail.value)),class:"max-w-xs"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonSegmentButton),{value:"recent"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[15]||(j[15]=[e.createTextVNode("Recent",-1)])]),_:1})]),_:1}),t.modelType&&t.modelId?(e.openBlock(),e.createBlock(e.unref($.IonSegmentButton),{key:0,value:"model"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[16]||(j[16]=[e.createTextVNode("Model",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonSegmentButton),{value:"library"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[17]||(j[17]=[e.createTextVNode("Library",-1)])]),_:1})]),_:1})]),_:1},8,["value"]),e.createVNode(e.unref($.IonButton),{fill:"clear",size:"small",onClick:j[1]||(j[1]=J=>p.value=!p.value),class:"relative"},{"icon-only":e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"filter-outline"})]),default:e.withCtx(()=>[k.value>0?(e.openBlock(),e.createBlock(e.unref($.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(k.value),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})])]),_:1})]),_:1}),e.createVNode(e.unref($.IonContent),null,{default:e.withCtx(()=>[e.createElementVNode("div",nm,[p.value?(e.openBlock(),e.createElementBlock("div",om,[e.createElementVNode("div",am,[e.createElementVNode("div",null,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[18]||(j[18]=[e.createTextVNode("Collection",-1)])]),_:1}),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":j[2]||(j[2]=J=>f.value.collection=J),class:"w-full p-2 border rounded"},[j[19]||(j[19]=e.createElementVNode("option",{value:""},"All Collections",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,J=>(e.openBlock(),e.createElementBlock("option",{key:J,value:J},e.toDisplayString(J),9,im))),128))],512),[[e.vModelSelect,f.value.collection]])]),e.createElementVNode("div",null,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[20]||(j[20]=[e.createTextVNode("From Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":j[3]||(j[3]=J=>f.value.dateFrom=J),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,f.value.dateFrom]])]),e.createElementVNode("div",null,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[21]||(j[21]=[e.createTextVNode("To Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":j[4]||(j[4]=J=>f.value.dateTo=J),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,f.value.dateTo]])])]),e.createElementVNode("div",rm,[e.createVNode(e.unref($.IonButton),{size:"small",onClick:ee},{default:e.withCtx(()=>[...j[22]||(j[22]=[e.createTextVNode("Apply",-1)])]),_:1}),e.createVNode(e.unref($.IonButton),{size:"small",fill:"clear",onClick:ge},{default:e.withCtx(()=>[...j[23]||(j[23]=[e.createTextVNode("Clear",-1)])]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonSearchbar),{modelValue:s.value,"onUpdate:modelValue":j[5]||(j[5]=J=>s.value=J),placeholder:"Search media...",debounce:300,class:"mb-4"},null,8,["modelValue"]),e.createElementVNode("div",sm,[e.createVNode(e.unref($.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{fill:r.value==="grid"?"solid":"clear",size:"small",onClick:j[6]||(j[6]=J=>r.value="grid")},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"grid-outline"})]),_:1},8,["fill"]),e.createVNode(e.unref($.IonButton),{fill:r.value==="list"?"solid":"clear",size:"small",onClick:j[7]||(j[7]=J=>r.value="list")},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"list-outline"})]),_:1},8,["fill"])]),_:1})]),c.value?(e.openBlock(),e.createElementBlock("div",lm,[e.createVNode(e.unref($.IonSpinner),{name:"crescent"})])):m.value.length===0?(e.openBlock(),e.createElementBlock("div",cm,[e.createVNode(e.unref($.IonIcon),{name:"images-outline",class:"text-6xl text-theme-secondary mb-4"}),j[24]||(j[24]=e.createElementVNode("h3",{class:"text-lg font-medium text-theme mb-2"}," No Media Found ",-1)),e.createElementVNode("p",dm,e.toDisplayString(s.value?"Try adjusting your search":"No media items available"),1)])):r.value==="grid"?(e.openBlock(),e.createBlock(de,{key:3,"media-items":m.value,"selected-items":e.unref(_).selectedItems.value,"is-loading":!1,"selection-mode":!0,columns:{mobile:2,sm:3,md:4,lg:5,xl:6},onToggleSelect:A,onPreview:H,onEdit:X,onDelete:te},null,8,["media-items","selected-items"])):(e.openBlock(),e.createBlock(e.unref($.IonList),{key:4,lines:"none",class:"rounded-lg overflow-hidden"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,(J,Be)=>(e.openBlock(),e.createBlock(ne,{key:J.uuid,media:J,selected:e.unref(_).isSelected(J.uuid),"selection-mode":!0,index:Be,onToggleSelect:A,onPreview:H,onEdit:X,onDelete:te},null,8,["media","selected","index"]))),128))]),_:1})),!c.value&&m.value.length>0&&i.value!=="model"?(e.openBlock(),e.createBlock(e.unref($.IonInfiniteScroll),{key:5,threshold:"100px",onIonInfinite:j[8]||(j[8]=J=>U(J))},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonInfiniteScrollContent),{"loading-spinner":"crescent","loading-text":"Loading more media..."})]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(e.unref($.IonModal),{"is-open":D.value,onDidDismiss:j[14]||(j[14]=J=>D.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref($.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{onClick:j[9]||(j[9]=J=>D.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref($.IonTitle),null,{default:e.withCtx(()=>[...j[25]||(j[25]=[e.createTextVNode("Edit Media Info",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref($.IonContent),{class:"p-4"},{default:e.withCtx(()=>[B.value?(e.openBlock(),e.createElementBlock("div",um,[e.createElementVNode("div",mm,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[26]||(j[26]=[e.createTextVNode("Caption",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":j[10]||(j[10]=J=>B.value.caption=J),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter caption..."},null,512),[[e.vModelText,B.value.caption]])]),e.createElementVNode("div",pm,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[27]||(j[27]=[e.createTextVNode("Alt Text",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":j[11]||(j[11]=J=>B.value.alt_text=J),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter alt text..."},null,512),[[e.vModelText,B.value.alt_text]])]),e.createElementVNode("div",fm,[e.createVNode(e.unref($.IonButton),{onClick:j[12]||(j[12]=J=>Z(B.value))},{default:e.withCtx(()=>[...j[28]||(j[28]=[e.createTextVNode("Save",-1)])]),_:1}),e.createVNode(e.unref($.IonButton),{fill:"clear",onClick:j[13]||(j[13]=J=>D.value=!1)},{default:e.withCtx(()=>[...j[29]||(j[29]=[e.createTextVNode("Cancel",-1)])]),_:1})])])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["is-open"]),e.createVNode(e.unref($.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",hm,[e.createElementVNode("div",vm,[e.unref(_).selectedCount.value>0?(e.openBlock(),e.createElementBlock("span",gm,[e.createTextVNode(e.toDisplayString(e.unref(_).selectedCount.value)+" selected ",1),t.maxSelection?(e.openBlock(),e.createElementBlock("span",ym," / "+e.toDisplayString(t.maxSelection)+" max ",1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("span",wm," Select "+e.toDisplayString(t.selectionMode==="multiple"?"items":"an item"),1))]),e.createElementVNode("div",bm,[e.createVNode(e.unref($.IonButton),{fill:"clear",onClick:P},{default:e.withCtx(()=>[...j[30]||(j[30]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref($.IonButton),{disabled:S.value,onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(N.value),1)]),_:1},8,["disabled"])])])]),_:1})]),_:1})]),_:1},8,["is-open"])}}}),xm=Me(km,[["__scopeId","data-v-9a8c0954"]]),Em={key:1,class:"flex flex-col items-center justify-center py-16"},Vm=["draggable","onDragstart","onDragover","onDrop"],Sm={key:0,class:"absolute top-2 left-2 z-20"},Cm=["checked","onChange"],_m={key:2,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-move"},Nm=["data-media-id"],Tm={key:0,class:"w-full h-full flex items-center justify-center"},Mm=["src","alt","onError","onLoad"],Bm={key:2,class:"w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-700"},Im={class:"text-center"},Fm={class:"text-4xl text-gray-400 mb-2"},$m={class:"text-sm font-medium text-gray-500"},Rm={class:"absolute inset-0 bg-black/70 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2"},Dm=["onClick"],Am=["onClick"],Um=["onClick"],Om={class:"p-3"},Lm={class:"text-sm font-medium truncate mb-1"},zm={class:"text-xs text-gray-600 dark:text-gray-400"},Pm={key:0},jm={key:0,class:"text-xs text-gray-500 dark:text-gray-500 mt-1 truncate"},Wm=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),s=e.ref(new Set),c=e.ref(null),l=S=>t.selectedItems.some(y=>y.uuid===S.uuid),d=e.computed(()=>{const S=t.columns,y=["grid","gap-4"];switch(S.mobile){case 1:y.push("grid-cols-1");break;case 2:y.push("grid-cols-2");break;case 3:y.push("grid-cols-3");break;case 4:y.push("grid-cols-4");break;default:y.push("grid-cols-2");break}switch(S.sm){case 1:y.push("sm:grid-cols-1");break;case 2:y.push("sm:grid-cols-2");break;case 3:y.push("sm:grid-cols-3");break;case 4:y.push("sm:grid-cols-4");break;case 5:y.push("sm:grid-cols-5");break;default:y.push("sm:grid-cols-3");break}switch(S.md){case 2:y.push("md:grid-cols-2");break;case 3:y.push("md:grid-cols-3");break;case 4:y.push("md:grid-cols-4");break;case 5:y.push("md:grid-cols-5");break;case 6:y.push("md:grid-cols-6");break;default:y.push("md:grid-cols-4");break}switch(S.lg){case 3:y.push("lg:grid-cols-3");break;case 4:y.push("lg:grid-cols-4");break;case 5:y.push("lg:grid-cols-5");break;case 6:y.push("lg:grid-cols-6");break;case 7:y.push("lg:grid-cols-7");break;default:y.push("lg:grid-cols-5");break}switch(S.xl){case 4:y.push("xl:grid-cols-4");break;case 5:y.push("xl:grid-cols-5");break;case 6:y.push("xl:grid-cols-6");break;case 7:y.push("xl:grid-cols-7");break;case 8:y.push("xl:grid-cols-8");break;default:y.push("xl:grid-cols-6");break}return y.join(" ")});function u(S,y,C){t.reorderable&&(i.value=y,S.dataTransfer&&(S.dataTransfer.effectAllowed="move",S.dataTransfer.setData("text/html","")))}function p(S,y){t.reorderable&&(S.preventDefault(),r.value=y)}function f(){r.value=null}function h(S,y){if(!t.reorderable||!i.value)return;S.preventDefault();const C=[...t.mediaItems],U=C.findIndex(x=>{var I;return x.uuid===((I=i.value)==null?void 0:I.uuid)});if(U!==-1&&U!==y&&i.value){const[x]=C.splice(U,1);C.splice(y,0,x),o("reorder",C)}i.value=null,r.value=null}function v(S){return S<1024?S+" B":S<1024*1024?(S/1024).toFixed(1)+" KB":(S/(1024*1024)).toFixed(1)+" MB"}function g(S){var C;return S.thumbnail_url||((C=S.conversion_urls)==null?void 0:C.thumb)||S.original_url||S.url||""}function E(S){var U,x,I;const y=((U=S.mime_type)==null?void 0:U.startsWith("image/"))||!1,C=!!(S.thumbnail_url||(x=S.conversion_urls)!=null&&x.thumb||(I=S.conversion_urls)!=null&&I.preview||S.original_url||S.url);return y&&C}function T(S){var y;return((y=S.split(".").pop())==null?void 0:y.toUpperCase())||""}function _(S){var C;const y=((C=S.mime_type)==null?void 0:C.toLowerCase())||"";return y.startsWith("image/")?"image":y.startsWith("video/")?"videocam":y.startsWith("audio/")?"musical-notes":y.includes("pdf")?"document-text":y.includes("zip")||y.includes("rar")?"archive":y.includes("sheet")||y.includes("excel")?"grid":y.includes("document")||y.includes("word")?"document-text":"document"}e.onMounted(()=>{typeof window<"u"&&"IntersectionObserver"in window&&(c.value=new IntersectionObserver(S=>{S.forEach(y=>{var C;if(y.isIntersecting){const U=y.target.getAttribute("data-media-id");U&&(s.value.add(U),(C=c.value)==null||C.unobserve(y.target))}})},{rootMargin:"50px"}))}),e.onUnmounted(()=>{c.value&&c.value.disconnect()});function w(S){return!0}function m(){c.value&&e.nextTick(()=>{document.querySelectorAll("[data-media-id]").forEach(y=>{var U;const C=y.getAttribute("data-media-id");C&&!s.value.has(C)&&((U=c.value)==null||U.observe(y))})})}e.watch(()=>t.mediaItems,()=>{s.value.clear(),m()},{immediate:!0,deep:!0});function k(S,y){const C=S.target;delete C.dataset.fallbackIndex}function N(S,y){const C=S.target,U=C.closest("[data-media-id]"),x=[y.original_url,y.url,y.thumbnail_url,"preview_url"in y?y.preview_url:void 0].filter(I=>I&&I.trim()!==""&&I!==C.src);if(x.length>0&&C.dataset.fallbackIndex){const I=parseInt(C.dataset.fallbackIndex);if(I<x.length){C.dataset.fallbackIndex=(I+1).toString(),C.src=x[I]||"";return}}else if(x.length>0){C.dataset.fallbackIndex="1",C.src=x[0]||"";return}if(C.style.display="none",U&&!U.querySelector(".media-fallback-icon")){const R=document.createElement("div");R.className="media-fallback-icon w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-800",R.innerHTML=`
|
|
1
|
+
"use strict";var Dd=Object.defineProperty;var Ad=(a,n,t)=>n in a?Dd(a,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[n]=t;var z=(a,n,t)=>Ad(a,typeof n!="symbol"?n+"":n,t);const ba=require("pinia"),e=require("vue"),ze=require("pixi.js"),ct=require("./editor-DjvxEsss.cjs"),$=require("@ionic/vue"),Ud=require("pixi-filters");function Od(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 Ke=Od(ze),_i=1,Ld=new Set(["free","square","circle"]);function zd(a){const n=typeof a;return n==="string"||n==="number"||n==="boolean"}function Pd(a){if(!a||typeof a!="object")return!1;const n=a;return typeof n.x=="number"&&typeof n.y=="number"&&typeof n.width=="number"&&typeof n.height=="number"}function Ki(a){if(!a||typeof a!="object")return null;const n=a;if(n.version!==_i)return null;const t=n.crop,o=t&&Pd(t.rect)?{...t.rect}:null,i=t&&typeof t.shape=="string"&&Ld.has(t.shape)?t.shape:"free",r=t&&typeof t.aspectRatio=="string"?t.aspectRatio:"free",s=n.filters,c=[];if(Array.isArray(s))for(const l of s){if(!l||typeof l!="object")continue;const d=l;if(typeof d.id!="string")continue;const u={},p=d.values;if(p&&typeof p=="object"&&!Array.isArray(p))for(const[f,h]of Object.entries(p))zd(h)&&(u[f]=h);c.push({id:d.id,enabled:d.enabled!==!1,values:u})}return{version:_i,crop:{rect:o,aspectRatio:r,shape:i},filters:c}}function tl(a){const n=Ki(a);return n?JSON.stringify(n):null}function jd(a){try{const n=JSON.parse(a);return Ki(n)}catch{return null}}function Wd(){return{version:_i,crop:{rect:null,aspectRatio:"free",shape:"free"},filters:[]}}let Vt={apiBaseUrl:"/api/v1",isAdmin:!1};function Rn(a){Vt={...Vt,...a}}function nl(){return{...Vt}}function ol(a){Vt={...a}}function al(a){const n=nl();return Rn(a),()=>{ol(n)}}const Zd=async(a,n={})=>{var c;const t=(c=document.querySelector('meta[name="csrf-token"]'))==null?void 0:c.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 s=await fetch(a,r);if(!s.ok){const l=await s.json().catch(()=>({message:"Request failed"}));throw new Error(l.message||`HTTP ${s.status}`)}if(s.status!==204)return await s.json()},xt=ba.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),s=e.ref(24),c=e.ref({type:null,uuid:null}),l=e.ref([]),d=e.ref(!1),u=e.ref(null),p=e.ref(new Map),f=e.ref(new Map),h=e.ref(new Set),v=e.ref(new Map),g=e.ref({}),E=5*60*1e3,T=e.computed(()=>{if(Vt.apiScope)return Vt.apiScope;if(Vt.isAdmin)return"admin"}),_=e.computed(()=>T.value==="admin");function w(){return Vt.httpClient||Zd}function m(ce){const re=Vt.apiBaseUrl||"/api/v1",ke=T.value?`/${T.value}`:"";return`${re}${ke}${ce}`}function k(ce,re){return`${T.value??"default"}-${ce}-${JSON.stringify(re)}`}function N(ce){return Date.now()-ce<E}function S(){v.value.clear(),g.value={}}function y(ce){if(!ce||!ce.data)return;const re={};ce.data.forEach(ke=>{const oe=`${ke.file_name}-${ke.collection_name||"default"}`,le=re[oe];(!le||Object.keys(ke.generated_conversions||{}).length>Object.keys(le.generated_conversions||{}).length)&&(re[oe]=ke)}),a.value=Object.values(re),ce.meta&&(i.value=ce.meta.current_page,r.value=Math.ceil(ce.meta.total/ce.meta.per_page))}async function C(ce=1,re={}){const ke=k(ce,re),oe=v.value.get(ke);if(oe&&N(oe.timestamp)){const le=oe.data;return y(le),le}t.value=!0,o.value=null;try{const le=new URLSearchParams;le.append("page",ce.toString()),le.append("per_page",s.value.toString()),_.value&&le.append("linked","1");for(const dt in re)if(Object.prototype.hasOwnProperty.call(re,dt)){const Ze=re[dt];Ze!=null&&Ze!==""&&le.append(dt,String(Ze))}const Ce=await w()(m(`/media?${le}`));return v.value.set(ke,{data:Ce,timestamp:Date.now()}),y(Ce),Ce}catch(le){throw o.value=le instanceof Error?le.message:"Failed to fetch media",a.value=[],new Error(o.value)}finally{t.value=!1}}async function U(ce,re){t.value=!0,o.value=null;const ke=`${ce.name}-${Date.now()}`,oe={file:ce,progress:0,status:"uploading"};p.value.set(ke,oe);try{const le=new FormData;le.append("file",ce),le.append("collection",re.collection),re.ownerUuid&&(le.append("owner_uuid",re.ownerUuid),le.append("owner_type",re.ownerType||"")),re.usageUuid&&(le.append("usage_uuid",re.usageUuid),le.append("usage_type",re.usageType||""),le.append("usage_purpose",re.usagePurpose||"")),re.customProperties&&le.append("custom_properties",JSON.stringify(re.customProperties));const Ce=await w()(m("/media"),{method:"POST",body:le});return oe.status="completed",oe.progress=100,oe.media=Ce==null?void 0:Ce.data,i.value===1&&(Ce!=null&&Ce.data)&&(a.value=[Ce.data,...a.value]),S(),(Ce==null?void 0:Ce.data)||null}catch(le){throw oe.status="error",oe.error=le instanceof Error?le.message:"Upload failed",o.value=oe.error,new Error(o.value)}finally{t.value=!1,setTimeout(()=>{p.value.delete(ke)},5e3)}}async function x(ce){t.value=!0,o.value=null;const re=a.value.findIndex(oe=>oe.uuid===ce);let ke;re!==-1&&(ke=a.value.splice(re,1)[0]);try{return await w()(m(`/media/${ce}`),{method:"DELETE"}),h.value.delete(ce),S(),!0}catch(oe){throw ke&&re!==-1&&a.value.splice(re,0,ke),o.value=oe instanceof Error?oe.message:"Failed to delete media",new Error(o.value)}finally{t.value=!1}}async function I(ce,re){t.value=!0,o.value=null;try{const oe=await w()(m(`/media/${ce}`),{method:"PATCH",body:re,data:re});if(oe!=null&&oe.data){const le=a.value.findIndex(xe=>xe.uuid===ce);return le!==-1&&(a.value[le]={...a.value[le],...oe.data}),S(),oe.data}return null}catch(ke){throw o.value=ke instanceof Error?ke.message:"Failed to update media",new Error(o.value)}finally{t.value=!1}}async function R(){t.value=!0,o.value=null;try{const re=await w()(m("/media/collections"));return n.value=(re==null?void 0:re.data)||[],n.value}catch(ce){throw o.value=ce instanceof Error?ce.message:"Failed to fetch collections",n.value=[],new Error(o.value)}finally{t.value=!1}}async function A(ce,re,ke="images",oe){d.value=!0,u.value=null;try{const le=new URLSearchParams;le.append("collection",ke),oe&&le.append("search",oe);const Ce=await w()(m(`/media/model/${ce}/${re}?${le}`));return Ce!=null&&Ce.data?(l.value=Ce.data,Ce.data):[]}catch(le){throw u.value=le instanceof Error?le.message:"Failed to fetch model media",l.value=[],new Error(u.value)}finally{d.value=!1}}async function M(ce,re,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value];try{const Ce=await w()(m(`/media/model/${ce}/${re}/attach`),{method:"POST",body:{media_uuids:ke,collection:oe}});return await A(ce,re,oe),(Ce==null?void 0:Ce.data)||[]}catch(xe){throw l.value=le,u.value=xe instanceof Error?xe.message:"Failed to attach media",new Error(u.value)}finally{d.value=!1}}async function P(ce,re,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value];l.value=l.value.filter(xe=>xe.uuid!==ke);try{return await w()(m(`/media/model/${ce}/${re}/detach`),{method:"POST",body:{media_uuid:ke,collection:oe}}),!0}catch(xe){throw l.value=le,u.value=xe instanceof Error?xe.message:"Failed to detach media",new Error(u.value)}finally{d.value=!1}}async function H(ce,re,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value],xe=new Map(l.value.map(Ce=>[Ce.uuid,Ce]));l.value=ke.map(Ce=>xe.get(Ce)).filter(Ce=>Ce!==void 0);try{return await w()(m(`/media/model/${ce}/${re}/reorder`),{method:"POST",body:{media_uuids:ke,collection:oe}}),!0}catch(Ce){throw l.value=le,u.value=Ce instanceof Error?Ce.message:"Failed to reorder media",new Error(u.value)}finally{d.value=!1}}async function B(ce,re,ke={}){const oe=w(),le=Vt.apiBaseUrl||"/api/v1",xe=new FormData,Ce=re.imageData,dt=Ce.match(/^data:(image\/\w+);base64,/),Ze=dt?dt[1]:"image/png",vt=Ce.replace(/^data:image\/\w+;base64,/,""),Y=atob(vt),me=new Uint8Array(Y.length);for(let Ve=0;Ve<Y.length;Ve++)me[Ve]=Y.charCodeAt(Ve);const ae=new Blob([me],{type:Ze});xe.append("image_file",ae,`edited.${Ze==="image/jpeg"?"jpg":"png"}`);const ve=tl(re.state);ve&&xe.append("editor_state",ve),re.metadata&&(xe.append("filters",JSON.stringify(re.metadata.filters)),re.metadata.cropRect&&xe.append("crop_data",JSON.stringify(re.metadata.cropRect))),xe.append("save_as_new","true"),ke.asVariant&&xe.append("as_variant","true"),ke.name!==void 0&&xe.append("name",ke.name);const Ne=await oe(`${le}/editor/${ce}/save`,{method:"POST",body:xe});if("media"in Ne&&Ne.media)return Ne.media;if("status_url"in Ne&&Ne.status_url)return D(oe,Ne.status_url,ke.pollTimeout??6e4);throw new Error("Unexpected response from editor save endpoint")}async function D(ce,re,ke){const oe=Date.now(),le=2e3;for(;Date.now()-oe<ke;){await new Promise(Ce=>setTimeout(Ce,le));const xe=await ce(re);if(xe.status==="completed"&&xe.media)return xe.media;if(xe.status==="failed")throw new Error(xe.error??"Image processing failed")}throw new Error("Image processing timed out")}function X(ce,re,ke){c.value=ke!==void 0?{type:ce,uuid:re,collection:ke}:{type:ce,uuid:re},g.value[`${ce}-${re}`]={timestamp:Date.now()}}function Z(){c.value={type:null,uuid:null},l.value=[],u.value=null}async function ee(){if(!c.value.type||!c.value.uuid)return;const ce=await A(c.value.type,c.value.uuid,c.value.collection||"images");l.value=ce||[]}function ge(){a.value.forEach(ce=>h.value.add(ce.uuid))}function Ee(){h.value.clear()}function te(ce){h.value.has(ce)?h.value.delete(ce):h.value.add(ce)}function F(ce){return h.value.has(ce)}function j(){return Array.from(p.value.values()).some(ce=>ce.status==="uploading")}function de(ce){return p.value.get(ce)||f.value.get(ce)}function ne(){return[...Array.from(p.value.values()),...Array.from(f.value.values())]}async function J(){const ce=Array.from(h.value);let re=0;for(const ke of ce)try{await x(ke),re++}catch{}return Ee(),re}function Be(ce,re){var ke;return re&&((ke=ce.conversion_urls)!=null&&ke[re])?ce.conversion_urls[re]||"":ce.original_url||ce.url||""}return{items:a,collections:n,loading:t,error:o,currentPage:i,totalPages:r,itemsPerPage:s,isAdmin:_,modelContext:c,modelMedia:l,isLoadingModelMedia:d,modelMediaError:u,selectedItems:h,uploadProgress:p,uploadQueue:f,cachedResponses:g,fetchMedia:C,uploadFile:U,deleteMedia:x,updateMedia:I,clearCache:S,fetchCollections:R,fetchModelMedia:A,attachMedia:M,detachMedia:P,reorderMedia:H,saveEditedImage:B,setModelContext:X,clearModelContext:Z,refreshModelMedia:ee,selectAllItems:ge,clearSelection:Ee,toggleSelection:te,isSelected:F,deleteSelectedItems:J,getHttpClient:w,getApiUrl:m,hasActiveUploads:j,getUploadProgress:de,getAllUploadProgress:ne,getMediaUrl:Be}}),il=()=>((Vt.apiScope!=="admin"||Vt.isAdmin!==!0)&&Rn({...Vt,apiScope:"admin",isAdmin:!0}),xt());function Xd(a,n){try{let t=ct.getFilter(a);if(t||(ct.registerCorePixiFilters(),t=ct.getFilter(a)),!t){try{const r=ct.getAllFilters()}catch{}return null}const o={...t.defaultParams,...n};return t.createFilter(o)}catch{return null}}const Hd=e.defineComponent({__name:"ImageEditor",props:{initialImage:{},initialState:{default:null},sessionKey:{default:0},theme:{default:"auto"},cropShape:{default:"square"},preset:{},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,s=null;function c(){var T;if(!r){o("error",new Error("Editor not initialized"));return}const p=r.exportImage("png",.92);if(!p){o("error",new Error("Failed to export image — the image could not be processed"));return}const f=r.getSerializableState(),h=r._renderer,v=((T=h.getExportDimensions)==null?void 0:T.call(h))??{width:0,height:0},g={width:Math.round(v.width),height:Math.round(v.height)};o("save",{imageData:p,dimensions:g,state:f})}function l(){o("cancel")}function d(){if(!i.value||r)return;window.PIXI=Ke,ct.initializeFilterRegistry();const p={theme:t.theme};t.preset&&(p.preset=t.preset),t.preset?t.cropShape==="circle"&&(p.cropShape="circle",p.initialAspectRatio="1:1",p.initialMode="crop"):(p.cropShape=t.cropShape==="circle"?"circle":"free",p.initialAspectRatio=t.cropShape==="circle"?"1:1":"free",p.initialMode=t.cropShape==="circle"?"crop":"adjust"),r=new ct.VanillaImageEditor(i.value,p),r.setFilterRegistry({getAllFilters:ct.getAllFilters,getFilter:ct.getFilter,getFiltersByCategory:ct.getFiltersByCategory}),r.save=function(){c()},r.on("cancel",l),t.initialImage&&r.loadImage(t.initialImage,{state:t.initialState??null,sessionKey:t.sessionKey})}e.onMounted(()=>{i.value&&(i.value.clientWidth>0?d():(s=new ResizeObserver(p=>{const f=p[0];f&&f.contentRect.width>0&&!r&&(d(),s==null||s.disconnect(),s=null)}),s.observe(i.value)))});const u=()=>{!r||!t.initialImage||r.loadImage(t.initialImage,{state:t.initialState??null,sessionKey:t.sessionKey})};return e.watch(()=>t.initialImage,(p,f)=>{!r||!p||p===f||u()}),e.watch(()=>t.sessionKey,(p,f)=>{p!==f&&u()}),e.watch(()=>t.initialState,(p,f)=>{p!==f&&u()}),e.onUnmounted(()=>{s==null||s.disconnect(),s=null,r&&(r.destroy(),r=null)}),(p,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:i,class:"vanilla-editor-wrapper","data-testid":"vanilla-image-editor"},null,512))}}),Me=(a,n)=>{const t=a.__vccOpts||a;for(const[o,i]of n)t[o]=i;return t},rl=Me(Hd,[["__scopeId","data-v-d5646104"]]),Gd={class:"editor-modal-panel"},Jd={class:"editor-fill"},Yd=e.defineComponent({__name:"ImageEditorModal",props:{modelValue:{type:Boolean,default:!1},initialImage:{},initialState:{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:{},primaryColor:{default:"#3880ff"},secondaryColor:{default:"#5260ff"},saveButtonColor:{default:"#3880ff"},downloadButtonColor:{default:"#2dd36f"}},emits:["update:modelValue","save","cancel","error"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r=e.ref(t.modelValue),s=e.ref(!1),c=e.ref(null),l=g=>{o("error",g)},d=()=>{e.nextTick(()=>{if(i.value){const g=i.value.querySelector("button:not([disabled]), [href], input:not([disabled])");g&&g.focus()}})};e.watch(()=>t.modelValue,g=>{r.value=g,g&&(c.value=document.activeElement,d())},{immediate:!0});const u=g=>{try{s.value=!0,o("save",g)}catch(E){l(E)}finally{s.value=!1}},p=()=>{o("cancel"),h()},f=()=>{s.value||h()},h=()=>{r.value=!1,o("update:modelValue",!1),c.value&&c.value instanceof HTMLElement&&(c.value.focus(),c.value=null)},v=g=>{if(g.key==="Escape"&&r.value&&!s.value){h();return}if(g.key==="Tab"&&r.value&&i.value){const E=i.value.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])');if(E.length===0)return;const T=E[0],_=E[E.length-1];g.shiftKey&&document.activeElement===T?(g.preventDefault(),_.focus()):!g.shiftKey&&document.activeElement===_&&(g.preventDefault(),T.focus())}};return e.onMounted(()=>{document.addEventListener("keydown",v)}),e.onBeforeUnmount(()=>{document.removeEventListener("keydown",v)}),(g,E)=>(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(f,["escape"])},[e.createElementVNode("div",{class:"editor-modal-backdrop",onClick:f}),e.createElementVNode("div",Gd,[e.createElementVNode("div",Jd,[e.createVNode(rl,{"initial-image":g.initialImage,"initial-state":g.initialState,"session-key":g.sessionKey,theme:g.theme,"crop-shape":g.cropShape,preset:g.preset,"primary-color":g.primaryColor,"secondary-color":g.secondaryColor,"save-button-color":g.saveButtonColor,"download-button-color":g.downloadButtonColor,onSave:u,onCancel:p,onError:l},null,8,["initial-image","initial-state","session-key","theme","crop-shape","preset","primary-color","secondary-color","save-button-color","download-button-color"])])])],544)):e.createCommentVNode("",!0)]))}}),sl=Me(Yd,[["__scopeId","data-v-437b6a27"]]),Kd={class:"media-workspace"},qd={class:"media-workspace-toolbar"},Qd={class:"media-workspace-label"},eu=["value"],tu={class:"media-workspace-grid"},nu=["onClick"],ou=e.defineComponent({__name:"MediaWorkspace",props:{apiScope:{},subScopes:{},initialScopeId:{}},emits:["scope-change","update:media","upload","preview"],setup(a,{emit:n}){var p;const t=a,o=n,i=xt(),r=e.ref(t.initialScopeId??((p=t.subScopes[0])==null?void 0:p.id)??""),s=e.computed(()=>t.subScopes),c=e.computed(()=>s.value.find(f=>f.id===r.value));let l=null;function d(){l&&(l(),l=null),t.apiScope&&(l=al({apiScope:t.apiScope,isAdmin:t.apiScope==="admin"}))}async function u(){var h;const f={};(h=c.value)!=null&&h.collection&&(f.collection=c.value.collection),await i.fetchMedia(1,f),o("update:media",[...i.items])}return e.watch(()=>t.initialScopeId,f=>{f&&f!==r.value&&(r.value=f)}),e.watch(()=>t.subScopes,f=>{if(f.length===0){r.value="";return}f.some(h=>h.id===r.value)||(r.value=f[0].id)},{deep:!0}),e.watch(()=>t.apiScope,()=>{d(),u()}),e.watch(r,f=>{f&&(o("scope-change",f),u())}),e.onMounted(()=>{d(),u()}),e.onUnmounted(()=>{l&&(l(),l=null)}),(f,h)=>(e.openBlock(),e.createElementBlock("div",Kd,[e.createElementVNode("div",qd,[e.createElementVNode("label",Qd,[h[2]||(h[2]=e.createElementVNode("span",{class:"media-workspace-label-text"},"Scope",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[0]||(h[0]=v=>r.value=v),"data-testid":"scope-select",class:"media-workspace-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,v=>(e.openBlock(),e.createElementBlock("option",{key:v.id,value:v.id},e.toDisplayString(v.label),9,eu))),128))],512),[[e.vModelSelect,r.value]])]),e.createElementVNode("button",{type:"button",class:"media-workspace-upload","data-testid":"upload-button",onClick:h[1]||(h[1]=v=>o("upload"))}," Upload ")]),e.createElementVNode("div",tu,[(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:g=>o("preview",v)},e.toDisplayString(v.file_name),9,nu))),128))])]))}}),au=Me(ou,[["__scopeId","data-v-895f26fe"]]),iu={class:"managed-media-gallery"},ru={class:"gallery-grid"},su=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",iu,[e.createElementVNode("div",ru,[e.renderSlot(n.$slots,"default",{},void 0,!0)])]))}}),lu=Me(su,[["__scopeId","data-v-a60fdcd7"]]),cu="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>",qi="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>",du="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>",Qi="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>",uu="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>",mu="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>",oo="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>",pu="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>",ll="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>",cl="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>",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' stroke-width='48' d='M328 112L184 256l144 144' class='ionicon-fill-none'/></svg>",fu="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>",hu="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>",is="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>",Dn="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>",rs="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>",vu="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>",sn="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>",gu="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>",Kn="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>",yu="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>",wu="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>",ss="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>",dl="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>",vo="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>",bu="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>",ku="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>",xu="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>",ao="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>",ls="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>",di="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>",Eu="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>",Vu="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>",ui="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>",Su="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>",Cu="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>",_u="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>",Nu="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>",ul="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>",ml="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>",Tu="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>",Mu="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>",Bu="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>",Iu="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>",pl="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>",Fu="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>",$u="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>",fl="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>",Ru="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>",Du="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>",Ln="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>",Au="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>",Uu="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>",cs="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>",er="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>",Ou="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>",mi="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>",rn="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>",qn="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>",ds="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>",Lu="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>",hl="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>",zu="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>",vl="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>",Pu="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>",ju="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>",Wu="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>",Zu="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>",Xu="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>",Hu="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>",Gu="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>",Oo="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 us=()=>{};function Ju(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 Yu(a,n={}){let t,o,i=us;const r=l=>{clearTimeout(l),i(),i=us};let s;return l=>{const d=e.toValue(a),u=e.toValue(n.maxWait);return t&&r(t),d<=0||u!==void 0&&u<=0?(o&&(r(o),o=null),Promise.resolve(l())):new Promise((p,f)=>{i=n.rejectOnCancel?f:p,s=l,u&&!o&&(o=setTimeout(()=>{t&&r(t),o=null,p(s())},u)),t=setTimeout(()=>{o&&r(o),o=null,p(l())},d)})}}function Ku(a,n=200,t={}){return Ju(Yu(n,t),a)}const Qn=new Map;function qu(a){const n=e.getCurrentScope();function t(c){var l;const d=Qn.get(a)||new Set;d.add(c),Qn.set(a,d);const u=()=>i(c);return(l=n==null?void 0:n.cleanups)==null||l.push(u),u}function o(c){function l(...d){i(l),c(...d)}return t(l)}function i(c){const l=Qn.get(a);l&&(l.delete(c),l.size||r())}function r(){Qn.delete(a)}function s(c,l){var d;(d=Qn.get(a))==null||d.forEach(u=>u(c,l))}return{on:t,once:o,off:i,emit:s,reset:r}}function Qu(){var r,s;const a=typeof window<"u"&&"Capacitor"in window&&((s=(r=window.Capacitor)==null?void 0:r.isNativePlatform)==null?void 0:s.call(r));return{selection:()=>{var c,l;if(a)try{const d=(l=(c=window.Capacitor)==null?void 0:c.Plugins)==null?void 0:l.Haptics;d&&d.impact({style:"LIGHT"})}catch{}else"vibrate"in navigator&&navigator.vibrate(10)},success:()=>{var c,l;if(a)try{const d=(l=(c=window.Capacitor)==null?void 0:c.Plugins)==null?void 0:l.Haptics;d&&d.impact({style:"MEDIUM"})}catch{}else"vibrate"in navigator&&navigator.vibrate(30)},error:()=>{var c,l;if(a)try{const d=(l=(c=window.Capacitor)==null?void 0:c.Plugins)==null?void 0:l.Haptics;d&&d.impact({style:"HEAVY"})}catch{}else"vibrate"in navigator&&navigator.vibrate([50,50,50])},notification:()=>{var c,l;if(a)try{const d=(l=(c=window.Capacitor)==null?void 0:c.Plugins)==null?void 0:l.Haptics;d&&d.notification({type:"SUCCESS"})}catch{}else"vibrate"in navigator&&navigator.vibrate([20,100,20])}}}function em(a){const n=e.ref(new Set),t=e.ref(null),o=e.ref(-1),i=qu("media-selection"),r=Qu(),s=e.computed(()=>a.value.filter(k=>n.value.has(k.uuid))),c=e.computed(()=>n.value.size);e.watch(n,k=>{i.emit({type:"selection:changed",count:k.size,selectedIds:Array.from(k)})},{deep:!0});const l=e.computed(()=>a.value.length>0&&a.value.every(k=>n.value.has(k.uuid))),d=e.computed(()=>a.value.some(k=>n.value.has(k.uuid)));function u(k){return n.value.has(k)}function p(k){n.value.has(k)?(n.value.delete(k),t.value===k&&(t.value=null,o.value=-1)):(n.value.add(k),t.value=k,o.value=a.value.findIndex(N=>N.uuid===k),n.value.size===1&&r.selection())}function f(k){n.value.add(k),t.value=k,o.value=a.value.findIndex(N=>N.uuid===k)}function h(k){n.value.delete(k),t.value===k&&(t.value=null,o.value=-1)}function v(){a.value.forEach(k=>n.value.add(k.uuid))}function g(){n.value.clear(),t.value=null,o.value=-1}function E(){l.value?g():v()}function T(k,N){const S=a.value.findIndex(y=>y.uuid===k);if(S!==-1)if(N!=null&&N.shiftKey&&o.value!==-1){const y=Math.min(o.value,S),C=Math.max(o.value,S);for(let U=y;U<=C;U++)n.value.add(a.value[U].uuid)}else p(k)}function _(){if(a.value.length===0)return;let k=o.value+1;k>=a.value.length&&(k=0),g(),f(a.value[k].uuid)}function w(){if(a.value.length===0)return;let k=o.value-1;k<0&&(k=a.value.length-1),g(),f(a.value[k].uuid)}function m(k){switch(k.key){case"ArrowDown":k.preventDefault(),_();break;case"ArrowUp":k.preventDefault(),w();break;case"a":(k.ctrlKey||k.metaKey)&&(k.preventDefault(),v());break;case"Escape":k.preventDefault(),g();break;case" ":t.value&&(k.preventDefault(),p(t.value));break}}return{selectedIds:e.computed(()=>n.value),selectedItems:s,selectedCount:c,isAllSelected:l,isSomeSelected:d,lastSelectedId:e.computed(()=>t.value),isSelected:u,toggle:p,select:f,deselect:h,selectAll:v,clear:g,toggleAll:E,rangeSelect:T,selectNext:_,selectPrevious:w,handleKeydown:m,selectionBus:i}}const tm={class:"flex items-center justify-between w-full px-4"},nm={class:"p-4"},om={key:0,class:"mb-4 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg"},am={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},im=["value"],rm={class:"flex gap-2 mt-4"},sm={class:"flex justify-end mb-4"},lm={key:1,class:"flex justify-center items-center h-64"},cm={key:2,class:"flex flex-col items-center justify-center h-64 text-center"},dm={class:"text-sm text-theme-secondary"},um={key:0},mm={class:"mb-4"},pm={class:"mb-4"},fm={class:"flex gap-2"},hm={class:"flex items-center justify-between px-4 py-2"},vm={class:"text-sm text-theme-secondary"},gm={key:0},ym={key:0},wm={key:1},bm={class:"flex gap-2"},km=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"),s=e.ref(""),c=e.ref(!1),l=e.ref([]),{selectedItems:d}=e.toRefs(t),u=e.ref(new Set(d.value)),p=e.ref(!1),f=e.ref({}),h=e.ref(["images","documents","videos"]),v=e.ref(1),g=e.ref(!0),E=e.ref(!1),T=il(),_=em(l);function w(F){var re;const j=F.conversion_urls||{},de=F.proxy_url||F.original_url||F.url||"",ne=j.thumb||j.preview||F.preview_url||F.thumbnail_url||de,J=F.custom_properties||{},Be=J.width,ce=J.height;return{...F,uuid:F.uuid,name:F.name||F.file_name,file_name:F.file_name,filename:F.file_name,mime_type:F.mime_type,size:F.size,collection_name:F.collection_name||"images",disk:F.disk,original_url:de,url:de,thumbnail_url:ne,conversions:F.conversions||{},conversion_urls:j,generated_conversions:F.generated_conversions||{},custom_properties:J,caption:F.caption||null,alt_text:F.alt_text||null,created_at:F.created_at,updated_at:F.updated_at,is_image:((re=F.mime_type)==null?void 0:re.startsWith("image/"))||!1,...typeof Be=="number"?{width:Be}:{},...typeof ce=="number"?{height:ce}:{},...F.formatted_size!==void 0?{formatted_size:F.formatted_size}:{}}}e.watch(()=>t.selectedItems,F=>{u.value=new Set(F),_.clear(),F.forEach(j=>_.select(j))});const m=e.computed(()=>{var j;let F=l.value;return(j=f.value.types)!=null&&j.length&&(F=F.filter(de=>{var J,Be;const ne=(J=de.mime_type)==null?void 0:J.split("/")[0];return(Be=f.value.types)==null?void 0:Be.includes(ne)})),(f.value.sizeMin!==void 0||f.value.sizeMax!==void 0)&&(F=F.filter(de=>{const ne=de.size/1048576;return!(f.value.sizeMin!==void 0&&ne<f.value.sizeMin||f.value.sizeMax!==void 0&&ne>f.value.sizeMax)})),F}),k=e.computed(()=>{var j;let F=0;return f.value.search&&F++,f.value.collection&&F++,(f.value.dateFrom||f.value.dateTo)&&F++,(j=f.value.types)!=null&&j.length&&(F+=f.value.types.length),(f.value.sizeMin!==void 0||f.value.sizeMax!==void 0)&&F++,F}),N=e.computed(()=>{const F=_.selectedCount.value;return F===0?"Select Media":`Select ${t.selectionMode==="multiple"?`${F} ${F===1?"Item":"Items"}`:"Item"}`}),S=e.computed(()=>{const F=_.selectedCount.value;return!!(F===0||t.selectionMode==="single"&&F>1||t.maxSelection&&F>t.maxSelection)}),y=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 C(F=!0){F?(c.value=!0,l.value=[],v.value=1,g.value=!0):E.value=!0;try{const j={collection:f.value.collection||t.collection,per_page:24};switch((s.value||f.value.search)&&(j.search=s.value||f.value.search||""),f.value.dateFrom&&(j.from_date=f.value.dateFrom),f.value.dateTo&&(j.to_date=f.value.dateTo),i.value){case"recent":await T.fetchMedia(v.value,j),F?l.value=T.items.map(de=>w(de)):l.value=[...l.value,...T.items.map(de=>w(de))],g.value=T.currentPage<T.totalPages;break;case"model":if(t.modelType&&t.modelId){const de=await T.fetchModelMedia(t.modelType,t.modelId,j.collection,j.search);l.value=de?de.map(ne=>w(ne)):[],g.value=!1}break;case"library":await T.fetchMedia(v.value,j),F?l.value=T.items.map(de=>w(de)):l.value=[...l.value,...T.items.map(de=>w(de))],g.value=T.currentPage<T.totalPages;break}}catch{}finally{c.value=!1,E.value=!1}}async function U(F){if(!g.value||E.value){F!=null&&F.target&&F.target.complete();return}v.value++,await C(!1),F!=null&&F.target&&(F.target.complete(),g.value||(F.target.disabled=!0))}function x(F){return F==="recent"||F==="model"||F==="library"}function I(F){i.value=F,C()}function R(F){typeof F=="string"&&x(F)&&I(F)}async function A(F){t.selectionMode==="single"?(_.clear(),_.select(F.uuid)):(_.toggle(F.uuid),t.maxSelection&&_.selectedCount.value>t.maxSelection&&(_.deselect(F.uuid),await(await $.toastController.create({message:`Maximum ${t.maxSelection} items can be selected`,duration:2e3,color:"warning"})).present()))}function M(){o("confirm",_.selectedItems.value)}function P(){o("close")}function H(F){}const B=e.ref(null),D=e.ref(!1);function X(F){B.value=F,D.value=!0}function Z(F){const j=l.value.findIndex(ne=>ne.uuid===F.uuid);j!==-1&&(l.value[j]=F);const de={};F.alt_text!==void 0&&(de.alt_text=F.alt_text),F.caption!==void 0&&(de.caption=F.caption),F.custom_properties!==void 0&&(de.custom_properties=F.custom_properties),T.updateMedia(F.uuid,de)}function ee(){C()}function ge(){f.value={},s.value="",C()}const Ee=Ku(()=>{C(!0)},300);e.watch(s,()=>{t.isOpen&&Ee()});async function te(F){try{await(await $.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 T.deleteMedia(F),await C()}}]})).present()}catch{}}return e.watch(()=>t.isOpen,F=>{F&&C()}),e.onMounted(()=>{t.selectedItems.length>0&&t.selectedItems.forEach(F=>_.select(F))}),(F,j)=>{const de=e.resolveComponent("AdminMediaGrid"),ne=e.resolveComponent("AdminMediaListItem");return e.openBlock(),e.createBlock(e.unref($.IonModal),{"is-open":F.isOpen,onDidDismiss:P,"backdrop-dismiss":!1,class:"media-browser-modal"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref($.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{onClick:P},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref($.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.value),1)]),_:1})]),_:1}),e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",tm,[e.createVNode(e.unref($.IonSegment),{value:i.value,onIonChange:j[0]||(j[0]=J=>R(J.detail.value)),class:"max-w-xs"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonSegmentButton),{value:"recent"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[15]||(j[15]=[e.createTextVNode("Recent",-1)])]),_:1})]),_:1}),t.modelType&&t.modelId?(e.openBlock(),e.createBlock(e.unref($.IonSegmentButton),{key:0,value:"model"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[16]||(j[16]=[e.createTextVNode("Model",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonSegmentButton),{value:"library"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[17]||(j[17]=[e.createTextVNode("Library",-1)])]),_:1})]),_:1})]),_:1},8,["value"]),e.createVNode(e.unref($.IonButton),{fill:"clear",size:"small",onClick:j[1]||(j[1]=J=>p.value=!p.value),class:"relative"},{"icon-only":e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"filter-outline"})]),default:e.withCtx(()=>[k.value>0?(e.openBlock(),e.createBlock(e.unref($.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(k.value),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})])]),_:1})]),_:1}),e.createVNode(e.unref($.IonContent),null,{default:e.withCtx(()=>[e.createElementVNode("div",nm,[p.value?(e.openBlock(),e.createElementBlock("div",om,[e.createElementVNode("div",am,[e.createElementVNode("div",null,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[18]||(j[18]=[e.createTextVNode("Collection",-1)])]),_:1}),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":j[2]||(j[2]=J=>f.value.collection=J),class:"w-full p-2 border rounded"},[j[19]||(j[19]=e.createElementVNode("option",{value:""},"All Collections",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,J=>(e.openBlock(),e.createElementBlock("option",{key:J,value:J},e.toDisplayString(J),9,im))),128))],512),[[e.vModelSelect,f.value.collection]])]),e.createElementVNode("div",null,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[20]||(j[20]=[e.createTextVNode("From Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":j[3]||(j[3]=J=>f.value.dateFrom=J),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,f.value.dateFrom]])]),e.createElementVNode("div",null,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[21]||(j[21]=[e.createTextVNode("To Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":j[4]||(j[4]=J=>f.value.dateTo=J),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,f.value.dateTo]])])]),e.createElementVNode("div",rm,[e.createVNode(e.unref($.IonButton),{size:"small",onClick:ee},{default:e.withCtx(()=>[...j[22]||(j[22]=[e.createTextVNode("Apply",-1)])]),_:1}),e.createVNode(e.unref($.IonButton),{size:"small",fill:"clear",onClick:ge},{default:e.withCtx(()=>[...j[23]||(j[23]=[e.createTextVNode("Clear",-1)])]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonSearchbar),{modelValue:s.value,"onUpdate:modelValue":j[5]||(j[5]=J=>s.value=J),placeholder:"Search media...",debounce:300,class:"mb-4"},null,8,["modelValue"]),e.createElementVNode("div",sm,[e.createVNode(e.unref($.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{fill:r.value==="grid"?"solid":"clear",size:"small",onClick:j[6]||(j[6]=J=>r.value="grid")},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"grid-outline"})]),_:1},8,["fill"]),e.createVNode(e.unref($.IonButton),{fill:r.value==="list"?"solid":"clear",size:"small",onClick:j[7]||(j[7]=J=>r.value="list")},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"list-outline"})]),_:1},8,["fill"])]),_:1})]),c.value?(e.openBlock(),e.createElementBlock("div",lm,[e.createVNode(e.unref($.IonSpinner),{name:"crescent"})])):m.value.length===0?(e.openBlock(),e.createElementBlock("div",cm,[e.createVNode(e.unref($.IonIcon),{name:"images-outline",class:"text-6xl text-theme-secondary mb-4"}),j[24]||(j[24]=e.createElementVNode("h3",{class:"text-lg font-medium text-theme mb-2"}," No Media Found ",-1)),e.createElementVNode("p",dm,e.toDisplayString(s.value?"Try adjusting your search":"No media items available"),1)])):r.value==="grid"?(e.openBlock(),e.createBlock(de,{key:3,"media-items":m.value,"selected-items":e.unref(_).selectedItems.value,"is-loading":!1,"selection-mode":!0,columns:{mobile:2,sm:3,md:4,lg:5,xl:6},onToggleSelect:A,onPreview:H,onEdit:X,onDelete:te},null,8,["media-items","selected-items"])):(e.openBlock(),e.createBlock(e.unref($.IonList),{key:4,lines:"none",class:"rounded-lg overflow-hidden"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,(J,Be)=>(e.openBlock(),e.createBlock(ne,{key:J.uuid,media:J,selected:e.unref(_).isSelected(J.uuid),"selection-mode":!0,index:Be,onToggleSelect:A,onPreview:H,onEdit:X,onDelete:te},null,8,["media","selected","index"]))),128))]),_:1})),!c.value&&m.value.length>0&&i.value!=="model"?(e.openBlock(),e.createBlock(e.unref($.IonInfiniteScroll),{key:5,threshold:"100px",onIonInfinite:j[8]||(j[8]=J=>U(J))},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonInfiniteScrollContent),{"loading-spinner":"crescent","loading-text":"Loading more media..."})]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(e.unref($.IonModal),{"is-open":D.value,onDidDismiss:j[14]||(j[14]=J=>D.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref($.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{onClick:j[9]||(j[9]=J=>D.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref($.IonTitle),null,{default:e.withCtx(()=>[...j[25]||(j[25]=[e.createTextVNode("Edit Media Info",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref($.IonContent),{class:"p-4"},{default:e.withCtx(()=>[B.value?(e.openBlock(),e.createElementBlock("div",um,[e.createElementVNode("div",mm,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[26]||(j[26]=[e.createTextVNode("Caption",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":j[10]||(j[10]=J=>B.value.caption=J),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter caption..."},null,512),[[e.vModelText,B.value.caption]])]),e.createElementVNode("div",pm,[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...j[27]||(j[27]=[e.createTextVNode("Alt Text",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":j[11]||(j[11]=J=>B.value.alt_text=J),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter alt text..."},null,512),[[e.vModelText,B.value.alt_text]])]),e.createElementVNode("div",fm,[e.createVNode(e.unref($.IonButton),{onClick:j[12]||(j[12]=J=>Z(B.value))},{default:e.withCtx(()=>[...j[28]||(j[28]=[e.createTextVNode("Save",-1)])]),_:1}),e.createVNode(e.unref($.IonButton),{fill:"clear",onClick:j[13]||(j[13]=J=>D.value=!1)},{default:e.withCtx(()=>[...j[29]||(j[29]=[e.createTextVNode("Cancel",-1)])]),_:1})])])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["is-open"]),e.createVNode(e.unref($.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",hm,[e.createElementVNode("div",vm,[e.unref(_).selectedCount.value>0?(e.openBlock(),e.createElementBlock("span",gm,[e.createTextVNode(e.toDisplayString(e.unref(_).selectedCount.value)+" selected ",1),t.maxSelection?(e.openBlock(),e.createElementBlock("span",ym," / "+e.toDisplayString(t.maxSelection)+" max ",1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("span",wm," Select "+e.toDisplayString(t.selectionMode==="multiple"?"items":"an item"),1))]),e.createElementVNode("div",bm,[e.createVNode(e.unref($.IonButton),{fill:"clear",onClick:P},{default:e.withCtx(()=>[...j[30]||(j[30]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref($.IonButton),{disabled:S.value,onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(N.value),1)]),_:1},8,["disabled"])])])]),_:1})]),_:1})]),_:1},8,["is-open"])}}}),xm=Me(km,[["__scopeId","data-v-9a8c0954"]]),Em={key:1,class:"flex flex-col items-center justify-center py-16"},Vm=["draggable","onDragstart","onDragover","onDrop"],Sm={key:0,class:"absolute top-2 left-2 z-20"},Cm=["checked","onChange"],_m={key:2,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-move"},Nm=["data-media-id"],Tm={key:0,class:"w-full h-full flex items-center justify-center"},Mm=["src","alt","onError","onLoad"],Bm={key:2,class:"w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-700"},Im={class:"text-center"},Fm={class:"text-4xl text-gray-400 mb-2"},$m={class:"text-sm font-medium text-gray-500"},Rm={class:"absolute inset-0 bg-black/70 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2"},Dm=["onClick"],Am=["onClick"],Um=["onClick"],Om={class:"p-3"},Lm={class:"text-sm font-medium truncate mb-1"},zm={class:"text-xs text-gray-600 dark:text-gray-400"},Pm={key:0},jm={key:0,class:"text-xs text-gray-500 dark:text-gray-500 mt-1 truncate"},Wm=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),s=e.ref(new Set),c=e.ref(null),l=S=>t.selectedItems.some(y=>y.uuid===S.uuid),d=e.computed(()=>{const S=t.columns,y=["grid","gap-4"];switch(S.mobile){case 1:y.push("grid-cols-1");break;case 2:y.push("grid-cols-2");break;case 3:y.push("grid-cols-3");break;case 4:y.push("grid-cols-4");break;default:y.push("grid-cols-2");break}switch(S.sm){case 1:y.push("sm:grid-cols-1");break;case 2:y.push("sm:grid-cols-2");break;case 3:y.push("sm:grid-cols-3");break;case 4:y.push("sm:grid-cols-4");break;case 5:y.push("sm:grid-cols-5");break;default:y.push("sm:grid-cols-3");break}switch(S.md){case 2:y.push("md:grid-cols-2");break;case 3:y.push("md:grid-cols-3");break;case 4:y.push("md:grid-cols-4");break;case 5:y.push("md:grid-cols-5");break;case 6:y.push("md:grid-cols-6");break;default:y.push("md:grid-cols-4");break}switch(S.lg){case 3:y.push("lg:grid-cols-3");break;case 4:y.push("lg:grid-cols-4");break;case 5:y.push("lg:grid-cols-5");break;case 6:y.push("lg:grid-cols-6");break;case 7:y.push("lg:grid-cols-7");break;default:y.push("lg:grid-cols-5");break}switch(S.xl){case 4:y.push("xl:grid-cols-4");break;case 5:y.push("xl:grid-cols-5");break;case 6:y.push("xl:grid-cols-6");break;case 7:y.push("xl:grid-cols-7");break;case 8:y.push("xl:grid-cols-8");break;default:y.push("xl:grid-cols-6");break}return y.join(" ")});function u(S,y,C){t.reorderable&&(i.value=y,S.dataTransfer&&(S.dataTransfer.effectAllowed="move",S.dataTransfer.setData("text/html","")))}function p(S,y){t.reorderable&&(S.preventDefault(),r.value=y)}function f(){r.value=null}function h(S,y){if(!t.reorderable||!i.value)return;S.preventDefault();const C=[...t.mediaItems],U=C.findIndex(x=>{var I;return x.uuid===((I=i.value)==null?void 0:I.uuid)});if(U!==-1&&U!==y&&i.value){const[x]=C.splice(U,1);C.splice(y,0,x),o("reorder",C)}i.value=null,r.value=null}function v(S){return S<1024?S+" B":S<1024*1024?(S/1024).toFixed(1)+" KB":(S/(1024*1024)).toFixed(1)+" MB"}function g(S){var C;return S.thumbnail_url||((C=S.conversion_urls)==null?void 0:C.thumb)||S.original_url||S.url||""}function E(S){var U,x,I;const y=((U=S.mime_type)==null?void 0:U.startsWith("image/"))||!1,C=!!(S.thumbnail_url||(x=S.conversion_urls)!=null&&x.thumb||(I=S.conversion_urls)!=null&&I.preview||S.original_url||S.url);return y&&C}function T(S){var y;return((y=S.split(".").pop())==null?void 0:y.toUpperCase())||""}function _(S){var C;const y=((C=S.mime_type)==null?void 0:C.toLowerCase())||"";return y.startsWith("image/")?"image":y.startsWith("video/")?"videocam":y.startsWith("audio/")?"musical-notes":y.includes("pdf")?"document-text":y.includes("zip")||y.includes("rar")?"archive":y.includes("sheet")||y.includes("excel")?"grid":y.includes("document")||y.includes("word")?"document-text":"document"}e.onMounted(()=>{typeof window<"u"&&"IntersectionObserver"in window&&(c.value=new IntersectionObserver(S=>{S.forEach(y=>{var C;if(y.isIntersecting){const U=y.target.getAttribute("data-media-id");U&&(s.value.add(U),(C=c.value)==null||C.unobserve(y.target))}})},{rootMargin:"50px"}))}),e.onUnmounted(()=>{c.value&&c.value.disconnect()});function w(S){return!0}function m(){c.value&&e.nextTick(()=>{document.querySelectorAll("[data-media-id]").forEach(y=>{var U;const C=y.getAttribute("data-media-id");C&&!s.value.has(C)&&((U=c.value)==null||U.observe(y))})})}e.watch(()=>t.mediaItems,()=>{s.value.clear(),m()},{immediate:!0,deep:!0});function k(S,y){const C=S.target;delete C.dataset.fallbackIndex}function N(S,y){const C=S.target,U=C.closest("[data-media-id]"),x=[y.original_url,y.url,y.thumbnail_url,"preview_url"in y?y.preview_url:void 0].filter(I=>I&&I.trim()!==""&&I!==C.src);if(x.length>0&&C.dataset.fallbackIndex){const I=parseInt(C.dataset.fallbackIndex);if(I<x.length){C.dataset.fallbackIndex=(I+1).toString(),C.src=x[I]||"";return}}else if(x.length>0){C.dataset.fallbackIndex="1",C.src=x[0]||"";return}if(C.style.display="none",U&&!U.querySelector(".media-fallback-icon")){const R=document.createElement("div");R.className="media-fallback-icon w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-800",R.innerHTML=`
|
|
2
2
|
<div class="text-center">
|
|
3
3
|
<div class="text-4xl text-gray-400 mb-2">${_(y)}</div>
|
|
4
4
|
<p class="text-sm font-medium text-gray-500">${T(y.file_name)}</p>
|
|
@@ -338,5 +338,5 @@ ${i.text}
|
|
|
338
338
|
`)}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[Ls]=this[Ls]={accessors:{}}).accessors,i=this.prototype;function r(s){const c=eo(s);o[c]||(kw(i,s),o[c]=!0)}return G.isArray(n)?n.forEach(r):r(n),this}};bt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);G.reduceDescriptors(bt.prototype,({value:a},n)=>{let t=n[0].toUpperCase()+n.slice(1);return{get:()=>a,set(o){this[t]=o}}});G.freezeMethods(bt);function ki(a,n){const t=this||Bo,o=n||t,i=bt.from(o.headers);let r=o.data;return G.forEach(a,function(c){r=c.call(t,r,i.normalize(),n?n.status:void 0)}),i.normalize(),r}function mc(a){return!!(a&&a.__CANCEL__)}function Xn(a,n,t){Ie.call(this,a??"canceled",Ie.ERR_CANCELED,n,t),this.name="CanceledError"}G.inherits(Xn,Ie,{__CANCEL__:!0});function pc(a,n,t){const o=t.config.validateStatus;!t.status||!o||o(t.status)?a(t):n(new Ie("Request failed with status code "+t.status,[Ie.ERR_BAD_REQUEST,Ie.ERR_BAD_RESPONSE][Math.floor(t.status/100)-4],t.config,t.request,t))}function xw(a){const n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(a);return n&&n[1]||""}function Ew(a,n){a=a||10;const t=new Array(a),o=new Array(a);let i=0,r=0,s;return n=n!==void 0?n:1e3,function(l){const d=Date.now(),u=o[r];s||(s=d),t[i]=l,o[i]=d;let p=r,f=0;for(;p!==i;)f+=t[p++],p=p%a;if(i=(i+1)%a,i===r&&(r=(r+1)%a),d-s<n)return;const h=u&&d-u;return h?Math.round(f*1e3/h):void 0}}function Vw(a,n){let t=0,o=1e3/n,i,r;const s=(d,u=Date.now())=>{t=u,i=null,r&&(clearTimeout(r),r=null),a(...d)};return[(...d)=>{const u=Date.now(),p=u-t;p>=o?s(d,u):(i=d,r||(r=setTimeout(()=>{r=null,s(i)},o-p)))},()=>i&&s(i)]}const ga=(a,n,t=3)=>{let o=0;const i=Ew(50,250);return Vw(r=>{const s=r.loaded,c=r.lengthComputable?r.total:void 0,l=s-o,d=i(l),u=s<=c;o=s;const p={loaded:s,total:c,progress:c?s/c:void 0,bytes:l,rate:d||void 0,estimated:d&&c&&u?(c-s)/d:void 0,event:r,lengthComputable:c!=null,[n?"download":"upload"]:!0};a(p)},t)},zs=(a,n)=>{const t=a!=null;return[o=>n[0]({lengthComputable:t,total:a,loaded:o}),n[1]]},Ps=a=>(...n)=>G.asap(()=>a(...n)),Sw=pt.hasStandardBrowserEnv?((a,n)=>t=>(t=new URL(t,pt.origin),a.protocol===t.protocol&&a.host===t.host&&(n||a.port===t.port)))(new URL(pt.origin),pt.navigator&&/(msie|trident)/i.test(pt.navigator.userAgent)):()=>!0,Cw=pt.hasStandardBrowserEnv?{write(a,n,t,o,i,r){const s=[a+"="+encodeURIComponent(n)];G.isNumber(t)&&s.push("expires="+new Date(t).toGMTString()),G.isString(o)&&s.push("path="+o),G.isString(i)&&s.push("domain="+i),r===!0&&s.push("secure"),document.cookie=s.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 _w(a){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(a)}function Nw(a,n){return n?a.replace(/\/?\/$/,"")+"/"+n.replace(/^\/+/,""):a}function fc(a,n,t){let o=!_w(n);return a&&(o||t==!1)?Nw(a,n):n}const js=a=>a instanceof bt?{...a}:a;function xn(a,n){n=n||{};const t={};function o(d,u,p,f){return G.isPlainObject(d)&&G.isPlainObject(u)?G.merge.call({caseless:f},d,u):G.isPlainObject(u)?G.merge({},u):G.isArray(u)?u.slice():u}function i(d,u,p,f){if(G.isUndefined(u)){if(!G.isUndefined(d))return o(void 0,d,p,f)}else return o(d,u,p,f)}function r(d,u){if(!G.isUndefined(u))return o(void 0,u)}function s(d,u){if(G.isUndefined(u)){if(!G.isUndefined(d))return o(void 0,d)}else return o(void 0,u)}function c(d,u,p){if(p in n)return o(d,u);if(p in a)return o(void 0,d)}const l={url:r,method:r,data:r,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:c,headers:(d,u,p)=>i(js(d),js(u),p,!0)};return G.forEach(Object.keys({...a,...n}),function(u){const p=l[u]||i,f=p(a[u],n[u],u);G.isUndefined(f)&&p!==c||(t[u]=f)}),t}const hc=a=>{const n=xn({},a);let{data:t,withXSRFToken:o,xsrfHeaderName:i,xsrfCookieName:r,headers:s,auth:c}=n;n.headers=s=bt.from(s),n.url=cc(fc(n.baseURL,n.url,n.allowAbsoluteUrls),a.params,a.paramsSerializer),c&&s.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let l;if(G.isFormData(t)){if(pt.hasStandardBrowserEnv||pt.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if((l=s.getContentType())!==!1){const[d,...u]=l?l.split(";").map(p=>p.trim()).filter(Boolean):[];s.setContentType([d||"multipart/form-data",...u].join("; "))}}if(pt.hasStandardBrowserEnv&&(o&&G.isFunction(o)&&(o=o(n)),o||o!==!1&&Sw(n.url))){const d=i&&r&&Cw.read(r);d&&s.set(i,d)}return n},Tw=typeof XMLHttpRequest<"u",Mw=Tw&&function(a){return new Promise(function(t,o){const i=hc(a);let r=i.data;const s=bt.from(i.headers).normalize();let{responseType:c,onUploadProgress:l,onDownloadProgress:d}=i,u,p,f,h,v;function g(){h&&h(),v&&v(),i.cancelToken&&i.cancelToken.unsubscribe(u),i.signal&&i.signal.removeEventListener("abort",u)}let E=new XMLHttpRequest;E.open(i.method.toUpperCase(),i.url,!0),E.timeout=i.timeout;function T(){if(!E)return;const w=bt.from("getAllResponseHeaders"in E&&E.getAllResponseHeaders()),k={data:!c||c==="text"||c==="json"?E.responseText:E.response,status:E.status,statusText:E.statusText,headers:w,config:a,request:E};pc(function(S){t(S),g()},function(S){o(S),g()},k),E=null}"onloadend"in E?E.onloadend=T:E.onreadystatechange=function(){!E||E.readyState!==4||E.status===0&&!(E.responseURL&&E.responseURL.indexOf("file:")===0)||setTimeout(T)},E.onabort=function(){E&&(o(new Ie("Request aborted",Ie.ECONNABORTED,a,E)),E=null)},E.onerror=function(){o(new Ie("Network Error",Ie.ERR_NETWORK,a,E)),E=null},E.ontimeout=function(){let m=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const k=i.transitional||dc;i.timeoutErrorMessage&&(m=i.timeoutErrorMessage),o(new Ie(m,k.clarifyTimeoutError?Ie.ETIMEDOUT:Ie.ECONNABORTED,a,E)),E=null},r===void 0&&s.setContentType(null),"setRequestHeader"in E&&G.forEach(s.toJSON(),function(m,k){E.setRequestHeader(k,m)}),G.isUndefined(i.withCredentials)||(E.withCredentials=!!i.withCredentials),c&&c!=="json"&&(E.responseType=i.responseType),d&&([f,v]=ga(d,!0),E.addEventListener("progress",f)),l&&E.upload&&([p,h]=ga(l),E.upload.addEventListener("progress",p),E.upload.addEventListener("loadend",h)),(i.cancelToken||i.signal)&&(u=w=>{E&&(o(!w||w.type?new Xn(null,a,E):w),E.abort(),E=null)},i.cancelToken&&i.cancelToken.subscribe(u),i.signal&&(i.signal.aborted?u():i.signal.addEventListener("abort",u)));const _=xw(i.url);if(_&&pt.protocols.indexOf(_)===-1){o(new Ie("Unsupported protocol "+_+":",Ie.ERR_BAD_REQUEST,a));return}E.send(r||null)})},Bw=(a,n)=>{const{length:t}=a=a?a.filter(Boolean):[];if(n||t){let o=new AbortController,i;const r=function(d){if(!i){i=!0,c();const u=d instanceof Error?d:this.reason;o.abort(u instanceof Ie?u:new Xn(u instanceof Error?u.message:u))}};let s=n&&setTimeout(()=>{s=null,r(new Ie(`timeout ${n} of ms exceeded`,Ie.ETIMEDOUT))},n);const c=()=>{a&&(s&&clearTimeout(s),s=null,a.forEach(d=>{d.unsubscribe?d.unsubscribe(r):d.removeEventListener("abort",r)}),a=null)};a.forEach(d=>d.addEventListener("abort",r));const{signal:l}=o;return l.unsubscribe=()=>G.asap(c),l}},Iw=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},Fw=async function*(a,n){for await(const t of $w(a))yield*Iw(t,n)},$w=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()}},Ws=(a,n,t,o)=>{const i=Fw(a,n);let r=0,s,c=l=>{s||(s=!0,o&&o(l))};return new ReadableStream({async pull(l){try{const{done:d,value:u}=await i.next();if(d){c(),l.close();return}let p=u.byteLength;if(t){let f=r+=p;t(f)}l.enqueue(new Uint8Array(u))}catch(d){throw c(d),d}},cancel(l){return c(l),i.return()}},{highWaterMark:2})},za=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",vc=za&&typeof ReadableStream=="function",Rw=za&&(typeof TextEncoder=="function"?(a=>n=>a.encode(n))(new TextEncoder):async a=>new Uint8Array(await new Response(a).arrayBuffer())),gc=(a,...n)=>{try{return!!a(...n)}catch{return!1}},Dw=vc&&gc(()=>{let a=!1;const n=new Request(pt.origin,{body:new ReadableStream,method:"POST",get duplex(){return a=!0,"half"}}).headers.has("Content-Type");return a&&!n}),Zs=64*1024,Xi=vc&&gc(()=>G.isReadableStream(new Response("").body)),ya={stream:Xi&&(a=>a.body)};za&&(a=>{["text","arrayBuffer","blob","formData","stream"].forEach(n=>{!ya[n]&&(ya[n]=G.isFunction(a[n])?t=>t[n]():(t,o)=>{throw new Ie(`Response type '${n}' is not supported`,Ie.ERR_NOT_SUPPORT,o)})})})(new Response);const Aw=async a=>{if(a==null)return 0;if(G.isBlob(a))return a.size;if(G.isSpecCompliantForm(a))return(await new Request(pt.origin,{method:"POST",body:a}).arrayBuffer()).byteLength;if(G.isArrayBufferView(a)||G.isArrayBuffer(a))return a.byteLength;if(G.isURLSearchParams(a)&&(a=a+""),G.isString(a))return(await Rw(a)).byteLength},Uw=async(a,n)=>{const t=G.toFiniteNumber(a.getContentLength());return t??Aw(n)},Ow=za&&(async a=>{let{url:n,method:t,data:o,signal:i,cancelToken:r,timeout:s,onDownloadProgress:c,onUploadProgress:l,responseType:d,headers:u,withCredentials:p="same-origin",fetchOptions:f}=hc(a);d=d?(d+"").toLowerCase():"text";let h=Bw([i,r&&r.toAbortSignal()],s),v;const g=h&&h.unsubscribe&&(()=>{h.unsubscribe()});let E;try{if(l&&Dw&&t!=="get"&&t!=="head"&&(E=await Uw(u,o))!==0){let k=new Request(n,{method:"POST",body:o,duplex:"half"}),N;if(G.isFormData(o)&&(N=k.headers.get("content-type"))&&u.setContentType(N),k.body){const[S,y]=zs(E,ga(Ps(l)));o=Ws(k.body,Zs,S,y)}}G.isString(p)||(p=p?"include":"omit");const T="credentials"in Request.prototype;v=new Request(n,{...f,signal:h,method:t.toUpperCase(),headers:u.normalize().toJSON(),body:o,duplex:"half",credentials:T?p:void 0});let _=await fetch(v,f);const w=Xi&&(d==="stream"||d==="response");if(Xi&&(c||w&&g)){const k={};["status","statusText","headers"].forEach(C=>{k[C]=_[C]});const N=G.toFiniteNumber(_.headers.get("content-length")),[S,y]=c&&zs(N,ga(Ps(c),!0))||[];_=new Response(Ws(_.body,Zs,S,()=>{y&&y(),g&&g()}),k)}d=d||"text";let m=await ya[G.findKey(ya,d)||"text"](_,a);return!w&&g&&g(),await new Promise((k,N)=>{pc(k,N,{data:m,headers:bt.from(_.headers),status:_.status,statusText:_.statusText,config:a,request:v})})}catch(T){throw g&&g(),T&&T.name==="TypeError"&&/Load failed|fetch/i.test(T.message)?Object.assign(new Ie("Network Error",Ie.ERR_NETWORK,a,v),{cause:T.cause||T}):Ie.from(T,T&&T.code,a,v)}}),Hi={http:ew,xhr:Mw,fetch:Ow};G.forEach(Hi,(a,n)=>{if(a){try{Object.defineProperty(a,"name",{value:n})}catch{}Object.defineProperty(a,"adapterName",{value:n})}});const Xs=a=>`- ${a}`,Lw=a=>G.isFunction(a)||a===null||a===!1,yc={getAdapter:a=>{a=G.isArray(a)?a:[a];const{length:n}=a;let t,o;const i={};for(let r=0;r<n;r++){t=a[r];let s;if(o=t,!Lw(t)&&(o=Hi[(s=String(t)).toLowerCase()],o===void 0))throw new Ie(`Unknown adapter '${s}'`);if(o)break;i[s||"#"+r]=o}if(!o){const r=Object.entries(i).map(([c,l])=>`adapter ${c} `+(l===!1?"is not supported by the environment":"is not available in the build"));let s=n?r.length>1?`since :
|
|
339
339
|
`+r.map(Xs).join(`
|
|
340
340
|
`):" "+Xs(r[0]):"as no adapter specified";throw new Ie("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return o},adapters:Hi};function xi(a){if(a.cancelToken&&a.cancelToken.throwIfRequested(),a.signal&&a.signal.aborted)throw new Xn(null,a)}function Hs(a){return xi(a),a.headers=bt.from(a.headers),a.data=ki.call(a,a.transformRequest),["post","put","patch"].indexOf(a.method)!==-1&&a.headers.setContentType("application/x-www-form-urlencoded",!1),yc.getAdapter(a.adapter||Bo.adapter)(a).then(function(o){return xi(a),o.data=ki.call(a,a.transformResponse,o),o.headers=bt.from(o.headers),o},function(o){return mc(o)||(xi(a),o&&o.response&&(o.response.data=ki.call(a,a.transformResponse,o.response),o.response.headers=bt.from(o.response.headers))),Promise.reject(o)})}const wc="1.11.0",Pa={};["object","boolean","number","function","string","symbol"].forEach((a,n)=>{Pa[a]=function(o){return typeof o===a||"a"+(n<1?"n ":" ")+a}});const Gs={};Pa.transitional=function(n,t,o){function i(r,s){return"[Axios v"+wc+"] Transitional option '"+r+"'"+s+(o?". "+o:"")}return(r,s,c)=>{if(n===!1)throw new Ie(i(s," has been removed"+(t?" in "+t:"")),Ie.ERR_DEPRECATED);return t&&!Gs[s]&&(Gs[s]=!0),n?n(r,s,c):!0}};Pa.spelling=function(n){return(t,o)=>!0};function zw(a,n,t){if(typeof a!="object")throw new Ie("options must be an object",Ie.ERR_BAD_OPTION_VALUE);const o=Object.keys(a);let i=o.length;for(;i-- >0;){const r=o[i],s=n[r];if(s){const c=a[r],l=c===void 0||s(c,r,a);if(l!==!0)throw new Ie("option "+r+" must be "+l,Ie.ERR_BAD_OPTION_VALUE);continue}if(t!==!0)throw new Ie("Unknown option "+r,Ie.ERR_BAD_OPTION)}}const ia={assertOptions:zw,validators:Pa},zt=ia.validators;let bn=class{constructor(n){this.defaults=n||{},this.interceptors={request:new Os,response:new Os}}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+=`
|
|
341
|
-
`+r):o.stack=r}catch{}}throw o}}_request(n,t){typeof n=="string"?(t=t||{},t.url=n):t=n||{},t=xn(this.defaults,t);const{transitional:o,paramsSerializer:i,headers:r}=t;o!==void 0&&ia.assertOptions(o,{silentJSONParsing:zt.transitional(zt.boolean),forcedJSONParsing:zt.transitional(zt.boolean),clarifyTimeoutError:zt.transitional(zt.boolean)},!1),i!=null&&(G.isFunction(i)?t.paramsSerializer={serialize:i}:ia.assertOptions(i,{encode:zt.function,serialize:zt.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ia.assertOptions(t,{baseUrl:zt.spelling("baseURL"),withXsrfToken:zt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=r&&G.merge(r.common,r[t.method]);r&&G.forEach(["delete","get","head","post","put","patch","common"],v=>{delete r[v]}),t.headers=bt.concat(s,r);const c=[];let l=!0;this.interceptors.request.forEach(function(g){typeof g.runWhen=="function"&&g.runWhen(t)===!1||(l=l&&g.synchronous,c.unshift(g.fulfilled,g.rejected))});const d=[];this.interceptors.response.forEach(function(g){d.push(g.fulfilled,g.rejected)});let u,p=0,f;if(!l){const v=[Hs.bind(this),void 0];for(v.unshift(...c),v.push(...d),f=v.length,u=Promise.resolve(t);p<f;)u=u.then(v[p++],v[p++]);return u}f=c.length;let h=t;for(p=0;p<f;){const v=c[p++],g=c[p++];try{h=v(h)}catch(E){g.call(this,E);break}}try{u=Hs.call(this,h)}catch(v){return Promise.reject(v)}for(p=0,f=d.length;p<f;)u=u.then(d[p++],d[p++]);return u}getUri(n){n=xn(this.defaults,n);const t=fc(n.baseURL,n.url,n.allowAbsoluteUrls);return cc(t,n.params,n.paramsSerializer)}};G.forEach(["delete","get","head","options"],function(n){bn.prototype[n]=function(t,o){return this.request(xn(o||{},{method:n,url:t,data:(o||{}).data}))}});G.forEach(["post","put","patch"],function(n){function t(o){return function(r,s,c){return this.request(xn(c||{},{method:n,headers:o?{"Content-Type":"multipart/form-data"}:{},url:r,data:s}))}}bn.prototype[n]=t(),bn.prototype[n+"Form"]=t(!0)});let Pw=class bc{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 s=new Promise(c=>{o.subscribe(c),r=c}).then(i);return s.cancel=function(){o.unsubscribe(r)},s},n(function(r,s,c){o.reason||(o.reason=new Xn(r,s,c),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 bc(function(i){n=i}),cancel:n}}};function jw(a){return function(t){return a.apply(null,t)}}function Ww(a){return G.isObject(a)&&a.isAxiosError===!0}const Gi={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(Gi).forEach(([a,n])=>{Gi[n]=a});function kc(a){const n=new bn(a),t=Kl(bn.prototype.request,n);return G.extend(t,bn.prototype,n,{allOwnKeys:!0}),G.extend(t,n,null,{allOwnKeys:!0}),t.create=function(i){return kc(xn(a,i))},t}const Ye=kc(Bo);Ye.Axios=bn;Ye.CanceledError=Xn;Ye.CancelToken=Pw;Ye.isCancel=mc;Ye.VERSION=wc;Ye.toFormData=La;Ye.AxiosError=Ie;Ye.Cancel=Ye.CanceledError;Ye.all=function(n){return Promise.all(n)};Ye.spread=jw;Ye.isAxiosError=Ww;Ye.mergeConfig=xn;Ye.AxiosHeaders=bt;Ye.formToJSON=a=>uc(G.isHTMLForm(a)?new FormData(a):a);Ye.getAdapter=yc.getAdapter;Ye.HttpStatusCode=Gi;Ye.default=Ye;const{Axios:BV,AxiosError:IV,CanceledError:FV,isCancel:$V,CancelToken:RV,VERSION:DV,all:AV,Cancel:UV,isAxiosError:OV,spread:LV,toFormData:zV,AxiosHeaders:PV,HttpStatusCode:jV,formToJSON:WV,getAdapter:ZV,mergeConfig:XV}=Ye;class kr{constructor(n="/api/v1"){this.eventSource=null,this.progressCallbacks=new Map,this.api=Ye.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((s,c)=>{const l=setInterval(async()=>{try{const d=await this.getJob(n);t==null||t(d.progress,d.status),d.status==="completed"?(clearInterval(l),s(d)):d.status==="failed"?(clearInterval(l),c(new Error(d.error_message??"Render job failed"))):Date.now()-r>i&&(clearInterval(l),c(new Error("Render job timed out")))}catch(d){clearInterval(l),c(d)}},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{await this.api.delete(`/video/jobs/${n}`),this.unsubscribeFromProgress(n)}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")&&(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 s=t.started_at??t.startedAt;typeof s=="string"&&s!==""&&(o.started_at=s);const c=t.completed_at??t.completedAt;return typeof c=="string"&&c!==""&&(o.completed_at=c),o}}new kr;const Zw={key:0,class:"mobile-layout"},Xw={class:"mobile-toolbar"},Hw={class:"mobile-toolbar-left"},Gw=["aria-label"],Jw={class:"mobile-toolbar-right"},Yw=["disabled"],Kw=["disabled"],qw={class:"preview-section"},Qw={key:0,class:"mobile-export-overlay"},eb={class:"mobile-export-progress"},tb={class:"mobile-export-bar"},nb={class:"mobile-timeline-zoom"},ob={key:1,class:"desktop-layout"},ab={class:"desktop-main-row"},ib={class:"preview-panel"},rb={class:"fit-toggle"},sb={class:"editor-content"},lb={class:"editor-tabs"},cb={class:"tab-header"},db=["onClick"],ub={class:"tab-content-area"},mb={class:"filter-controls"},pb={class:"text-controls"},fb={class:"transition-controls"},hb={class:"audio-controls"},vb={class:"adjustments-controls"},gb={key:1,class:"no-filter-selected"},yb={class:"export-controls"},wb={key:0,"data-testid":"video-export-status-completed"},bb={key:1,"data-testid":"video-export-status-message",class:"export-status-message"},kb={class:"desktop-timeline-row"},xb={class:"timeline-zoom"},Eb=["value"],Vb={class:"zoom-readout"},Sb={key:0,class:"dev-editor-controls","data-testid":"video-editor-dev-controls"},Cb={class:"dev-editor-row"},_b={class:"dev-editor-field"},Nb={class:"dev-editor-field"},Tb=["disabled"],Mb=["disabled"],Bb=["disabled"],Ib={class:"dev-editor-row"},Fb={class:"dev-editor-field dev-editor-field--wide"},$b=["value"],Rb=["disabled"],Db=["disabled"],Ab=["disabled"],Ub=["disabled"],Ob=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 b=o.media.uuid??o.media.id;return typeof b=="string"&&b.trim()!==""?b.trim():void 0}),s=e.computed(()=>{const b=typeof o.mediaUuid=="string"?o.mediaUuid.trim():"";return b!==""?b:r.value??`temp-${Date.now()}`}),c=e.ref(typeof window<"u"?window.innerWidth<768:!1),l=e.ref("filters"),d=e.ref("filters"),u=e.computed(()=>{const b=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},V=o.featureFlags;return V?{filters:typeof V.filters=="boolean"?V.filters:b.filters,adjustments:typeof V.adjustments=="boolean"?V.adjustments:b.adjustments,text:typeof V.text=="boolean"?V.text:b.text,transitions:typeof V.transitions=="boolean"?V.transitions:b.transitions,audio:typeof V.audio=="boolean"?V.audio:b.audio,export:typeof V.export=="boolean"?V.export:b.export}:b}),p=e.computed(()=>c.value?l.value:d.value),f=e.computed(()=>p.value==="filters"||E.value),h=e.computed(()=>p.value!=="filters"&&!E.value),v=e.ref(null),g=e.ref(null),E=e.ref(!1),T=e.computed(()=>c.value?v.value:g.value);function _(b){return b==="contain"||b==="cover"||b==="none"}function w(b){if(!(b!=null&&b.metadata))return null;const V=b.metadata.fit_mode;return _(V)?V:null}const m=e.shallowRef(null),k=e.ref(null),N=e.ref(w(o.initialRecipe)??"contain"),S=e.ref(null),y=e.ref(null),C=e.ref(null),U=e.ref(!1),x=new Map,I=e.ref([]),R=e.ref([]),A=e.ref([]),M=e.ref([]),P=e.ref(1),H=()=>{c.value=window.innerWidth<768},B=[{id:"filters",label:"Filters",icon:sn},{id:"adjustments",label:"Adjust",icon:Cu},{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:vo}],D=[{id:"filters",label:"Filters"},{id:"adjustments",label:"Adjustments"},{id:"text",label:"Text"},{id:"transitions",label:"Transitions"},{id:"audio",label:"Audio"},{id:"export",label:"Export"}],X=e.computed(()=>B.filter(b=>u.value[b.id])),Z=e.computed(()=>D.filter(b=>u.value[b.id])),ee=e.computed(()=>{var b,V;return((b=Z.value[0])==null?void 0:b.id)??((V=X.value[0])==null?void 0:V.id)??"filters"});e.watch(u,b=>{b[l.value]||(l.value=ee.value),b[d.value]||(d.value=ee.value)},{immediate:!0,deep:!0}),e.watch(ee,b=>{u.value[l.value]||(l.value=b),u.value[d.value]||(d.value=b)},{immediate:!0}),e.watch(u,b=>{b.export||(l.value==="export"&&(l.value=ee.value),d.value==="export"&&(d.value=ee.value))},{immediate:!0,deep:!0});const ge=e.computed(()=>typeof window>"u"?!1:window.__MEDIABLES_EDITOR_DEV__===!0),{currentFrame:Ee,playheadPosition:te,timelineClips:F,totalDuration:j,hasChanges:de,isPlaying:ne,selectedClip:J,zoomLevel:Be,playbackSpeed:ce,handleTrim:re,handleSplit:ke,handleClipSelect:oe,splitAtPlayhead:le,deleteSelectedClip:xe,duplicateSelectedClip:Ce,setZoomLevel:dt,moveClip:Ze,setFilters:vt,setTextOverlays:Y,setAudioTracks:me,saveDraft:ae,clearHasChanges:ve,resetChanges:Ne,generateRecipe:Ve,zoomIn:Q,zoomOut:he,fitToWindow:L,togglePlayback:q,setPlaying:se,seekTo:fe,frameForward:Fe,frameBackward:He,skipToStart:Ge,skipToEnd:et,setPlaybackSpeed:je,updateSourceDuration:Tt}=ny(s.value,o.initialRecipe,o.media),{videoCompatibleFilters:Xa,activeFilters:tt,selectedFilter:Br,previewFilter:Io,previewFilterEffect:Ir,applyFilter:Fr,updateFilterParams:Rc,removeFilter:Dc,clearAllFilters:$r,setActiveFilters:Ac}=my();function Hn(b){var W,K;const V=((W=J.value)==null?void 0:W.id)??((K=F.value[0])==null?void 0:K.id);V&&(U.value=!0,typeof b=="object"&&b.id?Fr(b.id):typeof b=="string"&&Fr(b),vt(tt.value),m.value?m.value.setClipFilters(V,tt.value):x.set(V,[...tt.value]),oe(V),U.value=!1,Ut())}function Uc(){var V,W;const b=((V=J.value)==null?void 0:V.id)??((W=F.value[0])==null?void 0:W.id);b&&oe(b)}function Rr(b){const V=tt.value.find(W=>W.filterId===b);V&&Dc(V.id)}const Gn=e.computed(()=>Xa.value.map(V=>{var K;const W=[];if(V.controls&&V.controls.length>0)for(const ue of V.controls){const ie=ue.type;if(ie==="button"||ie==="text"||ie==="range")continue;const pe={id:ue.property||ue.id,label:ue.label||ue.id,type:ie,default:ue.default??(ie==="toggle"?!1:ie==="color"?"#ffffff":0)};ie==="slider"&&(pe.min=ue.min??0,pe.max=ue.max??1,pe.step=ue.step??.01),ie==="select"&&ue.options&&(pe.options=ue.options),W.push(pe)}else if(V.paramRanges){const ue=Object.entries(V.paramRanges);for(const[ie,pe]of ue){const Ue=ie.replace(/[-_]/g," ").replace(/\b\w/g,Ot=>Ot.toUpperCase()),ft=(K=V.defaultParams)==null?void 0:K[ie],Yt=(pe.min+pe.max)/2;W.push({id:ie,label:Ue,min:pe.min,max:pe.max,step:pe.step??.01,default:typeof ft=="number"?ft:Yt})}}return{id:V.id,name:V.name,category:V.category,params:W}})),Cn=e.ref("0.00"),_n=e.ref("0.00"),en=e.ref("");e.watch(Gn,b=>{if(b.length===0){en.value="";return}b.some(W=>W.id===en.value)||(en.value=b[0].id)},{immediate:!0});const ot=e.ref(!1),Xe=e.ref(0),Gt=e.ref(!1),We=e.ref(null),Mt=e.ref(null);let Fo=null,Ct=!1,Jt=null;const Ha=e.computed(()=>{const b=new Map;return tt.value.forEach(V=>b.set(V.filterId,V)),b}),Oc=e.computed(()=>{var b,V;return Ee.value?Ee.value:((b=o.media)==null?void 0:b.thumbnail_url)||((V=o.media)==null?void 0:V.url)}),Rt=e.ref("");e.watch(()=>{var b,V;return{file:(b=o.media)==null?void 0:b.file,url:(V=o.media)==null?void 0:V.url}},(b,V,W)=>{var ue,ie;const K=Rt.value;W(()=>{K&&K.startsWith("blob:")&&URL.revokeObjectURL(K)}),(ue=o.media)!=null&&ue.file?Rt.value=URL.createObjectURL(o.media.file):(ie=o.media)!=null&&ie.url?Rt.value=o.media.url:Rt.value=""},{immediate:!0}),e.onUnmounted(()=>{Rt.value&&Rt.value.startsWith("blob:")&&URL.revokeObjectURL(Rt.value)});const Ga=e.computed(()=>Rt.value),Dr=e.computed(()=>{if(!o.media)return null;const{file:b,...V}=o.media;return{...V,url:Rt.value}}),Ar=e.computed(()=>{var V;const b=(V=o.media)==null?void 0:V.url;return!!(b&&/^https?:/i.test(b))}),Ur=e.computed(()=>tt.value),Or=e.computed(()=>te.value),Lc=e.computed(()=>!!J.value&&te.value>0),zc=e.computed(()=>!!J.value&&F.value.length>1),Ja=e.ref(0),Dt=e.computed(()=>{try{const b=j.value??j;return b&&typeof b=="number"&&b>0?b:Ja.value}catch{return Ja.value}}),Nn=e.ref(),Ya=e.ref(),Ka=e.ref(),qa=e.ref(),$o=e.ref(0),cn=e.ref(!1);let gt=null,At=null;e.watch(Dt,b=>{var W;if(cn.value||!b||b<=0)return;const V=$o.value||((W=Nn.value)==null?void 0:W.clientWidth)||0;V>0&&(cn.value=!0,L(V))}),e.watch($o,b=>{if(cn.value||!b||b<=0)return;Dt.value>0&&(cn.value=!0,L(b))});function Tn(b){return Number.isFinite(b)?b.toFixed(2):"0.00"}function Lr(b){const V=Number(b);return Number.isFinite(V)?V:null}function Pc(b){b&&(Cn.value=Tn(b.sourceIn),_n.value=Tn(b.sourceOut))}e.watch(()=>{var b,V,W;return[(b=J.value)==null?void 0:b.id,(V=J.value)==null?void 0:V.sourceIn,(W=J.value)==null?void 0:W.sourceOut]},()=>{Pc(J.value)},{immediate:!0});function zr(b){const V=J.value;if(!V)return;const W=1/30,K=V.sourceMinIn??0,ue=V.sourceMaxOut??Dt.value,ie=V.sourceIn+(te.value-V.timelineStart);if(b==="start"){const Ue=Math.max(K,Math.min(ie,V.sourceOut-W));Cn.value=Tn(Ue);return}const pe=Math.max(V.sourceIn+W,Math.min(ie,ue));_n.value=Tn(pe)}function jc(){const b=J.value;if(!b)return;const V=Lr(Cn.value),W=Lr(_n.value);if(V===null||W===null)return;const K=1/30,ue=b.sourceMinIn??0,ie=b.sourceMaxOut??Dt.value,pe=Math.max(ue,Math.min(V,ie-K)),Ue=Math.max(pe+K,Math.min(W,ie));re(b.id,"start",pe),re(b.id,"end",Ue),Cn.value=Tn(pe),_n.value=Tn(Ue),J.value&&fe(J.value.timelineStart)}function Wc(){en.value.trim()!==""&&Hn(en.value)}function Zc(){var b;$r(),vt(tt.value),(b=J.value)!=null&&b.id&&(m.value?m.value.setClipFilters(J.value.id,tt.value):x.set(J.value.id,[...tt.value])),Ut()}function Pr(b,V,W){var ue,ie;const K=tt.value.find(pe=>pe.filterId===b);K?(K.params={...K.params,[V]:W},vt(tt.value),m.value&&((ue=J.value)!=null&&ue.id)?m.value.setClipFilters(J.value.id,tt.value):(ie=J.value)!=null&&ie.id&&x.set(J.value.id,[...tt.value]),Ut(),Uc()):Io.value&&Io.value.filterId===b&&(Io.value.params={...Io.value.params||{},[V]:W})}function jr(b){fe(b)}function Wr(b){!b||!Number.isFinite(b.timestamp)||fe(b.timestamp)}function Zr(b){se(b)}function Ro(b){!Number.isFinite(b)||b<=0||(Ja.value=b,Tt(b))}function Xc(){var V;const b=$o.value||((V=Nn.value)==null?void 0:V.clientWidth)||800;L(b)}function Qa(b){cn.value=!0,dt(b)}function Hc(){cn.value=!0,Q()}function Gc(){cn.value=!0,he()}function Jc(b){const V=b.target,W=Number(V.value);Qa(W)}function Xr(b){const V=Math.min(600,Math.max(10,Be.value+b));Qa(V)}function ei(){At==null||At(),At=null;const b=Ka.value,V=qa.value;if(!c.value||!b||!V)return;const W=()=>{Xr(-20)},K=()=>{Xr(20)};b.addEventListener("click",W),V.addEventListener("click",K),At=()=>{b.removeEventListener("click",W),V.removeEventListener("click",K)}}e.watch([c,Ka,qa],()=>{ei()},{flush:"post"});function Hr(b){var V;m.value=b,(V=m.value)!=null&&V.composition&&(S.value=new py(m.value.composition),y.value=new va(m.value.composition),C.value=new fy(m.value.composition));try{x.size&&(x.forEach((W,K)=>{m.value.setClipFilters(K,W)}),x.clear(),m.value.composition.computeFrame())}catch{}}function Yc(b){b!=null&&b.id&&Ir(b.id)}function Kc(b){Rc(b),Ut()}async function qc(b){if(!S.value)return;const V=await S.value.addTextOverlay(b);I.value.push({id:V,...b})}async function Qc(b,V){if(!S.value)return;await S.value.updateTextOverlay(b,V);const W=I.value.findIndex(K=>K.id===b);W!==-1&&(I.value[W]={...I.value[W],...V})}async function ed(b){S.value&&(await S.value.removeTextOverlay(b),I.value=I.value.filter(V=>V.id!==b))}async function td(b){if(!y.value||M.value.length<2)return;const[V,W]=M.value,K=await y.value.applyTransition(V,W,b);R.value.push({id:K,...b,name:b.type})}function nd(b){if(!y.value)return;const V=R.value[b];V&&(y.value.removeTransition(V.id),R.value.splice(b,1))}function od(b){}async function ad(b){if(!C.value)return;const V=await C.value.addAudioTrack(b);A.value.push({id:V,...b})}async function id(b,V){if(!C.value)return;const W=A.value.findIndex(K=>K.id===b);W!==-1&&(A.value[W]={...A.value[W],...V})}async function rd(b){C.value&&(await C.value.removeAudioTrack(b),A.value=A.value.filter(V=>V.id!==b))}async function sd(b,V){if(!C.value)return;await C.value.updateVolume(b,V);const W=A.value.find(K=>K.id===b);W&&(W.volume=V)}async function ld(b,V){if(!C.value)return;await C.value.muteTrack(b,V);const W=A.value.find(K=>K.id===b);W&&(W.muted=V)}function cd(b){C.value&&(C.value.setMasterVolume(b),P.value=b)}function dd(b){i("thumbnail-selected",b)}function tn(){Fo!==null&&(clearInterval(Fo),Fo=null)}function ud(b,V){return V?{...b,output:{...b.output,format:V.format,quality:V.quality}}:b}function Jn(b){var V;return b.metadata||(b.metadata={created_at:new Date().toISOString(),editor_version:"2.0.0"}),b.metadata.fit_mode=N.value,(V=o.media)!=null&&V.url&&/^https?:/i.test(o.media.url)?b.metadata.source_url=o.media.url:delete b.metadata.source_url,b}function Je(b,V,W){return Math.min(W,Math.max(V,b))}function ti(b,V){if(typeof b=="number"&&Number.isFinite(b))return b;if(typeof b=="string"){const W=Number(b);if(Number.isFinite(W))return W}return V}function ut(b,V,W){for(const K of V)if(K in b)return ti(b[K],W);return W}function md(b){const V=typeof b.params=="object"&&b.params!==null?b.params:{};switch(b.filterId.trim().toLowerCase()){case"brightness":return[{type:"brightness",value:Je(ut(V,["value","brightness"],0),-1,1)}];case"contrast":return[{type:"contrast",value:Je(ut(V,["value","contrast"],1),.1,3)}];case"saturation":return[{type:"saturation",value:Je(ut(V,["value","saturation"],1),0,3)}];case"blur":case"gaussian-blur":case"kawase-blur":case"radial-blur":return[{type:"blur",value:Je(ut(V,["value","blur","radius"],0),0,25)}];case"sharpen":return[{type:"sharpen",value:Je(ut(V,["value","amount"],1),0,5)}];case"sepia":return[{type:"sepia",value:1}];case"grayscale":return[{type:"grayscale",value:1}];case"adjustment":{const K=Je(ut(V,["brightness"],1)-1,-1,1),ue=Je(ut(V,["contrast"],1),.1,3),ie=Je(ut(V,["saturation"],1),0,3);return[{type:"brightness",value:K},{type:"contrast",value:ue},{type:"saturation",value:ie}]}default:return[]}}function pd(b){const V=b.timeline[0],W=Array.isArray(V==null?void 0:V.filters)?V.filters:[],K=[];for(const ie of W)if(K.push(...md(ie)),K.length>=12)break;const ue={...b,filters:K.slice(0,12)};if(b.timeline.length===1&&V){const ie=Math.max(0,ti(V.sourceIn,0)),pe=ti(V.sourceOut,ie);pe>ie&&(ue.trim={start:ie,end:pe})}return ue}function fd(b){return{"360p":[640,360],"480p":[854,480],"720p":[1280,720],"1080p":[1920,1080],"1440p":[2560,1440],"2160p":[3840,2160]}[b??""]??[1920,1080]}function hd(b){if(!b||typeof b!="object")return null;const V=b.duration;if(typeof V=="number"&&Number.isFinite(V)&&V>0)return V;if(V&&typeof V=="object"&&"value"in V){const W=V.value;if(typeof W=="number"&&Number.isFinite(W)&&W>0)return W}return null}async function Gr(b,V,W){var Yt,Ot,Mn,on;const K=b.timeline[0],ue=K?Math.max(0,K.sourceIn):0,ie=K?K.sourceOut:void 0,[pe,Ue]=fd((V==null?void 0:V.quality)??((Yt=b.output)==null?void 0:Yt.quality)),ft=((Ot=b.output)==null?void 0:Ot.fps)||30;se(!1),E.value=!0,await e.nextTick();try{const at=[200,500,1e3];let st=!1;for(const ci of at){await new Promise(Rd=>setTimeout(Rd,ci));const Uo=T.value;if(!(!Uo||typeof Uo.captureFrameAt!="function")&&typeof Uo.ensureReadyForCapture=="function"&&(st=await Uo.ensureReadyForCapture(),st))break}const Lt=T.value;if(!Lt||typeof Lt.captureFrameAt!="function")throw new Error("PIXI preview not available for export. Ensure the preview is mounted.");if(!st)throw new Error("PIXI preview not ready for frame capture after retries. The video may still be loading.");const{exportWithPixiFrames:Yn,isWebCodecsSupported:si}=await Promise.resolve().then(()=>require("./PixiFrameExporter-C_Ga17dU.cjs"));if(!si())throw new Error("WebCodecs is not supported in this browser. Export requires Chrome 94+ or equivalent.");Jt=new AbortController;const Ao={width:pe,height:Ue,fps:ft,trimStart:ue,signal:Jt.signal};ie!==void 0&&(Ao.trimEnd=ie),W&&(Ao.onProgress=W);const os=Rt.value;os!==""&&(Ao.sourceUrl=os);const Md=typeof Lt.duration=="number"&&Lt.duration>0?Lt.duration:((Mn=b.source)==null?void 0:Mn.duration)??ie??0,Bd=await Yn({captureFrameAt:ci=>Lt.captureFrameAt(ci),duration:{value:Md}},Ao),li=new File([Bd],`edited-video-${Date.now()}.mp4`,{type:"video/mp4"}),Id=hd(Lt),Fd=((on=b.source)==null?void 0:on.duration)??0,$d=Math.max(0,(ie??Id??Fd)-ue);return{file:li,recipe:b,meta:{duration:$d,width:pe,height:Ue,format:"mp4",sizeBytes:li.size,size_bytes:li.size}}}finally{E.value=!1,Jt=null}}async function vd(b,V){var on;tn(),Ct=!1,Jt=null,Mt.value=null,We.value=null,Gt.value=!1,Xe.value=0;const W=Jn(b??Ve()),K=ts(W),ue=Array.isArray(K.filters)&&K.filters.length>0,ie=ai(K);if(!(de.value||ue||ie))return ve(),i("video-exported",null),null;const Ue=K.timeline[0],ft=Ue?Math.max(0,Ue.sourceIn):0,Ot=((Ue==null?void 0:Ue.sourceOut)??((on=K.source)==null?void 0:on.duration)??Dt.value)-ft,Mn=o.serverRenderEndpoint!=null&&o.clientExportThreshold>0&&Ot>o.clientExportThreshold;if(Mn){ot.value=!0;try{return await gd(K),null}catch(at){const st=at instanceof Error?at.message:"Server render failed";throw We.value=st,i("server-render-failed",st),at}finally{ot.value=!1}}if(o.maxDuration>0&&Ot>o.maxDuration&&!Mn){const at=`This video is too long for in-browser export (${Math.round(Ot)}s). Server rendering is not available. Try a shorter clip.`;return We.value=at,i("video-exported",null),null}ot.value=!0;try{const at=await Gr(K,V,st=>{Ct||(Xe.value=st)});return Ct?(We.value="Export canceled.",Xe.value=0,i("video-exported",null),null):(ve(),i("recipe-generated",K),i("video-exported",at),Xe.value=100,Gt.value=!0,at)}catch(at){if(Ct)return We.value="Export canceled.",Xe.value=0,i("video-exported",null),null;const st=at instanceof Error?at.message:"Local WebGL export failed.";throw We.value=st,new Error(`Video export failed: ${st}`)}finally{ot.value=!1}}function Do(){return new kr(o.serverRenderEndpoint??"/api/v1")}async function gd(b){const V=Do();We.value="Starting server render...",Xe.value=0;const W=await V.createRenderJob({source_media_uuid:s.value,recipe:b});Mt.value=W.id,i("server-render-started",W.id),i("export-started",W.id),We.value="Rendering on server...";const K=await V.pollRenderJob(W.id,(ie,pe)=>{Xe.value=ie,pe==="processing"&&(We.value=`Server rendering: ${ie}%`)},3e3,(o.maxDuration>0?o.maxDuration*3:1800)*1e3);Xe.value=100,Gt.value=!0,We.value="Server render complete!",ve(),i("recipe-generated",b);const ue={id:K.id};typeof K.output_media_id=="string"&&K.output_media_id!==""&&(ue.output_media_id=K.output_media_id),i("server-render-completed",ue)}async function Jr(){if(!ot.value)return;Ct=!0,E.value=!1,Jt&&(Jt.abort(),Jt=null),tn();const b=Mt.value;if(b)try{await Do().cancelJob(b)}catch(V){const W=V instanceof Error?V.message:"Failed to cancel export";We.value=W,ot.value=!1,Mt.value=null;return}ot.value=!1,Xe.value=0,Gt.value=!1,Mt.value=null,We.value="Export canceled."}async function Yr(b){tn(),Ct=!1,Jt=null,Mt.value=null,We.value=null,Gt.value=!1,ot.value=!0,Xe.value=0;try{const V=Jn(ud(Ve(),b));i("recipe-generated",V);const W=s.value.startsWith("temp-"),K=V.timeline[0],ue=Array.isArray(K==null?void 0:K.filters)?K.filters:[],ie=!0,pe=typeof window<"u"&&window.MEDIABLES_ALLOW_SERVER_EXPORT_FALLBACK===1||typeof localStorage<"u"&&localStorage.getItem("mediables.export.allowServerFallback")==="1";if(ie)try{const st=await Gr(V,b,si=>{Ct||(Xe.value=si)});if(Ct){We.value="Export canceled.",ot.value=!1,Xe.value=0;return}i("video-exported",st);const Lt=URL.createObjectURL(st.file),Yn=document.createElement("a");Yn.href=Lt,Yn.download=`edited-video-${Date.now()}.mp4`,Yn.click(),setTimeout(()=>URL.revokeObjectURL(Lt),100),ot.value=!1,Xe.value=100,Gt.value=!0;return}catch(st){if(Ct){We.value="Export canceled.",ot.value=!1,Xe.value=0;return}if(W||!pe)throw st;Xe.value=0,We.value="Local filter export failed, falling back to server render."}const Ue={"360p":"low","480p":"low","720p":"medium","1080p":"high","1440p":"ultra","2160p":"ultra"},ft=(b==null?void 0:b.quality)??V.output.quality,Yt=Ue[ft]??"high",Ot={...pd(V),export:{format:(b==null?void 0:b.format)??V.output.format,quality:Yt,resolution:ft,framerate:V.output.fps}},on=await Do().createJob({source_media_id:s.value,recipe:Ot}),at=typeof on.id=="string"?on.id:null;if(!at)throw new Error("Export failed: missing job id");Mt.value=at,i("export-started",at),Nd(at)}catch(V){if(E.value=!1,Jt=null,Ct){We.value="Export canceled.",ot.value=!1,Xe.value=0,Mt.value=null;return}try{const W=Jn(Ve()),K=new Blob([JSON.stringify(W,null,2)],{type:"application/json"}),ue=URL.createObjectURL(K),ie=document.createElement("a");ie.href=ue,ie.download=`video-recipe-${Date.now()}.json`,ie.click(),setTimeout(()=>URL.revokeObjectURL(ue),100)}finally{ot.value=!1,Xe.value=0,Mt.value=null,We.value=V instanceof Error?V.message:"Export failed"}}}const ni=async b=>{await new Promise(V=>{window.setTimeout(V,b)})},oi=b=>{if(!b||b.width<=0||b.height<=0)return null;try{return b.toDataURL("image/jpeg",.85)}catch{return null}},yd=b=>{if(!b||typeof b!="object")return null;const W=b.pixiCanvas;if(W&&typeof W=="object"&&"value"in W){const K=W.value;return K instanceof HTMLCanvasElement?K:null}return W instanceof HTMLCanvasElement?W:null},wd=b=>{if(!b||typeof b!="object")return null;const V=b.duration;if(typeof V=="number"&&Number.isFinite(V))return V;if(V&&typeof V=="object"&&"value"in V){const W=V.value;if(typeof W=="number"&&Number.isFinite(W))return W}return null},bd=b=>{if(!b||typeof b!="object")return null;const W=b.videoElement;if(W&&typeof W=="object"&&"value"in W){const K=W.value;return K instanceof HTMLVideoElement?K:null}return W instanceof HTMLVideoElement?W:null},Kr=b=>typeof b.params=="object"&&b.params!==null?b.params:{},kd=b=>{const V=[];for(const W of b){const K=Kr(W),ue=W.filterId.trim().toLowerCase();if(ue==="brightness"){const pe=(Je(ut(K,["value","brightness"],0),-1,1)+1)*100;V.push(`brightness(${pe.toFixed(2)}%)`);continue}if(ue==="contrast"){const ie=Je(ut(K,["value","contrast"],1),.1,4);V.push(`contrast(${(ie*100).toFixed(2)}%)`);continue}if(ue==="saturation"||ue==="saturate"){const ie=Je(ut(K,["value","saturation"],1),0,4);V.push(`saturate(${(ie*100).toFixed(2)}%)`);continue}if(ue==="grayscale"){V.push("grayscale(100%)");continue}if(ue==="sepia"){V.push("sepia(100%)");continue}if(ue==="blur"||ue==="gaussian-blur"||ue==="kawase-blur"){const ie=Je(ut(K,["value","blur","radius"],0),0,30);ie>.01&&V.push(`blur(${ie.toFixed(2)}px)`);continue}if(ue==="adjustment"){const ie=ut(K,["brightness"],1),pe=ut(K,["contrast"],1),Ue=ut(K,["saturation"],1);Math.abs(ie-1)>.01&&V.push(`brightness(${(Je(ie,0,5)*100).toFixed(2)}%)`),Math.abs(pe-1)>.01&&V.push(`contrast(${(Je(pe,.1,5)*100).toFixed(2)}%)`),Math.abs(Ue-1)>.01&&V.push(`saturate(${(Je(Ue,0,5)*100).toFixed(2)}%)`);continue}if(ue==="cinematic"){V.push("contrast(120%) brightness(95%) saturate(85%)");continue}if(ue==="dramatic"){V.push("contrast(140%) brightness(90%) saturate(110%) sepia(10%)");continue}if(ue==="dreamy"){V.push("blur(0.5px) brightness(105%) saturate(90%) contrast(95%)");continue}}return V.join(" ")},xd=b=>{const V=b.find(ue=>ue.filterId.trim().toLowerCase()==="noise");if(!V)return 0;const W=Kr(V),K=ut(W,["noise","value","amount","intensity"],.2);return K<=1?Je(K,0,1):Je(K/100,0,1)},Ed=(b,V,W,K)=>{if(K<=0)return;const ue=b.getImageData(0,0,V,W),ie=255*K;for(let pe=0;pe<ue.data.length;pe+=4){const Ue=(Math.random()*2-1)*ie;ue.data[pe]=Je(ue.data[pe]+Ue,0,255),ue.data[pe+1]=Je(ue.data[pe+1]+Ue,0,255),ue.data[pe+2]=Je(ue.data[pe+2]+Ue,0,255)}b.putImageData(ue,0,0)},qr=async b=>{b.readyState>=2&&b.videoWidth>0&&b.videoHeight>0||await new Promise(V=>{let W=!1,K=0;const ue=()=>{W||(W=!0,b.removeEventListener("loadedmetadata",ie),b.removeEventListener("loadeddata",ie),b.removeEventListener("canplay",ie),window.clearTimeout(K),V())},ie=()=>{ue()};b.addEventListener("loadedmetadata",ie),b.addEventListener("loadeddata",ie),b.addEventListener("canplay",ie),K=window.setTimeout(()=>ue(),800),b.play().catch(()=>{})})},Vd=async(b,V)=>{await new Promise(W=>{let K=!1,ue=0;const ie=()=>{K||(K=!0,b.removeEventListener("seeked",pe),window.clearTimeout(ue),W())},pe=()=>{ie()};if(Math.abs(b.currentTime-V)<.016){requestAnimationFrame(()=>ie());return}b.addEventListener("seeked",pe),ue=window.setTimeout(()=>ie(),700),b.currentTime=V})},Qr=async(b,V)=>{await qr(b);const W=Math.floor(b.videoWidth),K=Math.floor(b.videoHeight);if(W<=0||K<=0)return null;const ue=Number.isFinite(b.duration)&&b.duration>0?b.duration:0,ie=ue>0?Je(V,0,ue):0;await Vd(b,ie);const pe=document.createElement("canvas");pe.width=W,pe.height=K;const Ue=pe.getContext("2d");if(!Ue)return null;const ft=kd(tt.value);ft!==""&&(Ue.filter=ft);try{Ue.drawImage(b,0,0,W,K)}catch{return null}const Yt=xd(tt.value);return Ed(Ue,W,K,Yt),oi(pe)},Sd=async(b,V)=>{const W=document.createElement("video");W.src=b,W.muted=!0,W.playsInline=!0,W.preload="auto",b.startsWith("blob:")||(W.crossOrigin="anonymous");try{return await qr(W),await Qr(W,V)}catch{return null}finally{W.pause(),W.removeAttribute("src"),W.load()}},Cd=async b=>{const V=T.value,W=oi(yd(V));if(W)return W;if(V!=null&&V.captureFrameAt)for(let ie=0;ie<4;ie+=1){const pe=wd(V);if(pe!==null&&pe<=0&&ie<2){await ni(80);continue}const Ue=await Promise.race([V.captureFrameAt(b),ni(450).then(()=>null)]),ft=oi(Ue);if(ft)return ft;await ni(80)}const K=bd(V);if(K){const ie=await Qr(K,b);if(ie)return ie}const ue=Ga.value.trim();if(ue!==""){const ie=await Sd(ue,b);if(ie)return ie}return null},es=b=>b.map(V=>({...V,params:V.params&&typeof V.params=="object"?{...V.params}:V.params}));function ts(b){const V=es(tt.value);if(!ai(b)&&V.length>0&&Array.isArray(b.timeline)&&b.timeline.length>0){const K=b.timeline[0];K&&(b.timeline=[{...K,filters:V},...b.timeline.slice(1)])}return b}const ai=b=>Array.isArray(b.timeline)?b.timeline.some(V=>Array.isArray(V.filters)&&V.filters.length>0):!1,_d=b=>{if(!b||typeof b!="object")return null;const V=b.posterFrame;if(typeof V!="string")return null;const W=V.trim();return W!==""?W:null};async function ii(){const b=Jn(ts(ae())),V=es(tt.value),W=ai(b)||V.length>0,K=_d(o.initialRecipe);if(W){const ue=te.value>0?te.value:.1;try{const ie=await Cd(ue);ie?b.posterFrame=ie:K&&(b.posterFrame=K)}catch{K&&(b.posterFrame=K)}}else delete b.posterFrame;return ve(),i("draft-saved",b),b}function ns(){Ne()&&($r(),Ut())}async function Nd(b){tn();const V=Do();Fo=window.setInterval(async()=>{try{if(Ct){tn();return}const W=await V.getJob(b),K=Number(W.progress??0);if(Xe.value=Number.isFinite(K)?K:0,W.status==="completed"||W.status==="failed"||W.status==="cancelled")if(tn(),ot.value=!1,Mt.value=null,W.status==="completed")Xe.value=100,Gt.value=!0,We.value=null;else{const ue=W.status==="cancelled"||typeof W.error_message=="string"&&/cancel/i.test(W.error_message);We.value=ue?"Export canceled.":typeof W.error_message=="string"&&W.error_message.trim()!==""?W.error_message:"Export failed"}}catch(W){tn(),ot.value=!1,Mt.value=null,We.value=W instanceof Error?W.message:"Failed to check export progress"}},2e3)}function ri(){const b=Jn(Ve());try{const V=b.timeline??[]}catch{}k.value=b}let dn=null;function Ut(){dn&&clearTimeout(dn),dn=setTimeout(()=>{ri(),dn=null},200)}e.watch(()=>F.value,Ut,{deep:!0}),e.watch(()=>J.value,b=>{if(U.value||!b)return;const V=(b==null?void 0:b.filters)??[];Ac(V)},{immediate:!0}),e.watch(()=>tt.value,b=>{vt(b),Ut()},{deep:!0}),e.watch(()=>I.value,b=>{Y(b),Ut()},{deep:!0}),e.watch(()=>A.value,b=>{const V=b.map(W=>({...W,source:typeof W.source=="string"?W.source:void 0}));me(V),Ut()},{deep:!0}),e.watch(()=>te.value,Ut),n({saveDraft:ii,exportForUpload:vd}),ri(),e.onUnmounted(()=>{tn(),Ct=!0,dn&&(clearTimeout(dn),dn=null),m.value&&(m.value.destroy(),m.value=null),S.value=null,y.value=null,C.value=null});function Td(){gt||!Ya.value||(gt=new K1({filters:Gn.value,callbacks:{onApplyFilter:b=>{Hn(b.id)},onRemoveFilter:b=>{Rr(b)},onUpdateParam:(b,V,W)=>{Pr(b,V,W)},onPreviewFilter:b=>{Ir(b.id)}}}),gt.mount(Ya.value),gt.setActiveFilters(Ha.value))}e.watch(Ha,b=>{gt==null||gt.setActiveFilters(b)},{deep:!0}),e.watch(Gn,b=>{gt==null||gt.setFilters(b)});let nn=null;return e.onMounted(()=>{window.addEventListener("resize",H);const b=()=>{!Nn.value||nn||(nn=new ResizeObserver(V=>{V[0]&&($o.value=Math.round(V[0].contentRect.width))}),nn.observe(Nn.value))};b(),nn||e.nextTick(b),c.value&&(ei(),At||e.nextTick(ei)),o.media&&ri(),c.value&&e.nextTick(()=>{Td()}),e.nextTick(()=>{const V=document.querySelector(".video-editor");V&&V.getBoundingClientRect();const W=document.querySelector(".mobile-layout");W&&W.getBoundingClientRect()})}),e.onUnmounted(()=>{window.removeEventListener("resize",H),nn==null||nn.disconnect(),nn=null,At==null||At(),At=null,gt==null||gt.destroy(),gt=null}),(b,V)=>{var W,K,ue,ie;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-editor",{mobile:c.value}])},[c.value?(e.openBlock(),e.createElementBlock("div",Zw,[e.createElementVNode("div",Xw,[e.createElementVNode("div",Hw,[e.createElementVNode("button",{class:e.normalizeClass(["mobile-toolbar-btn",{active:e.unref(ne)}]),onClick:V[0]||(V[0]=(...pe)=>e.unref(q)&&e.unref(q)(...pe)),"aria-label":e.unref(ne)?"Pause":"Play","data-testid":"btn-mobile-play"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(ne)?e.unref(ml):e.unref(fl)},null,8,["icon"])],10,Gw),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:ns,"aria-label":"Reset all changes","data-testid":"btn-mobile-reset"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ln)},null,8,["icon"])])]),e.createElementVNode("div",Jw,[e.createElementVNode("button",{class:"mobile-toolbar-btn mobile-toolbar-save",onClick:ii,"aria-label":"Save","data-testid":"btn-mobile-save",disabled:!e.unref(de)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(er)},null,8,["icon"]),V[12]||(V[12]=e.createElementVNode("span",null,"Save",-1))],8,Yw),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[1]||(V[1]=pe=>Yr()),"aria-label":"Export","data-testid":"btn-mobile-export",disabled:ot.value||!e.unref(de)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(vo)},null,8,["icon"])],8,Kw),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[2]||(V[2]=pe=>i("close")),"aria-label":"Close","data-testid":"btn-mobile-close"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Dn)},null,8,["icon"])])])]),e.createElementVNode("div",qw,[e.withDirectives(e.createVNode(ms,{ref_key:"pixiPreviewMobileRef",ref:v,"aria-hidden":!f.value,class:"preview-host-child",source:Ga.value,"fallback-duration":Dt.value,filters:Ur.value,playhead:Or.value,"is-playing":e.unref(ne),"fit-mode":N.value,active:f.value,onPlayPause:e.unref(q),onFrameUpdate:Wr,onDurationChange:Ro},null,8,["aria-hidden","source","fallback-duration","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,f.value]]),e.withDirectives(e.createVNode(Bs,{"aria-hidden":!h.value,class:"preview-host-child","media-uuid":s.value,recipe:k.value,media:Dr.value,"enable-engine":h.value&&Ar.value,"fit-mode":N.value,onTimeUpdate:jr,onPlayStateChange:Zr,onDurationChange:Ro,onEngineReady:Hr},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,h.value]]),ot.value?(e.openBlock(),e.createElementBlock("div",Qw,[e.createElementVNode("div",eb,[e.createElementVNode("span",null,"Exporting "+e.toDisplayString(Xe.value)+"%",1),e.createElementVNode("div",tb,[e.createElementVNode("div",{class:"mobile-export-bar-fill",style:e.normalizeStyle({width:Xe.value+"%"})},null,4)]),e.createElementVNode("button",{class:"mobile-export-cancel",onClick:Jr},"Cancel")])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:Nn,class:"timeline-section"},[e.createElementVNode("div",nb,[e.createElementVNode("button",{ref_key:"mobileZoomOutButtonRef",ref:Ka,type:"button",class:"mobile-zoom-btn","aria-label":"Zoom out timeline","data-testid":"btn-timeline-zoom-out"},[...V[13]||(V[13]=[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:qa,type:"button",class:"mobile-zoom-btn","aria-label":"Zoom in timeline","data-testid":"btn-timeline-zoom-in"},[...V[14]||(V[14]=[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(Is,{playhead:e.unref(te),clips:e.unref(F),"selected-clip-id":((W=e.unref(J))==null?void 0:W.id)??((K=e.unref(F)[0])==null?void 0:K.id)??null,duration:Dt.value,"zoom-level":e.unref(Be),sensitivity:.25,"is-mobile":!0,"onUpdate:playhead":e.unref(fe),onTrim:e.unref(re),onSplit:e.unref(ke),onClipSelect:e.unref(oe),onClipMove:e.unref(Ze)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"])],512),e.createElementVNode("div",{ref_key:"mobileControlsRef",ref:Ya,class:"controls-section mobile-controls"},null,512)])):(e.openBlock(),e.createElementBlock("div",ob,[e.createElementVNode("div",ab,[e.createElementVNode("div",ib,[e.createElementVNode("div",rb,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[3]||(V[3]=pe=>N.value=pe),"aria-label":"Fit mode","data-testid":"select-video-fit-mode"},[...V[15]||(V[15]=[e.createElementVNode("option",{value:"contain"},"Contain",-1),e.createElementVNode("option",{value:"cover"},"Cover",-1),e.createElementVNode("option",{value:"none"},"None",-1)])],512),[[e.vModelSelect,N.value]])])]),e.withDirectives(e.createVNode(ms,{ref_key:"pixiPreviewDesktopRef",ref:g,"aria-hidden":!f.value,class:"preview-host-child",source:Ga.value,"fallback-duration":Dt.value,filters:Ur.value,playhead:Or.value,"is-playing":e.unref(ne),"fit-mode":N.value,active:f.value,onPlayPause:e.unref(q),onFrameUpdate:Wr,onDurationChange:Ro},null,8,["aria-hidden","source","fallback-duration","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,f.value]]),e.withDirectives(e.createVNode(Bs,{"aria-hidden":!h.value,class:"preview-host-child","media-uuid":s.value,recipe:k.value,media:Dr.value,"enable-engine":h.value&&Ar.value,"fit-mode":N.value,onTimeUpdate:jr,onPlayStateChange:Zr,onDurationChange:Ro,onEngineReady:Hr},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,h.value]]),b.showThumbnailPicker?(e.openBlock(),e.createBlock(Sg,{key:0,"media-uuid":s.value,duration:Dt.value,onSelect:dd},null,8,["media-uuid","duration"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",sb,[e.createElementVNode("div",lb,[e.createElementVNode("div",cb,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.value,pe=>(e.openBlock(),e.createElementBlock("button",{key:pe.id,class:e.normalizeClass(["tab-btn",{active:d.value===pe.id}]),onClick:Ue=>d.value=pe.id},e.toDisplayString(pe.label),11,db))),128))]),e.createElementVNode("div",ub,[e.withDirectives(e.createElementVNode("div",mb,[e.createVNode(D0,{filters:Gn.value,"active-filters":Ha.value,"thumbnail-url":Oc.value,onApplyFilter:Hn,onRemoveFilter:Rr,onUpdateParam:Pr,onPreviewFilter:Yc},null,8,["filters","active-filters","thumbnail-url"])],512),[[e.vShow,d.value==="filters"]]),e.withDirectives(e.createElementVNode("div",pb,[e.createVNode(Xg,{overlays:I.value,onAddOverlay:qc,onUpdateOverlay:Qc,onRemoveOverlay:ed},null,8,["overlays"])],512),[[e.vShow,d.value==="text"]]),e.withDirectives(e.createElementVNode("div",fb,[e.createVNode(f1,{"selected-clips":M.value,"applied-transitions":R.value,onApplyTransition:td,onRemoveTransition:nd,onPreviewTransition:od},null,8,["selected-clips","applied-transitions"])],512),[[e.vShow,d.value==="transitions"]]),e.withDirectives(e.createElementVNode("div",hb,[e.createVNode(J1,{"audio-layers":A.value,"master-volume":P.value,onAddTrack:ad,onUpdateTrack:id,onRemoveTrack:rd,onUpdateVolume:sd,onToggleMute:ld,onUpdateMasterVolume:cd},null,8,["audio-layers","master-volume"])],512),[[e.vShow,d.value==="audio"]]),e.withDirectives(e.createElementVNode("div",vb,[e.unref(Br)?(e.openBlock(),e.createBlock(J0,{key:0,filter:e.unref(Br),"current-frame":e.unref(Ee),onUpdateParams:Kc},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",gb,[...V[16]||(V[16]=[e.createElementVNode("p",null,"Select a filter from the Filters tab to adjust its parameters",-1)])]))],512),[[e.vShow,d.value==="adjustments"]]),e.withDirectives(e.createElementVNode("div",yb,[e.createVNode(dg,{"can-export":e.unref(de),"is-exporting":ot.value,"export-progress":Xe.value,onExport:Yr,onCancelExport:Jr,onSaveDraft:ii,onReset:ns},null,8,["can-export","is-exporting","export-progress"]),Gt.value?(e.openBlock(),e.createElementBlock("div",wb," Export complete ")):e.createCommentVNode("",!0),We.value&&!Gt.value?(e.openBlock(),e.createElementBlock("div",bb,e.toDisplayString(We.value),1)):e.createCommentVNode("",!0)],512),[[e.vShow,d.value==="export"]])])])])]),e.createElementVNode("div",kb,[e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:Nn,class:"timeline-container"},[e.createElementVNode("div",xb,[e.createElementVNode("label",null,[V[17]||(V[17]=e.createTextVNode(" Zoom ",-1)),e.createElementVNode("input",{type:"range",min:"10",max:"600",value:e.unref(Be),onInput:V[4]||(V[4]=pe=>Jc(pe))},null,40,Eb)]),e.createElementVNode("span",Vb,e.toDisplayString(Math.round(e.unref(Be)))+" px/s",1)]),e.createVNode(Is,{playhead:e.unref(te),clips:e.unref(F),"selected-clip-id":((ue=e.unref(J))==null?void 0:ue.id)??((ie=e.unref(F)[0])==null?void 0:ie.id)??null,duration:Dt.value,"zoom-level":e.unref(Be),sensitivity:.25,"onUpdate:playhead":e.unref(fe),onTrim:e.unref(re),onSplit:e.unref(ke),onClipSelect:e.unref(oe),onClipMove:e.unref(Ze)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"]),e.createVNode(Kv,{"selected-clip":e.unref(J),"can-split":Lc.value,"can-delete":zc.value,"is-playing":e.unref(ne),"zoom-level":e.unref(Be),"playback-speed":e.unref(ce),onSplit:e.unref(le),onDelete:e.unref(xe),onDuplicate:e.unref(Ce),onZoomIn:Hc,onZoomOut:Gc,onZoomChange:Qa,onFitToWindow:Xc,onPlayPause:e.unref(q),onFrameForward:e.unref(Fe),onFrameBackward:e.unref(He),onSkipToStart:e.unref(Ge),onSkipToEnd:e.unref(et),onSpeedChange:e.unref(je)},null,8,["selected-clip","can-split","can-delete","is-playing","zoom-level","playback-speed","onSplit","onDelete","onDuplicate","onPlayPause","onFrameForward","onFrameBackward","onSkipToStart","onSkipToEnd","onSpeedChange"]),ge.value?(e.openBlock(),e.createElementBlock("div",Sb,[e.createElementVNode("div",Cb,[e.createElementVNode("label",_b,[V[18]||(V[18]=e.createElementVNode("span",null,"Trim start (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[5]||(V[5]=pe=>Cn.value=pe),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-start"},null,512),[[e.vModelText,Cn.value]])]),e.createElementVNode("label",Nb,[V[19]||(V[19]=e.createElementVNode("span",null,"Trim end (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[6]||(V[6]=pe=>_n.value=pe),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-end"},null,512),[[e.vModelText,_n.value]])]),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-start-playhead",disabled:!e.unref(J),onClick:V[7]||(V[7]=pe=>zr("start"))}," Start = Playhead ",8,Tb),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-end-playhead",disabled:!e.unref(J),onClick:V[8]||(V[8]=pe=>zr("end"))}," End = Playhead ",8,Mb),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-trim",disabled:!e.unref(J),onClick:jc}," Apply Trim ",8,Bb)]),e.createElementVNode("div",Ib,[e.createElementVNode("label",Fb,[V[20]||(V[20]=e.createElementVNode("span",null,"Quick filter",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[9]||(V[9]=pe=>en.value=pe),"data-testid":"video-dev-filter-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Gn.value,pe=>(e.openBlock(),e.createElementBlock("option",{key:pe.id,value:pe.id},e.toDisplayString(pe.name),9,$b))),128))],512),[[e.vModelSelect,en.value]])]),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-filter",disabled:!e.unref(J)||en.value==="",onClick:Wc}," Apply Filter ",8,Rb),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-clear-filters",disabled:e.unref(tt).length===0,onClick:Zc}," Clear Filters ",8,Db),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(J),onClick:V[10]||(V[10]=pe=>Hn("noise"))}," QA: Noise ",8,Ab),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(J),onClick:V[11]||(V[11]=pe=>Hn("grayscale"))}," QA: Grayscale ",8,Ub)])])):e.createCommentVNode("",!0)],512)])]))],2)}}}),Ji=Me(Ob,[["__scopeId","data-v-6e81b19f"]]),Ft=a=>a===null||typeof a!="object"||Array.isArray(a)?null:a,Oe=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},Lb=(a,n)=>{if(n===null)return;const t=Ft(a.source)??{},o=Oe(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 l=Ft(r[0]);if(l!==null){const d=Oe(l.sourceIn)??0,u=Oe(l.sourceOut)??Oe(l.end)??Oe(l.timelineEnd);if(d===0&&u!==null&&u>0&&u<=1){l.sourceOut=n;const f=Oe(l.end);f!==null&&f>0&&f<=1&&(l.end=n);const h=Oe(l.timelineEnd);h!==null&&h>0&&h<=1&&(l.timelineEnd=n)}}}const s=Oe(a.trimEnd)??Oe(a.trim_end);s!==null&&s>0&&s<=1&&(a.trimEnd=n);const c=Ft(a.trim);if(c!==null){const l=Oe(c.end);l!==null&&l>0&&l<=1&&(c.end=n,a.trim=c)}},zb=(a,n)=>{if(!a)return!1;const t=Ft(a);if(t===null)return!1;const o=Ft(t.trim),i=Ft(t.source),s=Oe(i==null?void 0:i.duration)??n,c=Array.isArray(a.filters)&&a.filters.length>0;let l=!1;if(Array.isArray(a.timeline)&&a.timeline.length===1){const h=a.timeline[0];h&&Array.isArray(h.filters)&&h.filters.length>0&&(l=!0)}let d=!1;const u=Oe(t.trimStart)??Oe(t.trim_start)??Oe(o==null?void 0:o.start),p=Oe(t.trimEnd)??Oe(t.trim_end)??Oe(o==null?void 0:o.end);if(u!==null&&u>0&&(d=!0),p!==null&&s!==void 0&&p<s&&(d=!0),!d&&Array.isArray(a.timeline)&&a.timeline.length===1){const h=a.timeline[0];if(h){const v=Oe(h.sourceIn),g=Oe(h.sourceOut);v!==null&&v>0&&(d=!0),g!==null&&s!==void 0&&g<s&&(d=!0)}}let f=!1;if(Array.isArray(a.timeline)&&a.timeline.length===1){const h=a.timeline[0];if(h){const v=Oe(h.speed);f=v!==null&&v!==1}}return c||l||d||f},xc=a=>{if(!a)return!1;const n=Ft(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)},Pb=(a,n={})=>{var f,h;const t=JSON.parse(JSON.stringify(a)),o=Array.isArray(t.timeline)?t.timeline:[],i=o.length>0?Ft(o[0]):null,r=Array.isArray(i==null?void 0:i.filters)?i.filters:[],s=Array.isArray(t.filters)?t.filters:[];if(s.length>0?t.filters=s:t.filters=r,o.length===1&&i!==null){const v=Oe(i.sourceIn),g=Oe(i.sourceOut);v!==null&&t.trimStart===void 0&&(t.trimStart=v),g!==null&&t.trimEnd===void 0&&(t.trimEnd=g)}const c=Ft(t.trim);if(t.trimStart===void 0){const v=Oe(c==null?void 0:c.start);v!==null&&(t.trimStart=v)}if(t.trimEnd===void 0){const v=Oe(c==null?void 0:c.end);v!==null&&(t.trimEnd=v)}const l=Ft(t.source),d=Oe(t.width)??Oe(l==null?void 0:l.original_width)??Oe((f=n.exportMeta)==null?void 0:f.width);d!==null&&(t.width=d);const u=Oe(t.height)??Oe(l==null?void 0:l.original_height)??Oe((h=n.exportMeta)==null?void 0:h.height);u!==null&&(t.height=u);const p=Ft(t.output);return t.fps=Oe(t.fps)??Oe(p==null?void 0:p.fps)??30,Lb(t,n.mediaDuration??null),t},jb={key:0},Wb=["data-testid"],Zb={class:"ve-mobile-header"},Xb=["data-testid"],Hb={class:"ve-mobile-title"},Gb=["data-testid","disabled"],Jb={key:1,class:"ve-mobile-spacer","aria-hidden":"true"},Yb={class:"ve-body"},Kb=["data-testid"],qb=["aria-label"],Qb={class:"ve-header"},e2={class:"ve-title"},t2=["data-testid"],n2={class:"ve-body"},o2={class:"ve-footer"},a2=["data-testid"],i2=["data-testid","disabled"],r2=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"}},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),s=e.computed(()=>o.open),c=e.computed(()=>o.saveImmediate===!1),l=e.computed(()=>o.closeText),d=e.computed(()=>p.value?o.savingText:o.confirmText),u=e.ref(typeof window<"u"?window.innerWidth<768:!1),p=e.ref(!1),f=e.ref(!1),h=e.ref(null),v=`temp-${Date.now()}`,g=e.computed(()=>{var P;const M=(P=o.featureFlags)==null?void 0:P.export;return typeof M=="boolean"?M:o.workflowMode==="full"}),E=e.computed(()=>typeof o.mediaUuid=="string"&&o.mediaUuid.trim()!==""?o.mediaUuid.trim():o.media&&o.media.uuid.trim()!==""?o.media.uuid.trim():v),T=e.computed(()=>{const M={showThumbnailPicker:o.showThumbnailPicker,workflowMode:o.workflowMode,clientExportThreshold:o.clientExportThreshold,maxDuration:o.maxDuration,serverRenderEndpoint:o.serverRenderEndpoint};return o.featureFlags!==void 0&&(M.featureFlags=o.featureFlags),o.initialRecipe!==void 0&&(M.initialRecipe=o.initialRecipe),o.media!==void 0&&(M.media=o.media),M}),_=()=>{u.value=window.innerWidth<768};e.onMounted(()=>{window.addEventListener("resize",_)}),e.onUnmounted(()=>{window.removeEventListener("resize",_)}),e.onErrorCaptured(()=>(f.value=!0,!1));const w=M=>{const P=Array.isArray(M.timeline)?M.timeline:[];if(P.length===0)return 0;let H=0;for(const B of P){const D=Number(B.sourceIn),X=Number(B.sourceOut),Z=Number(B.speed??1),ee=Number.isFinite(Z)&&Z>0?Z:1;if(Number.isFinite(D)&&Number.isFinite(X)&&X>D){H+=(X-D)/ee;continue}const ge=Number(B.timelineStart),Ee=Number(B.timelineEnd);Number.isFinite(ge)&&Number.isFinite(Ee)&&Ee>ge&&(H+=Ee-ge)}return H},m=(M,P,H)=>{let B=null;const D=new Promise((X,Z)=>{B=setTimeout(()=>Z(new Error(`${H} timed out after ${P}ms`)),P)});return Promise.race([M,D]).finally(()=>{B!==null&&clearTimeout(B)})},k=()=>{var D;const H=(D=o.media)==null?void 0:D.duration;if(typeof H!="number"||!Number.isFinite(H)||H<=0)return 12e3;const B=Math.round(H*1e3);return Math.min(45e3,Math.max(12e3,B))},N=()=>{i("close"),i("update:open",!1)},S=()=>{p.value=!1,N()},y=M=>{i("recipe-generated",M)},C=M=>{i("export-started",M),i("save-started",M)},U=M=>{i("video-exported",M)},x=M=>{i("thumbnail-selected",M)},I=(M,P,H)=>{i("save-recipe",M);const B={recipe:M,exportPayload:P};H!==void 0&&(B.toastDescription=H),i("save-complete",B),N()},R=M=>{p.value||(i("draft-saved",M),I(M,null))},A=async()=>{var M;if(!p.value){if(f.value||h.value===null){i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),N();return}p.value=!0;try{const P=await m(h.value.saveDraft(),k(),"saveDraft");let H=null,B=!1,D;const X=w(P),Z=X>0?X:((M=o.media)==null?void 0:M.duration)??0;if(g.value&&Z>0&&Z<=o.clientExportThreshold&&typeof h.value.exportForUpload=="function"){B=!0;const ge=Math.min(9e4,Math.max(15e3,o.clientExportThreshold*2e3));try{H=await m(h.value.exportForUpload(P),ge,"exportForUpload")}catch{H=null}}if(xc(P)&&H===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}B&&H===null&&(D="Video edits saved. Final render will happen when you share."),I(P,H,D)}catch{i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),N()}finally{p.value=!1}}};return n({saveDraft:A}),(M,P)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[s.value?(e.openBlock(),e.createElementBlock("div",jb,[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ve-fullscreen","data-testid":r.value},[e.createElementVNode("header",Zb,[e.createElementVNode("button",{class:"ve-mobile-action",type:"button","data-testid":`${r.value}-close-button`,onClick:S},e.toDisplayString(l.value),9,Xb),e.createElementVNode("h2",Hb,e.toDisplayString(M.title),1),c.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:p.value,onClick:A},e.toDisplayString(d.value),9,Gb)):(e.openBlock(),e.createElementBlock("span",Jb))]),e.createElementVNode("section",Yb,[e.createVNode(Ji,e.mergeProps({ref_key:"videoEditorRef",ref:h,"media-uuid":E.value},T.value,{onClose:S,onDraftSaved:R,onExportStarted:C,onRecipeGenerated:y,onThumbnailSelected:x,onVideoExported:U}),null,16,["media-uuid"])])],8,Wb)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"ve-overlay","data-testid":r.value,onClick:e.withModifiers(S,["self"])},[e.createElementVNode("div",{class:"ve-dialog",role:"dialog","aria-label":M.title,"aria-modal":"true"},[e.createElementVNode("header",Qb,[e.createElementVNode("h2",e2,e.toDisplayString(M.title),1),e.createElementVNode("button",{class:"ve-close",type:"button","data-testid":`${r.value}-close-button`,"aria-label":"Close",onClick:S}," ✕ ",8,t2)]),e.createElementVNode("section",n2,[e.createVNode(Ji,e.mergeProps({ref_key:"videoEditorRef",ref:h,"media-uuid":E.value},T.value,{onClose:S,onDraftSaved:R,onExportStarted:C,onRecipeGenerated:y,onThumbnailSelected:x,onVideoExported:U}),null,16,["media-uuid"])]),e.createElementVNode("footer",o2,[e.renderSlot(M.$slots,"footer",{close:S,isSaving:p.value,save:A},()=>[e.createElementVNode("button",{class:"ve-btn",type:"button","data-testid":`${r.value}-cancel-button`,onClick:S},e.toDisplayString(l.value),9,a2),c.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ve-btn ve-btn--primary",type:"button","data-testid":`${r.value}-confirm-button`,disabled:p.value,onClick:A},e.toDisplayString(d.value),9,i2)):e.createCommentVNode("",!0)],!0)])],8,qb)],8,Kb))])):e.createCommentVNode("",!0)]))}}),s2=Me(r2,[["__scopeId","data-v-0ff40919"]]),l2={class:"video-editor-modal"},c2={class:"video-preview-container"},d2=["src"],u2={class:"video-overlay-controls"},m2=["aria-label"],p2={class:"time-display"},f2={class:"timeline-container"},h2={class:"clip-name"},v2={class:"timeline-time-labels"},g2={class:"tool-tabs"},y2=["onClick"],w2={class:"tool-panel"},b2={key:0,class:"trim-panel"},k2={class:"trim-controls"},x2={key:1,class:"filters-panel"},E2={class:"filter-grid"},V2=["onClick"],S2={key:2,class:"text-panel"},C2={key:3,class:"transitions-panel"},_2={class:"transition-grid"},N2=["onClick"],T2={class:"action-buttons"},M2=e.defineComponent({__name:"VideoEditorSimple",props:{media:{}},emits:["save","cancel"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(),r=e.ref(""),s=e.ref(!1),c=e.ref(0),l=e.ref(0),d=e.ref("video-1"),u=e.ref(0),p=e.ref(0),f=e.ref(null),h=e.ref("trim"),v=e.ref(null),g=e.ref(""),E=[{id:"trim",label:"Trim",icon:dl},{id:"filters",label:"Filters",icon:vu},{id:"text",label:"Text",icon:hl},{id:"transitions",label:"Transitions",icon:Vu}],T=[{id:"none",name:"None"},{id:"grayscale",name:"Grayscale"},{id:"sepia",name:"Sepia"},{id:"blur",name:"Blur"},{id:"brightness",name:"Brightness"},{id:"contrast",name:"Contrast"}],_=[{id:"fade",name:"Fade"},{id:"slide",name:"Slide"},{id:"zoom",name:"Zoom"},{id:"wipe",name:"Wipe"}],w=e.ref();e.onMounted(()=>{var B,D;(B=t.media)!=null&&B.url?r.value=t.media.url:(D=t.media)!=null&&D.file&&(r.value=URL.createObjectURL(t.media.file))}),e.onUnmounted(()=>{var B;(B=t.media)!=null&&B.file&&r.value&&URL.revokeObjectURL(r.value)});function m(){i.value&&(l.value=i.value.duration,p.value=l.value)}function k(){i.value&&(c.value=i.value.currentTime)}function N(){s.value=!1}function S(){i.value&&(s.value?(i.value.pause(),s.value=!1):(i.value.play(),s.value=!0))}function y(B){if(!B||isNaN(B))return"00:00";const D=Math.floor(B/60),X=Math.floor(B%60);return`${D.toString().padStart(2,"0")}:${X.toString().padStart(2,"0")}`}function C(B){if(!i.value||!w.value)return;const D=w.value.getBoundingClientRect(),ee=(B.clientX-D.left)/D.width*l.value;i.value.currentTime=Math.max(0,Math.min(ee,l.value))}function U(){u.value=c.value}function x(){p.value=c.value}function I(){u.value=0,p.value=l.value}function R(B){f.value=B;const D=Z=>{if(!f.value||!w.value)return;const ee=w.value.getBoundingClientRect(),te=(Z.clientX-ee.left)/ee.width*l.value;f.value==="start"?u.value=Math.max(0,Math.min(te,p.value-1)):p.value=Math.max(u.value+1,Math.min(te,l.value))},X=()=>{f.value=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",X)};document.addEventListener("mousemove",D),document.addEventListener("mouseup",X)}function A(B){if(v.value=B,!i.value)return;const D={none:"none",grayscale:"grayscale(100%)",sepia:"sepia(100%)",blur:"blur(5px)",brightness:"brightness(150%)",contrast:"contrast(150%)"};i.value.style.filter=D[B]||"none"}function M(){}function P(B){}function H(){const B={timeline:[{id:d.value,url:r.value,startTime:0,endTime:l.value,sourceIn:u.value,sourceOut:p.value,track:0}],filters:v.value?[{type:v.value}]:[],textOverlays:g.value?[{content:g.value}]:[],duration:p.value-u.value};o("save",B)}return(B,D)=>(e.openBlock(),e.createElementBlock("div",l2,[e.createElementVNode("div",c2,[e.createElementVNode("video",{ref_key:"videoElement",ref:i,class:"video-preview",src:r.value,onLoadedmetadata:m,onTimeupdate:k,onEnded:N,controls:""},null,40,d2),e.createElementVNode("div",u2,[e.createElementVNode("button",{class:"play-pause-btn",onClick:S,"aria-label":s.value?"Pause":"Play"},[e.createVNode(e.unref($.IonIcon),{icon:s.value?e.unref(Nu):e.unref(Iu)},null,8,["icon"])],8,m2),e.createElementVNode("div",p2,e.toDisplayString(y(c.value))+" / "+e.toDisplayString(y(l.value)),1)])]),e.createElementVNode("div",f2,[e.createElementVNode("div",{class:"timeline-track",onClick:C,ref_key:"timelineTrack",ref:w},[e.createElementVNode("div",{class:"timeline-clip",style:e.normalizeStyle({left:`${u.value/l.value*100}%`,right:`${100-p.value/l.value*100}%`})},[e.createElementVNode("span",h2,e.toDisplayString(d.value),1)],4),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:`${c.value/l.value*100}%`})},null,4),h.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"trim-handle trim-start",style:e.normalizeStyle({left:`${u.value/l.value*100}%`}),onMousedown:D[0]||(D[0]=X=>R("start"))},null,36)):e.createCommentVNode("",!0),h.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"trim-handle trim-end",style:e.normalizeStyle({left:`${p.value/l.value*100}%`}),onMousedown:D[1]||(D[1]=X=>R("end"))},null,36)):e.createCommentVNode("",!0)],512),e.createElementVNode("div",v2,[e.createElementVNode("span",null,e.toDisplayString(y(0)),1),e.createElementVNode("span",null,e.toDisplayString(y(l.value)),1)])]),e.createElementVNode("div",g2,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,X=>e.createElementVNode("button",{key:X.id,class:e.normalizeClass(["tool-tab",{active:h.value===X.id}]),onClick:Z=>h.value=X.id},[e.createVNode(e.unref($.IonIcon),{icon:X.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(X.label),1)],10,y2)),64))]),e.createElementVNode("div",w2,[h.value==="trim"?(e.openBlock(),e.createElementBlock("div",b2,[D[7]||(D[7]=e.createElementVNode("h3",null,"Trim Video",-1)),D[8]||(D[8]=e.createElementVNode("p",null,"Click and drag on the timeline to set trim points",-1)),e.createElementVNode("div",k2,[e.createElementVNode("button",{class:"btn-trim",onClick:U},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(ss)},null,8,["icon"]),D[4]||(D[4]=e.createTextVNode(" Set Start ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:x},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(ss)},null,8,["icon"]),D[5]||(D[5]=e.createTextVNode(" Set End ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:I},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Dn)},null,8,["icon"]),D[6]||(D[6]=e.createTextVNode(" Clear ",-1))])])])):h.value==="filters"?(e.openBlock(),e.createElementBlock("div",x2,[D[9]||(D[9]=e.createElementVNode("h3",null,"Filters",-1)),e.createElementVNode("div",E2,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(T,X=>e.createElementVNode("button",{key:X.id,class:e.normalizeClass(["filter-option",{active:v.value===X.id}]),onClick:Z=>A(X.id)},e.toDisplayString(X.name),11,V2)),64))])])):h.value==="text"?(e.openBlock(),e.createElementBlock("div",S2,[D[10]||(D[10]=e.createElementVNode("h3",null,"Text Overlay",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":D[2]||(D[2]=X=>g.value=X),type:"text",placeholder:"Enter text...",class:"text-input"},null,512),[[e.vModelText,g.value]]),e.createElementVNode("button",{class:"btn-add-text",onClick:M},"Add Text")])):h.value==="transitions"?(e.openBlock(),e.createElementBlock("div",C2,[D[11]||(D[11]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",_2,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(_,X=>e.createElementVNode("button",{key:X.id,class:"transition-option",onClick:Z=>(X.id,void 0)},e.toDisplayString(X.name),9,N2)),64))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",T2,[e.createElementVNode("button",{class:"btn-cancel",onClick:D[3]||(D[3]=X=>B.$emit("cancel"))},"CANCEL"),e.createElementVNode("button",{class:"btn-save",onClick:H},"SAVE")])]))}}),B2=Me(M2,[["__scopeId","data-v-b933f33b"]]),I2={class:"time-label"},F2=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 s=[],c=i(n.duration,n.zoom);for(let l=0;l<=n.duration;l+=c){const d=`${l/n.duration*100}%`,u=r(l),p=l%(c*5)===0;s.push({time:l,position:d,label:u,major:p})}return s});function i(s,c){const l=s/(10*c);return l<=1?1:l<=5?5:l<=10?10:l<=30?30:l<=60?60:Math.ceil(l/60)*60}function r(s){const c=Math.floor(s/60),l=Math.floor(s%60);return c===0?`${l}s`:l===0?`${c}m`:`${c}:${l.toString().padStart(2,"0")}`}return(s,c)=>(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,l=>(e.openBlock(),e.createElementBlock("div",{key:l.time,class:"time-mark",style:e.normalizeStyle({left:l.position})},[e.createElementVNode("span",I2,e.toDisplayString(l.label),1),e.createElementVNode("div",{class:e.normalizeClass(["time-tick",{major:l.major}])},null,2)],4))),128))],4))}}),$2=Me(F2,[["__scopeId","data-v-0ef9c910"]]),R2=["data-track-index"],D2={class:"track-header"},A2={class:"track-label"},U2={class:"track-controls"},O2=["data-testid","aria-label"],L2=["data-testid","onMousedown","onClick"],z2={class:"clip-content"},P2={class:"clip-name"},j2={key:0,class:"clip-thumbnail"},W2=["src","alt"],Z2=["onMousedown","aria-label"],X2=["onMousedown","aria-label"],H2=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),s=e.ref(!1),c=e.ref(null),l=e.computed(()=>({width:`${t.duration*t.zoom*100}px`}));function d(E){const T=E.timelineEnd-E.timelineStart,_=E.timelineStart/t.duration*100,w=T/t.duration*100;return{left:`${_}%`,width:`${w}%`,backgroundColor:u(E)}}function u(E){const T=["#4A90E2","#7ED321","#F5A623","#BD10E0","#9013FE","#50E3C2","#B8E986","#F8E71C"],_=parseInt(E.id.replace(/\D/g,""))%T.length;return T[_]}function p(E){return E.label?E.label:E.url?(E.url.split("/").pop()||"Clip").split(".")[0]:`Clip ${E.id.slice(-4)}`}function f(E){i.value=E.id,o("clip-select",E.id)}function h(){r.value=!r.value}function v(E,T){if(c.value)return;s.value=!0;const _=T.clientX,w=E.timelineStart,m=N=>{if(!s.value)return;const S=N.clientX-_,y=parseFloat(l.value.width),C=S/(t.zoom*100)*(t.duration/y),U=Math.max(0,w+C);o("clip-move",E.id,U)},k=()=>{s.value=!1,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",k)};document.addEventListener("mousemove",m),document.addEventListener("mouseup",k)}function g(E,T,_){c.value=T;const w=_.clientX,m=E.sourceIn,k=E.sourceOut,N=y=>{if(!c.value)return;const C=y.clientX-w,U=parseFloat(l.value.width),x=C/(t.zoom*100)*(t.duration/U);if(c.value==="start"){const I=Math.max(0,m+x);o("clip-trim",E.id,I,k)}else{const I=Math.max(m+1,k+x);o("clip-trim",E.id,m,I)}},S=()=>{c.value=null,document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",S)};document.addEventListener("mousemove",N),document.addEventListener("mouseup",S)}return(E,T)=>(e.openBlock(),e.createElementBlock("div",{class:"video-track","data-track-index":E.trackIndex},[e.createElementVNode("div",D2,[e.createElementVNode("span",A2,"Track "+e.toDisplayString(E.trackIndex+1),1),e.createElementVNode("div",U2,[E.clips.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"track-btn","data-testid":`btn-mute-track-${E.trackIndex}`,"aria-label":`${r.value?"Unmute":"Mute"} track ${E.trackIndex+1}`,onClick:h},[e.createVNode(e.unref($.IonIcon),{icon:r.value?e.unref(Hu):e.unref(Zu)},null,8,["icon"])],8,O2)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",{class:"track-timeline",style:e.normalizeStyle(l.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.clips,_=>(e.openBlock(),e.createElementBlock("div",{key:_.id,class:e.normalizeClass(["timeline-clip",{selected:_.id===i.value}]),style:e.normalizeStyle(d(_)),"data-testid":`clip-${_.id}`,onMousedown:w=>v(_,w),onClick:w=>f(_)},[e.createElementVNode("div",z2,[e.createElementVNode("span",P2,e.toDisplayString(p(_)),1),_.thumbnail?(e.openBlock(),e.createElementBlock("div",j2,[e.createElementVNode("img",{src:_.thumbnail,alt:p(_)},null,8,W2)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"trim-handle trim-start",onMousedown:e.withModifiers(w=>g(_,"start",w),["stop"]),"aria-label":`Trim start of ${p(_)}`},null,40,Z2),e.createElementVNode("div",{class:"trim-handle trim-end",onMousedown:e.withModifiers(w=>g(_,"end",w),["stop"]),"aria-label":`Trim end of ${p(_)}`},null,40,X2)],46,L2))),128))],4)],8,R2))}}),G2=Me(H2,[["__scopeId","data-v-48e480d2"]]),J2={class:"video-timeline"},Y2={class:"timeline-tracks"},K2=["aria-label","aria-valuenow","aria-valuemax"],q2={class:"timeline-controls"},Q2={class:"zoom-level"},ek=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),s=e.ref(!1),c=e.ref(),l=e.computed(()=>{const w=Math.max(0,...t.clips.map(m=>m.track||0));return Array(w+1).fill(null)}),d=e.computed(()=>`${t.currentTime/t.duration*100}%`);function u(w){return t.clips.filter(m=>(m.track||0)===w)}function p(w){const m=Math.floor(w/60),k=Math.floor(w%60);return`${m}:${k.toString().padStart(2,"0")}`}function f(w,m){o("clip-move",w,m)}function h(w,m,k){o("clip-trim",w,m,k)}function v(w){r.value=w}function g(){i.value=Math.min(i.value*1.2,5)}function E(){i.value=Math.max(i.value/1.2,.5)}function T(){s.value=!0;const w=k=>{if(!s.value||!c.value)return;const N=c.value.getBoundingClientRect(),C=Math.max(0,Math.min(k.clientX-N.left,N.width))/N.width*t.duration;o("seek",C)},m=()=>{s.value=!1,document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",m)};document.addEventListener("mousemove",w),document.addEventListener("mouseup",m)}function _(w){let m=t.currentTime;switch(w.key){case"ArrowLeft":m=Math.max(0,t.currentTime-1);break;case"ArrowRight":m=Math.min(t.duration,t.currentTime+1);break;case"Home":m=0;break;case"End":m=t.duration;break;default:return}w.preventDefault(),o("seek",m)}return e.onMounted(()=>{c.value=document.querySelector(".video-timeline")}),e.onUnmounted(()=>{}),(w,m)=>(e.openBlock(),e.createElementBlock("div",J2,[e.createVNode($2,{duration:w.duration,zoom:i.value},null,8,["duration","zoom"]),e.createElementVNode("div",Y2,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,N)=>(e.openBlock(),e.createBlock(G2,{key:`track-${N}`,"data-testid":`track-${N}`,clips:u(N),"track-index":N,zoom:i.value,duration:w.duration,onClipMove:f,onClipTrim:h,onClipSelect:v},null,8,["data-testid","clips","track-index","zoom","duration"]))),128))]),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:d.value}),onMousedown:T,"data-testid":"playhead","aria-label":`Playhead at ${p(w.currentTime)}`,role:"slider","aria-valuenow":w.currentTime,"aria-valuemax":w.duration,tabindex:"0",onKeydown:_},null,44,K2),e.createElementVNode("div",q2,[e.createElementVNode("button",{"data-testid":"btn-zoom-in","aria-label":"Zoom in",onClick:g},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(qi)},null,8,["icon"])]),e.createElementVNode("span",Q2,e.toDisplayString(Math.round(i.value*100))+"%",1),e.createElementVNode("button",{"data-testid":"btn-zoom-out","aria-label":"Zoom out",onClick:E},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Uu)},null,8,["icon"])])])]))}}),tk=Me(ek,[["__scopeId","data-v-001df415"]]),nk={class:"video-filters-panel"},ok={class:"filter-controls"},ak=["for"],ik={class:"filter-slider-group"},rk=["id","onUpdate:modelValue","min","max","step","data-testid","aria-label","aria-valuenow","aria-valuemin","aria-valuemax","onInput"],sk={class:"filter-value"},lk={class:"filter-actions"},ck={key:0,class:"filter-presets"},dk={class:"preset-list"},uk=["data-testid","aria-label","onClick"],mk=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((f,h)=>(f[h.type]=h.default,f),{})),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 s(f,h){switch(f){case"brightness":case"contrast":case"saturation":case"sepia":case"grayscale":return`${h}%`;case"hue":return`${h}°`;case"blur":case"sharpen":return h.toFixed(1);default:return h.toString()}}function c(f){return["brightness","contrast","saturation","hue","blur","sharpen","sepia","grayscale"].includes(f)}function l(f){if(!c(f))return;const h={id:`filter-${f}`,filterId:f,params:{value:i[f]},intensity:1};t("filter-change",h)}function d(){o.forEach(f=>{i[f.type]=f.default,l(f.type)})}function u(){const f=prompt("Enter preset name:");if(!f)return;const h={id:`custom-${Date.now()}`,name:f,values:{...i}};r.value.push(h)}function p(f){Object.entries(f.values).forEach(([h,v])=>{i[h]=v,l(h)})}return(f,h)=>(e.openBlock(),e.createElementBlock("div",nk,[h[3]||(h[3]=e.createElementVNode("h3",null,"Video Filters",-1)),e.createElementVNode("div",ok,[(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,ak),e.createElementVNode("div",ik,[e.withDirectives(e.createElementVNode("input",{id:`filter-${v.type}`,"onUpdate:modelValue":g=>i[v.type]=g,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:g=>l(v.type)},null,40,rk),[[e.vModelText,i[v.type],void 0,{number:!0}]]),e.createElementVNode("span",sk,e.toDisplayString(s(v.type,i[v.type])),1)])])),64))]),e.createElementVNode("div",lk,[e.createElementVNode("button",{class:"reset-filters-btn","data-testid":"btn-reset-filters","aria-label":"Reset all filters to default",onClick:d},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ln)},null,8,["icon"]),h[0]||(h[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:u},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(er)},null,8,["icon"]),h[1]||(h[1]=e.createTextVNode(" Save as Preset ",-1))])]),r.value.length>0?(e.openBlock(),e.createElementBlock("div",ck,[h[2]||(h[2]=e.createElementVNode("h4",null,"Presets",-1)),e.createElementVNode("div",dk,[(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:g=>p(v)},e.toDisplayString(v.name),9,uk))),128))])])):e.createCommentVNode("",!0)]))}}),pk=Me(mk,[["__scopeId","data-v-5ad2ac63"]]),fk={class:"video-text-panel"},hk={class:"text-input-group"},vk={class:"text-options"},gk={class:"option-row"},yk={class:"option-row"},wk={class:"option-row"},bk={class:"option-row"},kk={class:"checkbox-label"},xk={class:"option-row"},Ek={class:"text-overlay-list"},Vk={key:0,class:"empty-state"},Sk=["data-testid"],Ck={class:"overlay-preview"},_k={class:"overlay-controls"},Nk=["data-testid","aria-label","onClick"],Tk=["data-testid","aria-label","onClick"],Mk=["data-testid","aria-label","onClick"],Bk=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 d={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&&(d.backgroundColor=i.backgroundColor),i.animation!=="none"&&(d.animation=i.animation),o.value.push(d),t("text-add",d),i.text=""}function s(d){const u=o.value.findIndex(p=>p.id===d);u!==-1&&(o.value.splice(u,1),t("text-remove",d))}function c(d){i.text=d.text,i.fontFamily=d.fontFamily||"Arial",i.fontSize=d.fontSize,i.color=d.color,i.backgroundColor=d.backgroundColor||"#000000",i.hasBackground=!!d.backgroundColor,i.animation=d.animation||"none",s(d.id)}function l(d){const u={...d,id:`text-${Date.now()}`,x:d.x+10,y:d.y+10};o.value.push(u),t("text-add",u)}return(d,u)=>(e.openBlock(),e.createElementBlock("div",fk,[u[17]||(u[17]=e.createElementVNode("h3",null,"Text Overlays",-1)),e.createElementVNode("div",hk,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=p=>i.text=p),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($.IonIcon),{icon:e.unref(qi)},null,8,["icon"]),u[7]||(u[7]=e.createTextVNode(" Add ",-1))])]),e.createElementVNode("div",vk,[e.createElementVNode("div",gk,[u[9]||(u[9]=e.createElementVNode("label",{for:"font-family"},"Font:",-1)),e.withDirectives(e.createElementVNode("select",{id:"font-family","onUpdate:modelValue":u[1]||(u[1]=p=>i.fontFamily=p),"data-testid":"select-font"},[...u[8]||(u[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",yk,[u[10]||(u[10]=e.createElementVNode("label",{for:"font-size"},"Size:",-1)),e.withDirectives(e.createElementVNode("input",{id:"font-size","onUpdate:modelValue":u[2]||(u[2]=p=>i.fontSize=p),type:"number",min:"10",max:"200","data-testid":"input-font-size"},null,512),[[e.vModelText,i.fontSize,void 0,{number:!0}]])]),e.createElementVNode("div",wk,[u[11]||(u[11]=e.createElementVNode("label",{for:"text-color"},"Color:",-1)),e.withDirectives(e.createElementVNode("input",{id:"text-color","onUpdate:modelValue":u[3]||(u[3]=p=>i.color=p),type:"color","data-testid":"input-text-color"},null,512),[[e.vModelText,i.color]])]),e.createElementVNode("div",bk,[u[13]||(u[13]=e.createElementVNode("label",{for:"bg-color"},"Background:",-1)),e.withDirectives(e.createElementVNode("input",{id:"bg-color","onUpdate:modelValue":u[4]||(u[4]=p=>i.backgroundColor=p),type:"color","data-testid":"input-bg-color"},null,512),[[e.vModelText,i.backgroundColor]]),e.createElementVNode("label",kk,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[5]||(u[5]=p=>i.hasBackground=p),type:"checkbox","data-testid":"checkbox-bg"},null,512),[[e.vModelCheckbox,i.hasBackground]]),u[12]||(u[12]=e.createTextVNode(" Enable ",-1))])]),e.createElementVNode("div",xk,[u[15]||(u[15]=e.createElementVNode("label",{for:"text-animation"},"Animation:",-1)),e.withDirectives(e.createElementVNode("select",{id:"text-animation","onUpdate:modelValue":u[6]||(u[6]=p=>i.animation=p),"data-testid":"select-animation"},[...u[14]||(u[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",Ek,[u[16]||(u[16]=e.createElementVNode("h4",null,"Active Overlays",-1)),o.value.length===0?(e.openBlock(),e.createElementBlock("div",Vk," No text overlays added yet ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(p,f)=>(e.openBlock(),e.createElementBlock("div",{key:p.id,class:"text-overlay-item","data-testid":`overlay-${f}`},[e.createElementVNode("div",Ck,[e.createElementVNode("span",{style:e.normalizeStyle({fontFamily:p.fontFamily,fontSize:`${Math.min(p.fontSize/4,16)}px`,color:p.color})},e.toDisplayString(p.text),5)]),e.createElementVNode("div",_k,[e.createElementVNode("button",{class:"edit-btn","data-testid":`btn-edit-${f}`,"aria-label":`Edit overlay: ${p.text}`,onClick:h=>c(p)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(wu)},null,8,["icon"])],8,Nk),e.createElementVNode("button",{class:"duplicate-btn","data-testid":`btn-duplicate-${f}`,"aria-label":`Duplicate overlay: ${p.text}`,onClick:h=>l(p)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(yu)},null,8,["icon"])],8,Tk),e.createElementVNode("button",{class:"remove-btn","data-testid":`btn-remove-${f}`,"aria-label":`Remove overlay: ${p.text}`,onClick:h=>s(p.id)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(zu)},null,8,["icon"])],8,Mk)])],8,Sk))),128))])]))}}),Ik=Me(Bk,[["__scopeId","data-v-4d240e1e"]]),Fk={class:"video-tools-panel"},$k={class:"tool-tabs"},Rk=["data-testid","aria-label","aria-selected","onClick"],Dk={class:"tool-content"},Ak={key:0,class:"trim-panel",role:"tabpanel","aria-label":"Trim controls"},Uk={class:"trim-actions"},Ok={key:3,class:"transitions-panel",role:"tabpanel","aria-label":"Transition controls"},Lk={class:"transition-types"},zk=["data-testid","aria-label","onClick"],Pk={class:"transition-preview"},jk=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:dl},{id:"filters",name:"Filters",icon:sn},{id:"text",name:"Text",icon:hl},{id:"transitions",name:"Transitions",icon:ds}],t=[{id:"fade",name:"Fade",icon:mi},{id:"slide-left",name:"Slide Left",icon:uu},{id:"slide-right",name:"Slide Right",icon:mu},{id:"dissolve",name:"Dissolve",icon:mi},{id:"wipe",name:"Wipe",icon:ds},{id:"zoom",name:"Zoom",icon:mi}];return(o,i)=>(e.openBlock(),e.createElementBlock("div",Fk,[e.createElementVNode("div",$k,[(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:s=>o.$emit("tool-change",r.id)},[e.createVNode(e.unref($.IonIcon),{icon:r.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(r.name),1)],10,Rk)),64))]),e.createElementVNode("div",Dk,[o.activeTool==="trim"?(e.openBlock(),e.createElementBlock("div",Ak,[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",Uk,[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($.IonIcon),{icon:e.unref(ls)},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($.IonIcon),{icon:e.unref(ls)},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($.IonIcon),{icon:e.unref(Dn)},null,8,["icon"]),i[7]||(i[7]=e.createTextVNode(" Clear ",-1))])])])):e.createCommentVNode("",!0),o.activeTool==="filters"?(e.openBlock(),e.createBlock(pk,{key:1,onFilterChange:i[3]||(i[3]=r=>o.$emit("filter-change",r))})):e.createCommentVNode("",!0),o.activeTool==="text"?(e.openBlock(),e.createBlock(Ik,{key:2,onTextAdd:i[4]||(i[4]=r=>o.$emit("text-add",r))})):e.createCommentVNode("",!0),o.activeTool==="transitions"?(e.openBlock(),e.createElementBlock("div",Ok,[i[10]||(i[10]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",Lk,[(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:s=>o.$emit("transition-add",r.id)},[e.createElementVNode("div",Pk,[e.createVNode(e.unref($.IonIcon),{icon:r.icon},null,8,["icon"])]),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],8,zk)),64))])])):e.createCommentVNode("",!0)])]))}}),Wk=Me(jk,[["__scopeId","data-v-fc135306"]]),Zk={class:"video-export-panel"},Xk={class:"export-presets"},Hk=["value"],Gk={key:0,class:"preset-details"},Jk={class:"detail-row"},Yk={class:"detail-row"},Kk={class:"detail-row"},qk={class:"advanced-options"},Qk={class:"options-content"},ex={class:"option-group"},tx={class:"option-group"},nx={class:"option-group"},ox=["disabled"],ax={key:1,class:"export-progress"},ix={class:"progress-message"},rx={class:"progress-bar"},sx=["aria-valuenow"],lx={class:"progress-percentage"},cx=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}),s=e.computed(()=>t.presets.find(d=>d.id===i.value)),c=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 l(){s.value&&o("export",{...s.value,options:{...r}})}return(d,u)=>(e.openBlock(),e.createElementBlock("div",Zk,[u[14]||(u[14]=e.createElementVNode("h3",null,"Export Video",-1)),e.createElementVNode("div",Xk,[u[4]||(u[4]=e.createElementVNode("label",{for:"preset-select"},"Export Preset:",-1)),e.withDirectives(e.createElementVNode("select",{id:"preset-select","onUpdate:modelValue":u[0]||(u[0]=p=>i.value=p),"data-testid":"preset-select","aria-label":"Select export preset"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.presets,p=>(e.openBlock(),e.createElementBlock("option",{key:p.id,value:p.id},e.toDisplayString(p.name),9,Hk))),128))],512),[[e.vModelSelect,i.value]])]),s.value?(e.openBlock(),e.createElementBlock("div",Gk,[e.createElementVNode("div",Jk,[u[5]||(u[5]=e.createElementVNode("span",null,"Resolution:",-1)),e.createElementVNode("span",null,e.toDisplayString(s.value.width)+"x"+e.toDisplayString(s.value.height),1)]),e.createElementVNode("div",Yk,[u[6]||(u[6]=e.createElementVNode("span",null,"Frame Rate:",-1)),e.createElementVNode("span",null,e.toDisplayString(s.value.fps)+" fps",1)]),e.createElementVNode("div",Kk,[u[7]||(u[7]=e.createElementVNode("span",null,"Format:",-1)),e.createElementVNode("span",null,e.toDisplayString(s.value.format.toUpperCase()),1)])])):e.createCommentVNode("",!0),e.createElementVNode("details",qk,[u[12]||(u[12]=e.createElementVNode("summary",null,"Advanced Options",-1)),e.createElementVNode("div",Qk,[e.createElementVNode("div",ex,[u[9]||(u[9]=e.createElementVNode("label",{for:"quality-select"},"Quality:",-1)),e.withDirectives(e.createElementVNode("select",{id:"quality-select","onUpdate:modelValue":u[1]||(u[1]=p=>r.quality=p),"data-testid":"quality-select"},[...u[8]||(u[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",tx,[u[10]||(u[10]=e.createElementVNode("label",{for:"bitrate-input"},"Bitrate (Mbps):",-1)),e.withDirectives(e.createElementVNode("input",{id:"bitrate-input","onUpdate:modelValue":u[2]||(u[2]=p=>r.bitrate=p),type:"number",min:"1",max:"50","data-testid":"bitrate-input"},null,512),[[e.vModelText,r.bitrate,void 0,{number:!0}]])]),e.createElementVNode("div",nx,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[3]||(u[3]=p=>r.includeAudio=p),type:"checkbox","data-testid":"include-audio"},null,512),[[e.vModelCheckbox,r.includeAudio]]),u[11]||(u[11]=e.createTextVNode(" Include Audio ",-1))])])])]),e.createElementVNode("button",{class:"btn-export",disabled:d.isExporting||!s.value,"data-testid":"btn-start-export","aria-label":"Start video export",onClick:l},[d.isExporting?(e.openBlock(),e.createBlock(e.unref($.IonSpinner),{key:0,name:"crescent"})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(vo)},null,8,["icon"]),u[13]||(u[13]=e.createTextVNode(" Export Video ",-1))],64))],8,ox),d.isExporting?(e.openBlock(),e.createElementBlock("div",ax,[e.createElementVNode("div",ix,e.toDisplayString(c.value),1),e.createElementVNode("div",rx,[e.createElementVNode("div",{class:"progress-fill",style:e.normalizeStyle({width:`${d.exportProgress}%`}),role:"progressbar","aria-valuenow":d.exportProgress,"aria-valuemin":"0","aria-valuemax":"100"},null,12,sx)]),e.createElementVNode("div",lx,e.toDisplayString(d.exportProgress)+"% ",1)])):e.createCommentVNode("",!0)]))}}),dx=Me(cx,[["__scopeId","data-v-5caf8fe6"]]),ux=["data-testid"],mx={class:"progress-header"},px={class:"file-info"},fx={class:"file-details"},hx={class:"file-name"},vx={class:"file-meta"},gx={class:"file-size"},yx={key:0,class:"separator"},wx={key:1,class:"upload-speed"},bx={key:2,class:"separator"},kx={key:3,class:"time-remaining"},xx={class:"progress-actions"},Ex={key:0,class:"status-icon completed","data-testid":"video-upload-status-completed"},Vx={key:1,class:"status-icon error","data-testid":"video-upload-status-error"},Sx={key:2,class:"status-icon processing","data-testid":"video-upload-status-processing",role:"status","aria-label":"Processing video"},Cx=["aria-valuenow","aria-label"],_x={class:"progress-bar"},Nx={class:"progress-percent"},Tx={key:1,class:"error-message","data-testid":"video-upload-error"},Mx={key:2,class:"thumbnail-preview","data-testid":"video-upload-thumbnail"},Bx=["src","alt"],Ix={key:0,class:"video-duration"},Fx=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(()=>vl),i=e.computed(()=>["uploading","processing"].includes(n.upload.status)),r=e.computed(()=>(n.upload.status==="processing",n.upload.progress||0)),s=e.computed(()=>{if(!n.upload.timeRemaining||n.upload.status!=="uploading")return null;const f=n.upload.timeRemaining;if(f<60)return`${Math.round(f)}s`;const h=Math.floor(f/60);return h<60?`${h}m ${Math.round(f%60)}s`:`${Math.floor(h/60)}h ${h%60}m`}),c=e.computed(()=>{var f;return n.upload.status==="completed"&&((f=n.upload.media)!=null&&f.thumbnail_url)?n.upload.media.thumbnail_url:null}),l=e.computed(()=>{var f;return(f=n.upload.media)==null?void 0:f.duration});function d(f){if(f===0)return"0 B";const h=["B","KB","MB","GB","TB"],v=1024,g=Math.floor(Math.log(f)/Math.log(v));return`${(f/Math.pow(v,g)).toFixed(1)} ${h[g]}`}function u(f){if(f===0)return"0 B/s";const h=["B/s","KB/s","MB/s","GB/s"],v=1024,g=Math.floor(Math.log(f)/Math.log(v));return`${(f/Math.pow(v,g)).toFixed(1)} ${h[g]}`}function p(f){const h=Math.floor(f/3600),v=Math.floor(f%3600/60),g=Math.floor(f%60);return h>0?`${h}:${v.toString().padStart(2,"0")}:${g.toString().padStart(2,"0")}`:`${v}:${g.toString().padStart(2,"0")}`}return(f,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["upload-progress-item",t.value]),"data-testid":`video-upload-progress-${f.upload.id}`},[e.createElementVNode("div",mx,[e.createElementVNode("div",px,[e.createVNode(e.unref($.IonIcon),{icon:o.value,class:"file-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("div",fx,[e.createElementVNode("h4",hx,e.toDisplayString(f.upload.filename),1),e.createElementVNode("p",vx,[e.createElementVNode("span",gx,e.toDisplayString(d(f.upload.bytesTotal||0)),1),f.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",yx,"•")):e.createCommentVNode("",!0),f.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",wx,e.toDisplayString(u(f.upload.uploadSpeed||0)),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",bx,"•")):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",kx,e.toDisplayString(s.value)+" remaining ",1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",xx,[f.upload.status==="completed"?(e.openBlock(),e.createElementBlock("div",Ex,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(ll)},null,8,["icon"])])):f.upload.status==="error"?(e.openBlock(),e.createElementBlock("div",Vx,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(du),"aria-hidden":"true"},null,8,["icon"])])):f.upload.status==="processing"?(e.openBlock(),e.createElementBlock("div",Sx,[e.createVNode(e.unref($.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),f.upload.status==="uploading"?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:3,fill:"clear",size:"small",onClick:h[0]||(h[0]=v=>f.$emit("cancel")),"data-testid":"btn-cancel-video-upload","aria-label":"Cancel upload"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Dn),slot:"icon-only"},null,8,["icon"])]),_:1})):f.upload.status==="error"?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:4,fill:"clear",size:"small",onClick:h[1]||(h[1]=v=>f.$emit("retry")),"data-testid":"btn-retry-video-upload","aria-label":"Retry upload"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ln),slot:"icon-only"},null,8,["icon"])]),_:1})):f.upload.status==="completed"?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:5,fill:"clear",size:"small",onClick:h[2]||(h[2]=v=>f.$emit("remove")),"data-testid":"btn-remove-video-upload","aria-label":"Remove from list"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Dn),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":f.upload.status==="processing"?"Processing progress":"Upload progress"},[e.createElementVNode("div",_x,[e.createElementVNode("div",{class:e.normalizeClass(["progress-fill",{indeterminate:f.upload.status==="processing"}]),style:e.normalizeStyle({width:r.value+"%"})},null,6)]),e.createElementVNode("span",Nx,e.toDisplayString(Math.round(r.value))+"%",1)],8,Cx)):e.createCommentVNode("",!0),f.upload.error?(e.openBlock(),e.createElementBlock("div",Tx,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Gu)},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(f.upload.error),1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",Mx,[e.createElementVNode("img",{src:c.value,alt:f.upload.filename},null,8,Bx),l.value?(e.openBlock(),e.createElementBlock("div",Ix,e.toDisplayString(p(l.value)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,ux))}}),$x=Me(Fx,[["__scopeId","data-v-9eacbf91"]]),Ei=4,Rx=500,Dx=new Set([408,425,429,500,502,503,504,520,521,522,523,524,525]);function ja(a){return typeof a=="object"&&a!==null}function Js(a){return ja(a)?typeof a.upload_url=="string"&&typeof a.upload_id=="string"&&typeof a.media_uuid=="string"&&typeof a.expires_at=="string":!1}function Ax(a){if(Js(a))return a;if(ja(a)&&Js(a.data))return a.data;throw new Error("Invalid upload response from backend")}function Ys(a){return ja(a)?typeof a.uuid=="string"&&typeof a.processing_status=="string":!1}function Ux(a){if(Ys(a))return a;if(ja(a)&&Ys(a.data))return a.data;throw new Error("Invalid media response from backend")}function Zo(a){return a?{...a}:{}}function Ks(a,n="PUT"){return typeof a.method=="string"&&a.method.trim()!==""?a.method.trim().toUpperCase():n}function Ox(a){return a.resumable===!0?!0:/tusupload/i.test(a.upload_url)}function Lx(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 zx(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} ${Lx(i)}`).join(",")}function Xo(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 Px(a,n){return a instanceof Error?a:new Error(n)}function jx(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 qs(a){const n=Math.max(0,a-1),t=Rx*Math.pow(2,n);return Math.min(5e3,t)}function Qs(a){return new Promise(n=>{window.setTimeout(n,a)})}async function el(a,n){for(let t=1;t<=Ei;t+=1)try{const o=await n();if(o.ok||!Dx.has(o.status)||t>=Ei)return o;await Qs(qs(t))}catch(o){if(!jx(o)||t>=Ei)throw o;await Qs(qs(t))}throw new Error(`${a} failed after retry attempts`)}function Wx(a={}){const n=e.ref(new Map),t=e.ref(new Set),o=e.ref(null),i=new Map,r=new Map,s=e.computed(()=>t.value.size>0),c=e.computed(()=>Array.from(n.value.values())),l=e.computed(()=>{const x=Array.from(n.value.values());return x.length===0?0:x.reduce((R,A)=>R+A.progress,0)/x.length});function d(x){o.value=x}function u(){}async function p(x){var R;const I=x.filter(A=>f(A));if(I.length!==0&&((R=a.onFilesSelected)==null||R.call(a,I),a.autoUpload!==!1))for(const A of I)await h(A)}function f(x){return!(a.maxFileSize&&x.size>a.maxFileSize||a.allowedFormats&&a.allowedFormats.length>0&&!a.allowedFormats.includes(x.type))}async function h(x){var A,M,P;const I=U(x);if(n.value.has(I)){const H=n.value.get(I);if((H==null?void 0:H.status)==="uploading")return}const R={id:I,file:x,filename:x.name,progress:0,status:"pending",startedAt:new Date,bytesTotal:x.size,bytesUploaded:0};n.value.set(R.id,R),t.value.add(R.id);try{R.status="uploading",(A=a.onUploadStart)==null||A.call(a,R);const H=await v(x);a.resumable===!0||H.resumable===!0?await E(R,H):await g(R,H),R.status="processing",R.progress=100;const D=await k(H.media_uuid);R.status="completed",R.media=D,(M=a.onUploadComplete)==null||M.call(a,D)}catch(H){if(R.status!=="cancelled"){const B=Px(H,"Upload failed");R.status="error",R.error=B.message,(P=a.onUploadError)==null||P.call(a,B,R)}}finally{t.value.delete(R.id),i.delete(R.id),r.delete(R.id)}}async function v(x){if(!o.value)throw new Error("API client not configured");const I={collection:a.collection||"videos",filename:x.name,size:x.size,mime_type:x.type,...a.ownerUuid!==void 0?{ownerUuid:a.ownerUuid}:{},...a.ownerType!==void 0?{ownerType:a.ownerType}:{}},R=await o.value.post("/api/v1/video/upload",I);return Ax(R)}async function g(x,I){const R=new XMLHttpRequest,A=Ks(I),M=Zo(I.headers);return new Promise((P,H)=>{R.upload.addEventListener("progress",B=>{var D;B.lengthComputable&&(Xo(x,B.loaded),(D=a.onUploadProgress)==null||D.call(a,x))}),R.addEventListener("load",()=>{i.delete(x.id),R.status>=200&&R.status<300?P():H(new Error(`Upload failed with status ${R.status}`))}),R.addEventListener("error",()=>{i.delete(x.id),H(new Error("Upload failed"))}),R.addEventListener("abort",()=>{i.delete(x.id),H(new Error("Upload cancelled"))}),R.open(A,I.upload_url),Object.entries(M).forEach(([B,D])=>{R.setRequestHeader(B,D)}),!Object.keys(M).some(B=>B.toLowerCase()==="content-type")&&x.file.type&&R.setRequestHeader("Content-Type",x.file.type),i.set(x.id,R),R.send(x.file)})}async function E(x,I){var H;if(Ox(I)){await T(x,I);return}const R=a.chunkSize||5*1024*1024,A=_(x.file,R),M=new AbortController;r.set(x.id,M);const P=await m(I.upload_id);P&&(A.forEach(B=>{B.end<=P.bytesUploaded&&(B.uploaded=!0)}),Xo(x,P.bytesUploaded));for(const B of A)B.uploaded||(await w(x,I,B,M),Xo(x,B.end),(H=a.onUploadProgress)==null||H.call(a,x))}async function T(x,I){var X;const R=new AbortController;r.set(x.id,R);const A={...Zo(I.headers),"Tus-Resumable":"1.0.0","Upload-Length":String(x.file.size),"Upload-Metadata":zx(x,I)},M=await el("Resumable upload initialization",()=>fetch(I.upload_url,{method:"POST",headers:A,signal:R.signal}));if(!M.ok)throw new Error(`Failed to initialize resumable upload: ${M.status}`);const P=M.headers.get("Location");if(!P)throw new Error("Resumable upload endpoint did not return upload location");const H=new URL(P,I.upload_url).toString(),B=a.chunkSize||5*1024*1024;let D=0;for(;D<x.file.size;){const Z=Math.min(D+B,x.file.size),ee=x.file.slice(D,Z),ge={...Zo(I.headers),"Tus-Resumable":"1.0.0","Upload-Offset":String(D),"Content-Type":"application/offset+octet-stream"},Ee=await el("Resumable chunk upload",()=>fetch(H,{method:"PATCH",headers:ge,body:ee,signal:R.signal}));if(Ee.status===409){const F=Number(Ee.headers.get("Upload-Offset")??"-1");if(Number.isFinite(F)&&F>=0){D=F;continue}}if(!Ee.ok)throw new Error(`Resumable chunk upload failed: ${Ee.status}`);const te=Number(Ee.headers.get("Upload-Offset")??String(Z));D=Number.isFinite(te)&&te>D?te:Z,Xo(x,D),(X=a.onUploadProgress)==null||X.call(a,x)}}function _(x,I){const R=[];let A=0,M=0;for(;A<x.size;){const P=Math.min(A+I,x.size);R.push({start:A,end:P,blob:x.slice(A,P),index:M,uploaded:!1}),A=P,M++}return R}async function w(x,I,R,A){const M={...Zo(I.headers),"Content-Range":`bytes ${R.start}-${R.end-1}/${x.file.size}`,"Content-Type":x.file.type||"application/octet-stream"},P=await fetch(I.upload_url,{method:Ks(I),headers:M,body:R.blob,signal:A.signal});if(!P.ok)throw new Error(`Chunk upload failed: ${P.status}`);R.uploaded=!0}async function m(x){return null}async function k(x){if(!o.value)throw new Error("API client not configured");const I=60;let R=0;for(;R<I;){const A=await o.value.get(`/api/v1/video/${x}`),M=Ux(A),P=String(M.processing_status);if(P==="ready")return M;if(P==="failed"||P==="error")throw new Error("Video processing failed");await new Promise(H=>{window.setTimeout(H,5e3)}),R++}throw new Error("Video processing timeout")}function N(x){const I=n.value.get(x);if(!I)return;const R=i.get(x);R&&(R.abort(),i.delete(x));const A=r.get(x);A&&(A.abort(),r.delete(x)),I.status="cancelled",I.error="Upload cancelled",t.value.delete(x)}async function S(x){const I=n.value.get(x);I&&(I.status="pending",I.error="",I.progress=0,I.bytesUploaded=0,await h(I.file))}function y(x){n.value.delete(x),t.value.delete(x),i.delete(x),r.delete(x)}function C(){Array.from(n.value.entries()).forEach(([x,I])=>{I.status==="completed"&&n.value.delete(x)})}function U(x){return`${x.name}-${x.size}-${Date.now()}`}return{uploads:c,isUploading:s,totalProgress:l,openFilePicker:u,handleFileSelect:p,validateFile:f,startUpload:h,cancelUpload:N,retryUpload:S,removeUpload:y,clearCompleted:C,setApiClient:d}}const Zx=["accept","multiple"],Xx={key:0,class:"upload-trigger","data-testid":"video-uploader-trigger"},Hx=["onKeydown"],Gx={key:1,class:"upload-list","data-testid":"video-upload-list"},Jx={class:"drag-content"},Yx=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:s,isUploading:c,handleFileSelect:l,cancelUpload:d,retryUpload:u,removeUpload:p,setApiClient:f}=Wx({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:m=>o("upload-start",m),onUploadProgress:m=>o("upload-progress",m),onUploadComplete:m=>o("upload-complete",m),onUploadError:(m,k)=>o("upload-error",m,k),onFilesSelected:m=>o("files-selected",m)});t.apiClient&&f(t.apiClient);const h=e.computed(()=>t.allowedFormats.join(",")),v=e.computed(()=>t.multiple||s.value.length===0);function g(){i.value&&i.value.click()}function E(m){const k=m.target,N=Array.from(k.files||[]);N.length>0&&(l(N),k.value="")}function T(m){var S;m.preventDefault(),r.value=!1;const N=Array.from(((S=m.dataTransfer)==null?void 0:S.files)||[]).filter(y=>y.type.startsWith("video/"));N.length>0&&l(N)}function _(m){var k;m.preventDefault(),(k=m.dataTransfer)!=null&&k.types.includes("Files")&&(r.value=!0)}function w(m){m.target.closest(".video-uploader")||(r.value=!1)}return e.onMounted(()=>{document.addEventListener("dragover",_),document.addEventListener("dragleave",w),document.addEventListener("drop",m=>m.preventDefault())}),e.onUnmounted(()=>{document.removeEventListener("dragover",_),document.removeEventListener("dragleave",w),document.removeEventListener("drop",m=>m.preventDefault())}),(m,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-uploader",{"is-uploading":e.unref(c)}]),"data-testid":"video-uploader"},[e.createElementVNode("input",{ref_key:"fileInputEl",ref:i,type:"file",accept:h.value,multiple:m.multiple,onChange:E,"data-testid":"video-uploader-input","aria-label":"Select video files to upload",hidden:""},null,40,Zx),!e.unref(c)||v.value?(e.openBlock(),e.createElementBlock("div",Xx,[e.renderSlot(m.$slots,"trigger",{open:g},()=>[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:g,onKeydown:[e.withKeys(g,["enter"]),e.withKeys(e.withModifiers(g,["prevent"]),["space"])]},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(vl),class:"upload-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("h3",null,e.toDisplayString(m.label),1),e.createElementVNode("p",null,e.toDisplayString(m.description),1),e.createVNode(e.unref($.IonButton),{size:"small","data-testid":"btn-select-video","aria-label":"Select video file"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(qi),slot:"start","aria-hidden":"true"},null,8,["icon"]),k[2]||(k[2]=e.createTextVNode(" Select Video ",-1))]),_:1})],40,Hx)],!0)])):e.createCommentVNode("",!0),e.unref(s).length>0?(e.openBlock(),e.createElementBlock("div",Gx,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),N=>(e.openBlock(),e.createBlock($x,{key:N.id,upload:N,onCancel:S=>e.unref(d)(N.id),onRetry:S=>e.unref(u)(N.id),onRemove:S=>e.unref(p)(N.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:T,onDragover:k[0]||(k[0]=e.withModifiers(()=>{},["prevent"])),onDragleave:k[1]||(k[1]=N=>r.value=!1)},[e.createElementVNode("div",Jx,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(vo),"aria-hidden":"true"},null,8,["icon"]),k[3]||(k[3]=e.createElementVNode("p",null,"Drop video files here",-1))])],32)):e.createCommentVNode("",!0)],2))}}),Kx=Me(Yx,[["__scopeId","data-v-ea7587f7"]]),qx=["aria-valuenow","aria-valuemax","aria-label"],Qx={class:"progress-bar"},eE={class:"time-display","data-testid":"video-time-display"},tE={class:"current-time"},nE={class:"duration"},oE={class:"control-buttons"},aE={class:"controls-left"},iE=["aria-label"],rE={class:"controls-center"},sE={key:0,class:"volume-controls"},lE=["aria-label"],cE=["value"],dE={class:"controls-right"},uE={key:0,class:"quality-selector"},mE=["aria-expanded"],pE={class:"quality-label"},fE={key:0,class:"quality-menu","data-testid":"video-quality-menu",role:"menu"},hE=["data-testid","aria-label","onClick"],vE=["aria-label"],gE=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),s=e.ref(),c=$.isPlatform("mobile"),l="pictureInPictureEnabled"in document,d=e.computed(()=>({width:`${t.currentTime/t.duration*100}%`})),u=e.computed(()=>({left:`${t.currentTime/t.duration*100}%`})),p=e.computed(()=>{if(!t.buffered||t.buffered.length===0)return{width:"0%"};for(let m=0;m<t.buffered.length;m++){const k=t.buffered.start(m),N=t.buffered.end(m);if(t.currentTime>=k&&t.currentTime<=N)return{width:`${N/t.duration*100}%`}}return t.buffered.length>0?{width:`${t.buffered.end(0)/t.duration*100}%`}:{width:"0%"}}),f=e.computed(()=>t.muted||t.volume===0?Xu:t.volume<33?ju:t.volume<66?Wu:Pu);let h=null;function v(){i.value=!0,g()}function g(){h&&clearTimeout(h),t.playing&&!c&&(h=setTimeout(()=>{i.value=!1},3e3))}function E(m){if(!s.value||t.isLive)return;const k=s.value.getBoundingClientRect(),S=(m.clientX-k.left)/k.width*t.duration;o("seek",Math.max(0,Math.min(S,t.duration)))}function T(m){const k=m.target;o("setVolume",parseInt(k.value))}function _(m){o("selectQuality",m),r.value=!1}function w(m){if(!isFinite(m))return"0:00";const k=Math.floor(m/3600),N=Math.floor(m%3600/60),S=Math.floor(m%60);return k>0?`${k}:${N.toString().padStart(2,"0")}:${S.toString().padStart(2,"0")}`:`${N}:${S.toString().padStart(2,"0")}`}return e.onMounted(()=>{document.addEventListener("mousemove",v),g()}),e.onUnmounted(()=>{document.removeEventListener("mousemove",v),h&&clearTimeout(h)}),(m,k)=>(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(m.currentTime),"aria-valuemin":"0","aria-valuemax":Math.round(m.duration),"aria-label":m.isLive?"Live stream":"Video progress",tabindex:"0",onClick:E},[e.createElementVNode("div",Qx,[e.createElementVNode("div",{class:"progress-buffered",style:e.normalizeStyle(p.value)},null,4),e.createElementVNode("div",{class:"progress-played",style:e.normalizeStyle(d.value)},null,4),e.createElementVNode("div",{class:"progress-thumb",style:e.normalizeStyle(u.value)},null,4)]),e.createElementVNode("div",eE,[e.createElementVNode("span",tE,e.toDisplayString(w(m.currentTime)),1),k[7]||(k[7]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",nE,e.toDisplayString(m.isLive?"LIVE":w(m.duration)),1)])],8,qx),e.createElementVNode("div",oE,[e.createElementVNode("div",aE,[e.createElementVNode("button",{class:"control-btn play-pause","data-testid":"btn-video-play-pause",onClick:k[0]||(k[0]=N=>m.$emit("play-pause")),"aria-label":m.playing?"Pause":"Play"},[e.createVNode(e.unref($.IonIcon),{icon:m.playing?e.unref(_u):e.unref(Tu),"aria-hidden":"true"},null,8,["icon"])],8,iE),m.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"control-btn skip-backward","data-testid":"btn-video-skip-backward",onClick:k[1]||(k[1]=N=>m.$emit("skip-backward")),"aria-label":"Skip backward 10 seconds"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Mu),"aria-hidden":"true"},null,8,["icon"]),k[8]||(k[8]=e.createElementVNode("span",{class:"skip-label"},"10",-1))])),m.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn skip-forward","data-testid":"btn-video-skip-forward",onClick:k[2]||(k[2]=N=>m.$emit("skip-forward")),"aria-label":"Skip forward 10 seconds"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Fu),"aria-hidden":"true"},null,8,["icon"]),k[9]||(k[9]=e.createElementVNode("span",{class:"skip-label"},"10",-1))]))]),e.createElementVNode("div",rE,[e.unref(c)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",sE,[e.createElementVNode("button",{class:"control-btn mute-btn","data-testid":"btn-video-mute",onClick:k[3]||(k[3]=N=>m.$emit("toggleMute")),"aria-label":m.muted?"Unmute":"Mute"},[e.createVNode(e.unref($.IonIcon),{icon:f.value,"aria-hidden":"true"},null,8,["icon"])],8,lE),e.createElementVNode("input",{type:"range",class:"volume-slider","data-testid":"slider-video-volume",min:"0",max:"100",value:m.muted?0:m.volume,onInput:T,"aria-label":"Volume"},null,40,cE)]))]),e.createElementVNode("div",dE,[m.qualityLevels.length>1?(e.openBlock(),e.createElementBlock("div",uE,[e.createElementVNode("button",{class:"control-btn quality-btn","data-testid":"btn-video-quality",onClick:k[4]||(k[4]=N=>r.value=!r.value),"aria-label":"Quality settings","aria-expanded":r.value},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ou),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("span",pE,e.toDisplayString(m.currentQuality),1)],8,mE),r.value?(e.openBlock(),e.createElementBlock("div",fE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.qualityLevels,N=>(e.openBlock(),e.createElementBlock("button",{key:N.label,class:e.normalizeClass(["quality-option",{active:N.label===m.currentQuality}]),"data-testid":`btn-video-quality-${N.label}`,"aria-label":`Set quality to ${N.label}`,role:"menuitem",onClick:S=>_(N)},e.toDisplayString(N.label),11,hE))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!e.unref(c)&&l?(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn pip-btn","data-testid":"btn-video-pip",onClick:k[5]||(k[5]=N=>m.$emit("togglePiP")),"aria-label":"Picture in Picture"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Lu),"aria-hidden":"true"},null,8,["icon"])])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"control-btn fullscreen-btn","data-testid":"btn-video-fullscreen",onClick:k[6]||(k[6]=N=>m.$emit("toggleFullscreen")),"aria-label":m.fullscreen?"Exit fullscreen":"Enter fullscreen"},[e.createVNode(e.unref($.IonIcon),{icon:m.fullscreen?e.unref(gu):e.unref(bu),"aria-hidden":"true"},null,8,["icon"])],8,vE)])])],2))}}),yE=Me(gE,[["__scopeId","data-v-2ae77c13"]]);function wE(a={}){var ee,ge,Ee;const n=e.ref(),t=e.ref(),o=e.ref(!1),i=e.ref(0),r=e.ref(0),s=e.ref(100),c=e.ref(a.muted||!1),l=e.ref(!1),d=e.ref(),u=e.ref(1),p=e.ref(!1),f=e.ref(null),h=e.ref("idle"),v=e.ref(a.playbackUrl||((ee=a.media)==null?void 0:ee.playback_url)||((ge=a.media)==null?void 0:ge.url)||""),g=e.ref(null),E=e.ref(a.isLive||!1),T=e.ref(null),_=e.ref(null);function w(te){_.value=te}if((Ee=a.media)!=null&&Ee.token_expires_at){const te=new Date(a.media.token_expires_at);g.value=Number.isNaN(te.getTime())?null:te}async function m(){var F;const te=E.value?t.value:n.value;if(te)try{await te.play(),o.value=!0,h.value=E.value?"live":"playing",(F=a.onPlay)==null||F.call(a)}catch{f.value="Failed to play video",h.value="error"}}function k(){var F;const te=E.value?t.value:n.value;te&&(te.pause(),o.value=!1,h.value="paused",(F=a.onPause)==null||F.call(a))}function N(){o.value?k():m()}function S(te){const F=E.value?t.value:n.value;if(!F||E.value)return;const j=Number.isFinite(F.duration)?F.duration:te;F.currentTime=Math.max(0,Math.min(te,j)),i.value=F.currentTime}function y(te=10){const F=n.value;!F||E.value||S(F.currentTime+te)}function C(te=10){const F=n.value;!F||E.value||S(F.currentTime-te)}function U(){const te=E.value?t.value:n.value;te&&(te.muted=!te.muted,c.value=te.muted)}function x(te){const F=E.value?t.value:n.value;if(!F)return;const j=Math.max(0,Math.min(100,te));F.volume=j/100,s.value=j,j>0&&F.muted&&(F.muted=!1,c.value=!1)}function I(te){const F=n.value;!F||E.value||(F.playbackRate=te,u.value=te)}async function R(){const te=document.querySelector(".video-player-container");if(te)try{document.fullscreenElement?(await document.exitFullscreen(),l.value=!1):(await te.requestFullscreen(),l.value=!0)}catch{}}async function A(){const te=E.value?t.value:n.value;if(te)try{document.pictureInPictureElement?await document.exitPictureInPicture():document.pictureInPictureEnabled&&await te.requestPictureInPicture()}catch{}}async function M(){var F;f.value=null,h.value="loading",(F=a.media)!=null&&F.provider&&a.media.provider!=="local"&&await P();const te=E.value?t.value:n.value;te&&(te.load(),await m())}async function P(){if(!(!_.value||!a.media))try{p.value=!0;const te=await _.value.get(`/api/v1/video/${a.media.uuid}/playback`);v.value=te.playback_url,g.value=new Date(te.token_expires_at);const F=E.value?t.value:n.value;if(F&&F.src!==v.value){const j=!F.paused,de=F.currentTime;F.src=v.value,E.value||(F.currentTime=de),j&&await m()}}catch{f.value="Failed to refresh playback token",h.value="error"}finally{p.value=!1}}async function H(te){if(t.value){if(t.value.canPlayType("application/vnd.apple.mpegurl")){t.value.src=te;return}try{t.value.src=te}catch{f.value="Live streaming not supported in this browser",h.value="error"}}}function B(){T.value&&(T.value.destroy(),T.value=null)}function D(){var F;const te=E.value?t.value:n.value;te&&(i.value=te.currentTime,r.value=te.duration,(F=a.onTimeUpdate)==null||F.call(a,te.currentTime))}const X=e.computed(()=>{if(!d.value||d.value.length===0||!r.value)return 0;for(let te=0;te<d.value.length;te++){const F=d.value.start(te),j=d.value.end(te);if(i.value>=F&&i.value<=j)return j/r.value*100}return 0});function Z(){if(!g.value)return!1;const te=new Date;return g.value.getTime()-te.getTime()<5*60*1e3}return e.watch([n,t],([te,F])=>{const j=E.value?F:te;j&&(j.addEventListener("timeupdate",D),j.addEventListener("loadedmetadata",()=>{r.value=j.duration,h.value="ready"}),j.addEventListener("progress",()=>{d.value=j.buffered}),j.addEventListener("ended",()=>{var de;o.value=!1,h.value="ended",(de=a.onEnded)==null||de.call(a)}),j.addEventListener("error",de=>{var ne;h.value="error",(ne=a.onError)==null||ne.call(a,"Video playback error")}),j.volume=s.value/100,j.muted=c.value)}),e.onUnmounted(()=>{B();const te=E.value?t.value:n.value;te&&te.removeEventListener("timeupdate",D)}),{videoEl:n,liveVideoEl:t,playing:o,currentTime:i,duration:r,volume:s,muted:c,isFullscreen:l,bufferedRanges:d,bufferedPercent:X,playbackRate:u,isLoading:p,error:f,status:h,currentPlaybackUrl:v,tokenExpiresAt:g,play:m,pause:k,togglePlayPause:N,seek:S,skipForward:y,skipBackward:C,toggleMute:U,setVolume:x,setPlaybackRate:I,toggleFullscreen:R,togglePiP:A,retry:M,refreshToken:P,setupLiveStream:H,setApiClient:w,shouldRefreshToken:Z}}const bE=["src","poster","controls","autoplay","muted","loop","preload"],kE={key:1,ref:"livePlayerEl",class:"live-player"},xE=["controls","muted"],EE={key:0,class:"live-indicator","data-testid":"video-live-indicator","aria-label":"Live stream"},VE={key:2,class:"video-loading","data-testid":"video-loading",role:"status","aria-label":"Loading video"},SE={key:3,class:"video-error","data-testid":"video-error",role:"alert"},CE={key:5,class:"gesture-zones","data-testid":"video-gesture-zones"},_E=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:s,currentTime:c,duration:l,volume:d,muted:u,isFullscreen:p,bufferedRanges:f,isLoading:h,error:v,status:g,currentPlaybackUrl:E,tokenExpiresAt:T,play:_,pause:w,seek:m,toggleMute:k,setVolume:N,toggleFullscreen:S,togglePlayPause:y,skipForward:C,skipBackward:U,retry:x,refreshToken:I,setApiClient:R,shouldRefreshToken:A,setupLiveStream:M}=wE({...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 P(){await I()}const H=e.computed(()=>{const ne=["video-player-container"];return t.className&&ne.push(t.className),p.value&&ne.push("fullscreen"),t.isLive&&ne.push("is-live"),s.value&&ne.push("is-playing"),h.value&&ne.push("is-loading"),ne}),B=e.computed(()=>{var ne,J;if(t.poster)return t.poster;if((ne=t.media)!=null&&ne.poster_url)return t.media.poster_url;if((J=t.media)!=null&&J.thumbnail_url)return t.media.thumbnail_url});function D(ne){const J=ne.target;o("loadedmetadata",{duration:J.duration,width:J.videoWidth,height:J.videoHeight})}function X(ne){const J=ne.target;c.value=J.currentTime,o("timeupdate",J.currentTime)}function Z(){s.value=!0,o("play")}function ee(){s.value=!1,o("pause")}function ge(){s.value=!1,o("ended")}function Ee(ne){const J=ne.target;let Be="Failed to load video";if(J.error)switch(J.error.code){case J.error.MEDIA_ERR_ABORTED:Be="Video playback aborted";break;case J.error.MEDIA_ERR_NETWORK:Be="Network error while loading video";break;case J.error.MEDIA_ERR_DECODE:Be="Video decoding error";break;case J.error.MEDIA_ERR_SRC_NOT_SUPPORTED:Be="Video format not supported";break}v.value=Be,o("error",Be)}function te(ne){const J=ne.target;f.value=J.buffered,o("progress",J.buffered)}function F(){h.value=!0}function j(){h.value=!1}e.watch(()=>t.apiClient,ne=>{ne&&R(ne)},{immediate:!0}),e.watch(()=>t.playbackUrl,ne=>{typeof ne=="string"&&ne.length>0&&(E.value=ne)},{immediate:!0}),e.watch(()=>{var ne;return(ne=t.media)==null?void 0:ne.token_expires_at},ne=>{if(!ne){T.value=null;return}const J=new Date(ne);T.value=Number.isNaN(J.getTime())?null:J},{immediate:!0}),e.watch(()=>{var ne;return(ne=t.media)==null?void 0:ne.playback_url},async(ne,J)=>{if(t.playbackUrl||!ne||ne===J)return;const Be=i.value;if(!Be||t.isLive){E.value=ne;return}const ce=!Be.paused,re=Be.currentTime;E.value=ne,await e.nextTick();try{Be.currentTime=re}catch{}ce&&await _()},{immediate:!0});let de=null;return e.watch(()=>t.isLive,async ne=>{var Be;if(!ne)return;const J=t.playbackUrl||((Be=t.media)==null?void 0:Be.playback_url)||"";J&&await M(J)},{immediate:!0}),e.onMounted(()=>{var ne;(ne=t.media)!=null&&ne.provider&&t.media.provider!=="local"&&(de=setInterval(()=>{A()&&P()},3e4)),$.isPlatform("mobile")&&t.showCustomControls}),e.onUnmounted(()=>{de&&clearInterval(de)}),(ne,J)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-player-container",H.value]),"data-testid":"video-player"},[ne.isLive?(e.openBlock(),e.createElementBlock("div",kE,[e.createElementVNode("video",{ref_key:"liveVideoEl",ref:r,controls:ne.controls&&!ne.showCustomControls,autoplay:!0,muted:e.unref(u),onPlay:Z,onPause:ee,onError:Ee,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,xE),e.unref(g)==="live"?(e.openBlock(),e.createElementBlock("div",EE,[...J[3]||(J[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(E),poster:B.value,controls:ne.controls&&!ne.showCustomControls,autoplay:ne.autoplay,muted:e.unref(u),loop:ne.loop,preload:ne.preload,onLoadedmetadata:D,onTimeupdate:X,onPlay:Z,onPause:ee,onEnded:ge,onError:Ee,onProgress:te,onWaiting:F,onCanplay:j,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,bE)),e.unref(h)?(e.openBlock(),e.createElementBlock("div",VE,[e.createVNode(e.unref($.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",SE,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Qi),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("p",null,e.toDisplayString(e.unref(v)),1),e.createVNode(e.unref($.IonButton),{size:"small",onClick:e.unref(x),"data-testid":"btn-video-retry","aria-label":"Retry loading video"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ln),slot:"start","aria-hidden":"true"},null,8,["icon"]),J[4]||(J[4]=e.createTextVNode(" Retry ",-1))]),_:1},8,["onClick"])])):e.createCommentVNode("",!0),ne.showCustomControls&&!e.unref(v)?(e.openBlock(),e.createBlock(yE,{key:4,playing:e.unref(s),currentTime:e.unref(c),duration:e.unref(l),buffered:e.unref(f),volume:e.unref(d),muted:e.unref(u),fullscreen:e.unref(p),isLive:ne.isLive,onPlay:e.unref(_),onPause:e.unref(w),onSeek:e.unref(m),onToggleMute:e.unref(k),onSetVolume:e.unref(N),onToggleFullscreen:e.unref(S),class:"custom-controls"},null,8,["playing","currentTime","duration","buffered","volume","muted","fullscreen","isLive","onPlay","onPause","onSeek","onToggleMute","onSetVolume","onToggleFullscreen"])):e.createCommentVNode("",!0),ne.enableGestures&&!e.unref(v)?(e.openBlock(),e.createElementBlock("div",CE,[e.createElementVNode("div",{class:"gesture-left","data-testid":"video-gesture-skip-back","aria-label":"Double tap to skip backward",onDblclick:J[0]||(J[0]=(...Be)=>e.unref(U)&&e.unref(U)(...Be))},null,32),e.createElementVNode("div",{class:"gesture-center","data-testid":"video-gesture-play-pause","aria-label":"Tap to play or pause",onClick:J[1]||(J[1]=(...Be)=>e.unref(y)&&e.unref(y)(...Be))}),e.createElementVNode("div",{class:"gesture-right","data-testid":"video-gesture-skip-forward","aria-label":"Double tap to skip forward",onDblclick:J[2]||(J[2]=(...Be)=>e.unref(C)&&e.unref(C)(...Be))},null,32)])):e.createCommentVNode("",!0)],2))}}),Ec=Me(_E,[["__scopeId","data-v-b8db4951"]]),NE=ba.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())),s=e.computed(()=>Array.from(n.value.values())),c=e.computed(()=>s.value.filter(M=>M.status==="live")),l=e.computed(()=>r.value.filter(M=>M.processing_status==="processing"));function d(M){a.value.set(M.uuid,M)}function u(M,P){const H=a.value.get(M);H&&a.value.set(M,{...H,...P})}function p(M){a.value.delete(M)}function f(M){return a.value.get(M)}function h(M){n.value.set(M.id,M)}function v(M,P){const H=n.value.get(M);H&&n.value.set(M,{...H,...P})}function g(M,P){const H=n.value.get(M);H&&n.value.set(M,{...H,status:P.status,viewer_count:P.viewer_count,peak_viewers:P.peak_viewers})}function E(M){n.value.delete(M)}function T(M){return n.value.get(M)}function _(M){return s.value.find(P=>P.media_uuid===M)}function w(M){t.value.set(M.id,M)}function m(M,P){const H=t.value.get(M);H&&t.value.set(M,{...H,...P})}function k(M){t.value.delete(M)}function N(M){return t.value.get(M)}function S(M){return Array.from(t.value.values()).filter(P=>P.media_uuid===M)}function y(M){o.value=M}function C(M){o.value&&(o.value={...o.value,...M})}function U(){o.value=null}function x(M){i.value=M}function I(){a.value.clear(),n.value.clear(),t.value.clear(),o.value=null,i.value=!1}function R(M){a.value.clear(),M.forEach(P=>{a.value.set(P.uuid,P)})}function A(M){n.value.clear(),M.forEach(P=>{n.value.set(P.id,P)})}return{videos:a,liveStreams:n,exportJobs:t,currentEditorState:o,isProcessing:i,allVideos:r,allLiveStreams:s,activeLiveStreams:c,processingVideos:l,setVideo:d,updateVideo:u,removeVideo:p,getVideo:f,setLiveStream:h,updateLiveStream:v,updateLiveStreamStats:g,removeLiveStream:E,getLiveStream:T,getLiveStreamByMedia:_,addExportJob:w,updateExportJob:m,removeExportJob:k,getExportJob:N,getExportJobsByMedia:S,setEditorState:y,updateEditorState:C,clearEditorState:U,setProcessing:x,clearAll:I,loadVideos:R,loadLiveStreams:A}});let hn=null;function TE(a){hn=a}const Ho={post:async(a,n)=>{if(!hn)throw new Error("HTTP client not configured");return await hn(`/api/v1/video${a}`,{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}})},get:async a=>{if(!hn)throw new Error("HTTP client not configured");return await hn(`/api/v1/video${a}`)},delete:async a=>{if(!hn)throw new Error("HTTP client not configured");return await hn(`/api/v1/video${a}`,{method:"DELETE"})}};function Go(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 s=a.ended_at??(n==null?void 0:n.ended_at);return s!==void 0&&(o.ended_at=s),(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 Vi(a,n){return a instanceof Error&&a.message?a.message:n}function ME(a){const n=NE(),t=e.ref(null),o=e.ref(!1),i=e.ref(!0),r=e.ref(""),s=e.ref(!1),c=e.ref(!1),l=e.ref(null),d=e.ref(null),u=e.ref(0),p=e.ref(0);let f;const h=e.computed(()=>d.value?Math.floor((new Date().getTime()-d.value.getTime())/1e3):0),v=e.computed(()=>{var U;if(!((U=t.value)!=null&&U.playback_url))return null;const C=new URL(t.value.playback_url);return C.searchParams.set("live","true"),o.value&&C.searchParams.set("latency","low"),C.toString()}),g=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="live"}),E=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="idle"}),T=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="ended"});async function _(C={}){s.value=!0,l.value=null;try{const U=await Ho.post("/live",{title:r.value||C.title||"Live Stream",low_latency:C.low_latency??o.value,auto_record:C.auto_record??i.value,...C}),x=Go(U);return t.value=x,n.setLiveStream(x),N(),x}catch(U){throw l.value=Vi(U,"Failed to create stream"),U instanceof Error?U:new Error(l.value)}finally{s.value=!1}}async function w(){if(!t.value)throw new Error("No active stream");c.value=!0,l.value=null;try{const C=await Ho.post(`/live/${t.value.id}/end`),U=Go(C,t.value);return t.value=U,n.setLiveStream(U),S(),U}catch(C){throw l.value=Vi(C,"Failed to end stream"),C instanceof Error?C:new Error(l.value)}finally{c.value=!1}}async function m(){if(t.value)try{const C=await Ho.get(`/live/${t.value.id}`),U=Go(C,t.value);u.value=U.viewer_count,p.value=U.peak_viewers,t.value=U;const x={status:U.status,viewer_count:U.viewer_count,peak_viewers:U.peak_viewers};U.started_at&&(x.started_at=U.started_at),U.ended_at&&(x.ended_at=U.ended_at),n.updateLiveStreamStats(U.id,x),U.status==="live"&&!d.value&&U.started_at&&(d.value=new Date(U.started_at)),U.status==="ended"&&S()}catch{}}async function k(C){try{const U=await Ho.get(`/live/${C}`),x=Go(U,t.value);return{rtmp_url:x.rtmp_url,stream_key:x.stream_key,playback_url:x.playback_url||""}}catch(U){throw l.value=Vi(U,"Failed to get stream credentials"),U instanceof Error?U:new Error(l.value)}}function N(C=5e3){S(),f=window.setInterval(()=>{m()},C)}function S(){f!==void 0&&(clearInterval(f),f=void 0)}async function y(){if(!a)return;const C=n.getLiveStreamByMedia(a);C&&(t.value=C,u.value=C.viewer_count,p.value=C.peak_viewers,C.status==="live"&&(N(),C.started_at&&(d.value=new Date(C.started_at))))}return a&&y(),e.onUnmounted(()=>{S()}),{stream:t,lowLatency:o,autoRecord:i,streamTitle:r,isCreating:s,isEnding:c,error:l,streamDuration:h,viewerCount:u,peakViewers:p,playbackUrl:v,isLive:g,isIdle:E,hasEnded:T,createStream:_,endStream:w,refreshStreamStatus:m,getStreamCredentials:k,startStatusPolling:N,stopStatusPolling:S}}const BE={class:"stream-status"},IE={class:"flex items-center justify-between"},FE={class:"flex items-center gap-3"},$E={key:0,class:"flex items-center"},RE={key:2,class:"text-sm text-gray-600"},DE={key:0,class:"flex items-center gap-2"},AE={class:"text-sm font-medium text-gray-700"},UE={key:0,class:"text-xs text-gray-500"},OE=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",s={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} ${s[n.status]||s.idle}`}),i=e.computed(()=>{if(!n.duration)return null;const r=Math.floor(n.duration/3600),s=Math.floor(n.duration%3600/60),c=n.duration%60;return r>0?`${r}:${s.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}`:`${s}:${c.toString().padStart(2,"0")}`});return(r,s)=>(e.openBlock(),e.createElementBlock("div",BE,[e.createElementVNode("div",IE,[e.createElementVNode("div",FE,[r.status==="live"?(e.openBlock(),e.createElementBlock("div",$E,[...s[0]||(s[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",RE,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)]),r.viewers!==void 0?(e.openBlock(),e.createElementBlock("div",DE,[s[1]||(s[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",AE,e.toDisplayString(r.viewers)+" "+e.toDisplayString(r.viewers===1?"viewer":"viewers"),1),r.peakViewers>r.viewers?(e.openBlock(),e.createElementBlock("span",UE," (Peak: "+e.toDisplayString(r.peakViewers)+") ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),LE=Me(OE,[["__scopeId","data-v-1d09c19f"]]),zE={class:"stream-credentials"},PE={class:"space-y-3"},jE={class:"credential-field"},WE={class:"flex gap-2"},ZE=["value"],XE={class:"credential-field"},HE={class:"flex gap-2"},GE=["value","type"],JE=["aria-label"],YE={key:0,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},KE={key:1,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},qE={key:0,class:"mt-2 text-sm text-green-600"},QE=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(""),s=e.computed(()=>{if(i.value)return t.streamKey;if(t.streamKey.length>8){const d=t.streamKey.slice(0,4),u=t.streamKey.slice(-4);return`${d}${"•".repeat(16)}${u}`}return"•".repeat(t.streamKey.length)});function c(){i.value=!i.value}async function l(d,u){try{await navigator.clipboard.writeText(d),r.value=u,o("copy",d,u),setTimeout(()=>{r.value=""},2e3)}catch{}}return(d,u)=>(e.openBlock(),e.createElementBlock("div",zE,[u[8]||(u[8]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Stream Settings",-1)),e.createElementVNode("div",PE,[e.createElementVNode("div",jE,[u[3]||(u[3]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 mb-1"},"RTMP Server URL",-1)),e.createElementVNode("div",WE,[e.createElementVNode("input",{value:d.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,ZE),e.createElementVNode("button",{onClick:u[0]||(u[0]=p=>l(d.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"},[...u[2]||(u[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",XE,[u[7]||(u[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 mb-1"},"Stream Key",-1)),e.createElementVNode("div",HE,[e.createElementVNode("input",{value:s.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,GE),e.createElementVNode("button",{onClick:c,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",KE,[...u[5]||(u[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",YE,[...u[4]||(u[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,JE),e.createElementVNode("button",{onClick:u[1]||(u[1]=p=>l(d.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"},[...u[6]||(u[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)])])])])]),u[9]||(u[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",qE,e.toDisplayString(r.value)+" copied to clipboard! ",1)):e.createCommentVNode("",!0)]),_:1})]))}}),e4=Me(QE,[["__scopeId","data-v-306d92f6"]]),t4={class:"live-stream-manager","data-testid":"live-stream-manager"},n4={key:0,class:"stream-setup"},o4={class:"space-y-4"},a4={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},i4={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},r4=["disabled"],s4={key:0},l4={key:1,class:"flex items-center justify-center"},c4={key:1,class:"stream-active space-y-6"},d4={key:1,class:"video-preview"},u4={key:2,class:"analytics-panel"},m4={class:"grid grid-cols-2 gap-4"},p4={class:"bg-gray-50 p-3 rounded"},f4={class:"text-2xl font-bold text-gray-900"},h4={class:"bg-gray-50 p-3 rounded"},v4={class:"text-2xl font-bold text-gray-900"},g4={class:"stream-controls flex gap-3"},y4=["disabled"],w4={key:0},b4={key:1},k4={key:2,class:"mt-4 p-4 bg-red-50 border border-red-200 rounded-lg"},x4={class:"text-red-600 text-sm"},E4=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&&TE(t.httpClient);const{stream:i,lowLatency:r,autoRecord:s,streamTitle:c,isCreating:l,isEnding:d,error:u,createStream:p,endStream:f,streamDuration:h,playbackUrl:v,refreshStreamStatus:g}=ME(t.mediaUuid),E=e.ref(!1);async function T(){var N;try{const S=await p({title:c.value,low_latency:r.value,auto_record:s.value});o("stream-created",S),(N=t.onStreamCreated)==null||N.call(t,S)}catch(S){o("error",S)}}async function _(){var N;try{const S=await f();o("stream-ended",S),(N=t.onStreamEnded)==null||N.call(t,S)}catch(S){o("error",S)}}function w(){i.value=null,c.value="",E.value=!1,u.value=null}async function m(N,S){try{await navigator.clipboard.writeText(N)}catch{}}let k;return e.onMounted(()=>{var N;((N=i.value)==null?void 0:N.status)==="live"&&(k=window.setInterval(()=>{g()},5e3))}),e.onUnmounted(()=>{k&&clearInterval(k)}),(N,S)=>(e.openBlock(),e.createElementBlock("div",t4,[e.unref(i)?(e.openBlock(),e.createElementBlock("div",c4,[e.createVNode(LE,{status:e.unref(i).status,viewers:e.unref(i).viewer_count,duration:e.unref(h),"peak-viewers":e.unref(i).peak_viewers},null,8,["status","viewers","duration","peak-viewers"]),e.unref(i).status==="idle"?(e.openBlock(),e.createBlock(e4,{key:0,"rtmp-url":e.unref(i).rtmp_url,"stream-key":e.unref(i).stream_key,onCopy:m},null,8,["rtmp-url","stream-key"])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",d4,[S[9]||(S[9]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-2"},"Live Preview",-1)),e.createVNode(Ec,{"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",u4,[S[12]||(S[12]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Live Analytics",-1)),e.createElementVNode("div",m4,[e.createElementVNode("div",p4,[e.createElementVNode("div",f4,e.toDisplayString(e.unref(i).viewer_count),1),S[10]||(S[10]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Current Viewers",-1))]),e.createElementVNode("div",h4,[e.createElementVNode("div",v4,e.toDisplayString(e.unref(i).peak_viewers),1),S[11]||(S[11]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Peak Viewers",-1))])])])):e.createCommentVNode("",!0),e.createElementVNode("div",g4,[e.unref(i).status==="idle"?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:S[3]||(S[3]=y=>E.value=!E.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(E.value?"Hide":"Show")+" Credentials ",1)):e.createCommentVNode("",!0),e.unref(i).status==="live"?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:_,disabled:e.unref(d),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(d)?(e.openBlock(),e.createElementBlock("span",b4,"Ending...")):(e.openBlock(),e.createElementBlock("span",w4,"End Stream"))],8,y4)):e.createCommentVNode("",!0),e.unref(i).status==="ended"?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:w,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",n4,[S[8]||(S[8]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Start Live Stream",-1)),e.createElementVNode("div",o4,[e.createElementVNode("div",a4,[S[4]||(S[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":S[0]||(S[0]=y=>e.isRef(r)?r.value=y: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",i4,[S[5]||(S[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":S[1]||(S[1]=y=>e.isRef(s)?s.value=y: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(s)]])]),e.createElementVNode("div",null,[S[6]||(S[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":S[2]||(S[2]=y=>e.isRef(c)?c.value=y: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(c)]])]),e.createElementVNode("button",{onClick:T,disabled:e.unref(l),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(l)?(e.openBlock(),e.createElementBlock("span",l4,[...S[7]||(S[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",s4,"Create Stream"))],8,r4)])])),e.unref(u)?(e.openBlock(),e.createElementBlock("div",k4,[e.createElementVNode("p",x4,e.toDisplayString(e.unref(u)),1)])):e.createCommentVNode("",!0)]))}}),V4=Me(E4,[["__scopeId","data-v-26291f6f"]]),S4={class:"album-tree-node"},C4=["data-album-id","draggable","aria-selected","aria-expanded"],_4={key:1,class:"album-node__chevron-placeholder"},N4={key:2,"data-testid":"media-count",class:"album-node__count"},T4={key:0,class:"album-tree-node__children",role:"group"},M4=16,B4=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),s=e.computed(()=>t.focusedId===t.album.id),c=e.computed(()=>t.album.children_count>0),l=e.computed(()=>`${t.depth*M4}px`),d=e.computed(()=>{var w;return((w=t.dragState)==null?void 0:w.draggedAlbumId)===t.album.id}),u=e.computed(()=>{var w;return((w=t.dragState)==null?void 0:w.dropTargetId)===t.album.id}),p=e.computed(()=>{var w;return(w=t.dragState)!=null&&w.draggedAlbumId?t.dragState.draggedAlbumId===t.album.id:!1}),f=e.computed(()=>{const w=["album-node"];return r.value&&w.push("album-node--selected"),s.value&&w.push("album-node--focused"),t.compact&&w.push("album-node--compact"),d.value&&w.push("album-node--dragging"),u.value&&w.push("album-node--drop-target"),p.value&&w.push("album-node--invalid-drop"),w});function h(){o("select",t.album)}function v(w){w.stopPropagation(),o("toggle-expand",t.album.id)}function g(w){t.draggable&&(w.dataTransfer&&(w.dataTransfer.setData("text/plain",t.album.id),w.dataTransfer.effectAllowed="move"),o("drag-start",t.album.id))}function E(w){t.draggable&&(w.preventDefault(),w.dataTransfer&&(w.dataTransfer.dropEffect="move"),o("drag-over",t.album.id))}function T(){o("drag-leave",t.album.id)}function _(w){t.draggable&&(w.preventDefault(),o("drop",t.album.id))}return(w,m)=>{var N;const k=e.resolveComponent("AlbumTreeNode",!0);return e.openBlock(),e.createElementBlock("div",S4,[e.createElementVNode("div",{"data-testid":"album-node","data-album-id":w.album.id,class:e.normalizeClass(f.value),style:e.normalizeStyle({paddingLeft:l.value}),draggable:w.draggable,role:"treeitem","aria-selected":r.value,"aria-expanded":c.value?i.value:void 0,onDragstart:g,onDragover:E,onDragleave:T,onDrop:_},[c.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($.IonIcon),{icon:i.value?e.unref(fu):e.unref(hu)},null,8,["icon"])])):(e.openBlock(),e.createElementBlock("span",_4)),e.createVNode(e.unref($.IonIcon),{icon:e.unref(Eu),class:"album-node__icon"},null,8,["icon"]),e.createElementVNode("span",{"data-testid":"album-name",class:"album-node__name",onClick:h},e.toDisplayString(w.album.name),1),w.showMediaCount?(e.openBlock(),e.createElementBlock("span",N4,e.toDisplayString(w.album.media_count),1)):e.createCommentVNode("",!0)],46,C4),i.value&&((N=w.album.children)!=null&&N.length)?(e.openBlock(),e.createElementBlock("div",T4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.album.children,S=>(e.openBlock(),e.createBlock(k,{key:S.id,album:S,depth:w.depth+1,"selected-id":w.selectedId,"expanded-ids":w.expandedIds,"focused-id":w.focusedId,draggable:w.draggable,"show-media-count":w.showMediaCount,compact:w.compact,onSelect:m[0]||(m[0]=y=>o("select",y)),onToggleExpand:m[1]||(m[1]=y=>o("toggle-expand",y))},null,8,["album","depth","selected-id","expanded-ids","focused-id","draggable","show-media-count","compact"]))),128))])):e.createCommentVNode("",!0)])}}}),I4=Me(B4,[["__scopeId","data-v-76be65a6"]]),Wa=ba.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 m=new Map;return a.value.forEach(k=>m.set(k.id,k)),m}),s=e.computed(()=>a.value.filter(m=>m.parent_id===null));async function c(m){t.value=!0,o.value=null;try{const k=(m==null?void 0:m.parent_id)??null,N=k?`/api/v1/albums?parent_id=${k}`:"/api/v1/albums?parent_id=null",S=await fetch(N);if(!S.ok)throw new Error("Failed to fetch albums");((await S.json()).data||[]).forEach(U=>{const x=a.value.findIndex(I=>I.id===U.id);x>=0?a.value[x]=U:a.value.push(U)}),k!==null&&i.value.add(k)}catch(k){o.value=k instanceof Error?k.message:"Unknown error"}finally{t.value=!1}}async function l(m){t.value=!0,o.value=null;try{const k=await fetch(`/api/v1/albums/${m}`);if(!k.ok)throw new Error("Failed to fetch album");const S=(await k.json()).data,y=a.value.findIndex(C=>C.id===S.id);return y>=0?a.value[y]=S:a.value.push(S),S}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function d(m){t.value=!0,o.value=null;try{const k=await fetch(`/api/v1/albums/${m}/media`);if(!k.ok)throw new Error("Failed to fetch album media");const S=(await k.json()).data||[];return n.value.set(m,S),S}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function u(m,k){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${m}/media/reorder`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({media_ids:k})})).ok)throw new Error("Failed to reorder album media");const S=n.value.get(m)||[],y=k.map(C=>S.find(U=>U.uuid===C)).filter(C=>C!==void 0);n.value.set(m,y)}catch(N){throw o.value=N instanceof Error?N.message:"Unknown error",N}finally{t.value=!1}}async function p(m){t.value=!0,o.value=null;try{const k=await fetch("/api/v1/albums",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(m)});if(!k.ok)throw new Error("Failed to create album");const S=(await k.json()).data;return a.value.push(S),S}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function f(m,k){t.value=!0,o.value=null;try{const N=await fetch(`/api/v1/albums/${m}`,{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(k)});if(!N.ok)throw new Error("Failed to update album");const y=(await N.json()).data,C=a.value.findIndex(U=>U.id===y.id);return C>=0&&(a.value[C]=y),y}catch(N){throw o.value=N instanceof Error?N.message:"Unknown error",N}finally{t.value=!1}}async function h(m){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${m}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"})).ok)throw new Error("Failed to delete album");const N=a.value.findIndex(S=>S.id===m);N>=0&&a.value.splice(N,1),n.value.delete(m)}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}function v(m){return a.value.filter(k=>k.parent_id===m)}function g(m){return i.value.has(m)}function E(m){return n.value.get(m)||[]}async function T(m,k){const N=a.value.findIndex(y=>y.id===m);if(N<0)return;const S=a.value[N];a.value[N]={...S,parent_id:k};try{if(!(await fetch(`/api/v1/albums/${m}/move`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({parent_id:k})})).ok)throw new Error("Failed to move album")}catch(y){throw a.value[N]=S,o.value=y instanceof Error?y.message:"Unknown error",y instanceof Error?y:new Error("Failed to move album")}}function _(m){a.value=m}function w(){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:s,fetchAlbums:c,fetchAlbum:l,fetchAlbumMedia:d,reorderAlbumMedia:u,createAlbum:p,updateAlbum:f,deleteAlbum:h,getChildrenOf:v,childrenLoaded:g,getAlbumMedia:E,moveAlbum:T,setAlbums:_,reset:w}});function Vc(){const a=Wa(),{albums:n,albumsById:t,rootAlbums:o,loading:i,error:r}=ba.storeToRefs(a);async function s(u){await a.fetchAlbums(u)}function c(u){return a.getChildrenOf(u)}function l(u){return a.childrenLoaded(u)}async function d(u,p){await a.moveAlbum(u,p)}return{albums:n,albumsById:t,rootAlbums:o,loading:i,error:r,fetchAlbums:s,getChildrenOf:c,childrenLoaded:l,moveAlbum:d}}function Sc(a){const{childrenByParentId:n,onMove:t}=a,o=e.ref({isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null});function i(p,f){if(p===f)return!0;const h=new Set,v=[p];for(;v.length>0;){const g=v.shift();if(!g||h.has(g))continue;h.add(g);const E=n.get(g)||[];for(const T of E){if(T===f)return!0;v.push(T)}}return!1}function r(p,f){return p===f?!1:f===null?!0:!i(p,f)}function s(p){o.value={isDragging:!0,draggedAlbumId:p,dropTargetId:null,dropPosition:null}}function c(){o.value={isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null}}function l(p){o.value.dropTargetId=p}function d(){o.value.dropTargetId=null,o.value.dropPosition=null}async function u(){const{draggedAlbumId:p,dropTargetId:f}=o.value;if(!p){c();return}if(!r(p,f)){c();return}try{await t(p,f)}finally{c()}}return{dragState:o,isDescendant:i,canDropOn:r,startDrag:s,endDrag:c,setDropTarget:l,clearDropTarget:d,executeDrop:u}}const F4={key:0,"data-testid":"loading-spinner",class:"album-tree__loading"},$4={key:1,"data-testid":"error-state",class:"album-tree__error"},R4={key:2,"data-testid":"empty-state",class:"album-tree__empty"},D4={key:3,class:"album-tree__content",role:"group"},A4=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}},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),s=e.computed(()=>o.showMediaCount===!0),c=e.computed(()=>o.compact===!0),{albums:l,rootAlbums:d,loading:u,error:p,fetchAlbums:f,getChildrenOf:h,childrenLoaded:v,moveAlbum:g}=Vc(),E=e.shallowRef(new Set(o.expandedIds)),T=e.ref(o.modelValue??null),_=e.ref(null),w=new Map,m=new Map;function k(F){w.clear(),m.clear();for(const j of F){w.set(j.id,j);const de=j.parent_id??null,ne=m.get(de)??[];ne.push(j.id),m.set(de,ne)}}e.watch(l,F=>{k(F)},{immediate:!0});const{dragState:N,canDropOn:S,startDrag:y,endDrag:C,setDropTarget:U,clearDropTarget:x,executeDrop:I}=Sc({childrenByParentId:m,onMove:async(F,j)=>{await g(F,j),i("album-moved",{albumId:F,newParentId:j})}});e.watch(()=>o.modelValue,F=>{T.value=F??null}),e.watch(()=>o.expandedIds,F=>{E.value=new Set(F)}),e.onMounted(async()=>{await f({parent_id:null})});const R=e.computed(()=>d.value.map(F=>A(F)));function A(F){if(!E.value.has(F.id))return F;const j=h(F.id);return{...F,children:j.map(de=>A(de))}}const M=e.computed(()=>{const F=[];function j(de){var ne;for(const J of de)F.push(J),E.value.has(J.id)&&((ne=J.children)!=null&&ne.length)&&j(J.children)}return j(R.value),F});function P(F){var ne;if(!M.value.length)return;const j=_.value?M.value.findIndex(J=>J.id===_.value):-1,de=j>=0?M.value[j]:null;switch(F.key){case"ArrowDown":F.preventDefault(),j<M.value.length-1?_.value=M.value[j+1].id:j===-1&&M.value.length>0&&(_.value=M.value[0].id);break;case"ArrowUp":F.preventDefault(),j>0&&(_.value=M.value[j-1].id);break;case"ArrowRight":F.preventDefault(),de&&(de.children_count>0&&!E.value.has(de.id)?H(de.id):E.value.has(de.id)&&((ne=de.children)!=null&&ne.length)&&(_.value=de.children[0].id));break;case"ArrowLeft":F.preventDefault(),de&&(E.value.has(de.id)&&de.children_count>0?H(de.id):de.parent_id&&(_.value=de.parent_id));break;case"Enter":case" ":F.preventDefault(),de&&B(de);break;case"Home":F.preventDefault(),M.value.length>0&&(_.value=M.value[0].id);break;case"End":F.preventDefault(),M.value.length>0&&(_.value=M.value[M.value.length-1].id);break}}async function H(F){E.value.has(F)?(E.value.delete(F),i("album-collapsed",F)):(v(F)||await f({parent_id:F}),E.value.add(F),i("album-expanded",F))}function B(F){T.value=F.id,i("update:modelValue",F.id),i("album-selected",F)}function D(F){o.draggable&&y(F)}function X(F){var de;if(!o.draggable)return;const j=(de=N.value)==null?void 0:de.draggedAlbumId;j&&(U(F),S(j,F))}function Z(){o.draggable&&x()}async function ee(F){o.draggable&&(U(F),await I())}function ge(F){o.draggable&&(F.preventDefault(),U(null))}async function Ee(F){o.draggable&&(F.preventDefault(),U(null),await I())}function te(){C()}return n({focusedId:_}),(F,j)=>(e.openBlock(),e.createElementBlock("div",{class:"album-tree","data-testid":"album-tree",tabindex:"0",role:"tree","aria-label":"Album tree",onKeydown:P,onDragover:ge,onDrop:Ee,onDragend:te},[e.unref(u)?(e.openBlock(),e.createElementBlock("div",F4,[e.createVNode(e.unref($.IonSpinner),{name:"crescent"})])):e.unref(p)?(e.openBlock(),e.createElementBlock("div",$4,[e.createElementVNode("p",null,e.toDisplayString(e.unref(p)),1)])):e.unref(d).length?(e.openBlock(),e.createElementBlock("div",D4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,de=>(e.openBlock(),e.createBlock(I4,{key:de.id,album:de,depth:0,"selected-id":T.value,"expanded-ids":E.value,"focused-id":_.value,draggable:r.value,"drag-state":r.value?e.unref(N):null,"show-media-count":s.value,compact:c.value,onSelect:B,onToggleExpand:H,onDragStart:D,onDragOver:X,onDragLeave:Z,onDrop:ee},null,8,["album","selected-id","expanded-ids","focused-id","draggable","drag-state","show-media-count","compact"]))),128))])):(e.openBlock(),e.createElementBlock("div",R4,[j[0]||(j[0]=e.createElementVNode("p",null,"No albums yet",-1)),e.renderSlot(F.$slots,"empty-action",{},void 0,!0)]))],32))}}),Cc=Me(A4,[["__scopeId","data-v-ae3dea7a"]]),U4=300,O4=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),s=e.ref(0),c=e.ref(null);e.watch(()=>t.selectedAlbumId,h=>{i.value=h??null});const l=e.computed(()=>r.value!==null);function d(h){const v=Date.now();if(c.value===h.id&&v-s.value<U4){o("confirm",h);return}s.value=v,c.value=h.id,i.value=h.id,r.value=h}function u(){r.value&&o("confirm",r.value)}function p(){o("close")}function f(){o("close")}return(h,v)=>(e.openBlock(),e.createBlock(e.unref($.IonModal),{"is-open":h.isOpen,class:"album-browser-modal",onDidDismiss:f},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.title),1)]),_:1}),e.createVNode(e.unref($.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{"data-testid":"cancel-button",onClick:p},{default:e.withCtx(()=>[...v[1]||(v[1]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref($.IonContent),{class:"album-browser-content"},{default:e.withCtx(()=>[e.createVNode(Cc,{modelValue:i.value,"onUpdate:modelValue":v[0]||(v[0]=g=>i.value=g),draggable:!1,"show-media-count":!0,compact:!1,onAlbumSelected:d},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref($.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{fill:"clear",onClick:p},{default:e.withCtx(()=>[...v[2]||(v[2]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref($.IonButton),{"data-testid":"confirm-button",fill:"solid",color:"primary",disabled:!l.value,onClick:u},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.confirmText),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"]))}}),_c=Me(O4,[["__scopeId","data-v-21676ec1"]]),L4={class:"ion-padding-start text-sm"},z4={class:"ion-padding-start text-sm"},P4={key:1},j4={key:1,class:"album-manager-inline rounded-lg border border-gray-200 bg-white p-4"},W4={class:"flex items-center justify-between gap-3 pb-3"},Z4={class:"text-base font-semibold text-gray-900"},X4={class:"ion-padding-start text-sm"},H4={class:"ion-padding-start text-sm"},G4={class:"flex justify-between pt-2"},J4={key:1},to=255,no=1e3,Y4=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=Wa(),r=e.computed(()=>t.albumId!==null&&t.albumId!==void 0),s=e.computed(()=>r.value?"Edit Album":"Create Album"),c=e.computed(()=>r.value?"Save":"Create"),l=e.ref({name:"",description:"",parent_id:t.parentId}),d=e.ref({name:!1,description:!1}),u=e.ref(null),p=e.ref(!1),f=e.ref(null),h=e.ref(!1),v=e.ref(!1),g=e.computed(()=>d.value.name?l.value.name.trim()?l.value.name.length>to?`Name must be ${to} characters or less`:null:"Name is required":null),E=e.computed(()=>d.value.description&&l.value.description.length>no?`Description must be ${no} characters or less`:null),T=e.computed(()=>{const P=l.value.name.trim().length>0,H=l.value.name.length<=to,B=l.value.description.length<=no;return P&&H&&B&&!h.value}),_=e.computed(()=>{var P;return((P=u.value)==null?void 0:P.name)??"None (Root)"}),w=e.computed(()=>f.value?f.value.children_count===0&&f.value.media_count===0:!1),m=e.computed(()=>f.value?f.value.children_count>0?"Cannot delete album with child albums. Move or delete children first.":f.value.media_count>0?"Cannot delete album with media. Remove media first.":`Are you sure you want to delete "${f.value.name}"? This action cannot be undone.`:"");e.onMounted(async()=>{t.albumId&&await k()});async function k(){if(t.albumId)try{const P=await i.fetchAlbum(t.albumId);f.value=P,l.value={name:P.name,description:P.description??"",parent_id:P.parent_id},P.parent_id&&(u.value={id:P.parent_id,name:"Parent Album"})}catch(P){o("error",P)}}function N(){d.value.name=!0}function S(){d.value.description=!0}function y(){p.value=!0}function C(P){u.value={id:P.id,name:P.name},l.value.parent_id=P.id,p.value=!1}function U(){p.value=!1}function x(){o("close")}function I(){o("close")}async function R(){if(d.value.name=!0,d.value.description=!0,!(!T.value||h.value)){h.value=!0;try{const P={name:l.value.name.trim(),description:l.value.description.trim(),parent_id:l.value.parent_id};if(r.value&&t.albumId){const H=await i.updateAlbum(t.albumId,P);o("updated",H)}else{const H=await i.createAlbum(P);o("created",H)}o("close")}catch(P){o("error",P)}finally{h.value=!1}}}function A(){w.value&&(v.value=!0)}async function M(P){var B;if((((B=P.detail)==null?void 0:B.role)??"")!=="confirm"){v.value=!1;return}if(t.albumId){h.value=!0;try{await i.deleteAlbum(t.albumId),o("deleted",t.albumId),o("close")}catch(D){o("error",D)}finally{h.value=!1,v.value=!1}}}return(P,H)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[P.mode==="modal"?(e.openBlock(),e.createBlock(e.unref($.IonModal),{key:0,"is-open":P.isOpen,class:"album-manager-modal",onDidDismiss:I},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1}),e.createVNode(e.unref($.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:x},{default:e.withCtx(()=>[...H[4]||(H[4]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref($.IonContent),{class:"album-manager-content"},{default:e.withCtx(()=>[e.createElementVNode("form",{"data-testid":"album-form",class:"p-4 space-y-3",onSubmit:e.withModifiers(R,["prevent"])},[e.createVNode(e.unref($.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[5]||(H[5]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref($.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":H[0]||(H[0]=B=>l.value.name=B),"data-testid":"name-input",maxlength:to,onIonBlur:N},null,8,["modelValue"])]),_:1}),g.value?(e.openBlock(),e.createBlock(e.unref($.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",L4,e.toDisplayString(g.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[6]||(H[6]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref($.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":H[1]||(H[1]=B=>l.value.description=B),"data-testid":"description-input",maxlength:no,onIonBlur:S},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref($.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",z4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonItem),{button:"","data-testid":"parent-selector",onClick:y},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...H[7]||(H[7]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref($.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.value),1)]),_:1})]),_:1})],32)]),_:1}),e.createVNode(e.unref($.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButtons),{slot:"start"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",disabled:!w.value,title:w.value?void 0:m.value,onClick:A},{default:e.withCtx(()=>[...H[8]||(H[8]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref($.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!T.value,onClick:R},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createBlock(e.unref($.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",P4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"])):(e.openBlock(),e.createElementBlock("div",j4,[e.createElementVNode("div",W4,[e.createElementVNode("h2",Z4,e.toDisplayString(s.value),1),e.createVNode(e.unref($.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:x},{default:e.withCtx(()=>[...H[9]||(H[9]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),e.createElementVNode("form",{"data-testid":"album-form",class:"space-y-3",onSubmit:e.withModifiers(R,["prevent"])},[e.createVNode(e.unref($.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[10]||(H[10]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref($.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":H[2]||(H[2]=B=>l.value.name=B),"data-testid":"name-input",maxlength:to,onIonBlur:N},null,8,["modelValue"])]),_:1}),g.value?(e.openBlock(),e.createBlock(e.unref($.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",X4,e.toDisplayString(g.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[11]||(H[11]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref($.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":H[3]||(H[3]=B=>l.value.description=B),"data-testid":"description-input",maxlength:no,onIonBlur:S},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref($.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",H4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonItem),{button:"","data-testid":"parent-selector",onClick:y},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...H[12]||(H[12]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref($.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.value),1)]),_:1})]),_:1}),e.createElementVNode("div",G4,[e.createElementVNode("div",null,[r.value?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",fill:"outline",disabled:!w.value,title:w.value?void 0:m.value,onClick:A},{default:e.withCtx(()=>[...H[13]||(H[13]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),e.createVNode(e.unref($.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!T.value,onClick:R},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createBlock(e.unref($.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",J4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])])],32)])),e.createVNode(_c,{"is-open":p.value,"selected-album-id":l.value.parent_id,title:"Select Parent Album",onClose:U,onConfirm:C},null,8,["is-open","selected-album-id"]),e.createVNode(e.unref($.IonAlert),{"is-open":v.value,header:"Delete Album?",message:m.value,buttons:[{text:"Cancel",role:"cancel"},{text:"Delete",role:"confirm",cssClass:"alert-button-danger"}],onDidDismiss:M},null,8,["is-open","message"])],64))}}),K4=Me(Y4,[["__scopeId","data-v-22083f3a"]]),q4={class:"album-media-grid"},Q4={class:"aspect-square"},e3={key:1,"data-testid":"empty-state",class:"flex flex-col items-center justify-center py-12 gap-4"},t3={class:"text-gray-500"},n3=["data-media-id","draggable","onDragstart","onDragover","onDrop","onMouseenter"],o3={key:0,"data-testid":"drop-indicator",class:"absolute inset-0 border-2 border-primary rounded-lg pointer-events-none z-30"},a3={key:1,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-grab"},i3={class:"aspect-square relative"},r3=["src","alt"],s3={key:0,class:"absolute inset-0 bg-black/50 flex items-center justify-center gap-2 transition-opacity"},l3=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=Wa(),r=e.ref([]),s=e.ref(!1),c=e.ref(null),l=e.ref(null),d=e.ref(null),u=e.computed(()=>t.isLoading||s.value),p=e.computed(()=>!u.value&&r.value.length===0),f=e.computed(()=>{const I=t.columns;return["grid","gap-4",`grid-cols-${I.mobile??2}`,`sm:grid-cols-${I.sm??3}`,`md:grid-cols-${I.md??4}`,`lg:grid-cols-${I.lg??5}`,`xl:grid-cols-${I.xl??6}`]}),h=e.computed(()=>(t.columns.md??4)*2);e.onMounted(async()=>{await v()}),e.watch(()=>t.albumId,async()=>{await v()});async function v(){s.value=!0;try{const I=await i.fetchAlbumMedia(t.albumId);r.value=I}catch{r.value=[]}finally{s.value=!1}}function g(I){return t.selectedItems.includes(I)}function E(I){o("toggle-select",I);const R=g(I.uuid)?t.selectedItems.filter(A=>A!==I.uuid):[...t.selectedItems,I.uuid];o("selection-change",R)}function T(I){if(I.conversions&&typeof I.conversions=="object"){const R=I.conversions.thumb;if(typeof R=="string")return R}return I.original_url}function _(I){c.value=I}function w(){c.value=null}function m(I){o("preview",I)}function k(I){o("edit",I)}function N(I){o("detach",I.uuid)}function S(){o("add")}function y(I,R){t.reorderable&&(l.value=R,I.dataTransfer&&(I.dataTransfer.effectAllowed="move",I.dataTransfer.setData("text/plain",String(R))))}function C(I,R){!t.reorderable||l.value===null||(I.preventDefault(),d.value=R)}function U(I,R){if(!t.reorderable||l.value===null)return;I.preventDefault();const A=l.value;if(A!==R){const M=[...r.value],[P]=M.splice(A,1);M.splice(R,0,P),r.value=M;const H=M.map(B=>B.uuid);o("reorder",H),i.reorderAlbumMedia(t.albumId,H).catch(()=>{v()})}l.value=null,d.value=null}function x(){l.value=null,d.value=null}return(I,R)=>(e.openBlock(),e.createElementBlock("div",q4,[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-testid":"loading-grid",class:e.normalizeClass(f.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,A=>(e.openBlock(),e.createBlock(e.unref($.IonCard),{key:A,class:"m-0"},{default:e.withCtx(()=>[e.createElementVNode("div",Q4,[e.createVNode(e.unref($.IonSkeletonText),{animated:"",class:"w-full h-full skeleton"})])]),_:1}))),128))],2)):p.value?(e.openBlock(),e.createElementBlock("div",e3,[e.createVNode(e.unref($.IonIcon),{name:"images-outline",class:"text-6xl text-gray-400"}),e.createElementVNode("p",t3,e.toDisplayString(I.emptyText),1),e.createVNode(e.unref($.IonButton),{"data-testid":"add-media-btn",onClick:S},{default:e.withCtx(()=>[...R[0]||(R[0]=[e.createTextVNode(" Add Media ",-1)])]),_:1})])):(e.openBlock(),e.createElementBlock("div",{key:2,"data-testid":"media-grid",class:e.normalizeClass(f.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(A,M)=>(e.openBlock(),e.createElementBlock("div",{key:A.uuid,"data-media-id":A.uuid,class:e.normalizeClass(["media-item relative group",{"opacity-50":l.value===M,"ring-2 ring-primary":d.value===M&&l.value!==M}]),draggable:I.reorderable,onDragstart:P=>y(P,M),onDragover:P=>C(P,M),onDrop:P=>U(P,M),onDragend:x,onMouseenter:P=>_(A.uuid),onMouseleave:w},[d.value===M&&l.value!==M&&I.reorderable?(e.openBlock(),e.createElementBlock("div",o3)):e.createCommentVNode("",!0),I.reorderable?(e.openBlock(),e.createElementBlock("div",a3,[e.createVNode(e.unref($.IonIcon),{name:"reorder-three-outline",class:"text-white drop-shadow-md"})])):e.createCommentVNode("",!0),I.selectionMode?(e.openBlock(),e.createBlock(e.unref($.IonCheckbox),{key:2,"data-testid":"media-checkbox",checked:g(A.uuid),class:"absolute top-2 left-2 z-20",onIonChange:P=>E(A)},null,8,["checked","onIonChange"])):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonCard),{class:"m-0 overflow-hidden"},{default:e.withCtx(()=>[e.createElementVNode("div",i3,[e.createElementVNode("img",{src:T(A),alt:A.file_name,class:"w-full h-full object-cover"},null,8,r3),I.showActions&&c.value===A.uuid?(e.openBlock(),e.createElementBlock("div",s3,[e.createVNode(e.unref($.IonButton),{"data-testid":"action-preview",fill:"clear",size:"small",color:"light",onClick:P=>m(A)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{slot:"icon-only",name:"eye-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref($.IonButton),{"data-testid":"action-edit",fill:"clear",size:"small",color:"light",onClick:P=>k(A)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{slot:"icon-only",name:"create-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref($.IonButton),{"data-testid":"action-detach",fill:"clear",size:"small",color:"danger",onClick:P=>N(A)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{slot:"icon-only",name:"close-circle-outline"})]),_:1},8,["onClick"])])):e.createCommentVNode("",!0)])]),_:2},1024)],42,n3))),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:S},[e.createVNode(e.unref($.IonIcon),{name:"add-circle-outline",class:"text-4xl text-gray-400"}),R[1]||(R[1]=e.createElementVNode("span",{class:"text-sm text-gray-500"},"Add Media",-1))])],2))]))}}),c3=Me(l3,[["__scopeId","data-v-d84b796a"]]);function xr(a={}){const n=e.ref(!1),t=e.ref(!1),o=e.ref(null),i=e.ref(null),r=e.ref(0),s=e.ref(null),c=e.ref(null),l=e.computed(()=>c.value!==null),d=T=>{if(r.value++,c.value=null,i.value=null,t.value=!1,T!=null&&typeof T=="object"&&!(T instanceof Blob)&&("image"in T||"state"in T||"sessionKey"in T)){const _=T;o.value=_.image??null,s.value=_.state??null}else o.value=T??null,s.value=null;n.value=!0},u=()=>{n.value=!1,o.value=null,i.value=null,c.value=null,t.value=!1,s.value=null},p=async T=>{try{return t.value=!0,i.value=T,a.onSave&&await a.onSave(T),u(),T}catch(_){const w=_;throw c.value=w,a.onError&&a.onError(w),w}finally{t.value=!1}},f=()=>{a.onCancel&&a.onCancel(),u()},h=T=>{c.value=T,a.onError&&a.onError(T)},v=()=>{c.value=null},g=()=>i.value,E=e.computed(()=>n.value&&i.value!==null&&!t.value);return{isOpen:n,isProcessing:t,uploadedImage:o,editedImage:i,sessionKey:r,initialState:s,error:c,hasError:l,hasUnsavedChanges:E,open:d,close:u,handleSave:p,handleCancel:f,handleError:h,clearError:v,getEditedImage:g}}let Si=null;function d3(a){return Si||(Si=xr(a)),Si}function u3(a){return n=>new Promise((t,o)=>{xr({...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 Er(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 Yi(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 Vr(a){if(a){const t={};a.apiBaseUrl!==void 0&&(t.apiBaseUrl=a.apiBaseUrl),a.isAdmin!==void 0&&(t.isAdmin=a.isAdmin),Rn(t)}return{name:"mediables",async upload(t,o){const r=await xt().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 xt().attachMedia(o.modelType,String(o.modelId),[t],o.collection||"images")},async attachMany(t,o){await xt().attachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async detach(t,o){await xt().detachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async reorder(t,o){await xt().reorderMedia(t.modelType,String(t.modelId),o,t.collection||"images")},async fetchModelMedia(t){return await xt().fetchModelMedia(t.modelType,String(t.modelId),t.collection||"images")},getUrl(t,o){return xt().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 xt().deleteMedia(t)},async update(t,o){const r=await xt().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),Rn(o)}}}let ra=null;function m3(){return ra||(ra=Vr()),ra}function p3(){ra=null}const f3={apiBaseUrl:"/media-library-pro"};function Jo(){var a;return typeof document>"u"?null:((a=document.querySelector('meta[name="csrf-token"]'))==null?void 0:a.getAttribute("content"))||null}function Ci(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 Sr(a){const n={...f3,...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 s={Accept:"application/json",...n.headers},c=n.csrfToken||Jo();c&&(s["X-CSRF-TOKEN"]=c);const l={method:"POST",headers:s,body:r,credentials:"include"};i!=null&&i.signal&&(l.signal=i.signal);const d=await fetch(`${n.apiBaseUrl}/uploads`,l);if(!d.ok){const f=await d.json().catch(()=>({message:"Upload failed"}));throw new Error(f.message||`HTTP ${d.status}`)}const u=await d.json(),p=Ci(u);return i!=null&&i.onProgress&&i.onProgress(100),{media:p,uuid:u.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||Jo();r&&(i["X-CSRF-TOKEN"]=r);const s=new URLSearchParams;s.append("model_type",o.modelType),s.append("model_id",String(o.modelId)),o.collection&&s.append("collection",o.collection);try{const c=await fetch(`${n.apiBaseUrl}/media?${s}`,{method:"GET",headers:i,credentials:"include"});if(!c.ok)throw new Error(`HTTP ${c.status}`);return(await c.json()).map(Ci)}catch{return[]}},getUrl(o,i){var r;if(i){const s=(r=o.conversion_urls)==null?void 0:r[i];if(s)return s}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||Jo();r&&(i["X-CSRF-TOKEN"]=r);const s=await fetch(`${n.apiBaseUrl}/uploads/${o}`,{method:"DELETE",headers:i,credentials:"include"});if(!s.ok){const c=await s.json().catch(()=>({message:"Delete failed"}));throw new Error(c.message||`HTTP ${s.status}`)}},async update(o,i){const r={Accept:"application/json","Content-Type":"application/json",...n.headers},s=n.csrfToken||Jo();s&&(r["X-CSRF-TOKEN"]=s);const c=await fetch(`${n.apiBaseUrl}/uploads/${o}`,{method:"PATCH",headers:r,body:JSON.stringify(i),credentials:"include"});if(!c.ok){const d=await c.json().catch(()=>({message:"Update failed"}));throw new Error(d.message||`HTTP ${c.status}`)}const l=await c.json();return Ci(l)},configure(o){Object.assign(n,o)}}}let sa=null;function h3(){return sa||(sa=Sr()),sa}function v3(){sa=null}function Nc(a,n){switch(a){case"mediables":return Vr(n);case"spatie":return Sr(n);default:throw new Error(`Unknown adapter: ${a}`)}}function wa(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 Tc(a){var t;const n=a.split(".");return n.length>1?`.${(t=n.pop())==null?void 0:t.toLowerCase()}`:""}function Cr(a){return a.type.startsWith("image/")}async function Mc(a){return Cr(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 Bc(a,n){const t=[];if(n.maxFileSize&&a.size>n.maxFileSize&&t.push({field:"size",message:`File exceeds maximum size of ${wa(n.maxFileSize)}`,code:"MAX_FILE_SIZE"}),n.minFileSize&&a.size<n.minFileSize&&t.push({field:"size",message:`File is smaller than minimum size of ${wa(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=Tc(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(Cr(a)&&(n.maxDimensions||n.minDimensions)){const o=await Mc(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 _r(a={}){const n=e.ref(a.rules||{});function t(l){n.value=l}async function o(l){return Bc(l,n.value)}async function i(l){const d=new Map;return await Promise.all(l.map(async u=>{const p=await o(u);d.set(u,p)})),d}function r(l,d){return n.value.maxItems?d+l<=n.value.maxItems:!0}const s=e.computed(()=>{const l=[];return n.value.acceptedMimeTypes&&l.push(...n.value.acceptedMimeTypes),n.value.acceptedExtensions&&l.push(...n.value.acceptedExtensions),l.join(",")});function c(l){return!n.value.acceptedMimeTypes||n.value.acceptedMimeTypes.length===0?!0:n.value.acceptedMimeTypes.some(d=>d.endsWith("/*")?l.startsWith(d.slice(0,-1)):l===d)}return{rules:n,setRules:t,validateFile:o,validateFiles:i,canAddFiles:r,acceptString:s,isMimeTypeAllowed:c}}function g3(){return`upload-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function y3(a){if(a.type.startsWith("image/"))return URL.createObjectURL(a)}function Ic(a){const{adapter:n,maxConcurrent:t=3,rules:o,collection:i,onUploadStart:r,onUploadProgress:s,onUploadComplete:c,onUploadError:l,onQueueComplete:d}=a,u=e.ref(new Map),p=e.ref(new Set),f=o?{rules:o}:{},{validateFile:h}=_r(f);async function v(){if(p.value.size>=t)return;const x=Array.from(u.value.entries()).find(([A,M])=>M.status==="pending"&&!p.value.has(A));if(!x){Array.from(u.value.values()).every(M=>M.status==="completed"||M.status==="error")&&u.value.size>0&&(d==null||d());return}const[I,R]=x;await g(I,R)}async function g(x,I){p.value.add(x),I.status="uploading",I.abortController=new AbortController,u.value.set(x,{...I}),r==null||r(I);try{const R={onProgress:M=>{I.progress=M,u.value.set(x,{...I}),s==null||s(I)},signal:I.abortController.signal};i&&(R.collection=i);const A=await n.upload(I.file,R);I.status="completed",I.progress=100,I.media=A.media,u.value.set(x,{...I}),c==null||c(I,A.media)}catch(R){R.name==="AbortError"?u.value.delete(x):(I.status="error",I.error=R.message,u.value.set(x,{...I}),l==null||l(I,R))}finally{p.value.delete(x),delete I.abortController,v()}}async function E(x){var A;const I=Array.from(x),R=[];for(const M of I){const P=await h(M),H=g3(),B=y3(M),D={id:H,file:M,progress:0,status:P.valid?"pending":"error"};!P.valid&&((A=P.errors[0])!=null&&A.message)&&(D.error=P.errors[0].message),B&&(D.previewUrl=B),u.value.set(H,D);const X={media:null,clientId:H,name:M.name,order:0,upload:D,errors:P.errors};R.push(X)}for(let M=0;M<t;M++)v();return R}function T(x){const I=u.value.get(x);I&&(I.abortController&&I.abortController.abort(),I.previewUrl&&URL.revokeObjectURL(I.previewUrl),u.value.delete(x),p.value.delete(x),v())}async function _(x){const I=u.value.get(x);!I||I.status!=="error"||(I.status="pending",I.progress=0,delete I.error,u.value.set(x,{...I}),v())}function w(){for(const[x,I]of u.value.entries())(I.status==="completed"||I.status==="error")&&(I.previewUrl&&URL.revokeObjectURL(I.previewUrl),u.value.delete(x))}function m(){for(const x of u.value.values())x.abortController&&x.abortController.abort(),x.previewUrl&&URL.revokeObjectURL(x.previewUrl);u.value.clear(),p.value.clear()}function k(x){return u.value.get(x)}const N=e.computed(()=>p.value.size>0),S=e.computed(()=>p.value.size),y=e.computed(()=>Array.from(u.value.values()).filter(x=>x.status==="pending").length),C=e.computed(()=>u.value.size===0?!0:Array.from(u.value.values()).every(x=>x.status==="completed"||x.status==="error")),U=e.computed(()=>Array.from(u.value.values()));return{uploads:u,isUploading:N,activeCount:S,pendingCount:y,isComplete:C,addFiles:E,cancelUpload:T,retryUpload:_,clearCompleted:w,clearAll:m,getUpload:k,uploadsArray:U}}function Fc(a={}){const{enabled:n=!0,onReorder:t,onDragStart:o,onDragEnd:i,draggingClass:r="is-dragging",dropTargetClass:s="is-drop-target"}=a,c=e.ref({isDragging:!1,dragIndex:null,dropIndex:null,draggedItem:null}),l=e.ref(!1);let d=null;function u(_,w,m){n&&("dataTransfer"in _&&_.dataTransfer&&(_.dataTransfer.effectAllowed="move",_.dataTransfer.setData("text/plain",String(m))),d=_.target,d&&d.classList.add(r),c.value={isDragging:!0,dragIndex:m,dropIndex:m,draggedItem:w},l.value=!0,o==null||o(w,m))}function p(_,w){var m;if(!(!n||!c.value.isDragging)&&(_.preventDefault(),c.value.dropIndex!==w)){const k=document.querySelector(`.${s}`);k==null||k.classList.remove(s);const N=(m=_.target)==null?void 0:m.closest("[data-index]");N==null||N.classList.add(s),c.value.dropIndex=w}}function f(){if(!c.value.isDragging)return;const{dragIndex:_,dropIndex:w,draggedItem:m}=c.value;d&&d.classList.remove(r);const k=document.querySelector(`.${s}`);k==null||k.classList.remove(s),_!==null&&w!==null&&_!==w&&m&&(t==null||t({fromIndex:_,toIndex:w,item:m})),v(),i==null||i()}function h(){d&&d.classList.remove(r);const _=document.querySelector(`.${s}`);_==null||_.classList.remove(s),v(),i==null||i()}function v(){c.value={isDragging:!1,dragIndex:null,dropIndex:null,draggedItem:null},l.value=!1,d=null}function g(_,w,m){const k=[..._],[N]=k.splice(w,1);return k.splice(m,0,N),k.map((S,y)=>({...S,order:y}))}function E(_,w){return{draggable:n,"data-index":w,onDragstart:m=>u(m,_,w),onDragover:m=>p(m,w),onDragend:()=>f(),onDrop:m=>{m.preventDefault(),f()}}}function T(_){_.key==="Escape"&&c.value.isDragging&&h()}return e.onMounted(()=>{document.addEventListener("keydown",T)}),e.onUnmounted(()=>{document.removeEventListener("keydown",T),h()}),{dragState:c,isDragging:l,startDrag:u,handleDragOver:p,endDrag:f,cancelDrag:h,reorderItems:g,getDragProps:E}}function Za(a={}){const{initialItems:n=[],modelType:t,modelId:o,collection:i="images",maxItems:r,maxFileSize:s,acceptedMimeTypes:c,sortable:l=!0,disabled:d=!1,rules:u={},adapterType:p="mediables",adapter:f,maxConcurrentUploads:h=3,onChange:v,onUpload:g,onUploadComplete:E,onUploadError:T,onRemove:_,onReorder:w,onError:m,onReadyToSubmitChange:k}=a,N={maxItems:r,maxFileSize:s,acceptedMimeTypes:c,...u},S=f||Nc(p),y=e.ref([]),C=e.ref(!1),U=e.ref([]);function x(oe){if(oe.length===0)return[];const le=oe[0];return"media"in le&&"clientId"in le?oe:Yi(oe)}y.value=x(n);const{acceptString:I,canAddFiles:R}=_r({rules:N}),A=Ic({adapter:S,maxConcurrent:h,rules:N,collection:i,onUploadStart:oe=>{g==null||g(oe)},onUploadComplete:(oe,le)=>{const xe=y.value.findIndex(Ce=>Ce.clientId===oe.id);xe!==-1&&(y.value[xe]={...y.value[xe],media:le,name:le.name||le.file_name,upload:{...oe,status:"completed"}}),E==null||E(le)},onUploadError:(oe,le)=>{const xe=y.value.findIndex(Ce=>Ce.clientId===oe.id);xe!==-1&&(y.value[xe]={...y.value[xe],upload:{...oe,status:"error",error:le.message},errors:[{field:"upload",message:le.message,code:"UPLOAD_ERROR"}]}),T==null||T({file:oe.file,message:le.message})},onQueueComplete:()=>{v==null||v(y.value)}}),{dragState:M,getDragProps:P,reorderItems:H}=Fc({enabled:l&&!d,onReorder:oe=>{y.value=H(y.value,oe.fromIndex,oe.toIndex),w==null||w(y.value),v==null||v(y.value)}}),B=e.computed(()=>A.isUploading.value),D=e.computed(()=>!A.isUploading.value&&A.pendingCount.value===0),X=e.computed(()=>r?y.value.length>=r:!1),Z=e.computed(()=>Er(y.value)),ee=e.computed(()=>y.value.length),ge=e.computed(()=>r?Math.max(0,r-y.value.length):1/0);e.watch(D,oe=>{k==null||k(oe)});function Ee(oe){y.value=x(oe),v==null||v(y.value)}async function te(oe){if(d)return;const le=Array.from(oe);if(!R(le.length,y.value.length)){const Ze={field:"count",message:`Maximum ${r} files allowed`,code:"MAX_ITEMS"};U.value=[Ze],m==null||m([Ze]);return}const xe=await A.addFiles(le),Ce=y.value.length,dt=xe.map((Ze,vt)=>({...Ze,order:Ce+vt}));y.value=[...y.value,...dt],v==null||v(y.value)}function F(oe){d||(oe.upload&&(oe.upload.status==="uploading"||oe.upload.status==="pending")&&A.cancelUpload(oe.clientId),y.value=y.value.filter(le=>le.clientId!==oe.clientId),y.value=y.value.map((le,xe)=>({...le,order:xe})),_==null||_(oe),v==null||v(y.value))}function j(oe){const le=y.value.find(xe=>xe.clientId===oe);le&&F(le)}function de(){d||(A.clearAll(),y.value=[],v==null||v(y.value))}function ne(oe,le){d||!l||(y.value=H(y.value,oe,le),w==null||w(y.value),v==null||v(y.value))}function J(oe,le){if(d)return;const xe=y.value.findIndex(Ce=>Ce.clientId===oe);xe!==-1&&(y.value[xe]={...y.value[xe],...le},v==null||v(y.value))}function Be(oe){A.cancelUpload(oe),j(oe)}async function ce(oe){await A.retryUpload(oe)}async function re(){if(!t||!o)throw new Error("modelType and modelId are required for save()");const oe={modelType:t,modelId:o,collection:i},le=y.value.filter(xe=>xe.media&&!xe.markedForRemoval).map(xe=>xe.media.uuid);C.value=!0;try{await S.attachMany(le,oe),await S.reorder(oe,le)}finally{C.value=!1}}async function ke(){if(!t||!o)throw new Error("modelType and modelId are required for load()");const oe={modelType:t,modelId:o,collection:i};C.value=!0;try{const le=await S.fetchModelMedia(oe);y.value=Yi(le),v==null||v(y.value)}finally{C.value=!1}}return e.onMounted(()=>{t&&o&&n.length===0&&ke().catch(console.error)}),e.onUnmounted(()=>{A.clearAll()}),{items:y,setItems:Ee,addFiles:te,removeItem:F,removeItemById:j,clearAll:de,reorderItems:ne,updateItem:J,cancelUpload:Be,retryUpload:ce,save:re,load:ke,isLoading:C,isUploading:B,isReadyToSubmit:D,isAtMaxItems:X,errors:U,dragState:M,getDragProps:P,adapter:S,formValues:Z,acceptString:I,count:ee,remainingSlots:ge}}const w3=["aria-disabled"],b3=["accept","multiple","disabled"],k3={class:"media-dropzone__content"},x3={class:"media-dropzone__title"},E3={class:"media-dropzone__subtitle"},V3=["disabled"],S3={key:0,class:"media-dropzone__helper"},C3=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),s=e.computed(()=>({"media-dropzone":!0,"media-dropzone--drag-over":i.value,"media-dropzone--disabled":t.disabled})),c=e.computed(()=>{const g=[];return t.maxFileSize&&g.push(`Max size: ${wa(t.maxFileSize)}`),t.maxItems&&t.maxItems>1&&g.push(`Max files: ${t.maxItems}`),g.join(" • ")});function l(g){g.preventDefault(),!t.disabled&&(i.value=!0)}function d(g){g.preventDefault(),i.value=!1}function u(g){g.preventDefault()}function p(g){var T;if(g.preventDefault(),i.value=!1,t.disabled)return;const E=(T=g.dataTransfer)==null?void 0:T.files;E&&E.length>0&&o("files",E)}function f(){var g;t.disabled||(g=r.value)==null||g.click()}function h(g){const E=g.target,T=E.files;T&&T.length>0&&o("files",T),E.value=""}function v(g){(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),f())}return(g,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(s.value),role:"button",tabindex:"0","aria-disabled":g.disabled,"aria-label":"Upload files",onClick:f,onKeydown:v,onDragenter:l,onDragleave:d,onDragover:u,onDrop:p},[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",accept:g.accept,multiple:g.multiple,disabled:g.disabled,class:"media-dropzone__input",onChange:h},null,40,b3),e.createElementVNode("div",k3,[e.renderSlot(g.$slots,"icon",{},()=>[E[0]||(E[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",x3,[e.renderSlot(g.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(g.title),1)],!0)]),e.createElementVNode("p",E3,[e.renderSlot(g.$slots,"subtitle",{},()=>[e.createTextVNode(e.toDisplayString(g.subtitle),1)],!0)]),e.createElementVNode("button",{type:"button",class:"media-dropzone__button",disabled:g.disabled,onClick:e.withModifiers(f,["stop"])},[e.renderSlot(g.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(g.buttonText),1)],!0)],8,V3),c.value?(e.openBlock(),e.createElementBlock("p",S3,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)])],42,w3))}}),Nr=Me(C3,[["__scopeId","data-v-b1366c1e"]]),_3=["data-index"],N3={key:0,class:"media-item__drag-handle","aria-label":"Drag to reorder",role:"button",tabindex:"0"},T3={class:"media-item__thumbnail"},M3=["src","alt"],B3={key:1,class:"media-item__file-icon"},I3={key:2,class:"media-item__progress-overlay"},F3={class:"media-item__progress-text"},$3={key:3,class:"media-item__processing-overlay"},R3={key:4,class:"media-item__error-overlay"},D3={class:"media-item__info"},A3=["title"],U3={key:0,class:"media-item__size"},O3={key:1,class:"media-item__error-message"},L3={class:"media-item__actions"},z3=["disabled"],P3=["disabled"],j3=["disabled"],W3=["disabled"],Z3=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 w;return(w=t.item.upload)!=null&&w.previewUrl?t.item.upload.previewUrl:t.item.media?t.adapter.getThumbnailUrl(t.item.media):null}),s=e.computed(()=>{var w,m,k;return((w=t.item.upload)==null?void 0:w.status)==="uploading"||((m=t.item.upload)==null?void 0:m.status)==="pending"||((k=t.item.upload)==null?void 0:k.status)==="queued"}),c=e.computed(()=>{var w;return((w=t.item.upload)==null?void 0:w.status)==="processing"}),l=e.computed(()=>{var w;return((w=t.item.upload)==null?void 0:w.status)==="error"||t.item.errors&&t.item.errors.length>0}),d=e.computed(()=>{var w;return(w=t.item.upload)!=null&&w.error?t.item.upload.error:t.item.errors&&t.item.errors.length>0?t.item.errors[0].message:null}),u=e.computed(()=>{var w;return((w=t.item.upload)==null?void 0:w.progress)||0}),p=e.computed(()=>{var w;return t.item.name||((w=t.item.media)==null?void 0:w.file_name)||"Unknown file"}),f=e.computed(()=>{var S,y;const w=((S=t.item.media)==null?void 0:S.size)||((y=t.item.upload)==null?void 0:y.file.size);if(!w)return"";const m=1024,k=["Bytes","KB","MB","GB"],N=Math.floor(Math.log(w)/Math.log(m));return parseFloat((w/Math.pow(m,N)).toFixed(2))+" "+k[N]}),h=e.computed(()=>{var m,k;const w=((m=t.item.media)==null?void 0:m.mime_type)||((k=t.item.upload)==null?void 0:k.file.type);return w==null?void 0:w.startsWith("image/")}),v=e.computed(()=>({"media-item":!0,"media-item--uploading":s.value,"media-item--processing":c.value,"media-item--error":l.value,"media-item--disabled":t.disabled,"media-item--sortable":t.sortable}));function g(){t.disabled||o("remove",t.item)}function E(){t.disabled||o("edit",t.item)}function T(){t.disabled||o("retry",t.item)}function _(){t.disabled||o("cancel",t.item)}return(w,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(v.value),"data-index":w.index,onMouseenter:m[0]||(m[0]=k=>i.value=!0),onMouseleave:m[1]||(m[1]=k=>i.value=!1)},[w.sortable&&!w.disabled?(e.openBlock(),e.createElementBlock("div",N3,[...m[2]||(m[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",T3,[r.value&&h.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:r.value,alt:p.value,class:"media-item__image"},null,8,M3)):(e.openBlock(),e.createElementBlock("div",B3,[...m[3]||(m[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)])])),s.value?(e.openBlock(),e.createElementBlock("div",I3,[e.createElementVNode("div",{class:"media-item__progress-bar",style:e.normalizeStyle({width:`${u.value}%`})},null,4),e.createElementVNode("span",F3,e.toDisplayString(u.value)+"%",1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",$3,[...m[4]||(m[4]=[e.createElementVNode("div",{class:"media-item__spinner","aria-label":"Processing"},null,-1)])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",R3,[...m[5]||(m[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",D3,[e.createElementVNode("span",{class:"media-item__name",title:p.value},e.toDisplayString(p.value),9,A3),f.value?(e.openBlock(),e.createElementBlock("span",U3,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("span",O3,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",L3,[s.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-item__action media-item__action--cancel",disabled:w.disabled,"aria-label":"Cancel upload",onClick:_},[...m[6]||(m[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,z3)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"media-item__action media-item__action--retry",disabled:w.disabled,"aria-label":"Retry upload",onClick:T},[...m[7]||(m[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,P3)):e.createCommentVNode("",!0),w.showEdit&&w.item.media&&!s.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"media-item__action media-item__action--edit",disabled:w.disabled,"aria-label":"Edit",onClick:E},[...m[8]||(m[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,j3)):e.createCommentVNode("",!0),w.showRemove?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"media-item__action media-item__action--remove",disabled:w.disabled,"aria-label":"Remove",onClick:g},[...m[9]||(m[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,W3)):e.createCommentVNode("",!0)])],42,_3))}}),Tr=Me(Z3,[["__scopeId","data-v-ff81c9ec"]]),X3=["aria-label"],H3=["draggable","data-index","onDragstart","onDragover","onDragend","onDrop"],G3={key:0,class:"media-collection__footer"},J3={class:"media-collection__count"},Y3={key:0},K3={key:0,class:"media-collection__uploading"},q3=["name","value"],Q3=["name","value"],eV=["name","value"],tV=["name","value"],nV={key:3,class:"media-collection__errors",role:"alert","aria-live":"polite"},oV=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:B=>{o("update:modelValue",B),o("change",B)},onUpload:B=>{o("upload",B)},onUploadComplete:B=>{o("upload-complete",B)},onUploadError:B=>{o("upload-error",B)},onRemove:B=>{o("remove",B)},onReorder:B=>{o("reorder",B)},onError:B=>{o("validation-error",B)},onReadyToSubmitChange:B=>{o("is-ready-to-submit-change",B)}},{items:r,setItems:s,addFiles:c,removeItem:l,reorderItems:d,cancelUpload:u,retryUpload:p,isLoading:f,isUploading:h,isAtMaxItems:v,errors:g,dragState:E,getDragProps:T,adapter:_,formValues:w,acceptString:m,count:k,remainingSlots:N}=Za(i);e.provide("mediaAdapter",_),e.provide("mediaCollection",{items:r,addFiles:c,removeItem:l,reorderItems:d}),e.watch(()=>t.modelValue,B=>{B!==r.value&&s(B)},{deep:!0});const S=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!v.value),y=e.computed(()=>({"media-collection":!0,"media-collection--disabled":t.disabled,"media-collection--readonly":t.readonly,"media-collection--loading":f.value,"media-collection--has-items":r.value.length>0,"media-collection--dragging":E.value.isDragging}));function C(B){c(B)}function U(B){l(B)}function x(B){p(B.clientId)}function I(B){u(B.clientId)}function R(B){}function A(B,D,X){if(!t.sortable||t.disabled)return;const Z=T(D,X);Z.onDragstart&&Z.onDragstart(B)}function M(B,D){if(!t.sortable||t.disabled)return;B.preventDefault();const X=r.value[D],Z=T(X,D);Z.onDragover&&Z.onDragover(B)}function P(B,D){const X=T(B,D);X.onDragend&&X.onDragend()}function H(B,D){B.preventDefault();const X=r.value[D],Z=T(X,D);Z.onDrop&&Z.onDrop(B)}return(B,D)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(y.value)},[e.renderSlot(B.$slots,"dropzone",{addFiles:e.unref(c)},()=>[S.value?(e.openBlock(),e.createBlock(Nr,{key:0,accept:e.unref(m),multiple:B.maxItems!==1,disabled:B.disabled,"max-file-size":B.maxFileSize,"max-items":e.unref(N),onFiles:C},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(k)} media items`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r),(X,Z)=>e.renderSlot(B.$slots,"item",{key:X.clientId,item:X,index:Z,remove:()=>U(X)},()=>[e.createElementVNode("div",{class:e.normalizeClass(["media-collection__item-wrapper",{"media-collection__item-wrapper--drag-over":e.unref(E).dropIndex===Z}]),draggable:B.sortable&&!B.disabled,"data-index":Z,onDragstart:ee=>A(ee,X,Z),onDragover:ee=>M(ee,Z),onDragend:ee=>P(X,Z),onDrop:ee=>H(ee,Z)},[e.createVNode(Tr,{item:X,adapter:e.unref(_),disabled:B.disabled,sortable:B.sortable,"show-remove":!B.readonly,"show-edit":!1,index:Z,onRemove:U,onRetry:x,onCancel:I,onEdit:R},null,8,["item","adapter","disabled","sortable","show-remove","index"])],42,H3)],!0)),128))],8,X3)):S.value?e.createCommentVNode("",!0):e.renderSlot(B.$slots,"empty",{key:1},()=>[D[0]||(D[0]=e.createElementVNode("div",{class:"media-collection__empty"},[e.createElementVNode("p",null,"No files uploaded")],-1))],!0),e.renderSlot(B.$slots,"footer",{count:e.unref(k),isUploading:e.unref(h)},()=>[e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",G3,[e.createElementVNode("span",J3,[e.createTextVNode(e.toDisplayString(e.unref(k))+" "+e.toDisplayString(e.unref(k)===1?"file":"files")+" ",1),B.maxItems?(e.openBlock(),e.createElementBlock("span",Y3," / "+e.toDisplayString(B.maxItems)+" max",1)):e.createCommentVNode("",!0)]),e.unref(h)?(e.openBlock(),e.createElementBlock("span",K3," Uploading... ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],!0),B.generateFormFields?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,Z)=>(e.openBlock(),e.createElementBlock("input",{key:`${B.name}-${X.uuid}`,type:"hidden",name:`${B.name}[${Z}][uuid]`,value:X.uuid},null,8,q3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,Z)=>(e.openBlock(),e.createElementBlock("input",{key:`${B.name}-${X.uuid}-name`,type:"hidden",name:`${B.name}[${Z}][name]`,value:X.name},null,8,Q3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,Z)=>(e.openBlock(),e.createElementBlock("input",{key:`${B.name}-${X.uuid}-order`,type:"hidden",name:`${B.name}[${Z}][order]`,value:X.order},null,8,eV))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,Z)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`${B.name}-${X.uuid}-props`},[X.custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${B.name}[${Z}][custom_properties]`,value:JSON.stringify(X.custom_properties)},null,8,tV)):e.createCommentVNode("",!0)],64))),128))],64)):e.createCommentVNode("",!0),e.unref(g).length>0?(e.openBlock(),e.createElementBlock("div",nV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),X=>(e.openBlock(),e.createElementBlock("p",{key:X.code||X.message,class:"media-collection__error"},e.toDisplayString(X.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),aV=Me(oV,[["__scopeId","data-v-10a5bfff"]]);function Mr(a={}){const{initialItem:n,onChange:t,onReplace:o,onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d,...u}=a,f={...u,initialItems:n?[n]:[],maxItems:1,sortable:!1,onChange:S=>{t==null||t(S[0]||null)},onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d},h=Za(f),v=e.computed(()=>h.items.value[0]||null),g=e.computed(()=>v.value!==null),E=e.computed(()=>h.formValues.value[0]||null);function T(S){S===null?h.clearAll():h.setItems([S])}async function _(S){const y=v.value;y&&h.removeItem(y),await h.addFiles([S])}function w(){v.value&&h.removeItem(v.value)}async function m(S){const y=v.value;y&&h.removeItem(y),await h.addFiles([S]);const C=h.items.value[0];C&&(o==null||o(y,C))}function k(){var S;(S=v.value)!=null&&S.upload&&h.cancelUpload(v.value.clientId)}async function N(){var S,y;((y=(S=v.value)==null?void 0:S.upload)==null?void 0:y.status)==="error"&&await h.retryUpload(v.value.clientId)}return{item:v,setItem:T,addFile:_,removeItem:w,replaceItem:m,cancelUpload:k,retryUpload:N,save:h.save,load:h.load,isLoading:h.isLoading,isUploading:h.isUploading,isReadyToSubmit:h.isReadyToSubmit,hasItem:g,errors:h.errors,adapter:h.adapter,formValue:E,acceptString:h.acceptString}}const iV=["accept","disabled"],rV={class:"media-attachment__preview"},sV=["name","value"],lV=["name","value"],cV=["name","value"],dV=["name","value"],uV={key:4,class:"media-attachment__errors",role:"alert","aria-live":"polite"},mV=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:x=>{o("update:modelValue",x),o("change",x)},onUpload:x=>{o("upload",x)},onUploadComplete:x=>{o("upload-complete",x)},onUploadError:x=>{o("upload-error",x)},onRemove:x=>{o("remove",x)},onReplace:(x,I)=>{o("replace",I)},onError:x=>{o("validation-error",x)},onReadyToSubmitChange:x=>{o("is-ready-to-submit-change",x)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:p,retryUpload:f,isLoading:h,hasItem:v,errors:g,adapter:E,formValue:T,acceptString:_}=Mr(r);e.provide("mediaAdapter",E),e.watch(()=>t.modelValue,x=>{x!==s.value&&c(x)},{deep:!0});const w=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!v.value),m=e.computed(()=>({"media-attachment":!0,"media-attachment--disabled":t.disabled,"media-attachment--readonly":t.readonly,"media-attachment--loading":h.value,"media-attachment--has-item":v.value}));function k(x){x.length>0&&l(x[0])}function N(){var x;(x=i.value)==null||x.click()}function S(x){const I=x.target,R=I.files;R&&R.length>0&&u(R[0]),I.value=""}function y(x){d()}function C(x){f()}function U(x){p()}return(x,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(m.value)},[e.createElementVNode("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:e.unref(_),disabled:x.disabled,class:"media-attachment__hidden-input",onChange:S},null,40,iV),w.value?e.renderSlot(x.$slots,"dropzone",{key:0,addFile:e.unref(l)},()=>[e.createVNode(Nr,{accept:e.unref(_),multiple:!1,disabled:x.disabled,"max-file-size":x.maxFileSize,onFiles:k},null,8,["accept","disabled","max-file-size"])],!0):e.unref(v)&&e.unref(s)?e.renderSlot(x.$slots,"preview",{key:1,item:e.unref(s),remove:e.unref(d),replace:N},()=>[e.createElementVNode("div",rV,[e.createVNode(Tr,{item:e.unref(s),adapter:e.unref(E),disabled:x.disabled,sortable:!1,"show-remove":!x.readonly,"show-edit":!1,onRemove:y,onRetry:C,onCancel:U},null,8,["item","adapter","disabled","show-remove"]),x.showReplaceButton&&!x.readonly&&!x.disabled&&e.unref(s).media?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-attachment__replace-button",onClick:N},[...I[0]||(I[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(x.$slots,"empty",{key:2},()=>[I[1]||(I[1]=e.createElementVNode("div",{class:"media-attachment__empty"},[e.createElementVNode("p",null,"No file selected")],-1))],!0),x.generateFormFields&&e.unref(T)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("input",{type:"hidden",name:`${x.name}[uuid]`,value:e.unref(T).uuid},null,8,sV),e.createElementVNode("input",{type:"hidden",name:`${x.name}[name]`,value:e.unref(T).name},null,8,lV),e.createElementVNode("input",{type:"hidden",name:`${x.name}[order]`,value:e.unref(T).order},null,8,cV),e.unref(T).custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${x.name}[custom_properties]`,value:JSON.stringify(e.unref(T).custom_properties)},null,8,dV)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.unref(g).length>0?(e.openBlock(),e.createElementBlock("div",uV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),R=>(e.openBlock(),e.createElementBlock("p",{key:R.code||R.message,class:"media-attachment__error"},e.toDisplayString(R.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),pV=Me(mV,[["__scopeId","data-v-26911174"]]),$c={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"}},fV=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:x=>{i("update:modelValue",x),i("change",x)},onUpload:x=>{i("upload",x)},onUploadComplete:x=>{i("upload-complete",x)},onUploadError:x=>{i("upload-error",x)},onRemove:x=>{i("remove",x)},onReorder:x=>{i("reorder",x)},onError:x=>{i("validation-error",x)},onReadyToSubmitChange:x=>{i("is-ready-to-submit-change",x)}},{items:s,setItems:c,addFiles:l,removeItem:d,reorderItems:u,updateItem:p,cancelUpload:f,retryUpload:h,isLoading:v,isUploading:g,isReadyToSubmit:E,isAtMaxItems:T,errors:_,dragState:w,getDragProps:m,adapter:k,formValues:N,acceptString:S}=Za(r);e.provide("mediaAdapter",k),e.provide("mediaCollection",{items:s,addFiles:l,removeItem:d,reorderItems:u}),e.watch(()=>o.modelValue,x=>{x!==s.value&&c(x)},{deep:!0});const y=e.computed(()=>({...$c,...o.labels})),C=e.computed(()=>({accept:S.value,multiple:o.maxItems!==1,disabled:o.disabled||o.readonly||T.value})),U=e.computed(()=>({items:s.value,isLoading:v.value,isUploading:g.value,isReadyToSubmit:E.value,isAtMaxItems:T.value,errors:_.value,addFiles:l,removeItem:d,reorderItems:u,clearAll:()=>{s.value.forEach(x=>d(x))},cancelUpload:f,retryUpload:h,labels:y.value,dropzoneProps:C.value}));return n({items:s,addFiles:l,removeItem:d,reorderItems:u,updateItem:p,cancelUpload:f,retryUpload:h,isLoading:v,isUploading:g,isReadyToSubmit:E,isAtMaxItems:T,errors:_,dragState:w,getDragProps:m,adapter:k,formValues:N,acceptString:S}),(x,I)=>e.renderSlot(x.$slots,"default",e.normalizeProps(e.guardReactiveProps(U.value)))}}),hV=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:y=>{i("update:modelValue",y),i("change",y)},onUpload:y=>{i("upload",y)},onUploadComplete:y=>{i("upload-complete",y)},onUploadError:y=>{i("upload-error",y)},onRemove:y=>{i("remove",y)},onReplace:(y,C)=>{i("replace",C)},onError:y=>{i("validation-error",y)},onReadyToSubmitChange:y=>{i("is-ready-to-submit-change",y)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:p,retryUpload:f,isLoading:h,isUploading:v,isReadyToSubmit:g,hasItem:E,errors:T,adapter:_,formValue:w,acceptString:m}=Mr(r);e.provide("mediaAdapter",_),e.watch(()=>o.modelValue,y=>{y!==s.value&&c(y)},{deep:!0});const k=e.computed(()=>({...$c,...o.labels})),N=e.computed(()=>({accept:m.value,multiple:!1,disabled:o.disabled||o.readonly||E.value})),S=e.computed(()=>({item:s.value,hasItem:E.value,isLoading:h.value,isUploading:v.value,isReadyToSubmit:g.value,errors:T.value,addFile:l,removeItem:d,replaceItem:u,cancelUpload:p,retryUpload:f,labels:k.value,dropzoneProps:N.value}));return n({item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:p,retryUpload:f,isLoading:h,isUploading:v,isReadyToSubmit:g,hasItem:E,errors:T,adapter:_,formValue:w,acceptString:m}),(y,C)=>e.renderSlot(y.$slots,"default",e.normalizeProps(e.guardReactiveProps(S.value)))}}),vV=["name","value"],gV=["name","value"],yV=["name","value"],wV=["name","value"],bV=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(()=>Er(t.value));function i(c,l){var u;const d=((u=o.value[c])==null?void 0:u.uuid)||"";return`${n.name}[${d}][${l}]`}function r(c,l){return`${n.name}[${c}][${l}]`}function s(c,l){return n.format==="spatie"?i(c,l):r(c,l)}return(c,l)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(d,u)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.uuid},[e.createElementVNode("input",{type:"hidden",name:s(u,"uuid"),value:d.uuid},null,8,vV),e.createElementVNode("input",{type:"hidden",name:s(u,"name"),value:d.name},null,8,gV),e.createElementVNode("input",{type:"hidden",name:s(u,"order"),value:d.order},null,8,yV),d.custom_properties&&Object.keys(d.custom_properties).length>0?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:s(u,"custom_properties"),value:JSON.stringify(d.custom_properties)},null,8,wV)):e.createCommentVNode("",!0)],64))),128))}}),kV=["data-testid"],xV=["data-testid"],EV=["id"],VV=["value","maxlength","disabled","aria-labelledby","placeholder","data-testid","onInput"],SV=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,s){const c=s.target;c instanceof HTMLInputElement&&o("update:items",t.items.map((l,d)=>d!==r?l:{...l,caption:c.value===""?null:c.value}))}return(r,s)=>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,(c,l)=>(e.openBlock(),e.createElementBlock("div",{key:c._key??c.id??`${c.url}:${l}`,class:"media-attachment-metadata-fields__row","data-testid":`${r.testIdPrefix}-${l}`},[e.createElementVNode("p",{id:`${r.testIdPrefix}-label-${l}`,class:"media-attachment-metadata-fields__label"},e.toDisplayString(r.label)+" for "+e.toDisplayString(r.getItemLabel(c,l)),9,EV),e.createElementVNode("input",{value:c.caption??"",type:"text",class:"media-attachment-metadata-fields__input",maxlength:r.maxLength,disabled:r.disabled,"aria-labelledby":`${r.testIdPrefix}-label-${l}`,placeholder:r.placeholder,"data-testid":`input-${r.testIdPrefix}-${l}`,onInput:d=>i(l,d)},null,40,VV)],8,xV))),128))],8,kV)):e.createCommentVNode("",!0)}}),CV=Me(SV,[["__scopeId","data-v-a153768a"]]);exports.AlbumBrowser=_c;exports.AlbumManager=K4;exports.AlbumMediaGrid=c3;exports.AlbumTree=Cc;exports.ArrayBufferTarget=ar;exports.ExistingMediaSelector=Rp;exports.ImageEditor=rl;exports.ImageEditorModal=sl;exports.LiveStreamManager=V4;exports.ManagedMediaGallery=lu;exports.MediaAttachment=pV;exports.MediaAttachmentMetadataFields=CV;exports.MediaCollection=aV;exports.MediaCollectionDropzone=Nr;exports.MediaCollectionItem=Tr;exports.MediaWorkspace=au;exports.ModelMediaManager=op;exports.Muxer=Il;exports.VideoEditor=Ji;exports.VideoEditorDialog=s2;exports.VideoEditorSimple=B2;exports.VideoExportPanel=dx;exports.VideoJobClient=kr;exports.VideoPlayer=Ec;exports.VideoTimeline=tk;exports.VideoToolsPanel=Wk;exports.VideoUploader=Kx;exports._sfc_main=fV;exports._sfc_main$1=hV;exports._sfc_main$2=bV;exports.applyTemporaryMediaStoreConfig=al;exports.configureMediaStore=Rn;exports.createAdapter=Nc;exports.createEmptyEditorState=Wd;exports.createImageEditor=u3;exports.createMediablesAdapter=Vr;exports.createSpatieAdapter=Sr;exports.deserializeEditorState=jd;exports.formatFileSize=wa;exports.fromMediaArray=Yi;exports.getFileExtension=Tc;exports.getImageDimensions=Mc;exports.getMediablesAdapter=m3;exports.getSpatieAdapter=h3;exports.isImageFile=Cr;exports.normalizeEditorState=Ki;exports.normalizeRecipeForServerRender=Pb;exports.recipeHasServerRenderableEdits=zb;exports.recipeHasUnsupportedServerEdits=xc;exports.resetMediablesAdapter=p3;exports.resetSpatieAdapter=v3;exports.restoreMediaStoreConfig=ol;exports.serializeEditorState=tl;exports.snapshotMediaStoreConfig=nl;exports.toFormValues=Er;exports.useAdminMediaStore=il;exports.useAlbumDragDrop=Sc;exports.useAlbumStore=Wa;exports.useAlbums=Vc;exports.useGlobalImageEditor=d3;exports.useImageEditorModal=xr;exports.useMediaAttachment=Mr;exports.useMediaCollection=Za;exports.useMediaDragSort=Fc;exports.useMediaStore=xt;exports.useMediaUploadQueue=Ic;exports.useMediaValidation=_r;exports.validateFile=Bc;
|
|
342
|
-
//# sourceMappingURL=index-
|
|
341
|
+
`+r):o.stack=r}catch{}}throw o}}_request(n,t){typeof n=="string"?(t=t||{},t.url=n):t=n||{},t=xn(this.defaults,t);const{transitional:o,paramsSerializer:i,headers:r}=t;o!==void 0&&ia.assertOptions(o,{silentJSONParsing:zt.transitional(zt.boolean),forcedJSONParsing:zt.transitional(zt.boolean),clarifyTimeoutError:zt.transitional(zt.boolean)},!1),i!=null&&(G.isFunction(i)?t.paramsSerializer={serialize:i}:ia.assertOptions(i,{encode:zt.function,serialize:zt.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ia.assertOptions(t,{baseUrl:zt.spelling("baseURL"),withXsrfToken:zt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=r&&G.merge(r.common,r[t.method]);r&&G.forEach(["delete","get","head","post","put","patch","common"],v=>{delete r[v]}),t.headers=bt.concat(s,r);const c=[];let l=!0;this.interceptors.request.forEach(function(g){typeof g.runWhen=="function"&&g.runWhen(t)===!1||(l=l&&g.synchronous,c.unshift(g.fulfilled,g.rejected))});const d=[];this.interceptors.response.forEach(function(g){d.push(g.fulfilled,g.rejected)});let u,p=0,f;if(!l){const v=[Hs.bind(this),void 0];for(v.unshift(...c),v.push(...d),f=v.length,u=Promise.resolve(t);p<f;)u=u.then(v[p++],v[p++]);return u}f=c.length;let h=t;for(p=0;p<f;){const v=c[p++],g=c[p++];try{h=v(h)}catch(E){g.call(this,E);break}}try{u=Hs.call(this,h)}catch(v){return Promise.reject(v)}for(p=0,f=d.length;p<f;)u=u.then(d[p++],d[p++]);return u}getUri(n){n=xn(this.defaults,n);const t=fc(n.baseURL,n.url,n.allowAbsoluteUrls);return cc(t,n.params,n.paramsSerializer)}};G.forEach(["delete","get","head","options"],function(n){bn.prototype[n]=function(t,o){return this.request(xn(o||{},{method:n,url:t,data:(o||{}).data}))}});G.forEach(["post","put","patch"],function(n){function t(o){return function(r,s,c){return this.request(xn(c||{},{method:n,headers:o?{"Content-Type":"multipart/form-data"}:{},url:r,data:s}))}}bn.prototype[n]=t(),bn.prototype[n+"Form"]=t(!0)});let Pw=class bc{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 s=new Promise(c=>{o.subscribe(c),r=c}).then(i);return s.cancel=function(){o.unsubscribe(r)},s},n(function(r,s,c){o.reason||(o.reason=new Xn(r,s,c),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 bc(function(i){n=i}),cancel:n}}};function jw(a){return function(t){return a.apply(null,t)}}function Ww(a){return G.isObject(a)&&a.isAxiosError===!0}const Gi={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(Gi).forEach(([a,n])=>{Gi[n]=a});function kc(a){const n=new bn(a),t=Kl(bn.prototype.request,n);return G.extend(t,bn.prototype,n,{allOwnKeys:!0}),G.extend(t,n,null,{allOwnKeys:!0}),t.create=function(i){return kc(xn(a,i))},t}const Ye=kc(Bo);Ye.Axios=bn;Ye.CanceledError=Xn;Ye.CancelToken=Pw;Ye.isCancel=mc;Ye.VERSION=wc;Ye.toFormData=La;Ye.AxiosError=Ie;Ye.Cancel=Ye.CanceledError;Ye.all=function(n){return Promise.all(n)};Ye.spread=jw;Ye.isAxiosError=Ww;Ye.mergeConfig=xn;Ye.AxiosHeaders=bt;Ye.formToJSON=a=>uc(G.isHTMLForm(a)?new FormData(a):a);Ye.getAdapter=yc.getAdapter;Ye.HttpStatusCode=Gi;Ye.default=Ye;const{Axios:BV,AxiosError:IV,CanceledError:FV,isCancel:$V,CancelToken:RV,VERSION:DV,all:AV,Cancel:UV,isAxiosError:OV,spread:LV,toFormData:zV,AxiosHeaders:PV,HttpStatusCode:jV,formToJSON:WV,getAdapter:ZV,mergeConfig:XV}=Ye;class kr{constructor(n="/api/v1"){this.eventSource=null,this.progressCallbacks=new Map,this.api=Ye.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((s,c)=>{const l=setInterval(async()=>{try{const d=await this.getJob(n);t==null||t(d.progress,d.status),d.status==="completed"?(clearInterval(l),s(d)):d.status==="failed"?(clearInterval(l),c(new Error(d.error_message??"Render job failed"))):Date.now()-r>i&&(clearInterval(l),c(new Error("Render job timed out")))}catch(d){clearInterval(l),c(d)}},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{await this.api.delete(`/video/jobs/${n}`),this.unsubscribeFromProgress(n)}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")&&(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 s=t.started_at??t.startedAt;typeof s=="string"&&s!==""&&(o.started_at=s);const c=t.completed_at??t.completedAt;return typeof c=="string"&&c!==""&&(o.completed_at=c),o}}new kr;const Zw={key:0,class:"mobile-layout"},Xw={class:"mobile-toolbar"},Hw={class:"mobile-toolbar-left"},Gw=["aria-label"],Jw={class:"mobile-toolbar-right"},Yw=["disabled"],Kw=["disabled"],qw={class:"preview-section"},Qw={key:0,class:"mobile-export-overlay"},eb={class:"mobile-export-progress"},tb={class:"mobile-export-bar"},nb={class:"mobile-timeline-zoom"},ob={key:1,class:"desktop-layout"},ab={class:"desktop-main-row"},ib={class:"preview-panel"},rb={class:"fit-toggle"},sb={class:"editor-content"},lb={class:"editor-tabs"},cb={class:"tab-header"},db=["onClick"],ub={class:"tab-content-area"},mb={class:"filter-controls"},pb={class:"text-controls"},fb={class:"transition-controls"},hb={class:"audio-controls"},vb={class:"adjustments-controls"},gb={key:1,class:"no-filter-selected"},yb={class:"export-controls"},wb={key:0,"data-testid":"video-export-status-completed"},bb={key:1,"data-testid":"video-export-status-message",class:"export-status-message"},kb={class:"desktop-timeline-row"},xb={class:"timeline-zoom"},Eb=["value"],Vb={class:"zoom-readout"},Sb={key:0,class:"dev-editor-controls","data-testid":"video-editor-dev-controls"},Cb={class:"dev-editor-row"},_b={class:"dev-editor-field"},Nb={class:"dev-editor-field"},Tb=["disabled"],Mb=["disabled"],Bb=["disabled"],Ib={class:"dev-editor-row"},Fb={class:"dev-editor-field dev-editor-field--wide"},$b=["value"],Rb=["disabled"],Db=["disabled"],Ab=["disabled"],Ub=["disabled"],Ob=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 b=o.media.uuid??o.media.id;return typeof b=="string"&&b.trim()!==""?b.trim():void 0}),s=e.computed(()=>{const b=typeof o.mediaUuid=="string"?o.mediaUuid.trim():"";return b!==""?b:r.value??`temp-${Date.now()}`}),c=e.ref(typeof window<"u"?window.innerWidth<768:!1),l=e.ref("filters"),d=e.ref("filters"),u=e.computed(()=>{const b=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},V=o.featureFlags;return V?{filters:typeof V.filters=="boolean"?V.filters:b.filters,adjustments:typeof V.adjustments=="boolean"?V.adjustments:b.adjustments,text:typeof V.text=="boolean"?V.text:b.text,transitions:typeof V.transitions=="boolean"?V.transitions:b.transitions,audio:typeof V.audio=="boolean"?V.audio:b.audio,export:typeof V.export=="boolean"?V.export:b.export}:b}),p=e.computed(()=>c.value?l.value:d.value),f=e.computed(()=>p.value==="filters"||E.value),h=e.computed(()=>p.value!=="filters"&&!E.value),v=e.ref(null),g=e.ref(null),E=e.ref(!1),T=e.computed(()=>c.value?v.value:g.value);function _(b){return b==="contain"||b==="cover"||b==="none"}function w(b){if(!(b!=null&&b.metadata))return null;const V=b.metadata.fit_mode;return _(V)?V:null}const m=e.shallowRef(null),k=e.ref(null),N=e.ref(w(o.initialRecipe)??"contain"),S=e.ref(null),y=e.ref(null),C=e.ref(null),U=e.ref(!1),x=new Map,I=e.ref([]),R=e.ref([]),A=e.ref([]),M=e.ref([]),P=e.ref(1),H=()=>{c.value=window.innerWidth<768},B=[{id:"filters",label:"Filters",icon:sn},{id:"adjustments",label:"Adjust",icon:Cu},{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:vo}],D=[{id:"filters",label:"Filters"},{id:"adjustments",label:"Adjustments"},{id:"text",label:"Text"},{id:"transitions",label:"Transitions"},{id:"audio",label:"Audio"},{id:"export",label:"Export"}],X=e.computed(()=>B.filter(b=>u.value[b.id])),Z=e.computed(()=>D.filter(b=>u.value[b.id])),ee=e.computed(()=>{var b,V;return((b=Z.value[0])==null?void 0:b.id)??((V=X.value[0])==null?void 0:V.id)??"filters"});e.watch(u,b=>{b[l.value]||(l.value=ee.value),b[d.value]||(d.value=ee.value)},{immediate:!0,deep:!0}),e.watch(ee,b=>{u.value[l.value]||(l.value=b),u.value[d.value]||(d.value=b)},{immediate:!0}),e.watch(u,b=>{b.export||(l.value==="export"&&(l.value=ee.value),d.value==="export"&&(d.value=ee.value))},{immediate:!0,deep:!0});const ge=e.computed(()=>typeof window>"u"?!1:window.__MEDIABLES_EDITOR_DEV__===!0),{currentFrame:Ee,playheadPosition:te,timelineClips:F,totalDuration:j,hasChanges:de,isPlaying:ne,selectedClip:J,zoomLevel:Be,playbackSpeed:ce,handleTrim:re,handleSplit:ke,handleClipSelect:oe,splitAtPlayhead:le,deleteSelectedClip:xe,duplicateSelectedClip:Ce,setZoomLevel:dt,moveClip:Ze,setFilters:vt,setTextOverlays:Y,setAudioTracks:me,saveDraft:ae,clearHasChanges:ve,resetChanges:Ne,generateRecipe:Ve,zoomIn:Q,zoomOut:he,fitToWindow:L,togglePlayback:q,setPlaying:se,seekTo:fe,frameForward:Fe,frameBackward:He,skipToStart:Ge,skipToEnd:et,setPlaybackSpeed:je,updateSourceDuration:Tt}=ny(s.value,o.initialRecipe,o.media),{videoCompatibleFilters:Xa,activeFilters:tt,selectedFilter:Br,previewFilter:Io,previewFilterEffect:Ir,applyFilter:Fr,updateFilterParams:Rc,removeFilter:Dc,clearAllFilters:$r,setActiveFilters:Ac}=my();function Hn(b){var W,K;const V=((W=J.value)==null?void 0:W.id)??((K=F.value[0])==null?void 0:K.id);V&&(U.value=!0,typeof b=="object"&&b.id?Fr(b.id):typeof b=="string"&&Fr(b),vt(tt.value),m.value?m.value.setClipFilters(V,tt.value):x.set(V,[...tt.value]),oe(V),U.value=!1,Ut())}function Uc(){var V,W;const b=((V=J.value)==null?void 0:V.id)??((W=F.value[0])==null?void 0:W.id);b&&oe(b)}function Rr(b){const V=tt.value.find(W=>W.filterId===b);V&&Dc(V.id)}const Gn=e.computed(()=>Xa.value.map(V=>{var K;const W=[];if(V.controls&&V.controls.length>0)for(const ue of V.controls){const ie=ue.type;if(ie==="button"||ie==="text"||ie==="range")continue;const pe={id:ue.property||ue.id,label:ue.label||ue.id,type:ie,default:ue.default??(ie==="toggle"?!1:ie==="color"?"#ffffff":0)};ie==="slider"&&(pe.min=ue.min??0,pe.max=ue.max??1,pe.step=ue.step??.01),ie==="select"&&ue.options&&(pe.options=ue.options),W.push(pe)}else if(V.paramRanges){const ue=Object.entries(V.paramRanges);for(const[ie,pe]of ue){const Ue=ie.replace(/[-_]/g," ").replace(/\b\w/g,Ot=>Ot.toUpperCase()),ft=(K=V.defaultParams)==null?void 0:K[ie],Yt=(pe.min+pe.max)/2;W.push({id:ie,label:Ue,min:pe.min,max:pe.max,step:pe.step??.01,default:typeof ft=="number"?ft:Yt})}}return{id:V.id,name:V.name,category:V.category,params:W}})),Cn=e.ref("0.00"),_n=e.ref("0.00"),en=e.ref("");e.watch(Gn,b=>{if(b.length===0){en.value="";return}b.some(W=>W.id===en.value)||(en.value=b[0].id)},{immediate:!0});const ot=e.ref(!1),Xe=e.ref(0),Gt=e.ref(!1),We=e.ref(null),Mt=e.ref(null);let Fo=null,Ct=!1,Jt=null;const Ha=e.computed(()=>{const b=new Map;return tt.value.forEach(V=>b.set(V.filterId,V)),b}),Oc=e.computed(()=>{var b,V;return Ee.value?Ee.value:((b=o.media)==null?void 0:b.thumbnail_url)||((V=o.media)==null?void 0:V.url)}),Rt=e.ref("");e.watch(()=>{var b,V;return{file:(b=o.media)==null?void 0:b.file,url:(V=o.media)==null?void 0:V.url}},(b,V,W)=>{var ue,ie;const K=Rt.value;W(()=>{K&&K.startsWith("blob:")&&URL.revokeObjectURL(K)}),(ue=o.media)!=null&&ue.file?Rt.value=URL.createObjectURL(o.media.file):(ie=o.media)!=null&&ie.url?Rt.value=o.media.url:Rt.value=""},{immediate:!0}),e.onUnmounted(()=>{Rt.value&&Rt.value.startsWith("blob:")&&URL.revokeObjectURL(Rt.value)});const Ga=e.computed(()=>Rt.value),Dr=e.computed(()=>{if(!o.media)return null;const{file:b,...V}=o.media;return{...V,url:Rt.value}}),Ar=e.computed(()=>{var V;const b=(V=o.media)==null?void 0:V.url;return!!(b&&/^https?:/i.test(b))}),Ur=e.computed(()=>tt.value),Or=e.computed(()=>te.value),Lc=e.computed(()=>!!J.value&&te.value>0),zc=e.computed(()=>!!J.value&&F.value.length>1),Ja=e.ref(0),Dt=e.computed(()=>{try{const b=j.value??j;return b&&typeof b=="number"&&b>0?b:Ja.value}catch{return Ja.value}}),Nn=e.ref(),Ya=e.ref(),Ka=e.ref(),qa=e.ref(),$o=e.ref(0),cn=e.ref(!1);let gt=null,At=null;e.watch(Dt,b=>{var W;if(cn.value||!b||b<=0)return;const V=$o.value||((W=Nn.value)==null?void 0:W.clientWidth)||0;V>0&&(cn.value=!0,L(V))}),e.watch($o,b=>{if(cn.value||!b||b<=0)return;Dt.value>0&&(cn.value=!0,L(b))});function Tn(b){return Number.isFinite(b)?b.toFixed(2):"0.00"}function Lr(b){const V=Number(b);return Number.isFinite(V)?V:null}function Pc(b){b&&(Cn.value=Tn(b.sourceIn),_n.value=Tn(b.sourceOut))}e.watch(()=>{var b,V,W;return[(b=J.value)==null?void 0:b.id,(V=J.value)==null?void 0:V.sourceIn,(W=J.value)==null?void 0:W.sourceOut]},()=>{Pc(J.value)},{immediate:!0});function zr(b){const V=J.value;if(!V)return;const W=1/30,K=V.sourceMinIn??0,ue=V.sourceMaxOut??Dt.value,ie=V.sourceIn+(te.value-V.timelineStart);if(b==="start"){const Ue=Math.max(K,Math.min(ie,V.sourceOut-W));Cn.value=Tn(Ue);return}const pe=Math.max(V.sourceIn+W,Math.min(ie,ue));_n.value=Tn(pe)}function jc(){const b=J.value;if(!b)return;const V=Lr(Cn.value),W=Lr(_n.value);if(V===null||W===null)return;const K=1/30,ue=b.sourceMinIn??0,ie=b.sourceMaxOut??Dt.value,pe=Math.max(ue,Math.min(V,ie-K)),Ue=Math.max(pe+K,Math.min(W,ie));re(b.id,"start",pe),re(b.id,"end",Ue),Cn.value=Tn(pe),_n.value=Tn(Ue),J.value&&fe(J.value.timelineStart)}function Wc(){en.value.trim()!==""&&Hn(en.value)}function Zc(){var b;$r(),vt(tt.value),(b=J.value)!=null&&b.id&&(m.value?m.value.setClipFilters(J.value.id,tt.value):x.set(J.value.id,[...tt.value])),Ut()}function Pr(b,V,W){var ue,ie;const K=tt.value.find(pe=>pe.filterId===b);K?(K.params={...K.params,[V]:W},vt(tt.value),m.value&&((ue=J.value)!=null&&ue.id)?m.value.setClipFilters(J.value.id,tt.value):(ie=J.value)!=null&&ie.id&&x.set(J.value.id,[...tt.value]),Ut(),Uc()):Io.value&&Io.value.filterId===b&&(Io.value.params={...Io.value.params||{},[V]:W})}function jr(b){fe(b)}function Wr(b){!b||!Number.isFinite(b.timestamp)||fe(b.timestamp)}function Zr(b){se(b)}function Ro(b){!Number.isFinite(b)||b<=0||(Ja.value=b,Tt(b))}function Xc(){var V;const b=$o.value||((V=Nn.value)==null?void 0:V.clientWidth)||800;L(b)}function Qa(b){cn.value=!0,dt(b)}function Hc(){cn.value=!0,Q()}function Gc(){cn.value=!0,he()}function Jc(b){const V=b.target,W=Number(V.value);Qa(W)}function Xr(b){const V=Math.min(600,Math.max(10,Be.value+b));Qa(V)}function ei(){At==null||At(),At=null;const b=Ka.value,V=qa.value;if(!c.value||!b||!V)return;const W=()=>{Xr(-20)},K=()=>{Xr(20)};b.addEventListener("click",W),V.addEventListener("click",K),At=()=>{b.removeEventListener("click",W),V.removeEventListener("click",K)}}e.watch([c,Ka,qa],()=>{ei()},{flush:"post"});function Hr(b){var V;m.value=b,(V=m.value)!=null&&V.composition&&(S.value=new py(m.value.composition),y.value=new va(m.value.composition),C.value=new fy(m.value.composition));try{x.size&&(x.forEach((W,K)=>{m.value.setClipFilters(K,W)}),x.clear(),m.value.composition.computeFrame())}catch{}}function Yc(b){b!=null&&b.id&&Ir(b.id)}function Kc(b){Rc(b),Ut()}async function qc(b){if(!S.value)return;const V=await S.value.addTextOverlay(b);I.value.push({id:V,...b})}async function Qc(b,V){if(!S.value)return;await S.value.updateTextOverlay(b,V);const W=I.value.findIndex(K=>K.id===b);W!==-1&&(I.value[W]={...I.value[W],...V})}async function ed(b){S.value&&(await S.value.removeTextOverlay(b),I.value=I.value.filter(V=>V.id!==b))}async function td(b){if(!y.value||M.value.length<2)return;const[V,W]=M.value,K=await y.value.applyTransition(V,W,b);R.value.push({id:K,...b,name:b.type})}function nd(b){if(!y.value)return;const V=R.value[b];V&&(y.value.removeTransition(V.id),R.value.splice(b,1))}function od(b){}async function ad(b){if(!C.value)return;const V=await C.value.addAudioTrack(b);A.value.push({id:V,...b})}async function id(b,V){if(!C.value)return;const W=A.value.findIndex(K=>K.id===b);W!==-1&&(A.value[W]={...A.value[W],...V})}async function rd(b){C.value&&(await C.value.removeAudioTrack(b),A.value=A.value.filter(V=>V.id!==b))}async function sd(b,V){if(!C.value)return;await C.value.updateVolume(b,V);const W=A.value.find(K=>K.id===b);W&&(W.volume=V)}async function ld(b,V){if(!C.value)return;await C.value.muteTrack(b,V);const W=A.value.find(K=>K.id===b);W&&(W.muted=V)}function cd(b){C.value&&(C.value.setMasterVolume(b),P.value=b)}function dd(b){i("thumbnail-selected",b)}function tn(){Fo!==null&&(clearInterval(Fo),Fo=null)}function ud(b,V){return V?{...b,output:{...b.output,format:V.format,quality:V.quality}}:b}function Jn(b){var V;return b.metadata||(b.metadata={created_at:new Date().toISOString(),editor_version:"2.0.0"}),b.metadata.fit_mode=N.value,(V=o.media)!=null&&V.url&&/^https?:/i.test(o.media.url)?b.metadata.source_url=o.media.url:delete b.metadata.source_url,b}function Je(b,V,W){return Math.min(W,Math.max(V,b))}function ti(b,V){if(typeof b=="number"&&Number.isFinite(b))return b;if(typeof b=="string"){const W=Number(b);if(Number.isFinite(W))return W}return V}function ut(b,V,W){for(const K of V)if(K in b)return ti(b[K],W);return W}function md(b){const V=typeof b.params=="object"&&b.params!==null?b.params:{};switch(b.filterId.trim().toLowerCase()){case"brightness":return[{type:"brightness",value:Je(ut(V,["value","brightness"],0),-1,1)}];case"contrast":return[{type:"contrast",value:Je(ut(V,["value","contrast"],1),.1,3)}];case"saturation":return[{type:"saturation",value:Je(ut(V,["value","saturation"],1),0,3)}];case"blur":case"gaussian-blur":case"kawase-blur":case"radial-blur":return[{type:"blur",value:Je(ut(V,["value","blur","radius"],0),0,25)}];case"sharpen":return[{type:"sharpen",value:Je(ut(V,["value","amount"],1),0,5)}];case"sepia":return[{type:"sepia",value:1}];case"grayscale":return[{type:"grayscale",value:1}];case"adjustment":{const K=Je(ut(V,["brightness"],1)-1,-1,1),ue=Je(ut(V,["contrast"],1),.1,3),ie=Je(ut(V,["saturation"],1),0,3);return[{type:"brightness",value:K},{type:"contrast",value:ue},{type:"saturation",value:ie}]}default:return[]}}function pd(b){const V=b.timeline[0],W=Array.isArray(V==null?void 0:V.filters)?V.filters:[],K=[];for(const ie of W)if(K.push(...md(ie)),K.length>=12)break;const ue={...b,filters:K.slice(0,12)};if(b.timeline.length===1&&V){const ie=Math.max(0,ti(V.sourceIn,0)),pe=ti(V.sourceOut,ie);pe>ie&&(ue.trim={start:ie,end:pe})}return ue}function fd(b){return{"360p":[640,360],"480p":[854,480],"720p":[1280,720],"1080p":[1920,1080],"1440p":[2560,1440],"2160p":[3840,2160]}[b??""]??[1920,1080]}function hd(b){if(!b||typeof b!="object")return null;const V=b.duration;if(typeof V=="number"&&Number.isFinite(V)&&V>0)return V;if(V&&typeof V=="object"&&"value"in V){const W=V.value;if(typeof W=="number"&&Number.isFinite(W)&&W>0)return W}return null}async function Gr(b,V,W){var Yt,Ot,Mn,on;const K=b.timeline[0],ue=K?Math.max(0,K.sourceIn):0,ie=K?K.sourceOut:void 0,[pe,Ue]=fd((V==null?void 0:V.quality)??((Yt=b.output)==null?void 0:Yt.quality)),ft=((Ot=b.output)==null?void 0:Ot.fps)||30;se(!1),E.value=!0,await e.nextTick();try{const at=[200,500,1e3];let st=!1;for(const ci of at){await new Promise(Rd=>setTimeout(Rd,ci));const Uo=T.value;if(!(!Uo||typeof Uo.captureFrameAt!="function")&&typeof Uo.ensureReadyForCapture=="function"&&(st=await Uo.ensureReadyForCapture(),st))break}const Lt=T.value;if(!Lt||typeof Lt.captureFrameAt!="function")throw new Error("PIXI preview not available for export. Ensure the preview is mounted.");if(!st)throw new Error("PIXI preview not ready for frame capture after retries. The video may still be loading.");const{exportWithPixiFrames:Yn,isWebCodecsSupported:si}=await Promise.resolve().then(()=>require("./PixiFrameExporter-plVSI1Cq.cjs"));if(!si())throw new Error("WebCodecs is not supported in this browser. Export requires Chrome 94+ or equivalent.");Jt=new AbortController;const Ao={width:pe,height:Ue,fps:ft,trimStart:ue,signal:Jt.signal};ie!==void 0&&(Ao.trimEnd=ie),W&&(Ao.onProgress=W);const os=Rt.value;os!==""&&(Ao.sourceUrl=os);const Md=typeof Lt.duration=="number"&&Lt.duration>0?Lt.duration:((Mn=b.source)==null?void 0:Mn.duration)??ie??0,Bd=await Yn({captureFrameAt:ci=>Lt.captureFrameAt(ci),duration:{value:Md}},Ao),li=new File([Bd],`edited-video-${Date.now()}.mp4`,{type:"video/mp4"}),Id=hd(Lt),Fd=((on=b.source)==null?void 0:on.duration)??0,$d=Math.max(0,(ie??Id??Fd)-ue);return{file:li,recipe:b,meta:{duration:$d,width:pe,height:Ue,format:"mp4",sizeBytes:li.size,size_bytes:li.size}}}finally{E.value=!1,Jt=null}}async function vd(b,V){var on;tn(),Ct=!1,Jt=null,Mt.value=null,We.value=null,Gt.value=!1,Xe.value=0;const W=Jn(b??Ve()),K=ts(W),ue=Array.isArray(K.filters)&&K.filters.length>0,ie=ai(K);if(!(de.value||ue||ie))return ve(),i("video-exported",null),null;const Ue=K.timeline[0],ft=Ue?Math.max(0,Ue.sourceIn):0,Ot=((Ue==null?void 0:Ue.sourceOut)??((on=K.source)==null?void 0:on.duration)??Dt.value)-ft,Mn=o.serverRenderEndpoint!=null&&o.clientExportThreshold>0&&Ot>o.clientExportThreshold;if(Mn){ot.value=!0;try{return await gd(K),null}catch(at){const st=at instanceof Error?at.message:"Server render failed";throw We.value=st,i("server-render-failed",st),at}finally{ot.value=!1}}if(o.maxDuration>0&&Ot>o.maxDuration&&!Mn){const at=`This video is too long for in-browser export (${Math.round(Ot)}s). Server rendering is not available. Try a shorter clip.`;return We.value=at,i("video-exported",null),null}ot.value=!0;try{const at=await Gr(K,V,st=>{Ct||(Xe.value=st)});return Ct?(We.value="Export canceled.",Xe.value=0,i("video-exported",null),null):(ve(),i("recipe-generated",K),i("video-exported",at),Xe.value=100,Gt.value=!0,at)}catch(at){if(Ct)return We.value="Export canceled.",Xe.value=0,i("video-exported",null),null;const st=at instanceof Error?at.message:"Local WebGL export failed.";throw We.value=st,new Error(`Video export failed: ${st}`)}finally{ot.value=!1}}function Do(){return new kr(o.serverRenderEndpoint??"/api/v1")}async function gd(b){const V=Do();We.value="Starting server render...",Xe.value=0;const W=await V.createRenderJob({source_media_uuid:s.value,recipe:b});Mt.value=W.id,i("server-render-started",W.id),i("export-started",W.id),We.value="Rendering on server...";const K=await V.pollRenderJob(W.id,(ie,pe)=>{Xe.value=ie,pe==="processing"&&(We.value=`Server rendering: ${ie}%`)},3e3,(o.maxDuration>0?o.maxDuration*3:1800)*1e3);Xe.value=100,Gt.value=!0,We.value="Server render complete!",ve(),i("recipe-generated",b);const ue={id:K.id};typeof K.output_media_id=="string"&&K.output_media_id!==""&&(ue.output_media_id=K.output_media_id),i("server-render-completed",ue)}async function Jr(){if(!ot.value)return;Ct=!0,E.value=!1,Jt&&(Jt.abort(),Jt=null),tn();const b=Mt.value;if(b)try{await Do().cancelJob(b)}catch(V){const W=V instanceof Error?V.message:"Failed to cancel export";We.value=W,ot.value=!1,Mt.value=null;return}ot.value=!1,Xe.value=0,Gt.value=!1,Mt.value=null,We.value="Export canceled."}async function Yr(b){tn(),Ct=!1,Jt=null,Mt.value=null,We.value=null,Gt.value=!1,ot.value=!0,Xe.value=0;try{const V=Jn(ud(Ve(),b));i("recipe-generated",V);const W=s.value.startsWith("temp-"),K=V.timeline[0],ue=Array.isArray(K==null?void 0:K.filters)?K.filters:[],ie=!0,pe=typeof window<"u"&&window.MEDIABLES_ALLOW_SERVER_EXPORT_FALLBACK===1||typeof localStorage<"u"&&localStorage.getItem("mediables.export.allowServerFallback")==="1";if(ie)try{const st=await Gr(V,b,si=>{Ct||(Xe.value=si)});if(Ct){We.value="Export canceled.",ot.value=!1,Xe.value=0;return}i("video-exported",st);const Lt=URL.createObjectURL(st.file),Yn=document.createElement("a");Yn.href=Lt,Yn.download=`edited-video-${Date.now()}.mp4`,Yn.click(),setTimeout(()=>URL.revokeObjectURL(Lt),100),ot.value=!1,Xe.value=100,Gt.value=!0;return}catch(st){if(Ct){We.value="Export canceled.",ot.value=!1,Xe.value=0;return}if(W||!pe)throw st;Xe.value=0,We.value="Local filter export failed, falling back to server render."}const Ue={"360p":"low","480p":"low","720p":"medium","1080p":"high","1440p":"ultra","2160p":"ultra"},ft=(b==null?void 0:b.quality)??V.output.quality,Yt=Ue[ft]??"high",Ot={...pd(V),export:{format:(b==null?void 0:b.format)??V.output.format,quality:Yt,resolution:ft,framerate:V.output.fps}},on=await Do().createJob({source_media_id:s.value,recipe:Ot}),at=typeof on.id=="string"?on.id:null;if(!at)throw new Error("Export failed: missing job id");Mt.value=at,i("export-started",at),Nd(at)}catch(V){if(E.value=!1,Jt=null,Ct){We.value="Export canceled.",ot.value=!1,Xe.value=0,Mt.value=null;return}try{const W=Jn(Ve()),K=new Blob([JSON.stringify(W,null,2)],{type:"application/json"}),ue=URL.createObjectURL(K),ie=document.createElement("a");ie.href=ue,ie.download=`video-recipe-${Date.now()}.json`,ie.click(),setTimeout(()=>URL.revokeObjectURL(ue),100)}finally{ot.value=!1,Xe.value=0,Mt.value=null,We.value=V instanceof Error?V.message:"Export failed"}}}const ni=async b=>{await new Promise(V=>{window.setTimeout(V,b)})},oi=b=>{if(!b||b.width<=0||b.height<=0)return null;try{return b.toDataURL("image/jpeg",.85)}catch{return null}},yd=b=>{if(!b||typeof b!="object")return null;const W=b.pixiCanvas;if(W&&typeof W=="object"&&"value"in W){const K=W.value;return K instanceof HTMLCanvasElement?K:null}return W instanceof HTMLCanvasElement?W:null},wd=b=>{if(!b||typeof b!="object")return null;const V=b.duration;if(typeof V=="number"&&Number.isFinite(V))return V;if(V&&typeof V=="object"&&"value"in V){const W=V.value;if(typeof W=="number"&&Number.isFinite(W))return W}return null},bd=b=>{if(!b||typeof b!="object")return null;const W=b.videoElement;if(W&&typeof W=="object"&&"value"in W){const K=W.value;return K instanceof HTMLVideoElement?K:null}return W instanceof HTMLVideoElement?W:null},Kr=b=>typeof b.params=="object"&&b.params!==null?b.params:{},kd=b=>{const V=[];for(const W of b){const K=Kr(W),ue=W.filterId.trim().toLowerCase();if(ue==="brightness"){const pe=(Je(ut(K,["value","brightness"],0),-1,1)+1)*100;V.push(`brightness(${pe.toFixed(2)}%)`);continue}if(ue==="contrast"){const ie=Je(ut(K,["value","contrast"],1),.1,4);V.push(`contrast(${(ie*100).toFixed(2)}%)`);continue}if(ue==="saturation"||ue==="saturate"){const ie=Je(ut(K,["value","saturation"],1),0,4);V.push(`saturate(${(ie*100).toFixed(2)}%)`);continue}if(ue==="grayscale"){V.push("grayscale(100%)");continue}if(ue==="sepia"){V.push("sepia(100%)");continue}if(ue==="blur"||ue==="gaussian-blur"||ue==="kawase-blur"){const ie=Je(ut(K,["value","blur","radius"],0),0,30);ie>.01&&V.push(`blur(${ie.toFixed(2)}px)`);continue}if(ue==="adjustment"){const ie=ut(K,["brightness"],1),pe=ut(K,["contrast"],1),Ue=ut(K,["saturation"],1);Math.abs(ie-1)>.01&&V.push(`brightness(${(Je(ie,0,5)*100).toFixed(2)}%)`),Math.abs(pe-1)>.01&&V.push(`contrast(${(Je(pe,.1,5)*100).toFixed(2)}%)`),Math.abs(Ue-1)>.01&&V.push(`saturate(${(Je(Ue,0,5)*100).toFixed(2)}%)`);continue}if(ue==="cinematic"){V.push("contrast(120%) brightness(95%) saturate(85%)");continue}if(ue==="dramatic"){V.push("contrast(140%) brightness(90%) saturate(110%) sepia(10%)");continue}if(ue==="dreamy"){V.push("blur(0.5px) brightness(105%) saturate(90%) contrast(95%)");continue}}return V.join(" ")},xd=b=>{const V=b.find(ue=>ue.filterId.trim().toLowerCase()==="noise");if(!V)return 0;const W=Kr(V),K=ut(W,["noise","value","amount","intensity"],.2);return K<=1?Je(K,0,1):Je(K/100,0,1)},Ed=(b,V,W,K)=>{if(K<=0)return;const ue=b.getImageData(0,0,V,W),ie=255*K;for(let pe=0;pe<ue.data.length;pe+=4){const Ue=(Math.random()*2-1)*ie;ue.data[pe]=Je(ue.data[pe]+Ue,0,255),ue.data[pe+1]=Je(ue.data[pe+1]+Ue,0,255),ue.data[pe+2]=Je(ue.data[pe+2]+Ue,0,255)}b.putImageData(ue,0,0)},qr=async b=>{b.readyState>=2&&b.videoWidth>0&&b.videoHeight>0||await new Promise(V=>{let W=!1,K=0;const ue=()=>{W||(W=!0,b.removeEventListener("loadedmetadata",ie),b.removeEventListener("loadeddata",ie),b.removeEventListener("canplay",ie),window.clearTimeout(K),V())},ie=()=>{ue()};b.addEventListener("loadedmetadata",ie),b.addEventListener("loadeddata",ie),b.addEventListener("canplay",ie),K=window.setTimeout(()=>ue(),800),b.play().catch(()=>{})})},Vd=async(b,V)=>{await new Promise(W=>{let K=!1,ue=0;const ie=()=>{K||(K=!0,b.removeEventListener("seeked",pe),window.clearTimeout(ue),W())},pe=()=>{ie()};if(Math.abs(b.currentTime-V)<.016){requestAnimationFrame(()=>ie());return}b.addEventListener("seeked",pe),ue=window.setTimeout(()=>ie(),700),b.currentTime=V})},Qr=async(b,V)=>{await qr(b);const W=Math.floor(b.videoWidth),K=Math.floor(b.videoHeight);if(W<=0||K<=0)return null;const ue=Number.isFinite(b.duration)&&b.duration>0?b.duration:0,ie=ue>0?Je(V,0,ue):0;await Vd(b,ie);const pe=document.createElement("canvas");pe.width=W,pe.height=K;const Ue=pe.getContext("2d");if(!Ue)return null;const ft=kd(tt.value);ft!==""&&(Ue.filter=ft);try{Ue.drawImage(b,0,0,W,K)}catch{return null}const Yt=xd(tt.value);return Ed(Ue,W,K,Yt),oi(pe)},Sd=async(b,V)=>{const W=document.createElement("video");W.src=b,W.muted=!0,W.playsInline=!0,W.preload="auto",b.startsWith("blob:")||(W.crossOrigin="anonymous");try{return await qr(W),await Qr(W,V)}catch{return null}finally{W.pause(),W.removeAttribute("src"),W.load()}},Cd=async b=>{const V=T.value,W=oi(yd(V));if(W)return W;if(V!=null&&V.captureFrameAt)for(let ie=0;ie<4;ie+=1){const pe=wd(V);if(pe!==null&&pe<=0&&ie<2){await ni(80);continue}const Ue=await Promise.race([V.captureFrameAt(b),ni(450).then(()=>null)]),ft=oi(Ue);if(ft)return ft;await ni(80)}const K=bd(V);if(K){const ie=await Qr(K,b);if(ie)return ie}const ue=Ga.value.trim();if(ue!==""){const ie=await Sd(ue,b);if(ie)return ie}return null},es=b=>b.map(V=>({...V,params:V.params&&typeof V.params=="object"?{...V.params}:V.params}));function ts(b){const V=es(tt.value);if(!ai(b)&&V.length>0&&Array.isArray(b.timeline)&&b.timeline.length>0){const K=b.timeline[0];K&&(b.timeline=[{...K,filters:V},...b.timeline.slice(1)])}return b}const ai=b=>Array.isArray(b.timeline)?b.timeline.some(V=>Array.isArray(V.filters)&&V.filters.length>0):!1,_d=b=>{if(!b||typeof b!="object")return null;const V=b.posterFrame;if(typeof V!="string")return null;const W=V.trim();return W!==""?W:null};async function ii(){const b=Jn(ts(ae())),V=es(tt.value),W=ai(b)||V.length>0,K=_d(o.initialRecipe);if(W){const ue=te.value>0?te.value:.1;try{const ie=await Cd(ue);ie?b.posterFrame=ie:K&&(b.posterFrame=K)}catch{K&&(b.posterFrame=K)}}else delete b.posterFrame;return ve(),i("draft-saved",b),b}function ns(){Ne()&&($r(),Ut())}async function Nd(b){tn();const V=Do();Fo=window.setInterval(async()=>{try{if(Ct){tn();return}const W=await V.getJob(b),K=Number(W.progress??0);if(Xe.value=Number.isFinite(K)?K:0,W.status==="completed"||W.status==="failed"||W.status==="cancelled")if(tn(),ot.value=!1,Mt.value=null,W.status==="completed")Xe.value=100,Gt.value=!0,We.value=null;else{const ue=W.status==="cancelled"||typeof W.error_message=="string"&&/cancel/i.test(W.error_message);We.value=ue?"Export canceled.":typeof W.error_message=="string"&&W.error_message.trim()!==""?W.error_message:"Export failed"}}catch(W){tn(),ot.value=!1,Mt.value=null,We.value=W instanceof Error?W.message:"Failed to check export progress"}},2e3)}function ri(){const b=Jn(Ve());try{const V=b.timeline??[]}catch{}k.value=b}let dn=null;function Ut(){dn&&clearTimeout(dn),dn=setTimeout(()=>{ri(),dn=null},200)}e.watch(()=>F.value,Ut,{deep:!0}),e.watch(()=>J.value,b=>{if(U.value||!b)return;const V=(b==null?void 0:b.filters)??[];Ac(V)},{immediate:!0}),e.watch(()=>tt.value,b=>{vt(b),Ut()},{deep:!0}),e.watch(()=>I.value,b=>{Y(b),Ut()},{deep:!0}),e.watch(()=>A.value,b=>{const V=b.map(W=>({...W,source:typeof W.source=="string"?W.source:void 0}));me(V),Ut()},{deep:!0}),e.watch(()=>te.value,Ut),n({saveDraft:ii,exportForUpload:vd}),ri(),e.onUnmounted(()=>{tn(),Ct=!0,dn&&(clearTimeout(dn),dn=null),m.value&&(m.value.destroy(),m.value=null),S.value=null,y.value=null,C.value=null});function Td(){gt||!Ya.value||(gt=new K1({filters:Gn.value,callbacks:{onApplyFilter:b=>{Hn(b.id)},onRemoveFilter:b=>{Rr(b)},onUpdateParam:(b,V,W)=>{Pr(b,V,W)},onPreviewFilter:b=>{Ir(b.id)}}}),gt.mount(Ya.value),gt.setActiveFilters(Ha.value))}e.watch(Ha,b=>{gt==null||gt.setActiveFilters(b)},{deep:!0}),e.watch(Gn,b=>{gt==null||gt.setFilters(b)});let nn=null;return e.onMounted(()=>{window.addEventListener("resize",H);const b=()=>{!Nn.value||nn||(nn=new ResizeObserver(V=>{V[0]&&($o.value=Math.round(V[0].contentRect.width))}),nn.observe(Nn.value))};b(),nn||e.nextTick(b),c.value&&(ei(),At||e.nextTick(ei)),o.media&&ri(),c.value&&e.nextTick(()=>{Td()}),e.nextTick(()=>{const V=document.querySelector(".video-editor");V&&V.getBoundingClientRect();const W=document.querySelector(".mobile-layout");W&&W.getBoundingClientRect()})}),e.onUnmounted(()=>{window.removeEventListener("resize",H),nn==null||nn.disconnect(),nn=null,At==null||At(),At=null,gt==null||gt.destroy(),gt=null}),(b,V)=>{var W,K,ue,ie;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-editor",{mobile:c.value}])},[c.value?(e.openBlock(),e.createElementBlock("div",Zw,[e.createElementVNode("div",Xw,[e.createElementVNode("div",Hw,[e.createElementVNode("button",{class:e.normalizeClass(["mobile-toolbar-btn",{active:e.unref(ne)}]),onClick:V[0]||(V[0]=(...pe)=>e.unref(q)&&e.unref(q)(...pe)),"aria-label":e.unref(ne)?"Pause":"Play","data-testid":"btn-mobile-play"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(ne)?e.unref(ml):e.unref(fl)},null,8,["icon"])],10,Gw),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:ns,"aria-label":"Reset all changes","data-testid":"btn-mobile-reset"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ln)},null,8,["icon"])])]),e.createElementVNode("div",Jw,[e.createElementVNode("button",{class:"mobile-toolbar-btn mobile-toolbar-save",onClick:ii,"aria-label":"Save","data-testid":"btn-mobile-save",disabled:!e.unref(de)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(er)},null,8,["icon"]),V[12]||(V[12]=e.createElementVNode("span",null,"Save",-1))],8,Yw),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[1]||(V[1]=pe=>Yr()),"aria-label":"Export","data-testid":"btn-mobile-export",disabled:ot.value||!e.unref(de)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(vo)},null,8,["icon"])],8,Kw),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[2]||(V[2]=pe=>i("close")),"aria-label":"Close","data-testid":"btn-mobile-close"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Dn)},null,8,["icon"])])])]),e.createElementVNode("div",qw,[e.withDirectives(e.createVNode(ms,{ref_key:"pixiPreviewMobileRef",ref:v,"aria-hidden":!f.value,class:"preview-host-child",source:Ga.value,"fallback-duration":Dt.value,filters:Ur.value,playhead:Or.value,"is-playing":e.unref(ne),"fit-mode":N.value,active:f.value,onPlayPause:e.unref(q),onFrameUpdate:Wr,onDurationChange:Ro},null,8,["aria-hidden","source","fallback-duration","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,f.value]]),e.withDirectives(e.createVNode(Bs,{"aria-hidden":!h.value,class:"preview-host-child","media-uuid":s.value,recipe:k.value,media:Dr.value,"enable-engine":h.value&&Ar.value,"fit-mode":N.value,onTimeUpdate:jr,onPlayStateChange:Zr,onDurationChange:Ro,onEngineReady:Hr},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,h.value]]),ot.value?(e.openBlock(),e.createElementBlock("div",Qw,[e.createElementVNode("div",eb,[e.createElementVNode("span",null,"Exporting "+e.toDisplayString(Xe.value)+"%",1),e.createElementVNode("div",tb,[e.createElementVNode("div",{class:"mobile-export-bar-fill",style:e.normalizeStyle({width:Xe.value+"%"})},null,4)]),e.createElementVNode("button",{class:"mobile-export-cancel",onClick:Jr},"Cancel")])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:Nn,class:"timeline-section"},[e.createElementVNode("div",nb,[e.createElementVNode("button",{ref_key:"mobileZoomOutButtonRef",ref:Ka,type:"button",class:"mobile-zoom-btn","aria-label":"Zoom out timeline","data-testid":"btn-timeline-zoom-out"},[...V[13]||(V[13]=[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:qa,type:"button",class:"mobile-zoom-btn","aria-label":"Zoom in timeline","data-testid":"btn-timeline-zoom-in"},[...V[14]||(V[14]=[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(Is,{playhead:e.unref(te),clips:e.unref(F),"selected-clip-id":((W=e.unref(J))==null?void 0:W.id)??((K=e.unref(F)[0])==null?void 0:K.id)??null,duration:Dt.value,"zoom-level":e.unref(Be),sensitivity:.25,"is-mobile":!0,"onUpdate:playhead":e.unref(fe),onTrim:e.unref(re),onSplit:e.unref(ke),onClipSelect:e.unref(oe),onClipMove:e.unref(Ze)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"])],512),e.createElementVNode("div",{ref_key:"mobileControlsRef",ref:Ya,class:"controls-section mobile-controls"},null,512)])):(e.openBlock(),e.createElementBlock("div",ob,[e.createElementVNode("div",ab,[e.createElementVNode("div",ib,[e.createElementVNode("div",rb,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[3]||(V[3]=pe=>N.value=pe),"aria-label":"Fit mode","data-testid":"select-video-fit-mode"},[...V[15]||(V[15]=[e.createElementVNode("option",{value:"contain"},"Contain",-1),e.createElementVNode("option",{value:"cover"},"Cover",-1),e.createElementVNode("option",{value:"none"},"None",-1)])],512),[[e.vModelSelect,N.value]])])]),e.withDirectives(e.createVNode(ms,{ref_key:"pixiPreviewDesktopRef",ref:g,"aria-hidden":!f.value,class:"preview-host-child",source:Ga.value,"fallback-duration":Dt.value,filters:Ur.value,playhead:Or.value,"is-playing":e.unref(ne),"fit-mode":N.value,active:f.value,onPlayPause:e.unref(q),onFrameUpdate:Wr,onDurationChange:Ro},null,8,["aria-hidden","source","fallback-duration","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,f.value]]),e.withDirectives(e.createVNode(Bs,{"aria-hidden":!h.value,class:"preview-host-child","media-uuid":s.value,recipe:k.value,media:Dr.value,"enable-engine":h.value&&Ar.value,"fit-mode":N.value,onTimeUpdate:jr,onPlayStateChange:Zr,onDurationChange:Ro,onEngineReady:Hr},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,h.value]]),b.showThumbnailPicker?(e.openBlock(),e.createBlock(Sg,{key:0,"media-uuid":s.value,duration:Dt.value,onSelect:dd},null,8,["media-uuid","duration"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",sb,[e.createElementVNode("div",lb,[e.createElementVNode("div",cb,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.value,pe=>(e.openBlock(),e.createElementBlock("button",{key:pe.id,class:e.normalizeClass(["tab-btn",{active:d.value===pe.id}]),onClick:Ue=>d.value=pe.id},e.toDisplayString(pe.label),11,db))),128))]),e.createElementVNode("div",ub,[e.withDirectives(e.createElementVNode("div",mb,[e.createVNode(D0,{filters:Gn.value,"active-filters":Ha.value,"thumbnail-url":Oc.value,onApplyFilter:Hn,onRemoveFilter:Rr,onUpdateParam:Pr,onPreviewFilter:Yc},null,8,["filters","active-filters","thumbnail-url"])],512),[[e.vShow,d.value==="filters"]]),e.withDirectives(e.createElementVNode("div",pb,[e.createVNode(Xg,{overlays:I.value,onAddOverlay:qc,onUpdateOverlay:Qc,onRemoveOverlay:ed},null,8,["overlays"])],512),[[e.vShow,d.value==="text"]]),e.withDirectives(e.createElementVNode("div",fb,[e.createVNode(f1,{"selected-clips":M.value,"applied-transitions":R.value,onApplyTransition:td,onRemoveTransition:nd,onPreviewTransition:od},null,8,["selected-clips","applied-transitions"])],512),[[e.vShow,d.value==="transitions"]]),e.withDirectives(e.createElementVNode("div",hb,[e.createVNode(J1,{"audio-layers":A.value,"master-volume":P.value,onAddTrack:ad,onUpdateTrack:id,onRemoveTrack:rd,onUpdateVolume:sd,onToggleMute:ld,onUpdateMasterVolume:cd},null,8,["audio-layers","master-volume"])],512),[[e.vShow,d.value==="audio"]]),e.withDirectives(e.createElementVNode("div",vb,[e.unref(Br)?(e.openBlock(),e.createBlock(J0,{key:0,filter:e.unref(Br),"current-frame":e.unref(Ee),onUpdateParams:Kc},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",gb,[...V[16]||(V[16]=[e.createElementVNode("p",null,"Select a filter from the Filters tab to adjust its parameters",-1)])]))],512),[[e.vShow,d.value==="adjustments"]]),e.withDirectives(e.createElementVNode("div",yb,[e.createVNode(dg,{"can-export":e.unref(de),"is-exporting":ot.value,"export-progress":Xe.value,onExport:Yr,onCancelExport:Jr,onSaveDraft:ii,onReset:ns},null,8,["can-export","is-exporting","export-progress"]),Gt.value?(e.openBlock(),e.createElementBlock("div",wb," Export complete ")):e.createCommentVNode("",!0),We.value&&!Gt.value?(e.openBlock(),e.createElementBlock("div",bb,e.toDisplayString(We.value),1)):e.createCommentVNode("",!0)],512),[[e.vShow,d.value==="export"]])])])])]),e.createElementVNode("div",kb,[e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:Nn,class:"timeline-container"},[e.createElementVNode("div",xb,[e.createElementVNode("label",null,[V[17]||(V[17]=e.createTextVNode(" Zoom ",-1)),e.createElementVNode("input",{type:"range",min:"10",max:"600",value:e.unref(Be),onInput:V[4]||(V[4]=pe=>Jc(pe))},null,40,Eb)]),e.createElementVNode("span",Vb,e.toDisplayString(Math.round(e.unref(Be)))+" px/s",1)]),e.createVNode(Is,{playhead:e.unref(te),clips:e.unref(F),"selected-clip-id":((ue=e.unref(J))==null?void 0:ue.id)??((ie=e.unref(F)[0])==null?void 0:ie.id)??null,duration:Dt.value,"zoom-level":e.unref(Be),sensitivity:.25,"onUpdate:playhead":e.unref(fe),onTrim:e.unref(re),onSplit:e.unref(ke),onClipSelect:e.unref(oe),onClipMove:e.unref(Ze)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"]),e.createVNode(Kv,{"selected-clip":e.unref(J),"can-split":Lc.value,"can-delete":zc.value,"is-playing":e.unref(ne),"zoom-level":e.unref(Be),"playback-speed":e.unref(ce),onSplit:e.unref(le),onDelete:e.unref(xe),onDuplicate:e.unref(Ce),onZoomIn:Hc,onZoomOut:Gc,onZoomChange:Qa,onFitToWindow:Xc,onPlayPause:e.unref(q),onFrameForward:e.unref(Fe),onFrameBackward:e.unref(He),onSkipToStart:e.unref(Ge),onSkipToEnd:e.unref(et),onSpeedChange:e.unref(je)},null,8,["selected-clip","can-split","can-delete","is-playing","zoom-level","playback-speed","onSplit","onDelete","onDuplicate","onPlayPause","onFrameForward","onFrameBackward","onSkipToStart","onSkipToEnd","onSpeedChange"]),ge.value?(e.openBlock(),e.createElementBlock("div",Sb,[e.createElementVNode("div",Cb,[e.createElementVNode("label",_b,[V[18]||(V[18]=e.createElementVNode("span",null,"Trim start (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[5]||(V[5]=pe=>Cn.value=pe),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-start"},null,512),[[e.vModelText,Cn.value]])]),e.createElementVNode("label",Nb,[V[19]||(V[19]=e.createElementVNode("span",null,"Trim end (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[6]||(V[6]=pe=>_n.value=pe),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-end"},null,512),[[e.vModelText,_n.value]])]),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-start-playhead",disabled:!e.unref(J),onClick:V[7]||(V[7]=pe=>zr("start"))}," Start = Playhead ",8,Tb),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-end-playhead",disabled:!e.unref(J),onClick:V[8]||(V[8]=pe=>zr("end"))}," End = Playhead ",8,Mb),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-trim",disabled:!e.unref(J),onClick:jc}," Apply Trim ",8,Bb)]),e.createElementVNode("div",Ib,[e.createElementVNode("label",Fb,[V[20]||(V[20]=e.createElementVNode("span",null,"Quick filter",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[9]||(V[9]=pe=>en.value=pe),"data-testid":"video-dev-filter-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Gn.value,pe=>(e.openBlock(),e.createElementBlock("option",{key:pe.id,value:pe.id},e.toDisplayString(pe.name),9,$b))),128))],512),[[e.vModelSelect,en.value]])]),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-filter",disabled:!e.unref(J)||en.value==="",onClick:Wc}," Apply Filter ",8,Rb),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-clear-filters",disabled:e.unref(tt).length===0,onClick:Zc}," Clear Filters ",8,Db),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(J),onClick:V[10]||(V[10]=pe=>Hn("noise"))}," QA: Noise ",8,Ab),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(J),onClick:V[11]||(V[11]=pe=>Hn("grayscale"))}," QA: Grayscale ",8,Ub)])])):e.createCommentVNode("",!0)],512)])]))],2)}}}),Ji=Me(Ob,[["__scopeId","data-v-6e81b19f"]]),Ft=a=>a===null||typeof a!="object"||Array.isArray(a)?null:a,Oe=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},Lb=(a,n)=>{if(n===null)return;const t=Ft(a.source)??{},o=Oe(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 l=Ft(r[0]);if(l!==null){const d=Oe(l.sourceIn)??0,u=Oe(l.sourceOut)??Oe(l.end)??Oe(l.timelineEnd);if(d===0&&u!==null&&u>0&&u<=1){l.sourceOut=n;const f=Oe(l.end);f!==null&&f>0&&f<=1&&(l.end=n);const h=Oe(l.timelineEnd);h!==null&&h>0&&h<=1&&(l.timelineEnd=n)}}}const s=Oe(a.trimEnd)??Oe(a.trim_end);s!==null&&s>0&&s<=1&&(a.trimEnd=n);const c=Ft(a.trim);if(c!==null){const l=Oe(c.end);l!==null&&l>0&&l<=1&&(c.end=n,a.trim=c)}},zb=(a,n)=>{if(!a)return!1;const t=Ft(a);if(t===null)return!1;const o=Ft(t.trim),i=Ft(t.source),s=Oe(i==null?void 0:i.duration)??n,c=Array.isArray(a.filters)&&a.filters.length>0;let l=!1;if(Array.isArray(a.timeline)&&a.timeline.length===1){const h=a.timeline[0];h&&Array.isArray(h.filters)&&h.filters.length>0&&(l=!0)}let d=!1;const u=Oe(t.trimStart)??Oe(t.trim_start)??Oe(o==null?void 0:o.start),p=Oe(t.trimEnd)??Oe(t.trim_end)??Oe(o==null?void 0:o.end);if(u!==null&&u>0&&(d=!0),p!==null&&s!==void 0&&p<s&&(d=!0),!d&&Array.isArray(a.timeline)&&a.timeline.length===1){const h=a.timeline[0];if(h){const v=Oe(h.sourceIn),g=Oe(h.sourceOut);v!==null&&v>0&&(d=!0),g!==null&&s!==void 0&&g<s&&(d=!0)}}let f=!1;if(Array.isArray(a.timeline)&&a.timeline.length===1){const h=a.timeline[0];if(h){const v=Oe(h.speed);f=v!==null&&v!==1}}return c||l||d||f},xc=a=>{if(!a)return!1;const n=Ft(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)},Pb=(a,n={})=>{var f,h;const t=JSON.parse(JSON.stringify(a)),o=Array.isArray(t.timeline)?t.timeline:[],i=o.length>0?Ft(o[0]):null,r=Array.isArray(i==null?void 0:i.filters)?i.filters:[],s=Array.isArray(t.filters)?t.filters:[];if(s.length>0?t.filters=s:t.filters=r,o.length===1&&i!==null){const v=Oe(i.sourceIn),g=Oe(i.sourceOut);v!==null&&t.trimStart===void 0&&(t.trimStart=v),g!==null&&t.trimEnd===void 0&&(t.trimEnd=g)}const c=Ft(t.trim);if(t.trimStart===void 0){const v=Oe(c==null?void 0:c.start);v!==null&&(t.trimStart=v)}if(t.trimEnd===void 0){const v=Oe(c==null?void 0:c.end);v!==null&&(t.trimEnd=v)}const l=Ft(t.source),d=Oe(t.width)??Oe(l==null?void 0:l.original_width)??Oe((f=n.exportMeta)==null?void 0:f.width);d!==null&&(t.width=d);const u=Oe(t.height)??Oe(l==null?void 0:l.original_height)??Oe((h=n.exportMeta)==null?void 0:h.height);u!==null&&(t.height=u);const p=Ft(t.output);return t.fps=Oe(t.fps)??Oe(p==null?void 0:p.fps)??30,Lb(t,n.mediaDuration??null),t},jb={key:0},Wb=["data-testid"],Zb={class:"ve-mobile-header"},Xb=["data-testid"],Hb={class:"ve-mobile-title"},Gb=["data-testid","disabled"],Jb={key:1,class:"ve-mobile-spacer","aria-hidden":"true"},Yb={class:"ve-body"},Kb=["data-testid"],qb=["aria-label"],Qb={class:"ve-header"},e2={class:"ve-title"},t2=["data-testid"],n2={class:"ve-body"},o2={class:"ve-footer"},a2=["data-testid"],i2=["data-testid","disabled"],r2=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"}},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),s=e.computed(()=>o.open),c=e.computed(()=>o.saveImmediate===!1),l=e.computed(()=>o.closeText),d=e.computed(()=>p.value?o.savingText:o.confirmText),u=e.ref(typeof window<"u"?window.innerWidth<768:!1),p=e.ref(!1),f=e.ref(!1),h=e.ref(null),v=`temp-${Date.now()}`,g=e.computed(()=>{var P;const M=(P=o.featureFlags)==null?void 0:P.export;return typeof M=="boolean"?M:o.workflowMode==="full"}),E=e.computed(()=>typeof o.mediaUuid=="string"&&o.mediaUuid.trim()!==""?o.mediaUuid.trim():o.media&&o.media.uuid.trim()!==""?o.media.uuid.trim():v),T=e.computed(()=>{const M={showThumbnailPicker:o.showThumbnailPicker,workflowMode:o.workflowMode,clientExportThreshold:o.clientExportThreshold,maxDuration:o.maxDuration,serverRenderEndpoint:o.serverRenderEndpoint};return o.featureFlags!==void 0&&(M.featureFlags=o.featureFlags),o.initialRecipe!==void 0&&(M.initialRecipe=o.initialRecipe),o.media!==void 0&&(M.media=o.media),M}),_=()=>{u.value=window.innerWidth<768};e.onMounted(()=>{window.addEventListener("resize",_)}),e.onUnmounted(()=>{window.removeEventListener("resize",_)}),e.onErrorCaptured(()=>(f.value=!0,!1));const w=M=>{const P=Array.isArray(M.timeline)?M.timeline:[];if(P.length===0)return 0;let H=0;for(const B of P){const D=Number(B.sourceIn),X=Number(B.sourceOut),Z=Number(B.speed??1),ee=Number.isFinite(Z)&&Z>0?Z:1;if(Number.isFinite(D)&&Number.isFinite(X)&&X>D){H+=(X-D)/ee;continue}const ge=Number(B.timelineStart),Ee=Number(B.timelineEnd);Number.isFinite(ge)&&Number.isFinite(Ee)&&Ee>ge&&(H+=Ee-ge)}return H},m=(M,P,H)=>{let B=null;const D=new Promise((X,Z)=>{B=setTimeout(()=>Z(new Error(`${H} timed out after ${P}ms`)),P)});return Promise.race([M,D]).finally(()=>{B!==null&&clearTimeout(B)})},k=()=>{var D;const H=(D=o.media)==null?void 0:D.duration;if(typeof H!="number"||!Number.isFinite(H)||H<=0)return 12e3;const B=Math.round(H*1e3);return Math.min(45e3,Math.max(12e3,B))},N=()=>{i("close"),i("update:open",!1)},S=()=>{p.value=!1,N()},y=M=>{i("recipe-generated",M)},C=M=>{i("export-started",M),i("save-started",M)},U=M=>{i("video-exported",M)},x=M=>{i("thumbnail-selected",M)},I=(M,P,H)=>{i("save-recipe",M);const B={recipe:M,exportPayload:P};H!==void 0&&(B.toastDescription=H),i("save-complete",B),N()},R=M=>{p.value||(i("draft-saved",M),I(M,null))},A=async()=>{var M;if(!p.value){if(f.value||h.value===null){i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),N();return}p.value=!0;try{const P=await m(h.value.saveDraft(),k(),"saveDraft");let H=null,B=!1,D;const X=w(P),Z=X>0?X:((M=o.media)==null?void 0:M.duration)??0;if(g.value&&Z>0&&Z<=o.clientExportThreshold&&typeof h.value.exportForUpload=="function"){B=!0;const ge=Math.min(9e4,Math.max(15e3,o.clientExportThreshold*2e3));try{H=await m(h.value.exportForUpload(P),ge,"exportForUpload")}catch{H=null}}if(xc(P)&&H===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}B&&H===null&&(D="Video edits saved. Final render will happen when you share."),I(P,H,D)}catch{i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),N()}finally{p.value=!1}}};return n({saveDraft:A}),(M,P)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[s.value?(e.openBlock(),e.createElementBlock("div",jb,[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ve-fullscreen","data-testid":r.value},[e.createElementVNode("header",Zb,[e.createElementVNode("button",{class:"ve-mobile-action",type:"button","data-testid":`${r.value}-close-button`,onClick:S},e.toDisplayString(l.value),9,Xb),e.createElementVNode("h2",Hb,e.toDisplayString(M.title),1),c.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:p.value,onClick:A},e.toDisplayString(d.value),9,Gb)):(e.openBlock(),e.createElementBlock("span",Jb))]),e.createElementVNode("section",Yb,[e.createVNode(Ji,e.mergeProps({ref_key:"videoEditorRef",ref:h,"media-uuid":E.value},T.value,{onClose:S,onDraftSaved:R,onExportStarted:C,onRecipeGenerated:y,onThumbnailSelected:x,onVideoExported:U}),null,16,["media-uuid"])])],8,Wb)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"ve-overlay","data-testid":r.value,onClick:e.withModifiers(S,["self"])},[e.createElementVNode("div",{class:"ve-dialog",role:"dialog","aria-label":M.title,"aria-modal":"true"},[e.createElementVNode("header",Qb,[e.createElementVNode("h2",e2,e.toDisplayString(M.title),1),e.createElementVNode("button",{class:"ve-close",type:"button","data-testid":`${r.value}-close-button`,"aria-label":"Close",onClick:S}," ✕ ",8,t2)]),e.createElementVNode("section",n2,[e.createVNode(Ji,e.mergeProps({ref_key:"videoEditorRef",ref:h,"media-uuid":E.value},T.value,{onClose:S,onDraftSaved:R,onExportStarted:C,onRecipeGenerated:y,onThumbnailSelected:x,onVideoExported:U}),null,16,["media-uuid"])]),e.createElementVNode("footer",o2,[e.renderSlot(M.$slots,"footer",{close:S,isSaving:p.value,save:A},()=>[e.createElementVNode("button",{class:"ve-btn",type:"button","data-testid":`${r.value}-cancel-button`,onClick:S},e.toDisplayString(l.value),9,a2),c.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ve-btn ve-btn--primary",type:"button","data-testid":`${r.value}-confirm-button`,disabled:p.value,onClick:A},e.toDisplayString(d.value),9,i2)):e.createCommentVNode("",!0)],!0)])],8,qb)],8,Kb))])):e.createCommentVNode("",!0)]))}}),s2=Me(r2,[["__scopeId","data-v-0ff40919"]]),l2={class:"video-editor-modal"},c2={class:"video-preview-container"},d2=["src"],u2={class:"video-overlay-controls"},m2=["aria-label"],p2={class:"time-display"},f2={class:"timeline-container"},h2={class:"clip-name"},v2={class:"timeline-time-labels"},g2={class:"tool-tabs"},y2=["onClick"],w2={class:"tool-panel"},b2={key:0,class:"trim-panel"},k2={class:"trim-controls"},x2={key:1,class:"filters-panel"},E2={class:"filter-grid"},V2=["onClick"],S2={key:2,class:"text-panel"},C2={key:3,class:"transitions-panel"},_2={class:"transition-grid"},N2=["onClick"],T2={class:"action-buttons"},M2=e.defineComponent({__name:"VideoEditorSimple",props:{media:{}},emits:["save","cancel"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(),r=e.ref(""),s=e.ref(!1),c=e.ref(0),l=e.ref(0),d=e.ref("video-1"),u=e.ref(0),p=e.ref(0),f=e.ref(null),h=e.ref("trim"),v=e.ref(null),g=e.ref(""),E=[{id:"trim",label:"Trim",icon:dl},{id:"filters",label:"Filters",icon:vu},{id:"text",label:"Text",icon:hl},{id:"transitions",label:"Transitions",icon:Vu}],T=[{id:"none",name:"None"},{id:"grayscale",name:"Grayscale"},{id:"sepia",name:"Sepia"},{id:"blur",name:"Blur"},{id:"brightness",name:"Brightness"},{id:"contrast",name:"Contrast"}],_=[{id:"fade",name:"Fade"},{id:"slide",name:"Slide"},{id:"zoom",name:"Zoom"},{id:"wipe",name:"Wipe"}],w=e.ref();e.onMounted(()=>{var B,D;(B=t.media)!=null&&B.url?r.value=t.media.url:(D=t.media)!=null&&D.file&&(r.value=URL.createObjectURL(t.media.file))}),e.onUnmounted(()=>{var B;(B=t.media)!=null&&B.file&&r.value&&URL.revokeObjectURL(r.value)});function m(){i.value&&(l.value=i.value.duration,p.value=l.value)}function k(){i.value&&(c.value=i.value.currentTime)}function N(){s.value=!1}function S(){i.value&&(s.value?(i.value.pause(),s.value=!1):(i.value.play(),s.value=!0))}function y(B){if(!B||isNaN(B))return"00:00";const D=Math.floor(B/60),X=Math.floor(B%60);return`${D.toString().padStart(2,"0")}:${X.toString().padStart(2,"0")}`}function C(B){if(!i.value||!w.value)return;const D=w.value.getBoundingClientRect(),ee=(B.clientX-D.left)/D.width*l.value;i.value.currentTime=Math.max(0,Math.min(ee,l.value))}function U(){u.value=c.value}function x(){p.value=c.value}function I(){u.value=0,p.value=l.value}function R(B){f.value=B;const D=Z=>{if(!f.value||!w.value)return;const ee=w.value.getBoundingClientRect(),te=(Z.clientX-ee.left)/ee.width*l.value;f.value==="start"?u.value=Math.max(0,Math.min(te,p.value-1)):p.value=Math.max(u.value+1,Math.min(te,l.value))},X=()=>{f.value=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",X)};document.addEventListener("mousemove",D),document.addEventListener("mouseup",X)}function A(B){if(v.value=B,!i.value)return;const D={none:"none",grayscale:"grayscale(100%)",sepia:"sepia(100%)",blur:"blur(5px)",brightness:"brightness(150%)",contrast:"contrast(150%)"};i.value.style.filter=D[B]||"none"}function M(){}function P(B){}function H(){const B={timeline:[{id:d.value,url:r.value,startTime:0,endTime:l.value,sourceIn:u.value,sourceOut:p.value,track:0}],filters:v.value?[{type:v.value}]:[],textOverlays:g.value?[{content:g.value}]:[],duration:p.value-u.value};o("save",B)}return(B,D)=>(e.openBlock(),e.createElementBlock("div",l2,[e.createElementVNode("div",c2,[e.createElementVNode("video",{ref_key:"videoElement",ref:i,class:"video-preview",src:r.value,onLoadedmetadata:m,onTimeupdate:k,onEnded:N,controls:""},null,40,d2),e.createElementVNode("div",u2,[e.createElementVNode("button",{class:"play-pause-btn",onClick:S,"aria-label":s.value?"Pause":"Play"},[e.createVNode(e.unref($.IonIcon),{icon:s.value?e.unref(Nu):e.unref(Iu)},null,8,["icon"])],8,m2),e.createElementVNode("div",p2,e.toDisplayString(y(c.value))+" / "+e.toDisplayString(y(l.value)),1)])]),e.createElementVNode("div",f2,[e.createElementVNode("div",{class:"timeline-track",onClick:C,ref_key:"timelineTrack",ref:w},[e.createElementVNode("div",{class:"timeline-clip",style:e.normalizeStyle({left:`${u.value/l.value*100}%`,right:`${100-p.value/l.value*100}%`})},[e.createElementVNode("span",h2,e.toDisplayString(d.value),1)],4),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:`${c.value/l.value*100}%`})},null,4),h.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"trim-handle trim-start",style:e.normalizeStyle({left:`${u.value/l.value*100}%`}),onMousedown:D[0]||(D[0]=X=>R("start"))},null,36)):e.createCommentVNode("",!0),h.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"trim-handle trim-end",style:e.normalizeStyle({left:`${p.value/l.value*100}%`}),onMousedown:D[1]||(D[1]=X=>R("end"))},null,36)):e.createCommentVNode("",!0)],512),e.createElementVNode("div",v2,[e.createElementVNode("span",null,e.toDisplayString(y(0)),1),e.createElementVNode("span",null,e.toDisplayString(y(l.value)),1)])]),e.createElementVNode("div",g2,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,X=>e.createElementVNode("button",{key:X.id,class:e.normalizeClass(["tool-tab",{active:h.value===X.id}]),onClick:Z=>h.value=X.id},[e.createVNode(e.unref($.IonIcon),{icon:X.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(X.label),1)],10,y2)),64))]),e.createElementVNode("div",w2,[h.value==="trim"?(e.openBlock(),e.createElementBlock("div",b2,[D[7]||(D[7]=e.createElementVNode("h3",null,"Trim Video",-1)),D[8]||(D[8]=e.createElementVNode("p",null,"Click and drag on the timeline to set trim points",-1)),e.createElementVNode("div",k2,[e.createElementVNode("button",{class:"btn-trim",onClick:U},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(ss)},null,8,["icon"]),D[4]||(D[4]=e.createTextVNode(" Set Start ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:x},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(ss)},null,8,["icon"]),D[5]||(D[5]=e.createTextVNode(" Set End ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:I},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Dn)},null,8,["icon"]),D[6]||(D[6]=e.createTextVNode(" Clear ",-1))])])])):h.value==="filters"?(e.openBlock(),e.createElementBlock("div",x2,[D[9]||(D[9]=e.createElementVNode("h3",null,"Filters",-1)),e.createElementVNode("div",E2,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(T,X=>e.createElementVNode("button",{key:X.id,class:e.normalizeClass(["filter-option",{active:v.value===X.id}]),onClick:Z=>A(X.id)},e.toDisplayString(X.name),11,V2)),64))])])):h.value==="text"?(e.openBlock(),e.createElementBlock("div",S2,[D[10]||(D[10]=e.createElementVNode("h3",null,"Text Overlay",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":D[2]||(D[2]=X=>g.value=X),type:"text",placeholder:"Enter text...",class:"text-input"},null,512),[[e.vModelText,g.value]]),e.createElementVNode("button",{class:"btn-add-text",onClick:M},"Add Text")])):h.value==="transitions"?(e.openBlock(),e.createElementBlock("div",C2,[D[11]||(D[11]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",_2,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(_,X=>e.createElementVNode("button",{key:X.id,class:"transition-option",onClick:Z=>(X.id,void 0)},e.toDisplayString(X.name),9,N2)),64))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",T2,[e.createElementVNode("button",{class:"btn-cancel",onClick:D[3]||(D[3]=X=>B.$emit("cancel"))},"CANCEL"),e.createElementVNode("button",{class:"btn-save",onClick:H},"SAVE")])]))}}),B2=Me(M2,[["__scopeId","data-v-b933f33b"]]),I2={class:"time-label"},F2=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 s=[],c=i(n.duration,n.zoom);for(let l=0;l<=n.duration;l+=c){const d=`${l/n.duration*100}%`,u=r(l),p=l%(c*5)===0;s.push({time:l,position:d,label:u,major:p})}return s});function i(s,c){const l=s/(10*c);return l<=1?1:l<=5?5:l<=10?10:l<=30?30:l<=60?60:Math.ceil(l/60)*60}function r(s){const c=Math.floor(s/60),l=Math.floor(s%60);return c===0?`${l}s`:l===0?`${c}m`:`${c}:${l.toString().padStart(2,"0")}`}return(s,c)=>(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,l=>(e.openBlock(),e.createElementBlock("div",{key:l.time,class:"time-mark",style:e.normalizeStyle({left:l.position})},[e.createElementVNode("span",I2,e.toDisplayString(l.label),1),e.createElementVNode("div",{class:e.normalizeClass(["time-tick",{major:l.major}])},null,2)],4))),128))],4))}}),$2=Me(F2,[["__scopeId","data-v-0ef9c910"]]),R2=["data-track-index"],D2={class:"track-header"},A2={class:"track-label"},U2={class:"track-controls"},O2=["data-testid","aria-label"],L2=["data-testid","onMousedown","onClick"],z2={class:"clip-content"},P2={class:"clip-name"},j2={key:0,class:"clip-thumbnail"},W2=["src","alt"],Z2=["onMousedown","aria-label"],X2=["onMousedown","aria-label"],H2=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),s=e.ref(!1),c=e.ref(null),l=e.computed(()=>({width:`${t.duration*t.zoom*100}px`}));function d(E){const T=E.timelineEnd-E.timelineStart,_=E.timelineStart/t.duration*100,w=T/t.duration*100;return{left:`${_}%`,width:`${w}%`,backgroundColor:u(E)}}function u(E){const T=["#4A90E2","#7ED321","#F5A623","#BD10E0","#9013FE","#50E3C2","#B8E986","#F8E71C"],_=parseInt(E.id.replace(/\D/g,""))%T.length;return T[_]}function p(E){return E.label?E.label:E.url?(E.url.split("/").pop()||"Clip").split(".")[0]:`Clip ${E.id.slice(-4)}`}function f(E){i.value=E.id,o("clip-select",E.id)}function h(){r.value=!r.value}function v(E,T){if(c.value)return;s.value=!0;const _=T.clientX,w=E.timelineStart,m=N=>{if(!s.value)return;const S=N.clientX-_,y=parseFloat(l.value.width),C=S/(t.zoom*100)*(t.duration/y),U=Math.max(0,w+C);o("clip-move",E.id,U)},k=()=>{s.value=!1,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",k)};document.addEventListener("mousemove",m),document.addEventListener("mouseup",k)}function g(E,T,_){c.value=T;const w=_.clientX,m=E.sourceIn,k=E.sourceOut,N=y=>{if(!c.value)return;const C=y.clientX-w,U=parseFloat(l.value.width),x=C/(t.zoom*100)*(t.duration/U);if(c.value==="start"){const I=Math.max(0,m+x);o("clip-trim",E.id,I,k)}else{const I=Math.max(m+1,k+x);o("clip-trim",E.id,m,I)}},S=()=>{c.value=null,document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",S)};document.addEventListener("mousemove",N),document.addEventListener("mouseup",S)}return(E,T)=>(e.openBlock(),e.createElementBlock("div",{class:"video-track","data-track-index":E.trackIndex},[e.createElementVNode("div",D2,[e.createElementVNode("span",A2,"Track "+e.toDisplayString(E.trackIndex+1),1),e.createElementVNode("div",U2,[E.clips.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"track-btn","data-testid":`btn-mute-track-${E.trackIndex}`,"aria-label":`${r.value?"Unmute":"Mute"} track ${E.trackIndex+1}`,onClick:h},[e.createVNode(e.unref($.IonIcon),{icon:r.value?e.unref(Hu):e.unref(Zu)},null,8,["icon"])],8,O2)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",{class:"track-timeline",style:e.normalizeStyle(l.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.clips,_=>(e.openBlock(),e.createElementBlock("div",{key:_.id,class:e.normalizeClass(["timeline-clip",{selected:_.id===i.value}]),style:e.normalizeStyle(d(_)),"data-testid":`clip-${_.id}`,onMousedown:w=>v(_,w),onClick:w=>f(_)},[e.createElementVNode("div",z2,[e.createElementVNode("span",P2,e.toDisplayString(p(_)),1),_.thumbnail?(e.openBlock(),e.createElementBlock("div",j2,[e.createElementVNode("img",{src:_.thumbnail,alt:p(_)},null,8,W2)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"trim-handle trim-start",onMousedown:e.withModifiers(w=>g(_,"start",w),["stop"]),"aria-label":`Trim start of ${p(_)}`},null,40,Z2),e.createElementVNode("div",{class:"trim-handle trim-end",onMousedown:e.withModifiers(w=>g(_,"end",w),["stop"]),"aria-label":`Trim end of ${p(_)}`},null,40,X2)],46,L2))),128))],4)],8,R2))}}),G2=Me(H2,[["__scopeId","data-v-48e480d2"]]),J2={class:"video-timeline"},Y2={class:"timeline-tracks"},K2=["aria-label","aria-valuenow","aria-valuemax"],q2={class:"timeline-controls"},Q2={class:"zoom-level"},ek=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),s=e.ref(!1),c=e.ref(),l=e.computed(()=>{const w=Math.max(0,...t.clips.map(m=>m.track||0));return Array(w+1).fill(null)}),d=e.computed(()=>`${t.currentTime/t.duration*100}%`);function u(w){return t.clips.filter(m=>(m.track||0)===w)}function p(w){const m=Math.floor(w/60),k=Math.floor(w%60);return`${m}:${k.toString().padStart(2,"0")}`}function f(w,m){o("clip-move",w,m)}function h(w,m,k){o("clip-trim",w,m,k)}function v(w){r.value=w}function g(){i.value=Math.min(i.value*1.2,5)}function E(){i.value=Math.max(i.value/1.2,.5)}function T(){s.value=!0;const w=k=>{if(!s.value||!c.value)return;const N=c.value.getBoundingClientRect(),C=Math.max(0,Math.min(k.clientX-N.left,N.width))/N.width*t.duration;o("seek",C)},m=()=>{s.value=!1,document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",m)};document.addEventListener("mousemove",w),document.addEventListener("mouseup",m)}function _(w){let m=t.currentTime;switch(w.key){case"ArrowLeft":m=Math.max(0,t.currentTime-1);break;case"ArrowRight":m=Math.min(t.duration,t.currentTime+1);break;case"Home":m=0;break;case"End":m=t.duration;break;default:return}w.preventDefault(),o("seek",m)}return e.onMounted(()=>{c.value=document.querySelector(".video-timeline")}),e.onUnmounted(()=>{}),(w,m)=>(e.openBlock(),e.createElementBlock("div",J2,[e.createVNode($2,{duration:w.duration,zoom:i.value},null,8,["duration","zoom"]),e.createElementVNode("div",Y2,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,N)=>(e.openBlock(),e.createBlock(G2,{key:`track-${N}`,"data-testid":`track-${N}`,clips:u(N),"track-index":N,zoom:i.value,duration:w.duration,onClipMove:f,onClipTrim:h,onClipSelect:v},null,8,["data-testid","clips","track-index","zoom","duration"]))),128))]),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:d.value}),onMousedown:T,"data-testid":"playhead","aria-label":`Playhead at ${p(w.currentTime)}`,role:"slider","aria-valuenow":w.currentTime,"aria-valuemax":w.duration,tabindex:"0",onKeydown:_},null,44,K2),e.createElementVNode("div",q2,[e.createElementVNode("button",{"data-testid":"btn-zoom-in","aria-label":"Zoom in",onClick:g},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(qi)},null,8,["icon"])]),e.createElementVNode("span",Q2,e.toDisplayString(Math.round(i.value*100))+"%",1),e.createElementVNode("button",{"data-testid":"btn-zoom-out","aria-label":"Zoom out",onClick:E},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Uu)},null,8,["icon"])])])]))}}),tk=Me(ek,[["__scopeId","data-v-001df415"]]),nk={class:"video-filters-panel"},ok={class:"filter-controls"},ak=["for"],ik={class:"filter-slider-group"},rk=["id","onUpdate:modelValue","min","max","step","data-testid","aria-label","aria-valuenow","aria-valuemin","aria-valuemax","onInput"],sk={class:"filter-value"},lk={class:"filter-actions"},ck={key:0,class:"filter-presets"},dk={class:"preset-list"},uk=["data-testid","aria-label","onClick"],mk=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((f,h)=>(f[h.type]=h.default,f),{})),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 s(f,h){switch(f){case"brightness":case"contrast":case"saturation":case"sepia":case"grayscale":return`${h}%`;case"hue":return`${h}°`;case"blur":case"sharpen":return h.toFixed(1);default:return h.toString()}}function c(f){return["brightness","contrast","saturation","hue","blur","sharpen","sepia","grayscale"].includes(f)}function l(f){if(!c(f))return;const h={id:`filter-${f}`,filterId:f,params:{value:i[f]},intensity:1};t("filter-change",h)}function d(){o.forEach(f=>{i[f.type]=f.default,l(f.type)})}function u(){const f=prompt("Enter preset name:");if(!f)return;const h={id:`custom-${Date.now()}`,name:f,values:{...i}};r.value.push(h)}function p(f){Object.entries(f.values).forEach(([h,v])=>{i[h]=v,l(h)})}return(f,h)=>(e.openBlock(),e.createElementBlock("div",nk,[h[3]||(h[3]=e.createElementVNode("h3",null,"Video Filters",-1)),e.createElementVNode("div",ok,[(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,ak),e.createElementVNode("div",ik,[e.withDirectives(e.createElementVNode("input",{id:`filter-${v.type}`,"onUpdate:modelValue":g=>i[v.type]=g,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:g=>l(v.type)},null,40,rk),[[e.vModelText,i[v.type],void 0,{number:!0}]]),e.createElementVNode("span",sk,e.toDisplayString(s(v.type,i[v.type])),1)])])),64))]),e.createElementVNode("div",lk,[e.createElementVNode("button",{class:"reset-filters-btn","data-testid":"btn-reset-filters","aria-label":"Reset all filters to default",onClick:d},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ln)},null,8,["icon"]),h[0]||(h[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:u},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(er)},null,8,["icon"]),h[1]||(h[1]=e.createTextVNode(" Save as Preset ",-1))])]),r.value.length>0?(e.openBlock(),e.createElementBlock("div",ck,[h[2]||(h[2]=e.createElementVNode("h4",null,"Presets",-1)),e.createElementVNode("div",dk,[(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:g=>p(v)},e.toDisplayString(v.name),9,uk))),128))])])):e.createCommentVNode("",!0)]))}}),pk=Me(mk,[["__scopeId","data-v-5ad2ac63"]]),fk={class:"video-text-panel"},hk={class:"text-input-group"},vk={class:"text-options"},gk={class:"option-row"},yk={class:"option-row"},wk={class:"option-row"},bk={class:"option-row"},kk={class:"checkbox-label"},xk={class:"option-row"},Ek={class:"text-overlay-list"},Vk={key:0,class:"empty-state"},Sk=["data-testid"],Ck={class:"overlay-preview"},_k={class:"overlay-controls"},Nk=["data-testid","aria-label","onClick"],Tk=["data-testid","aria-label","onClick"],Mk=["data-testid","aria-label","onClick"],Bk=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 d={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&&(d.backgroundColor=i.backgroundColor),i.animation!=="none"&&(d.animation=i.animation),o.value.push(d),t("text-add",d),i.text=""}function s(d){const u=o.value.findIndex(p=>p.id===d);u!==-1&&(o.value.splice(u,1),t("text-remove",d))}function c(d){i.text=d.text,i.fontFamily=d.fontFamily||"Arial",i.fontSize=d.fontSize,i.color=d.color,i.backgroundColor=d.backgroundColor||"#000000",i.hasBackground=!!d.backgroundColor,i.animation=d.animation||"none",s(d.id)}function l(d){const u={...d,id:`text-${Date.now()}`,x:d.x+10,y:d.y+10};o.value.push(u),t("text-add",u)}return(d,u)=>(e.openBlock(),e.createElementBlock("div",fk,[u[17]||(u[17]=e.createElementVNode("h3",null,"Text Overlays",-1)),e.createElementVNode("div",hk,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=p=>i.text=p),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($.IonIcon),{icon:e.unref(qi)},null,8,["icon"]),u[7]||(u[7]=e.createTextVNode(" Add ",-1))])]),e.createElementVNode("div",vk,[e.createElementVNode("div",gk,[u[9]||(u[9]=e.createElementVNode("label",{for:"font-family"},"Font:",-1)),e.withDirectives(e.createElementVNode("select",{id:"font-family","onUpdate:modelValue":u[1]||(u[1]=p=>i.fontFamily=p),"data-testid":"select-font"},[...u[8]||(u[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",yk,[u[10]||(u[10]=e.createElementVNode("label",{for:"font-size"},"Size:",-1)),e.withDirectives(e.createElementVNode("input",{id:"font-size","onUpdate:modelValue":u[2]||(u[2]=p=>i.fontSize=p),type:"number",min:"10",max:"200","data-testid":"input-font-size"},null,512),[[e.vModelText,i.fontSize,void 0,{number:!0}]])]),e.createElementVNode("div",wk,[u[11]||(u[11]=e.createElementVNode("label",{for:"text-color"},"Color:",-1)),e.withDirectives(e.createElementVNode("input",{id:"text-color","onUpdate:modelValue":u[3]||(u[3]=p=>i.color=p),type:"color","data-testid":"input-text-color"},null,512),[[e.vModelText,i.color]])]),e.createElementVNode("div",bk,[u[13]||(u[13]=e.createElementVNode("label",{for:"bg-color"},"Background:",-1)),e.withDirectives(e.createElementVNode("input",{id:"bg-color","onUpdate:modelValue":u[4]||(u[4]=p=>i.backgroundColor=p),type:"color","data-testid":"input-bg-color"},null,512),[[e.vModelText,i.backgroundColor]]),e.createElementVNode("label",kk,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[5]||(u[5]=p=>i.hasBackground=p),type:"checkbox","data-testid":"checkbox-bg"},null,512),[[e.vModelCheckbox,i.hasBackground]]),u[12]||(u[12]=e.createTextVNode(" Enable ",-1))])]),e.createElementVNode("div",xk,[u[15]||(u[15]=e.createElementVNode("label",{for:"text-animation"},"Animation:",-1)),e.withDirectives(e.createElementVNode("select",{id:"text-animation","onUpdate:modelValue":u[6]||(u[6]=p=>i.animation=p),"data-testid":"select-animation"},[...u[14]||(u[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",Ek,[u[16]||(u[16]=e.createElementVNode("h4",null,"Active Overlays",-1)),o.value.length===0?(e.openBlock(),e.createElementBlock("div",Vk," No text overlays added yet ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(p,f)=>(e.openBlock(),e.createElementBlock("div",{key:p.id,class:"text-overlay-item","data-testid":`overlay-${f}`},[e.createElementVNode("div",Ck,[e.createElementVNode("span",{style:e.normalizeStyle({fontFamily:p.fontFamily,fontSize:`${Math.min(p.fontSize/4,16)}px`,color:p.color})},e.toDisplayString(p.text),5)]),e.createElementVNode("div",_k,[e.createElementVNode("button",{class:"edit-btn","data-testid":`btn-edit-${f}`,"aria-label":`Edit overlay: ${p.text}`,onClick:h=>c(p)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(wu)},null,8,["icon"])],8,Nk),e.createElementVNode("button",{class:"duplicate-btn","data-testid":`btn-duplicate-${f}`,"aria-label":`Duplicate overlay: ${p.text}`,onClick:h=>l(p)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(yu)},null,8,["icon"])],8,Tk),e.createElementVNode("button",{class:"remove-btn","data-testid":`btn-remove-${f}`,"aria-label":`Remove overlay: ${p.text}`,onClick:h=>s(p.id)},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(zu)},null,8,["icon"])],8,Mk)])],8,Sk))),128))])]))}}),Ik=Me(Bk,[["__scopeId","data-v-4d240e1e"]]),Fk={class:"video-tools-panel"},$k={class:"tool-tabs"},Rk=["data-testid","aria-label","aria-selected","onClick"],Dk={class:"tool-content"},Ak={key:0,class:"trim-panel",role:"tabpanel","aria-label":"Trim controls"},Uk={class:"trim-actions"},Ok={key:3,class:"transitions-panel",role:"tabpanel","aria-label":"Transition controls"},Lk={class:"transition-types"},zk=["data-testid","aria-label","onClick"],Pk={class:"transition-preview"},jk=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:dl},{id:"filters",name:"Filters",icon:sn},{id:"text",name:"Text",icon:hl},{id:"transitions",name:"Transitions",icon:ds}],t=[{id:"fade",name:"Fade",icon:mi},{id:"slide-left",name:"Slide Left",icon:uu},{id:"slide-right",name:"Slide Right",icon:mu},{id:"dissolve",name:"Dissolve",icon:mi},{id:"wipe",name:"Wipe",icon:ds},{id:"zoom",name:"Zoom",icon:mi}];return(o,i)=>(e.openBlock(),e.createElementBlock("div",Fk,[e.createElementVNode("div",$k,[(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:s=>o.$emit("tool-change",r.id)},[e.createVNode(e.unref($.IonIcon),{icon:r.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(r.name),1)],10,Rk)),64))]),e.createElementVNode("div",Dk,[o.activeTool==="trim"?(e.openBlock(),e.createElementBlock("div",Ak,[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",Uk,[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($.IonIcon),{icon:e.unref(ls)},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($.IonIcon),{icon:e.unref(ls)},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($.IonIcon),{icon:e.unref(Dn)},null,8,["icon"]),i[7]||(i[7]=e.createTextVNode(" Clear ",-1))])])])):e.createCommentVNode("",!0),o.activeTool==="filters"?(e.openBlock(),e.createBlock(pk,{key:1,onFilterChange:i[3]||(i[3]=r=>o.$emit("filter-change",r))})):e.createCommentVNode("",!0),o.activeTool==="text"?(e.openBlock(),e.createBlock(Ik,{key:2,onTextAdd:i[4]||(i[4]=r=>o.$emit("text-add",r))})):e.createCommentVNode("",!0),o.activeTool==="transitions"?(e.openBlock(),e.createElementBlock("div",Ok,[i[10]||(i[10]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",Lk,[(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:s=>o.$emit("transition-add",r.id)},[e.createElementVNode("div",Pk,[e.createVNode(e.unref($.IonIcon),{icon:r.icon},null,8,["icon"])]),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],8,zk)),64))])])):e.createCommentVNode("",!0)])]))}}),Wk=Me(jk,[["__scopeId","data-v-fc135306"]]),Zk={class:"video-export-panel"},Xk={class:"export-presets"},Hk=["value"],Gk={key:0,class:"preset-details"},Jk={class:"detail-row"},Yk={class:"detail-row"},Kk={class:"detail-row"},qk={class:"advanced-options"},Qk={class:"options-content"},ex={class:"option-group"},tx={class:"option-group"},nx={class:"option-group"},ox=["disabled"],ax={key:1,class:"export-progress"},ix={class:"progress-message"},rx={class:"progress-bar"},sx=["aria-valuenow"],lx={class:"progress-percentage"},cx=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}),s=e.computed(()=>t.presets.find(d=>d.id===i.value)),c=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 l(){s.value&&o("export",{...s.value,options:{...r}})}return(d,u)=>(e.openBlock(),e.createElementBlock("div",Zk,[u[14]||(u[14]=e.createElementVNode("h3",null,"Export Video",-1)),e.createElementVNode("div",Xk,[u[4]||(u[4]=e.createElementVNode("label",{for:"preset-select"},"Export Preset:",-1)),e.withDirectives(e.createElementVNode("select",{id:"preset-select","onUpdate:modelValue":u[0]||(u[0]=p=>i.value=p),"data-testid":"preset-select","aria-label":"Select export preset"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.presets,p=>(e.openBlock(),e.createElementBlock("option",{key:p.id,value:p.id},e.toDisplayString(p.name),9,Hk))),128))],512),[[e.vModelSelect,i.value]])]),s.value?(e.openBlock(),e.createElementBlock("div",Gk,[e.createElementVNode("div",Jk,[u[5]||(u[5]=e.createElementVNode("span",null,"Resolution:",-1)),e.createElementVNode("span",null,e.toDisplayString(s.value.width)+"x"+e.toDisplayString(s.value.height),1)]),e.createElementVNode("div",Yk,[u[6]||(u[6]=e.createElementVNode("span",null,"Frame Rate:",-1)),e.createElementVNode("span",null,e.toDisplayString(s.value.fps)+" fps",1)]),e.createElementVNode("div",Kk,[u[7]||(u[7]=e.createElementVNode("span",null,"Format:",-1)),e.createElementVNode("span",null,e.toDisplayString(s.value.format.toUpperCase()),1)])])):e.createCommentVNode("",!0),e.createElementVNode("details",qk,[u[12]||(u[12]=e.createElementVNode("summary",null,"Advanced Options",-1)),e.createElementVNode("div",Qk,[e.createElementVNode("div",ex,[u[9]||(u[9]=e.createElementVNode("label",{for:"quality-select"},"Quality:",-1)),e.withDirectives(e.createElementVNode("select",{id:"quality-select","onUpdate:modelValue":u[1]||(u[1]=p=>r.quality=p),"data-testid":"quality-select"},[...u[8]||(u[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",tx,[u[10]||(u[10]=e.createElementVNode("label",{for:"bitrate-input"},"Bitrate (Mbps):",-1)),e.withDirectives(e.createElementVNode("input",{id:"bitrate-input","onUpdate:modelValue":u[2]||(u[2]=p=>r.bitrate=p),type:"number",min:"1",max:"50","data-testid":"bitrate-input"},null,512),[[e.vModelText,r.bitrate,void 0,{number:!0}]])]),e.createElementVNode("div",nx,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[3]||(u[3]=p=>r.includeAudio=p),type:"checkbox","data-testid":"include-audio"},null,512),[[e.vModelCheckbox,r.includeAudio]]),u[11]||(u[11]=e.createTextVNode(" Include Audio ",-1))])])])]),e.createElementVNode("button",{class:"btn-export",disabled:d.isExporting||!s.value,"data-testid":"btn-start-export","aria-label":"Start video export",onClick:l},[d.isExporting?(e.openBlock(),e.createBlock(e.unref($.IonSpinner),{key:0,name:"crescent"})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(vo)},null,8,["icon"]),u[13]||(u[13]=e.createTextVNode(" Export Video ",-1))],64))],8,ox),d.isExporting?(e.openBlock(),e.createElementBlock("div",ax,[e.createElementVNode("div",ix,e.toDisplayString(c.value),1),e.createElementVNode("div",rx,[e.createElementVNode("div",{class:"progress-fill",style:e.normalizeStyle({width:`${d.exportProgress}%`}),role:"progressbar","aria-valuenow":d.exportProgress,"aria-valuemin":"0","aria-valuemax":"100"},null,12,sx)]),e.createElementVNode("div",lx,e.toDisplayString(d.exportProgress)+"% ",1)])):e.createCommentVNode("",!0)]))}}),dx=Me(cx,[["__scopeId","data-v-5caf8fe6"]]),ux=["data-testid"],mx={class:"progress-header"},px={class:"file-info"},fx={class:"file-details"},hx={class:"file-name"},vx={class:"file-meta"},gx={class:"file-size"},yx={key:0,class:"separator"},wx={key:1,class:"upload-speed"},bx={key:2,class:"separator"},kx={key:3,class:"time-remaining"},xx={class:"progress-actions"},Ex={key:0,class:"status-icon completed","data-testid":"video-upload-status-completed"},Vx={key:1,class:"status-icon error","data-testid":"video-upload-status-error"},Sx={key:2,class:"status-icon processing","data-testid":"video-upload-status-processing",role:"status","aria-label":"Processing video"},Cx=["aria-valuenow","aria-label"],_x={class:"progress-bar"},Nx={class:"progress-percent"},Tx={key:1,class:"error-message","data-testid":"video-upload-error"},Mx={key:2,class:"thumbnail-preview","data-testid":"video-upload-thumbnail"},Bx=["src","alt"],Ix={key:0,class:"video-duration"},Fx=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(()=>vl),i=e.computed(()=>["uploading","processing"].includes(n.upload.status)),r=e.computed(()=>(n.upload.status==="processing",n.upload.progress||0)),s=e.computed(()=>{if(!n.upload.timeRemaining||n.upload.status!=="uploading")return null;const f=n.upload.timeRemaining;if(f<60)return`${Math.round(f)}s`;const h=Math.floor(f/60);return h<60?`${h}m ${Math.round(f%60)}s`:`${Math.floor(h/60)}h ${h%60}m`}),c=e.computed(()=>{var f;return n.upload.status==="completed"&&((f=n.upload.media)!=null&&f.thumbnail_url)?n.upload.media.thumbnail_url:null}),l=e.computed(()=>{var f;return(f=n.upload.media)==null?void 0:f.duration});function d(f){if(f===0)return"0 B";const h=["B","KB","MB","GB","TB"],v=1024,g=Math.floor(Math.log(f)/Math.log(v));return`${(f/Math.pow(v,g)).toFixed(1)} ${h[g]}`}function u(f){if(f===0)return"0 B/s";const h=["B/s","KB/s","MB/s","GB/s"],v=1024,g=Math.floor(Math.log(f)/Math.log(v));return`${(f/Math.pow(v,g)).toFixed(1)} ${h[g]}`}function p(f){const h=Math.floor(f/3600),v=Math.floor(f%3600/60),g=Math.floor(f%60);return h>0?`${h}:${v.toString().padStart(2,"0")}:${g.toString().padStart(2,"0")}`:`${v}:${g.toString().padStart(2,"0")}`}return(f,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["upload-progress-item",t.value]),"data-testid":`video-upload-progress-${f.upload.id}`},[e.createElementVNode("div",mx,[e.createElementVNode("div",px,[e.createVNode(e.unref($.IonIcon),{icon:o.value,class:"file-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("div",fx,[e.createElementVNode("h4",hx,e.toDisplayString(f.upload.filename),1),e.createElementVNode("p",vx,[e.createElementVNode("span",gx,e.toDisplayString(d(f.upload.bytesTotal||0)),1),f.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",yx,"•")):e.createCommentVNode("",!0),f.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",wx,e.toDisplayString(u(f.upload.uploadSpeed||0)),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",bx,"•")):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",kx,e.toDisplayString(s.value)+" remaining ",1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",xx,[f.upload.status==="completed"?(e.openBlock(),e.createElementBlock("div",Ex,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(ll)},null,8,["icon"])])):f.upload.status==="error"?(e.openBlock(),e.createElementBlock("div",Vx,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(du),"aria-hidden":"true"},null,8,["icon"])])):f.upload.status==="processing"?(e.openBlock(),e.createElementBlock("div",Sx,[e.createVNode(e.unref($.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),f.upload.status==="uploading"?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:3,fill:"clear",size:"small",onClick:h[0]||(h[0]=v=>f.$emit("cancel")),"data-testid":"btn-cancel-video-upload","aria-label":"Cancel upload"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Dn),slot:"icon-only"},null,8,["icon"])]),_:1})):f.upload.status==="error"?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:4,fill:"clear",size:"small",onClick:h[1]||(h[1]=v=>f.$emit("retry")),"data-testid":"btn-retry-video-upload","aria-label":"Retry upload"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ln),slot:"icon-only"},null,8,["icon"])]),_:1})):f.upload.status==="completed"?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:5,fill:"clear",size:"small",onClick:h[2]||(h[2]=v=>f.$emit("remove")),"data-testid":"btn-remove-video-upload","aria-label":"Remove from list"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Dn),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":f.upload.status==="processing"?"Processing progress":"Upload progress"},[e.createElementVNode("div",_x,[e.createElementVNode("div",{class:e.normalizeClass(["progress-fill",{indeterminate:f.upload.status==="processing"}]),style:e.normalizeStyle({width:r.value+"%"})},null,6)]),e.createElementVNode("span",Nx,e.toDisplayString(Math.round(r.value))+"%",1)],8,Cx)):e.createCommentVNode("",!0),f.upload.error?(e.openBlock(),e.createElementBlock("div",Tx,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Gu)},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(f.upload.error),1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",Mx,[e.createElementVNode("img",{src:c.value,alt:f.upload.filename},null,8,Bx),l.value?(e.openBlock(),e.createElementBlock("div",Ix,e.toDisplayString(p(l.value)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,ux))}}),$x=Me(Fx,[["__scopeId","data-v-9eacbf91"]]),Ei=4,Rx=500,Dx=new Set([408,425,429,500,502,503,504,520,521,522,523,524,525]);function ja(a){return typeof a=="object"&&a!==null}function Js(a){return ja(a)?typeof a.upload_url=="string"&&typeof a.upload_id=="string"&&typeof a.media_uuid=="string"&&typeof a.expires_at=="string":!1}function Ax(a){if(Js(a))return a;if(ja(a)&&Js(a.data))return a.data;throw new Error("Invalid upload response from backend")}function Ys(a){return ja(a)?typeof a.uuid=="string"&&typeof a.processing_status=="string":!1}function Ux(a){if(Ys(a))return a;if(ja(a)&&Ys(a.data))return a.data;throw new Error("Invalid media response from backend")}function Zo(a){return a?{...a}:{}}function Ks(a,n="PUT"){return typeof a.method=="string"&&a.method.trim()!==""?a.method.trim().toUpperCase():n}function Ox(a){return a.resumable===!0?!0:/tusupload/i.test(a.upload_url)}function Lx(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 zx(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} ${Lx(i)}`).join(",")}function Xo(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 Px(a,n){return a instanceof Error?a:new Error(n)}function jx(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 qs(a){const n=Math.max(0,a-1),t=Rx*Math.pow(2,n);return Math.min(5e3,t)}function Qs(a){return new Promise(n=>{window.setTimeout(n,a)})}async function el(a,n){for(let t=1;t<=Ei;t+=1)try{const o=await n();if(o.ok||!Dx.has(o.status)||t>=Ei)return o;await Qs(qs(t))}catch(o){if(!jx(o)||t>=Ei)throw o;await Qs(qs(t))}throw new Error(`${a} failed after retry attempts`)}function Wx(a={}){const n=e.ref(new Map),t=e.ref(new Set),o=e.ref(null),i=new Map,r=new Map,s=e.computed(()=>t.value.size>0),c=e.computed(()=>Array.from(n.value.values())),l=e.computed(()=>{const x=Array.from(n.value.values());return x.length===0?0:x.reduce((R,A)=>R+A.progress,0)/x.length});function d(x){o.value=x}function u(){}async function p(x){var R;const I=x.filter(A=>f(A));if(I.length!==0&&((R=a.onFilesSelected)==null||R.call(a,I),a.autoUpload!==!1))for(const A of I)await h(A)}function f(x){return!(a.maxFileSize&&x.size>a.maxFileSize||a.allowedFormats&&a.allowedFormats.length>0&&!a.allowedFormats.includes(x.type))}async function h(x){var A,M,P;const I=U(x);if(n.value.has(I)){const H=n.value.get(I);if((H==null?void 0:H.status)==="uploading")return}const R={id:I,file:x,filename:x.name,progress:0,status:"pending",startedAt:new Date,bytesTotal:x.size,bytesUploaded:0};n.value.set(R.id,R),t.value.add(R.id);try{R.status="uploading",(A=a.onUploadStart)==null||A.call(a,R);const H=await v(x);a.resumable===!0||H.resumable===!0?await E(R,H):await g(R,H),R.status="processing",R.progress=100;const D=await k(H.media_uuid);R.status="completed",R.media=D,(M=a.onUploadComplete)==null||M.call(a,D)}catch(H){if(R.status!=="cancelled"){const B=Px(H,"Upload failed");R.status="error",R.error=B.message,(P=a.onUploadError)==null||P.call(a,B,R)}}finally{t.value.delete(R.id),i.delete(R.id),r.delete(R.id)}}async function v(x){if(!o.value)throw new Error("API client not configured");const I={collection:a.collection||"videos",filename:x.name,size:x.size,mime_type:x.type,...a.ownerUuid!==void 0?{ownerUuid:a.ownerUuid}:{},...a.ownerType!==void 0?{ownerType:a.ownerType}:{}},R=await o.value.post("/api/v1/video/upload",I);return Ax(R)}async function g(x,I){const R=new XMLHttpRequest,A=Ks(I),M=Zo(I.headers);return new Promise((P,H)=>{R.upload.addEventListener("progress",B=>{var D;B.lengthComputable&&(Xo(x,B.loaded),(D=a.onUploadProgress)==null||D.call(a,x))}),R.addEventListener("load",()=>{i.delete(x.id),R.status>=200&&R.status<300?P():H(new Error(`Upload failed with status ${R.status}`))}),R.addEventListener("error",()=>{i.delete(x.id),H(new Error("Upload failed"))}),R.addEventListener("abort",()=>{i.delete(x.id),H(new Error("Upload cancelled"))}),R.open(A,I.upload_url),Object.entries(M).forEach(([B,D])=>{R.setRequestHeader(B,D)}),!Object.keys(M).some(B=>B.toLowerCase()==="content-type")&&x.file.type&&R.setRequestHeader("Content-Type",x.file.type),i.set(x.id,R),R.send(x.file)})}async function E(x,I){var H;if(Ox(I)){await T(x,I);return}const R=a.chunkSize||5*1024*1024,A=_(x.file,R),M=new AbortController;r.set(x.id,M);const P=await m(I.upload_id);P&&(A.forEach(B=>{B.end<=P.bytesUploaded&&(B.uploaded=!0)}),Xo(x,P.bytesUploaded));for(const B of A)B.uploaded||(await w(x,I,B,M),Xo(x,B.end),(H=a.onUploadProgress)==null||H.call(a,x))}async function T(x,I){var X;const R=new AbortController;r.set(x.id,R);const A={...Zo(I.headers),"Tus-Resumable":"1.0.0","Upload-Length":String(x.file.size),"Upload-Metadata":zx(x,I)},M=await el("Resumable upload initialization",()=>fetch(I.upload_url,{method:"POST",headers:A,signal:R.signal}));if(!M.ok)throw new Error(`Failed to initialize resumable upload: ${M.status}`);const P=M.headers.get("Location");if(!P)throw new Error("Resumable upload endpoint did not return upload location");const H=new URL(P,I.upload_url).toString(),B=a.chunkSize||5*1024*1024;let D=0;for(;D<x.file.size;){const Z=Math.min(D+B,x.file.size),ee=x.file.slice(D,Z),ge={...Zo(I.headers),"Tus-Resumable":"1.0.0","Upload-Offset":String(D),"Content-Type":"application/offset+octet-stream"},Ee=await el("Resumable chunk upload",()=>fetch(H,{method:"PATCH",headers:ge,body:ee,signal:R.signal}));if(Ee.status===409){const F=Number(Ee.headers.get("Upload-Offset")??"-1");if(Number.isFinite(F)&&F>=0){D=F;continue}}if(!Ee.ok)throw new Error(`Resumable chunk upload failed: ${Ee.status}`);const te=Number(Ee.headers.get("Upload-Offset")??String(Z));D=Number.isFinite(te)&&te>D?te:Z,Xo(x,D),(X=a.onUploadProgress)==null||X.call(a,x)}}function _(x,I){const R=[];let A=0,M=0;for(;A<x.size;){const P=Math.min(A+I,x.size);R.push({start:A,end:P,blob:x.slice(A,P),index:M,uploaded:!1}),A=P,M++}return R}async function w(x,I,R,A){const M={...Zo(I.headers),"Content-Range":`bytes ${R.start}-${R.end-1}/${x.file.size}`,"Content-Type":x.file.type||"application/octet-stream"},P=await fetch(I.upload_url,{method:Ks(I),headers:M,body:R.blob,signal:A.signal});if(!P.ok)throw new Error(`Chunk upload failed: ${P.status}`);R.uploaded=!0}async function m(x){return null}async function k(x){if(!o.value)throw new Error("API client not configured");const I=60;let R=0;for(;R<I;){const A=await o.value.get(`/api/v1/video/${x}`),M=Ux(A),P=String(M.processing_status);if(P==="ready")return M;if(P==="failed"||P==="error")throw new Error("Video processing failed");await new Promise(H=>{window.setTimeout(H,5e3)}),R++}throw new Error("Video processing timeout")}function N(x){const I=n.value.get(x);if(!I)return;const R=i.get(x);R&&(R.abort(),i.delete(x));const A=r.get(x);A&&(A.abort(),r.delete(x)),I.status="cancelled",I.error="Upload cancelled",t.value.delete(x)}async function S(x){const I=n.value.get(x);I&&(I.status="pending",I.error="",I.progress=0,I.bytesUploaded=0,await h(I.file))}function y(x){n.value.delete(x),t.value.delete(x),i.delete(x),r.delete(x)}function C(){Array.from(n.value.entries()).forEach(([x,I])=>{I.status==="completed"&&n.value.delete(x)})}function U(x){return`${x.name}-${x.size}-${Date.now()}`}return{uploads:c,isUploading:s,totalProgress:l,openFilePicker:u,handleFileSelect:p,validateFile:f,startUpload:h,cancelUpload:N,retryUpload:S,removeUpload:y,clearCompleted:C,setApiClient:d}}const Zx=["accept","multiple"],Xx={key:0,class:"upload-trigger","data-testid":"video-uploader-trigger"},Hx=["onKeydown"],Gx={key:1,class:"upload-list","data-testid":"video-upload-list"},Jx={class:"drag-content"},Yx=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:s,isUploading:c,handleFileSelect:l,cancelUpload:d,retryUpload:u,removeUpload:p,setApiClient:f}=Wx({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:m=>o("upload-start",m),onUploadProgress:m=>o("upload-progress",m),onUploadComplete:m=>o("upload-complete",m),onUploadError:(m,k)=>o("upload-error",m,k),onFilesSelected:m=>o("files-selected",m)});t.apiClient&&f(t.apiClient);const h=e.computed(()=>t.allowedFormats.join(",")),v=e.computed(()=>t.multiple||s.value.length===0);function g(){i.value&&i.value.click()}function E(m){const k=m.target,N=Array.from(k.files||[]);N.length>0&&(l(N),k.value="")}function T(m){var S;m.preventDefault(),r.value=!1;const N=Array.from(((S=m.dataTransfer)==null?void 0:S.files)||[]).filter(y=>y.type.startsWith("video/"));N.length>0&&l(N)}function _(m){var k;m.preventDefault(),(k=m.dataTransfer)!=null&&k.types.includes("Files")&&(r.value=!0)}function w(m){m.target.closest(".video-uploader")||(r.value=!1)}return e.onMounted(()=>{document.addEventListener("dragover",_),document.addEventListener("dragleave",w),document.addEventListener("drop",m=>m.preventDefault())}),e.onUnmounted(()=>{document.removeEventListener("dragover",_),document.removeEventListener("dragleave",w),document.removeEventListener("drop",m=>m.preventDefault())}),(m,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-uploader",{"is-uploading":e.unref(c)}]),"data-testid":"video-uploader"},[e.createElementVNode("input",{ref_key:"fileInputEl",ref:i,type:"file",accept:h.value,multiple:m.multiple,onChange:E,"data-testid":"video-uploader-input","aria-label":"Select video files to upload",hidden:""},null,40,Zx),!e.unref(c)||v.value?(e.openBlock(),e.createElementBlock("div",Xx,[e.renderSlot(m.$slots,"trigger",{open:g},()=>[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:g,onKeydown:[e.withKeys(g,["enter"]),e.withKeys(e.withModifiers(g,["prevent"]),["space"])]},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(vl),class:"upload-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("h3",null,e.toDisplayString(m.label),1),e.createElementVNode("p",null,e.toDisplayString(m.description),1),e.createVNode(e.unref($.IonButton),{size:"small","data-testid":"btn-select-video","aria-label":"Select video file"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(qi),slot:"start","aria-hidden":"true"},null,8,["icon"]),k[2]||(k[2]=e.createTextVNode(" Select Video ",-1))]),_:1})],40,Hx)],!0)])):e.createCommentVNode("",!0),e.unref(s).length>0?(e.openBlock(),e.createElementBlock("div",Gx,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),N=>(e.openBlock(),e.createBlock($x,{key:N.id,upload:N,onCancel:S=>e.unref(d)(N.id),onRetry:S=>e.unref(u)(N.id),onRemove:S=>e.unref(p)(N.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:T,onDragover:k[0]||(k[0]=e.withModifiers(()=>{},["prevent"])),onDragleave:k[1]||(k[1]=N=>r.value=!1)},[e.createElementVNode("div",Jx,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(vo),"aria-hidden":"true"},null,8,["icon"]),k[3]||(k[3]=e.createElementVNode("p",null,"Drop video files here",-1))])],32)):e.createCommentVNode("",!0)],2))}}),Kx=Me(Yx,[["__scopeId","data-v-ea7587f7"]]),qx=["aria-valuenow","aria-valuemax","aria-label"],Qx={class:"progress-bar"},eE={class:"time-display","data-testid":"video-time-display"},tE={class:"current-time"},nE={class:"duration"},oE={class:"control-buttons"},aE={class:"controls-left"},iE=["aria-label"],rE={class:"controls-center"},sE={key:0,class:"volume-controls"},lE=["aria-label"],cE=["value"],dE={class:"controls-right"},uE={key:0,class:"quality-selector"},mE=["aria-expanded"],pE={class:"quality-label"},fE={key:0,class:"quality-menu","data-testid":"video-quality-menu",role:"menu"},hE=["data-testid","aria-label","onClick"],vE=["aria-label"],gE=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),s=e.ref(),c=$.isPlatform("mobile"),l="pictureInPictureEnabled"in document,d=e.computed(()=>({width:`${t.currentTime/t.duration*100}%`})),u=e.computed(()=>({left:`${t.currentTime/t.duration*100}%`})),p=e.computed(()=>{if(!t.buffered||t.buffered.length===0)return{width:"0%"};for(let m=0;m<t.buffered.length;m++){const k=t.buffered.start(m),N=t.buffered.end(m);if(t.currentTime>=k&&t.currentTime<=N)return{width:`${N/t.duration*100}%`}}return t.buffered.length>0?{width:`${t.buffered.end(0)/t.duration*100}%`}:{width:"0%"}}),f=e.computed(()=>t.muted||t.volume===0?Xu:t.volume<33?ju:t.volume<66?Wu:Pu);let h=null;function v(){i.value=!0,g()}function g(){h&&clearTimeout(h),t.playing&&!c&&(h=setTimeout(()=>{i.value=!1},3e3))}function E(m){if(!s.value||t.isLive)return;const k=s.value.getBoundingClientRect(),S=(m.clientX-k.left)/k.width*t.duration;o("seek",Math.max(0,Math.min(S,t.duration)))}function T(m){const k=m.target;o("setVolume",parseInt(k.value))}function _(m){o("selectQuality",m),r.value=!1}function w(m){if(!isFinite(m))return"0:00";const k=Math.floor(m/3600),N=Math.floor(m%3600/60),S=Math.floor(m%60);return k>0?`${k}:${N.toString().padStart(2,"0")}:${S.toString().padStart(2,"0")}`:`${N}:${S.toString().padStart(2,"0")}`}return e.onMounted(()=>{document.addEventListener("mousemove",v),g()}),e.onUnmounted(()=>{document.removeEventListener("mousemove",v),h&&clearTimeout(h)}),(m,k)=>(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(m.currentTime),"aria-valuemin":"0","aria-valuemax":Math.round(m.duration),"aria-label":m.isLive?"Live stream":"Video progress",tabindex:"0",onClick:E},[e.createElementVNode("div",Qx,[e.createElementVNode("div",{class:"progress-buffered",style:e.normalizeStyle(p.value)},null,4),e.createElementVNode("div",{class:"progress-played",style:e.normalizeStyle(d.value)},null,4),e.createElementVNode("div",{class:"progress-thumb",style:e.normalizeStyle(u.value)},null,4)]),e.createElementVNode("div",eE,[e.createElementVNode("span",tE,e.toDisplayString(w(m.currentTime)),1),k[7]||(k[7]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",nE,e.toDisplayString(m.isLive?"LIVE":w(m.duration)),1)])],8,qx),e.createElementVNode("div",oE,[e.createElementVNode("div",aE,[e.createElementVNode("button",{class:"control-btn play-pause","data-testid":"btn-video-play-pause",onClick:k[0]||(k[0]=N=>m.$emit("play-pause")),"aria-label":m.playing?"Pause":"Play"},[e.createVNode(e.unref($.IonIcon),{icon:m.playing?e.unref(_u):e.unref(Tu),"aria-hidden":"true"},null,8,["icon"])],8,iE),m.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"control-btn skip-backward","data-testid":"btn-video-skip-backward",onClick:k[1]||(k[1]=N=>m.$emit("skip-backward")),"aria-label":"Skip backward 10 seconds"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Mu),"aria-hidden":"true"},null,8,["icon"]),k[8]||(k[8]=e.createElementVNode("span",{class:"skip-label"},"10",-1))])),m.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn skip-forward","data-testid":"btn-video-skip-forward",onClick:k[2]||(k[2]=N=>m.$emit("skip-forward")),"aria-label":"Skip forward 10 seconds"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Fu),"aria-hidden":"true"},null,8,["icon"]),k[9]||(k[9]=e.createElementVNode("span",{class:"skip-label"},"10",-1))]))]),e.createElementVNode("div",rE,[e.unref(c)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",sE,[e.createElementVNode("button",{class:"control-btn mute-btn","data-testid":"btn-video-mute",onClick:k[3]||(k[3]=N=>m.$emit("toggleMute")),"aria-label":m.muted?"Unmute":"Mute"},[e.createVNode(e.unref($.IonIcon),{icon:f.value,"aria-hidden":"true"},null,8,["icon"])],8,lE),e.createElementVNode("input",{type:"range",class:"volume-slider","data-testid":"slider-video-volume",min:"0",max:"100",value:m.muted?0:m.volume,onInput:T,"aria-label":"Volume"},null,40,cE)]))]),e.createElementVNode("div",dE,[m.qualityLevels.length>1?(e.openBlock(),e.createElementBlock("div",uE,[e.createElementVNode("button",{class:"control-btn quality-btn","data-testid":"btn-video-quality",onClick:k[4]||(k[4]=N=>r.value=!r.value),"aria-label":"Quality settings","aria-expanded":r.value},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ou),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("span",pE,e.toDisplayString(m.currentQuality),1)],8,mE),r.value?(e.openBlock(),e.createElementBlock("div",fE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.qualityLevels,N=>(e.openBlock(),e.createElementBlock("button",{key:N.label,class:e.normalizeClass(["quality-option",{active:N.label===m.currentQuality}]),"data-testid":`btn-video-quality-${N.label}`,"aria-label":`Set quality to ${N.label}`,role:"menuitem",onClick:S=>_(N)},e.toDisplayString(N.label),11,hE))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!e.unref(c)&&l?(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn pip-btn","data-testid":"btn-video-pip",onClick:k[5]||(k[5]=N=>m.$emit("togglePiP")),"aria-label":"Picture in Picture"},[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Lu),"aria-hidden":"true"},null,8,["icon"])])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"control-btn fullscreen-btn","data-testid":"btn-video-fullscreen",onClick:k[6]||(k[6]=N=>m.$emit("toggleFullscreen")),"aria-label":m.fullscreen?"Exit fullscreen":"Enter fullscreen"},[e.createVNode(e.unref($.IonIcon),{icon:m.fullscreen?e.unref(gu):e.unref(bu),"aria-hidden":"true"},null,8,["icon"])],8,vE)])])],2))}}),yE=Me(gE,[["__scopeId","data-v-2ae77c13"]]);function wE(a={}){var ee,ge,Ee;const n=e.ref(),t=e.ref(),o=e.ref(!1),i=e.ref(0),r=e.ref(0),s=e.ref(100),c=e.ref(a.muted||!1),l=e.ref(!1),d=e.ref(),u=e.ref(1),p=e.ref(!1),f=e.ref(null),h=e.ref("idle"),v=e.ref(a.playbackUrl||((ee=a.media)==null?void 0:ee.playback_url)||((ge=a.media)==null?void 0:ge.url)||""),g=e.ref(null),E=e.ref(a.isLive||!1),T=e.ref(null),_=e.ref(null);function w(te){_.value=te}if((Ee=a.media)!=null&&Ee.token_expires_at){const te=new Date(a.media.token_expires_at);g.value=Number.isNaN(te.getTime())?null:te}async function m(){var F;const te=E.value?t.value:n.value;if(te)try{await te.play(),o.value=!0,h.value=E.value?"live":"playing",(F=a.onPlay)==null||F.call(a)}catch{f.value="Failed to play video",h.value="error"}}function k(){var F;const te=E.value?t.value:n.value;te&&(te.pause(),o.value=!1,h.value="paused",(F=a.onPause)==null||F.call(a))}function N(){o.value?k():m()}function S(te){const F=E.value?t.value:n.value;if(!F||E.value)return;const j=Number.isFinite(F.duration)?F.duration:te;F.currentTime=Math.max(0,Math.min(te,j)),i.value=F.currentTime}function y(te=10){const F=n.value;!F||E.value||S(F.currentTime+te)}function C(te=10){const F=n.value;!F||E.value||S(F.currentTime-te)}function U(){const te=E.value?t.value:n.value;te&&(te.muted=!te.muted,c.value=te.muted)}function x(te){const F=E.value?t.value:n.value;if(!F)return;const j=Math.max(0,Math.min(100,te));F.volume=j/100,s.value=j,j>0&&F.muted&&(F.muted=!1,c.value=!1)}function I(te){const F=n.value;!F||E.value||(F.playbackRate=te,u.value=te)}async function R(){const te=document.querySelector(".video-player-container");if(te)try{document.fullscreenElement?(await document.exitFullscreen(),l.value=!1):(await te.requestFullscreen(),l.value=!0)}catch{}}async function A(){const te=E.value?t.value:n.value;if(te)try{document.pictureInPictureElement?await document.exitPictureInPicture():document.pictureInPictureEnabled&&await te.requestPictureInPicture()}catch{}}async function M(){var F;f.value=null,h.value="loading",(F=a.media)!=null&&F.provider&&a.media.provider!=="local"&&await P();const te=E.value?t.value:n.value;te&&(te.load(),await m())}async function P(){if(!(!_.value||!a.media))try{p.value=!0;const te=await _.value.get(`/api/v1/video/${a.media.uuid}/playback`);v.value=te.playback_url,g.value=new Date(te.token_expires_at);const F=E.value?t.value:n.value;if(F&&F.src!==v.value){const j=!F.paused,de=F.currentTime;F.src=v.value,E.value||(F.currentTime=de),j&&await m()}}catch{f.value="Failed to refresh playback token",h.value="error"}finally{p.value=!1}}async function H(te){if(t.value){if(t.value.canPlayType("application/vnd.apple.mpegurl")){t.value.src=te;return}try{t.value.src=te}catch{f.value="Live streaming not supported in this browser",h.value="error"}}}function B(){T.value&&(T.value.destroy(),T.value=null)}function D(){var F;const te=E.value?t.value:n.value;te&&(i.value=te.currentTime,r.value=te.duration,(F=a.onTimeUpdate)==null||F.call(a,te.currentTime))}const X=e.computed(()=>{if(!d.value||d.value.length===0||!r.value)return 0;for(let te=0;te<d.value.length;te++){const F=d.value.start(te),j=d.value.end(te);if(i.value>=F&&i.value<=j)return j/r.value*100}return 0});function Z(){if(!g.value)return!1;const te=new Date;return g.value.getTime()-te.getTime()<5*60*1e3}return e.watch([n,t],([te,F])=>{const j=E.value?F:te;j&&(j.addEventListener("timeupdate",D),j.addEventListener("loadedmetadata",()=>{r.value=j.duration,h.value="ready"}),j.addEventListener("progress",()=>{d.value=j.buffered}),j.addEventListener("ended",()=>{var de;o.value=!1,h.value="ended",(de=a.onEnded)==null||de.call(a)}),j.addEventListener("error",de=>{var ne;h.value="error",(ne=a.onError)==null||ne.call(a,"Video playback error")}),j.volume=s.value/100,j.muted=c.value)}),e.onUnmounted(()=>{B();const te=E.value?t.value:n.value;te&&te.removeEventListener("timeupdate",D)}),{videoEl:n,liveVideoEl:t,playing:o,currentTime:i,duration:r,volume:s,muted:c,isFullscreen:l,bufferedRanges:d,bufferedPercent:X,playbackRate:u,isLoading:p,error:f,status:h,currentPlaybackUrl:v,tokenExpiresAt:g,play:m,pause:k,togglePlayPause:N,seek:S,skipForward:y,skipBackward:C,toggleMute:U,setVolume:x,setPlaybackRate:I,toggleFullscreen:R,togglePiP:A,retry:M,refreshToken:P,setupLiveStream:H,setApiClient:w,shouldRefreshToken:Z}}const bE=["src","poster","controls","autoplay","muted","loop","preload"],kE={key:1,ref:"livePlayerEl",class:"live-player"},xE=["controls","muted"],EE={key:0,class:"live-indicator","data-testid":"video-live-indicator","aria-label":"Live stream"},VE={key:2,class:"video-loading","data-testid":"video-loading",role:"status","aria-label":"Loading video"},SE={key:3,class:"video-error","data-testid":"video-error",role:"alert"},CE={key:5,class:"gesture-zones","data-testid":"video-gesture-zones"},_E=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:s,currentTime:c,duration:l,volume:d,muted:u,isFullscreen:p,bufferedRanges:f,isLoading:h,error:v,status:g,currentPlaybackUrl:E,tokenExpiresAt:T,play:_,pause:w,seek:m,toggleMute:k,setVolume:N,toggleFullscreen:S,togglePlayPause:y,skipForward:C,skipBackward:U,retry:x,refreshToken:I,setApiClient:R,shouldRefreshToken:A,setupLiveStream:M}=wE({...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 P(){await I()}const H=e.computed(()=>{const ne=["video-player-container"];return t.className&&ne.push(t.className),p.value&&ne.push("fullscreen"),t.isLive&&ne.push("is-live"),s.value&&ne.push("is-playing"),h.value&&ne.push("is-loading"),ne}),B=e.computed(()=>{var ne,J;if(t.poster)return t.poster;if((ne=t.media)!=null&&ne.poster_url)return t.media.poster_url;if((J=t.media)!=null&&J.thumbnail_url)return t.media.thumbnail_url});function D(ne){const J=ne.target;o("loadedmetadata",{duration:J.duration,width:J.videoWidth,height:J.videoHeight})}function X(ne){const J=ne.target;c.value=J.currentTime,o("timeupdate",J.currentTime)}function Z(){s.value=!0,o("play")}function ee(){s.value=!1,o("pause")}function ge(){s.value=!1,o("ended")}function Ee(ne){const J=ne.target;let Be="Failed to load video";if(J.error)switch(J.error.code){case J.error.MEDIA_ERR_ABORTED:Be="Video playback aborted";break;case J.error.MEDIA_ERR_NETWORK:Be="Network error while loading video";break;case J.error.MEDIA_ERR_DECODE:Be="Video decoding error";break;case J.error.MEDIA_ERR_SRC_NOT_SUPPORTED:Be="Video format not supported";break}v.value=Be,o("error",Be)}function te(ne){const J=ne.target;f.value=J.buffered,o("progress",J.buffered)}function F(){h.value=!0}function j(){h.value=!1}e.watch(()=>t.apiClient,ne=>{ne&&R(ne)},{immediate:!0}),e.watch(()=>t.playbackUrl,ne=>{typeof ne=="string"&&ne.length>0&&(E.value=ne)},{immediate:!0}),e.watch(()=>{var ne;return(ne=t.media)==null?void 0:ne.token_expires_at},ne=>{if(!ne){T.value=null;return}const J=new Date(ne);T.value=Number.isNaN(J.getTime())?null:J},{immediate:!0}),e.watch(()=>{var ne;return(ne=t.media)==null?void 0:ne.playback_url},async(ne,J)=>{if(t.playbackUrl||!ne||ne===J)return;const Be=i.value;if(!Be||t.isLive){E.value=ne;return}const ce=!Be.paused,re=Be.currentTime;E.value=ne,await e.nextTick();try{Be.currentTime=re}catch{}ce&&await _()},{immediate:!0});let de=null;return e.watch(()=>t.isLive,async ne=>{var Be;if(!ne)return;const J=t.playbackUrl||((Be=t.media)==null?void 0:Be.playback_url)||"";J&&await M(J)},{immediate:!0}),e.onMounted(()=>{var ne;(ne=t.media)!=null&&ne.provider&&t.media.provider!=="local"&&(de=setInterval(()=>{A()&&P()},3e4)),$.isPlatform("mobile")&&t.showCustomControls}),e.onUnmounted(()=>{de&&clearInterval(de)}),(ne,J)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-player-container",H.value]),"data-testid":"video-player"},[ne.isLive?(e.openBlock(),e.createElementBlock("div",kE,[e.createElementVNode("video",{ref_key:"liveVideoEl",ref:r,controls:ne.controls&&!ne.showCustomControls,autoplay:!0,muted:e.unref(u),onPlay:Z,onPause:ee,onError:Ee,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,xE),e.unref(g)==="live"?(e.openBlock(),e.createElementBlock("div",EE,[...J[3]||(J[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(E),poster:B.value,controls:ne.controls&&!ne.showCustomControls,autoplay:ne.autoplay,muted:e.unref(u),loop:ne.loop,preload:ne.preload,onLoadedmetadata:D,onTimeupdate:X,onPlay:Z,onPause:ee,onEnded:ge,onError:Ee,onProgress:te,onWaiting:F,onCanplay:j,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,bE)),e.unref(h)?(e.openBlock(),e.createElementBlock("div",VE,[e.createVNode(e.unref($.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",SE,[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Qi),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("p",null,e.toDisplayString(e.unref(v)),1),e.createVNode(e.unref($.IonButton),{size:"small",onClick:e.unref(x),"data-testid":"btn-video-retry","aria-label":"Retry loading video"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{icon:e.unref(Ln),slot:"start","aria-hidden":"true"},null,8,["icon"]),J[4]||(J[4]=e.createTextVNode(" Retry ",-1))]),_:1},8,["onClick"])])):e.createCommentVNode("",!0),ne.showCustomControls&&!e.unref(v)?(e.openBlock(),e.createBlock(yE,{key:4,playing:e.unref(s),currentTime:e.unref(c),duration:e.unref(l),buffered:e.unref(f),volume:e.unref(d),muted:e.unref(u),fullscreen:e.unref(p),isLive:ne.isLive,onPlay:e.unref(_),onPause:e.unref(w),onSeek:e.unref(m),onToggleMute:e.unref(k),onSetVolume:e.unref(N),onToggleFullscreen:e.unref(S),class:"custom-controls"},null,8,["playing","currentTime","duration","buffered","volume","muted","fullscreen","isLive","onPlay","onPause","onSeek","onToggleMute","onSetVolume","onToggleFullscreen"])):e.createCommentVNode("",!0),ne.enableGestures&&!e.unref(v)?(e.openBlock(),e.createElementBlock("div",CE,[e.createElementVNode("div",{class:"gesture-left","data-testid":"video-gesture-skip-back","aria-label":"Double tap to skip backward",onDblclick:J[0]||(J[0]=(...Be)=>e.unref(U)&&e.unref(U)(...Be))},null,32),e.createElementVNode("div",{class:"gesture-center","data-testid":"video-gesture-play-pause","aria-label":"Tap to play or pause",onClick:J[1]||(J[1]=(...Be)=>e.unref(y)&&e.unref(y)(...Be))}),e.createElementVNode("div",{class:"gesture-right","data-testid":"video-gesture-skip-forward","aria-label":"Double tap to skip forward",onDblclick:J[2]||(J[2]=(...Be)=>e.unref(C)&&e.unref(C)(...Be))},null,32)])):e.createCommentVNode("",!0)],2))}}),Ec=Me(_E,[["__scopeId","data-v-b8db4951"]]),NE=ba.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())),s=e.computed(()=>Array.from(n.value.values())),c=e.computed(()=>s.value.filter(M=>M.status==="live")),l=e.computed(()=>r.value.filter(M=>M.processing_status==="processing"));function d(M){a.value.set(M.uuid,M)}function u(M,P){const H=a.value.get(M);H&&a.value.set(M,{...H,...P})}function p(M){a.value.delete(M)}function f(M){return a.value.get(M)}function h(M){n.value.set(M.id,M)}function v(M,P){const H=n.value.get(M);H&&n.value.set(M,{...H,...P})}function g(M,P){const H=n.value.get(M);H&&n.value.set(M,{...H,status:P.status,viewer_count:P.viewer_count,peak_viewers:P.peak_viewers})}function E(M){n.value.delete(M)}function T(M){return n.value.get(M)}function _(M){return s.value.find(P=>P.media_uuid===M)}function w(M){t.value.set(M.id,M)}function m(M,P){const H=t.value.get(M);H&&t.value.set(M,{...H,...P})}function k(M){t.value.delete(M)}function N(M){return t.value.get(M)}function S(M){return Array.from(t.value.values()).filter(P=>P.media_uuid===M)}function y(M){o.value=M}function C(M){o.value&&(o.value={...o.value,...M})}function U(){o.value=null}function x(M){i.value=M}function I(){a.value.clear(),n.value.clear(),t.value.clear(),o.value=null,i.value=!1}function R(M){a.value.clear(),M.forEach(P=>{a.value.set(P.uuid,P)})}function A(M){n.value.clear(),M.forEach(P=>{n.value.set(P.id,P)})}return{videos:a,liveStreams:n,exportJobs:t,currentEditorState:o,isProcessing:i,allVideos:r,allLiveStreams:s,activeLiveStreams:c,processingVideos:l,setVideo:d,updateVideo:u,removeVideo:p,getVideo:f,setLiveStream:h,updateLiveStream:v,updateLiveStreamStats:g,removeLiveStream:E,getLiveStream:T,getLiveStreamByMedia:_,addExportJob:w,updateExportJob:m,removeExportJob:k,getExportJob:N,getExportJobsByMedia:S,setEditorState:y,updateEditorState:C,clearEditorState:U,setProcessing:x,clearAll:I,loadVideos:R,loadLiveStreams:A}});let hn=null;function TE(a){hn=a}const Ho={post:async(a,n)=>{if(!hn)throw new Error("HTTP client not configured");return await hn(`/api/v1/video${a}`,{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}})},get:async a=>{if(!hn)throw new Error("HTTP client not configured");return await hn(`/api/v1/video${a}`)},delete:async a=>{if(!hn)throw new Error("HTTP client not configured");return await hn(`/api/v1/video${a}`,{method:"DELETE"})}};function Go(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 s=a.ended_at??(n==null?void 0:n.ended_at);return s!==void 0&&(o.ended_at=s),(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 Vi(a,n){return a instanceof Error&&a.message?a.message:n}function ME(a){const n=NE(),t=e.ref(null),o=e.ref(!1),i=e.ref(!0),r=e.ref(""),s=e.ref(!1),c=e.ref(!1),l=e.ref(null),d=e.ref(null),u=e.ref(0),p=e.ref(0);let f;const h=e.computed(()=>d.value?Math.floor((new Date().getTime()-d.value.getTime())/1e3):0),v=e.computed(()=>{var U;if(!((U=t.value)!=null&&U.playback_url))return null;const C=new URL(t.value.playback_url);return C.searchParams.set("live","true"),o.value&&C.searchParams.set("latency","low"),C.toString()}),g=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="live"}),E=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="idle"}),T=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="ended"});async function _(C={}){s.value=!0,l.value=null;try{const U=await Ho.post("/live",{title:r.value||C.title||"Live Stream",low_latency:C.low_latency??o.value,auto_record:C.auto_record??i.value,...C}),x=Go(U);return t.value=x,n.setLiveStream(x),N(),x}catch(U){throw l.value=Vi(U,"Failed to create stream"),U instanceof Error?U:new Error(l.value)}finally{s.value=!1}}async function w(){if(!t.value)throw new Error("No active stream");c.value=!0,l.value=null;try{const C=await Ho.post(`/live/${t.value.id}/end`),U=Go(C,t.value);return t.value=U,n.setLiveStream(U),S(),U}catch(C){throw l.value=Vi(C,"Failed to end stream"),C instanceof Error?C:new Error(l.value)}finally{c.value=!1}}async function m(){if(t.value)try{const C=await Ho.get(`/live/${t.value.id}`),U=Go(C,t.value);u.value=U.viewer_count,p.value=U.peak_viewers,t.value=U;const x={status:U.status,viewer_count:U.viewer_count,peak_viewers:U.peak_viewers};U.started_at&&(x.started_at=U.started_at),U.ended_at&&(x.ended_at=U.ended_at),n.updateLiveStreamStats(U.id,x),U.status==="live"&&!d.value&&U.started_at&&(d.value=new Date(U.started_at)),U.status==="ended"&&S()}catch{}}async function k(C){try{const U=await Ho.get(`/live/${C}`),x=Go(U,t.value);return{rtmp_url:x.rtmp_url,stream_key:x.stream_key,playback_url:x.playback_url||""}}catch(U){throw l.value=Vi(U,"Failed to get stream credentials"),U instanceof Error?U:new Error(l.value)}}function N(C=5e3){S(),f=window.setInterval(()=>{m()},C)}function S(){f!==void 0&&(clearInterval(f),f=void 0)}async function y(){if(!a)return;const C=n.getLiveStreamByMedia(a);C&&(t.value=C,u.value=C.viewer_count,p.value=C.peak_viewers,C.status==="live"&&(N(),C.started_at&&(d.value=new Date(C.started_at))))}return a&&y(),e.onUnmounted(()=>{S()}),{stream:t,lowLatency:o,autoRecord:i,streamTitle:r,isCreating:s,isEnding:c,error:l,streamDuration:h,viewerCount:u,peakViewers:p,playbackUrl:v,isLive:g,isIdle:E,hasEnded:T,createStream:_,endStream:w,refreshStreamStatus:m,getStreamCredentials:k,startStatusPolling:N,stopStatusPolling:S}}const BE={class:"stream-status"},IE={class:"flex items-center justify-between"},FE={class:"flex items-center gap-3"},$E={key:0,class:"flex items-center"},RE={key:2,class:"text-sm text-gray-600"},DE={key:0,class:"flex items-center gap-2"},AE={class:"text-sm font-medium text-gray-700"},UE={key:0,class:"text-xs text-gray-500"},OE=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",s={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} ${s[n.status]||s.idle}`}),i=e.computed(()=>{if(!n.duration)return null;const r=Math.floor(n.duration/3600),s=Math.floor(n.duration%3600/60),c=n.duration%60;return r>0?`${r}:${s.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}`:`${s}:${c.toString().padStart(2,"0")}`});return(r,s)=>(e.openBlock(),e.createElementBlock("div",BE,[e.createElementVNode("div",IE,[e.createElementVNode("div",FE,[r.status==="live"?(e.openBlock(),e.createElementBlock("div",$E,[...s[0]||(s[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",RE,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)]),r.viewers!==void 0?(e.openBlock(),e.createElementBlock("div",DE,[s[1]||(s[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",AE,e.toDisplayString(r.viewers)+" "+e.toDisplayString(r.viewers===1?"viewer":"viewers"),1),r.peakViewers>r.viewers?(e.openBlock(),e.createElementBlock("span",UE," (Peak: "+e.toDisplayString(r.peakViewers)+") ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),LE=Me(OE,[["__scopeId","data-v-1d09c19f"]]),zE={class:"stream-credentials"},PE={class:"space-y-3"},jE={class:"credential-field"},WE={class:"flex gap-2"},ZE=["value"],XE={class:"credential-field"},HE={class:"flex gap-2"},GE=["value","type"],JE=["aria-label"],YE={key:0,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},KE={key:1,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},qE={key:0,class:"mt-2 text-sm text-green-600"},QE=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(""),s=e.computed(()=>{if(i.value)return t.streamKey;if(t.streamKey.length>8){const d=t.streamKey.slice(0,4),u=t.streamKey.slice(-4);return`${d}${"•".repeat(16)}${u}`}return"•".repeat(t.streamKey.length)});function c(){i.value=!i.value}async function l(d,u){try{await navigator.clipboard.writeText(d),r.value=u,o("copy",d,u),setTimeout(()=>{r.value=""},2e3)}catch{}}return(d,u)=>(e.openBlock(),e.createElementBlock("div",zE,[u[8]||(u[8]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Stream Settings",-1)),e.createElementVNode("div",PE,[e.createElementVNode("div",jE,[u[3]||(u[3]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 mb-1"},"RTMP Server URL",-1)),e.createElementVNode("div",WE,[e.createElementVNode("input",{value:d.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,ZE),e.createElementVNode("button",{onClick:u[0]||(u[0]=p=>l(d.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"},[...u[2]||(u[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",XE,[u[7]||(u[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 mb-1"},"Stream Key",-1)),e.createElementVNode("div",HE,[e.createElementVNode("input",{value:s.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,GE),e.createElementVNode("button",{onClick:c,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",KE,[...u[5]||(u[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",YE,[...u[4]||(u[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,JE),e.createElementVNode("button",{onClick:u[1]||(u[1]=p=>l(d.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"},[...u[6]||(u[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)])])])])]),u[9]||(u[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",qE,e.toDisplayString(r.value)+" copied to clipboard! ",1)):e.createCommentVNode("",!0)]),_:1})]))}}),e4=Me(QE,[["__scopeId","data-v-306d92f6"]]),t4={class:"live-stream-manager","data-testid":"live-stream-manager"},n4={key:0,class:"stream-setup"},o4={class:"space-y-4"},a4={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},i4={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},r4=["disabled"],s4={key:0},l4={key:1,class:"flex items-center justify-center"},c4={key:1,class:"stream-active space-y-6"},d4={key:1,class:"video-preview"},u4={key:2,class:"analytics-panel"},m4={class:"grid grid-cols-2 gap-4"},p4={class:"bg-gray-50 p-3 rounded"},f4={class:"text-2xl font-bold text-gray-900"},h4={class:"bg-gray-50 p-3 rounded"},v4={class:"text-2xl font-bold text-gray-900"},g4={class:"stream-controls flex gap-3"},y4=["disabled"],w4={key:0},b4={key:1},k4={key:2,class:"mt-4 p-4 bg-red-50 border border-red-200 rounded-lg"},x4={class:"text-red-600 text-sm"},E4=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&&TE(t.httpClient);const{stream:i,lowLatency:r,autoRecord:s,streamTitle:c,isCreating:l,isEnding:d,error:u,createStream:p,endStream:f,streamDuration:h,playbackUrl:v,refreshStreamStatus:g}=ME(t.mediaUuid),E=e.ref(!1);async function T(){var N;try{const S=await p({title:c.value,low_latency:r.value,auto_record:s.value});o("stream-created",S),(N=t.onStreamCreated)==null||N.call(t,S)}catch(S){o("error",S)}}async function _(){var N;try{const S=await f();o("stream-ended",S),(N=t.onStreamEnded)==null||N.call(t,S)}catch(S){o("error",S)}}function w(){i.value=null,c.value="",E.value=!1,u.value=null}async function m(N,S){try{await navigator.clipboard.writeText(N)}catch{}}let k;return e.onMounted(()=>{var N;((N=i.value)==null?void 0:N.status)==="live"&&(k=window.setInterval(()=>{g()},5e3))}),e.onUnmounted(()=>{k&&clearInterval(k)}),(N,S)=>(e.openBlock(),e.createElementBlock("div",t4,[e.unref(i)?(e.openBlock(),e.createElementBlock("div",c4,[e.createVNode(LE,{status:e.unref(i).status,viewers:e.unref(i).viewer_count,duration:e.unref(h),"peak-viewers":e.unref(i).peak_viewers},null,8,["status","viewers","duration","peak-viewers"]),e.unref(i).status==="idle"?(e.openBlock(),e.createBlock(e4,{key:0,"rtmp-url":e.unref(i).rtmp_url,"stream-key":e.unref(i).stream_key,onCopy:m},null,8,["rtmp-url","stream-key"])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",d4,[S[9]||(S[9]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-2"},"Live Preview",-1)),e.createVNode(Ec,{"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",u4,[S[12]||(S[12]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Live Analytics",-1)),e.createElementVNode("div",m4,[e.createElementVNode("div",p4,[e.createElementVNode("div",f4,e.toDisplayString(e.unref(i).viewer_count),1),S[10]||(S[10]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Current Viewers",-1))]),e.createElementVNode("div",h4,[e.createElementVNode("div",v4,e.toDisplayString(e.unref(i).peak_viewers),1),S[11]||(S[11]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Peak Viewers",-1))])])])):e.createCommentVNode("",!0),e.createElementVNode("div",g4,[e.unref(i).status==="idle"?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:S[3]||(S[3]=y=>E.value=!E.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(E.value?"Hide":"Show")+" Credentials ",1)):e.createCommentVNode("",!0),e.unref(i).status==="live"?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:_,disabled:e.unref(d),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(d)?(e.openBlock(),e.createElementBlock("span",b4,"Ending...")):(e.openBlock(),e.createElementBlock("span",w4,"End Stream"))],8,y4)):e.createCommentVNode("",!0),e.unref(i).status==="ended"?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:w,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",n4,[S[8]||(S[8]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Start Live Stream",-1)),e.createElementVNode("div",o4,[e.createElementVNode("div",a4,[S[4]||(S[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":S[0]||(S[0]=y=>e.isRef(r)?r.value=y: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",i4,[S[5]||(S[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":S[1]||(S[1]=y=>e.isRef(s)?s.value=y: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(s)]])]),e.createElementVNode("div",null,[S[6]||(S[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":S[2]||(S[2]=y=>e.isRef(c)?c.value=y: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(c)]])]),e.createElementVNode("button",{onClick:T,disabled:e.unref(l),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(l)?(e.openBlock(),e.createElementBlock("span",l4,[...S[7]||(S[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",s4,"Create Stream"))],8,r4)])])),e.unref(u)?(e.openBlock(),e.createElementBlock("div",k4,[e.createElementVNode("p",x4,e.toDisplayString(e.unref(u)),1)])):e.createCommentVNode("",!0)]))}}),V4=Me(E4,[["__scopeId","data-v-26291f6f"]]),S4={class:"album-tree-node"},C4=["data-album-id","draggable","aria-selected","aria-expanded"],_4={key:1,class:"album-node__chevron-placeholder"},N4={key:2,"data-testid":"media-count",class:"album-node__count"},T4={key:0,class:"album-tree-node__children",role:"group"},M4=16,B4=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),s=e.computed(()=>t.focusedId===t.album.id),c=e.computed(()=>t.album.children_count>0),l=e.computed(()=>`${t.depth*M4}px`),d=e.computed(()=>{var w;return((w=t.dragState)==null?void 0:w.draggedAlbumId)===t.album.id}),u=e.computed(()=>{var w;return((w=t.dragState)==null?void 0:w.dropTargetId)===t.album.id}),p=e.computed(()=>{var w;return(w=t.dragState)!=null&&w.draggedAlbumId?t.dragState.draggedAlbumId===t.album.id:!1}),f=e.computed(()=>{const w=["album-node"];return r.value&&w.push("album-node--selected"),s.value&&w.push("album-node--focused"),t.compact&&w.push("album-node--compact"),d.value&&w.push("album-node--dragging"),u.value&&w.push("album-node--drop-target"),p.value&&w.push("album-node--invalid-drop"),w});function h(){o("select",t.album)}function v(w){w.stopPropagation(),o("toggle-expand",t.album.id)}function g(w){t.draggable&&(w.dataTransfer&&(w.dataTransfer.setData("text/plain",t.album.id),w.dataTransfer.effectAllowed="move"),o("drag-start",t.album.id))}function E(w){t.draggable&&(w.preventDefault(),w.dataTransfer&&(w.dataTransfer.dropEffect="move"),o("drag-over",t.album.id))}function T(){o("drag-leave",t.album.id)}function _(w){t.draggable&&(w.preventDefault(),o("drop",t.album.id))}return(w,m)=>{var N;const k=e.resolveComponent("AlbumTreeNode",!0);return e.openBlock(),e.createElementBlock("div",S4,[e.createElementVNode("div",{"data-testid":"album-node","data-album-id":w.album.id,class:e.normalizeClass(f.value),style:e.normalizeStyle({paddingLeft:l.value}),draggable:w.draggable,role:"treeitem","aria-selected":r.value,"aria-expanded":c.value?i.value:void 0,onDragstart:g,onDragover:E,onDragleave:T,onDrop:_},[c.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($.IonIcon),{icon:i.value?e.unref(fu):e.unref(hu)},null,8,["icon"])])):(e.openBlock(),e.createElementBlock("span",_4)),e.createVNode(e.unref($.IonIcon),{icon:e.unref(Eu),class:"album-node__icon"},null,8,["icon"]),e.createElementVNode("span",{"data-testid":"album-name",class:"album-node__name",onClick:h},e.toDisplayString(w.album.name),1),w.showMediaCount?(e.openBlock(),e.createElementBlock("span",N4,e.toDisplayString(w.album.media_count),1)):e.createCommentVNode("",!0)],46,C4),i.value&&((N=w.album.children)!=null&&N.length)?(e.openBlock(),e.createElementBlock("div",T4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.album.children,S=>(e.openBlock(),e.createBlock(k,{key:S.id,album:S,depth:w.depth+1,"selected-id":w.selectedId,"expanded-ids":w.expandedIds,"focused-id":w.focusedId,draggable:w.draggable,"show-media-count":w.showMediaCount,compact:w.compact,onSelect:m[0]||(m[0]=y=>o("select",y)),onToggleExpand:m[1]||(m[1]=y=>o("toggle-expand",y))},null,8,["album","depth","selected-id","expanded-ids","focused-id","draggable","show-media-count","compact"]))),128))])):e.createCommentVNode("",!0)])}}}),I4=Me(B4,[["__scopeId","data-v-76be65a6"]]),Wa=ba.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 m=new Map;return a.value.forEach(k=>m.set(k.id,k)),m}),s=e.computed(()=>a.value.filter(m=>m.parent_id===null));async function c(m){t.value=!0,o.value=null;try{const k=(m==null?void 0:m.parent_id)??null,N=k?`/api/v1/albums?parent_id=${k}`:"/api/v1/albums?parent_id=null",S=await fetch(N);if(!S.ok)throw new Error("Failed to fetch albums");((await S.json()).data||[]).forEach(U=>{const x=a.value.findIndex(I=>I.id===U.id);x>=0?a.value[x]=U:a.value.push(U)}),k!==null&&i.value.add(k)}catch(k){o.value=k instanceof Error?k.message:"Unknown error"}finally{t.value=!1}}async function l(m){t.value=!0,o.value=null;try{const k=await fetch(`/api/v1/albums/${m}`);if(!k.ok)throw new Error("Failed to fetch album");const S=(await k.json()).data,y=a.value.findIndex(C=>C.id===S.id);return y>=0?a.value[y]=S:a.value.push(S),S}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function d(m){t.value=!0,o.value=null;try{const k=await fetch(`/api/v1/albums/${m}/media`);if(!k.ok)throw new Error("Failed to fetch album media");const S=(await k.json()).data||[];return n.value.set(m,S),S}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function u(m,k){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${m}/media/reorder`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({media_ids:k})})).ok)throw new Error("Failed to reorder album media");const S=n.value.get(m)||[],y=k.map(C=>S.find(U=>U.uuid===C)).filter(C=>C!==void 0);n.value.set(m,y)}catch(N){throw o.value=N instanceof Error?N.message:"Unknown error",N}finally{t.value=!1}}async function p(m){t.value=!0,o.value=null;try{const k=await fetch("/api/v1/albums",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(m)});if(!k.ok)throw new Error("Failed to create album");const S=(await k.json()).data;return a.value.push(S),S}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function f(m,k){t.value=!0,o.value=null;try{const N=await fetch(`/api/v1/albums/${m}`,{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(k)});if(!N.ok)throw new Error("Failed to update album");const y=(await N.json()).data,C=a.value.findIndex(U=>U.id===y.id);return C>=0&&(a.value[C]=y),y}catch(N){throw o.value=N instanceof Error?N.message:"Unknown error",N}finally{t.value=!1}}async function h(m){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${m}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"})).ok)throw new Error("Failed to delete album");const N=a.value.findIndex(S=>S.id===m);N>=0&&a.value.splice(N,1),n.value.delete(m)}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}function v(m){return a.value.filter(k=>k.parent_id===m)}function g(m){return i.value.has(m)}function E(m){return n.value.get(m)||[]}async function T(m,k){const N=a.value.findIndex(y=>y.id===m);if(N<0)return;const S=a.value[N];a.value[N]={...S,parent_id:k};try{if(!(await fetch(`/api/v1/albums/${m}/move`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({parent_id:k})})).ok)throw new Error("Failed to move album")}catch(y){throw a.value[N]=S,o.value=y instanceof Error?y.message:"Unknown error",y instanceof Error?y:new Error("Failed to move album")}}function _(m){a.value=m}function w(){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:s,fetchAlbums:c,fetchAlbum:l,fetchAlbumMedia:d,reorderAlbumMedia:u,createAlbum:p,updateAlbum:f,deleteAlbum:h,getChildrenOf:v,childrenLoaded:g,getAlbumMedia:E,moveAlbum:T,setAlbums:_,reset:w}});function Vc(){const a=Wa(),{albums:n,albumsById:t,rootAlbums:o,loading:i,error:r}=ba.storeToRefs(a);async function s(u){await a.fetchAlbums(u)}function c(u){return a.getChildrenOf(u)}function l(u){return a.childrenLoaded(u)}async function d(u,p){await a.moveAlbum(u,p)}return{albums:n,albumsById:t,rootAlbums:o,loading:i,error:r,fetchAlbums:s,getChildrenOf:c,childrenLoaded:l,moveAlbum:d}}function Sc(a){const{childrenByParentId:n,onMove:t}=a,o=e.ref({isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null});function i(p,f){if(p===f)return!0;const h=new Set,v=[p];for(;v.length>0;){const g=v.shift();if(!g||h.has(g))continue;h.add(g);const E=n.get(g)||[];for(const T of E){if(T===f)return!0;v.push(T)}}return!1}function r(p,f){return p===f?!1:f===null?!0:!i(p,f)}function s(p){o.value={isDragging:!0,draggedAlbumId:p,dropTargetId:null,dropPosition:null}}function c(){o.value={isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null}}function l(p){o.value.dropTargetId=p}function d(){o.value.dropTargetId=null,o.value.dropPosition=null}async function u(){const{draggedAlbumId:p,dropTargetId:f}=o.value;if(!p){c();return}if(!r(p,f)){c();return}try{await t(p,f)}finally{c()}}return{dragState:o,isDescendant:i,canDropOn:r,startDrag:s,endDrag:c,setDropTarget:l,clearDropTarget:d,executeDrop:u}}const F4={key:0,"data-testid":"loading-spinner",class:"album-tree__loading"},$4={key:1,"data-testid":"error-state",class:"album-tree__error"},R4={key:2,"data-testid":"empty-state",class:"album-tree__empty"},D4={key:3,class:"album-tree__content",role:"group"},A4=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}},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),s=e.computed(()=>o.showMediaCount===!0),c=e.computed(()=>o.compact===!0),{albums:l,rootAlbums:d,loading:u,error:p,fetchAlbums:f,getChildrenOf:h,childrenLoaded:v,moveAlbum:g}=Vc(),E=e.shallowRef(new Set(o.expandedIds)),T=e.ref(o.modelValue??null),_=e.ref(null),w=new Map,m=new Map;function k(F){w.clear(),m.clear();for(const j of F){w.set(j.id,j);const de=j.parent_id??null,ne=m.get(de)??[];ne.push(j.id),m.set(de,ne)}}e.watch(l,F=>{k(F)},{immediate:!0});const{dragState:N,canDropOn:S,startDrag:y,endDrag:C,setDropTarget:U,clearDropTarget:x,executeDrop:I}=Sc({childrenByParentId:m,onMove:async(F,j)=>{await g(F,j),i("album-moved",{albumId:F,newParentId:j})}});e.watch(()=>o.modelValue,F=>{T.value=F??null}),e.watch(()=>o.expandedIds,F=>{E.value=new Set(F)}),e.onMounted(async()=>{await f({parent_id:null})});const R=e.computed(()=>d.value.map(F=>A(F)));function A(F){if(!E.value.has(F.id))return F;const j=h(F.id);return{...F,children:j.map(de=>A(de))}}const M=e.computed(()=>{const F=[];function j(de){var ne;for(const J of de)F.push(J),E.value.has(J.id)&&((ne=J.children)!=null&&ne.length)&&j(J.children)}return j(R.value),F});function P(F){var ne;if(!M.value.length)return;const j=_.value?M.value.findIndex(J=>J.id===_.value):-1,de=j>=0?M.value[j]:null;switch(F.key){case"ArrowDown":F.preventDefault(),j<M.value.length-1?_.value=M.value[j+1].id:j===-1&&M.value.length>0&&(_.value=M.value[0].id);break;case"ArrowUp":F.preventDefault(),j>0&&(_.value=M.value[j-1].id);break;case"ArrowRight":F.preventDefault(),de&&(de.children_count>0&&!E.value.has(de.id)?H(de.id):E.value.has(de.id)&&((ne=de.children)!=null&&ne.length)&&(_.value=de.children[0].id));break;case"ArrowLeft":F.preventDefault(),de&&(E.value.has(de.id)&&de.children_count>0?H(de.id):de.parent_id&&(_.value=de.parent_id));break;case"Enter":case" ":F.preventDefault(),de&&B(de);break;case"Home":F.preventDefault(),M.value.length>0&&(_.value=M.value[0].id);break;case"End":F.preventDefault(),M.value.length>0&&(_.value=M.value[M.value.length-1].id);break}}async function H(F){E.value.has(F)?(E.value.delete(F),i("album-collapsed",F)):(v(F)||await f({parent_id:F}),E.value.add(F),i("album-expanded",F))}function B(F){T.value=F.id,i("update:modelValue",F.id),i("album-selected",F)}function D(F){o.draggable&&y(F)}function X(F){var de;if(!o.draggable)return;const j=(de=N.value)==null?void 0:de.draggedAlbumId;j&&(U(F),S(j,F))}function Z(){o.draggable&&x()}async function ee(F){o.draggable&&(U(F),await I())}function ge(F){o.draggable&&(F.preventDefault(),U(null))}async function Ee(F){o.draggable&&(F.preventDefault(),U(null),await I())}function te(){C()}return n({focusedId:_}),(F,j)=>(e.openBlock(),e.createElementBlock("div",{class:"album-tree","data-testid":"album-tree",tabindex:"0",role:"tree","aria-label":"Album tree",onKeydown:P,onDragover:ge,onDrop:Ee,onDragend:te},[e.unref(u)?(e.openBlock(),e.createElementBlock("div",F4,[e.createVNode(e.unref($.IonSpinner),{name:"crescent"})])):e.unref(p)?(e.openBlock(),e.createElementBlock("div",$4,[e.createElementVNode("p",null,e.toDisplayString(e.unref(p)),1)])):e.unref(d).length?(e.openBlock(),e.createElementBlock("div",D4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,de=>(e.openBlock(),e.createBlock(I4,{key:de.id,album:de,depth:0,"selected-id":T.value,"expanded-ids":E.value,"focused-id":_.value,draggable:r.value,"drag-state":r.value?e.unref(N):null,"show-media-count":s.value,compact:c.value,onSelect:B,onToggleExpand:H,onDragStart:D,onDragOver:X,onDragLeave:Z,onDrop:ee},null,8,["album","selected-id","expanded-ids","focused-id","draggable","drag-state","show-media-count","compact"]))),128))])):(e.openBlock(),e.createElementBlock("div",R4,[j[0]||(j[0]=e.createElementVNode("p",null,"No albums yet",-1)),e.renderSlot(F.$slots,"empty-action",{},void 0,!0)]))],32))}}),Cc=Me(A4,[["__scopeId","data-v-ae3dea7a"]]),U4=300,O4=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),s=e.ref(0),c=e.ref(null);e.watch(()=>t.selectedAlbumId,h=>{i.value=h??null});const l=e.computed(()=>r.value!==null);function d(h){const v=Date.now();if(c.value===h.id&&v-s.value<U4){o("confirm",h);return}s.value=v,c.value=h.id,i.value=h.id,r.value=h}function u(){r.value&&o("confirm",r.value)}function p(){o("close")}function f(){o("close")}return(h,v)=>(e.openBlock(),e.createBlock(e.unref($.IonModal),{"is-open":h.isOpen,class:"album-browser-modal",onDidDismiss:f},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.title),1)]),_:1}),e.createVNode(e.unref($.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{"data-testid":"cancel-button",onClick:p},{default:e.withCtx(()=>[...v[1]||(v[1]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref($.IonContent),{class:"album-browser-content"},{default:e.withCtx(()=>[e.createVNode(Cc,{modelValue:i.value,"onUpdate:modelValue":v[0]||(v[0]=g=>i.value=g),draggable:!1,"show-media-count":!0,compact:!1,onAlbumSelected:d},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref($.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{fill:"clear",onClick:p},{default:e.withCtx(()=>[...v[2]||(v[2]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref($.IonButton),{"data-testid":"confirm-button",fill:"solid",color:"primary",disabled:!l.value,onClick:u},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.confirmText),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"]))}}),_c=Me(O4,[["__scopeId","data-v-21676ec1"]]),L4={class:"ion-padding-start text-sm"},z4={class:"ion-padding-start text-sm"},P4={key:1},j4={key:1,class:"album-manager-inline rounded-lg border border-gray-200 bg-white p-4"},W4={class:"flex items-center justify-between gap-3 pb-3"},Z4={class:"text-base font-semibold text-gray-900"},X4={class:"ion-padding-start text-sm"},H4={class:"ion-padding-start text-sm"},G4={class:"flex justify-between pt-2"},J4={key:1},to=255,no=1e3,Y4=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=Wa(),r=e.computed(()=>t.albumId!==null&&t.albumId!==void 0),s=e.computed(()=>r.value?"Edit Album":"Create Album"),c=e.computed(()=>r.value?"Save":"Create"),l=e.ref({name:"",description:"",parent_id:t.parentId}),d=e.ref({name:!1,description:!1}),u=e.ref(null),p=e.ref(!1),f=e.ref(null),h=e.ref(!1),v=e.ref(!1),g=e.computed(()=>d.value.name?l.value.name.trim()?l.value.name.length>to?`Name must be ${to} characters or less`:null:"Name is required":null),E=e.computed(()=>d.value.description&&l.value.description.length>no?`Description must be ${no} characters or less`:null),T=e.computed(()=>{const P=l.value.name.trim().length>0,H=l.value.name.length<=to,B=l.value.description.length<=no;return P&&H&&B&&!h.value}),_=e.computed(()=>{var P;return((P=u.value)==null?void 0:P.name)??"None (Root)"}),w=e.computed(()=>f.value?f.value.children_count===0&&f.value.media_count===0:!1),m=e.computed(()=>f.value?f.value.children_count>0?"Cannot delete album with child albums. Move or delete children first.":f.value.media_count>0?"Cannot delete album with media. Remove media first.":`Are you sure you want to delete "${f.value.name}"? This action cannot be undone.`:"");e.onMounted(async()=>{t.albumId&&await k()});async function k(){if(t.albumId)try{const P=await i.fetchAlbum(t.albumId);f.value=P,l.value={name:P.name,description:P.description??"",parent_id:P.parent_id},P.parent_id&&(u.value={id:P.parent_id,name:"Parent Album"})}catch(P){o("error",P)}}function N(){d.value.name=!0}function S(){d.value.description=!0}function y(){p.value=!0}function C(P){u.value={id:P.id,name:P.name},l.value.parent_id=P.id,p.value=!1}function U(){p.value=!1}function x(){o("close")}function I(){o("close")}async function R(){if(d.value.name=!0,d.value.description=!0,!(!T.value||h.value)){h.value=!0;try{const P={name:l.value.name.trim(),description:l.value.description.trim(),parent_id:l.value.parent_id};if(r.value&&t.albumId){const H=await i.updateAlbum(t.albumId,P);o("updated",H)}else{const H=await i.createAlbum(P);o("created",H)}o("close")}catch(P){o("error",P)}finally{h.value=!1}}}function A(){w.value&&(v.value=!0)}async function M(P){var B;if((((B=P.detail)==null?void 0:B.role)??"")!=="confirm"){v.value=!1;return}if(t.albumId){h.value=!0;try{await i.deleteAlbum(t.albumId),o("deleted",t.albumId),o("close")}catch(D){o("error",D)}finally{h.value=!1,v.value=!1}}}return(P,H)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[P.mode==="modal"?(e.openBlock(),e.createBlock(e.unref($.IonModal),{key:0,"is-open":P.isOpen,class:"album-manager-modal",onDidDismiss:I},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1}),e.createVNode(e.unref($.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:x},{default:e.withCtx(()=>[...H[4]||(H[4]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref($.IonContent),{class:"album-manager-content"},{default:e.withCtx(()=>[e.createElementVNode("form",{"data-testid":"album-form",class:"p-4 space-y-3",onSubmit:e.withModifiers(R,["prevent"])},[e.createVNode(e.unref($.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[5]||(H[5]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref($.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":H[0]||(H[0]=B=>l.value.name=B),"data-testid":"name-input",maxlength:to,onIonBlur:N},null,8,["modelValue"])]),_:1}),g.value?(e.openBlock(),e.createBlock(e.unref($.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",L4,e.toDisplayString(g.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[6]||(H[6]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref($.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":H[1]||(H[1]=B=>l.value.description=B),"data-testid":"description-input",maxlength:no,onIonBlur:S},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref($.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",z4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonItem),{button:"","data-testid":"parent-selector",onClick:y},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...H[7]||(H[7]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref($.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.value),1)]),_:1})]),_:1})],32)]),_:1}),e.createVNode(e.unref($.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButtons),{slot:"start"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",disabled:!w.value,title:w.value?void 0:m.value,onClick:A},{default:e.withCtx(()=>[...H[8]||(H[8]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref($.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!T.value,onClick:R},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createBlock(e.unref($.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",P4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"])):(e.openBlock(),e.createElementBlock("div",j4,[e.createElementVNode("div",W4,[e.createElementVNode("h2",Z4,e.toDisplayString(s.value),1),e.createVNode(e.unref($.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:x},{default:e.withCtx(()=>[...H[9]||(H[9]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),e.createElementVNode("form",{"data-testid":"album-form",class:"space-y-3",onSubmit:e.withModifiers(R,["prevent"])},[e.createVNode(e.unref($.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[10]||(H[10]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref($.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":H[2]||(H[2]=B=>l.value.name=B),"data-testid":"name-input",maxlength:to,onIonBlur:N},null,8,["modelValue"])]),_:1}),g.value?(e.openBlock(),e.createBlock(e.unref($.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",X4,e.toDisplayString(g.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[11]||(H[11]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref($.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":H[3]||(H[3]=B=>l.value.description=B),"data-testid":"description-input",maxlength:no,onIonBlur:S},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref($.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",H4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonItem),{button:"","data-testid":"parent-selector",onClick:y},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonLabel),null,{default:e.withCtx(()=>[...H[12]||(H[12]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref($.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.value),1)]),_:1})]),_:1}),e.createElementVNode("div",G4,[e.createElementVNode("div",null,[r.value?(e.openBlock(),e.createBlock(e.unref($.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",fill:"outline",disabled:!w.value,title:w.value?void 0:m.value,onClick:A},{default:e.withCtx(()=>[...H[13]||(H[13]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),e.createVNode(e.unref($.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!T.value,onClick:R},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createBlock(e.unref($.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",J4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])])],32)])),e.createVNode(_c,{"is-open":p.value,"selected-album-id":l.value.parent_id,title:"Select Parent Album",onClose:U,onConfirm:C},null,8,["is-open","selected-album-id"]),e.createVNode(e.unref($.IonAlert),{"is-open":v.value,header:"Delete Album?",message:m.value,buttons:[{text:"Cancel",role:"cancel"},{text:"Delete",role:"confirm",cssClass:"alert-button-danger"}],onDidDismiss:M},null,8,["is-open","message"])],64))}}),K4=Me(Y4,[["__scopeId","data-v-22083f3a"]]),q4={class:"album-media-grid"},Q4={class:"aspect-square"},e3={key:1,"data-testid":"empty-state",class:"flex flex-col items-center justify-center py-12 gap-4"},t3={class:"text-gray-500"},n3=["data-media-id","draggable","onDragstart","onDragover","onDrop","onMouseenter"],o3={key:0,"data-testid":"drop-indicator",class:"absolute inset-0 border-2 border-primary rounded-lg pointer-events-none z-30"},a3={key:1,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-grab"},i3={class:"aspect-square relative"},r3=["src","alt"],s3={key:0,class:"absolute inset-0 bg-black/50 flex items-center justify-center gap-2 transition-opacity"},l3=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=Wa(),r=e.ref([]),s=e.ref(!1),c=e.ref(null),l=e.ref(null),d=e.ref(null),u=e.computed(()=>t.isLoading||s.value),p=e.computed(()=>!u.value&&r.value.length===0),f=e.computed(()=>{const I=t.columns;return["grid","gap-4",`grid-cols-${I.mobile??2}`,`sm:grid-cols-${I.sm??3}`,`md:grid-cols-${I.md??4}`,`lg:grid-cols-${I.lg??5}`,`xl:grid-cols-${I.xl??6}`]}),h=e.computed(()=>(t.columns.md??4)*2);e.onMounted(async()=>{await v()}),e.watch(()=>t.albumId,async()=>{await v()});async function v(){s.value=!0;try{const I=await i.fetchAlbumMedia(t.albumId);r.value=I}catch{r.value=[]}finally{s.value=!1}}function g(I){return t.selectedItems.includes(I)}function E(I){o("toggle-select",I);const R=g(I.uuid)?t.selectedItems.filter(A=>A!==I.uuid):[...t.selectedItems,I.uuid];o("selection-change",R)}function T(I){if(I.conversions&&typeof I.conversions=="object"){const R=I.conversions.thumb;if(typeof R=="string")return R}return I.original_url}function _(I){c.value=I}function w(){c.value=null}function m(I){o("preview",I)}function k(I){o("edit",I)}function N(I){o("detach",I.uuid)}function S(){o("add")}function y(I,R){t.reorderable&&(l.value=R,I.dataTransfer&&(I.dataTransfer.effectAllowed="move",I.dataTransfer.setData("text/plain",String(R))))}function C(I,R){!t.reorderable||l.value===null||(I.preventDefault(),d.value=R)}function U(I,R){if(!t.reorderable||l.value===null)return;I.preventDefault();const A=l.value;if(A!==R){const M=[...r.value],[P]=M.splice(A,1);M.splice(R,0,P),r.value=M;const H=M.map(B=>B.uuid);o("reorder",H),i.reorderAlbumMedia(t.albumId,H).catch(()=>{v()})}l.value=null,d.value=null}function x(){l.value=null,d.value=null}return(I,R)=>(e.openBlock(),e.createElementBlock("div",q4,[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-testid":"loading-grid",class:e.normalizeClass(f.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,A=>(e.openBlock(),e.createBlock(e.unref($.IonCard),{key:A,class:"m-0"},{default:e.withCtx(()=>[e.createElementVNode("div",Q4,[e.createVNode(e.unref($.IonSkeletonText),{animated:"",class:"w-full h-full skeleton"})])]),_:1}))),128))],2)):p.value?(e.openBlock(),e.createElementBlock("div",e3,[e.createVNode(e.unref($.IonIcon),{name:"images-outline",class:"text-6xl text-gray-400"}),e.createElementVNode("p",t3,e.toDisplayString(I.emptyText),1),e.createVNode(e.unref($.IonButton),{"data-testid":"add-media-btn",onClick:S},{default:e.withCtx(()=>[...R[0]||(R[0]=[e.createTextVNode(" Add Media ",-1)])]),_:1})])):(e.openBlock(),e.createElementBlock("div",{key:2,"data-testid":"media-grid",class:e.normalizeClass(f.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(A,M)=>(e.openBlock(),e.createElementBlock("div",{key:A.uuid,"data-media-id":A.uuid,class:e.normalizeClass(["media-item relative group",{"opacity-50":l.value===M,"ring-2 ring-primary":d.value===M&&l.value!==M}]),draggable:I.reorderable,onDragstart:P=>y(P,M),onDragover:P=>C(P,M),onDrop:P=>U(P,M),onDragend:x,onMouseenter:P=>_(A.uuid),onMouseleave:w},[d.value===M&&l.value!==M&&I.reorderable?(e.openBlock(),e.createElementBlock("div",o3)):e.createCommentVNode("",!0),I.reorderable?(e.openBlock(),e.createElementBlock("div",a3,[e.createVNode(e.unref($.IonIcon),{name:"reorder-three-outline",class:"text-white drop-shadow-md"})])):e.createCommentVNode("",!0),I.selectionMode?(e.openBlock(),e.createBlock(e.unref($.IonCheckbox),{key:2,"data-testid":"media-checkbox",checked:g(A.uuid),class:"absolute top-2 left-2 z-20",onIonChange:P=>E(A)},null,8,["checked","onIonChange"])):e.createCommentVNode("",!0),e.createVNode(e.unref($.IonCard),{class:"m-0 overflow-hidden"},{default:e.withCtx(()=>[e.createElementVNode("div",i3,[e.createElementVNode("img",{src:T(A),alt:A.file_name,class:"w-full h-full object-cover"},null,8,r3),I.showActions&&c.value===A.uuid?(e.openBlock(),e.createElementBlock("div",s3,[e.createVNode(e.unref($.IonButton),{"data-testid":"action-preview",fill:"clear",size:"small",color:"light",onClick:P=>m(A)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{slot:"icon-only",name:"eye-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref($.IonButton),{"data-testid":"action-edit",fill:"clear",size:"small",color:"light",onClick:P=>k(A)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{slot:"icon-only",name:"create-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref($.IonButton),{"data-testid":"action-detach",fill:"clear",size:"small",color:"danger",onClick:P=>N(A)},{default:e.withCtx(()=>[e.createVNode(e.unref($.IonIcon),{slot:"icon-only",name:"close-circle-outline"})]),_:1},8,["onClick"])])):e.createCommentVNode("",!0)])]),_:2},1024)],42,n3))),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:S},[e.createVNode(e.unref($.IonIcon),{name:"add-circle-outline",class:"text-4xl text-gray-400"}),R[1]||(R[1]=e.createElementVNode("span",{class:"text-sm text-gray-500"},"Add Media",-1))])],2))]))}}),c3=Me(l3,[["__scopeId","data-v-d84b796a"]]);function xr(a={}){const n=e.ref(!1),t=e.ref(!1),o=e.ref(null),i=e.ref(null),r=e.ref(0),s=e.ref(null),c=e.ref(null),l=e.computed(()=>c.value!==null),d=T=>{if(r.value++,c.value=null,i.value=null,t.value=!1,T!=null&&typeof T=="object"&&!(T instanceof Blob)&&("image"in T||"state"in T||"sessionKey"in T)){const _=T;o.value=_.image??null,s.value=_.state??null}else o.value=T??null,s.value=null;n.value=!0},u=()=>{n.value=!1,o.value=null,i.value=null,c.value=null,t.value=!1,s.value=null},p=async T=>{try{return t.value=!0,i.value=T,a.onSave&&await a.onSave(T),u(),T}catch(_){const w=_;throw c.value=w,a.onError&&a.onError(w),w}finally{t.value=!1}},f=()=>{a.onCancel&&a.onCancel(),u()},h=T=>{c.value=T,a.onError&&a.onError(T)},v=()=>{c.value=null},g=()=>i.value,E=e.computed(()=>n.value&&i.value!==null&&!t.value);return{isOpen:n,isProcessing:t,uploadedImage:o,editedImage:i,sessionKey:r,initialState:s,error:c,hasError:l,hasUnsavedChanges:E,open:d,close:u,handleSave:p,handleCancel:f,handleError:h,clearError:v,getEditedImage:g}}let Si=null;function d3(a){return Si||(Si=xr(a)),Si}function u3(a){return n=>new Promise((t,o)=>{xr({...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 Er(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 Yi(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 Vr(a){if(a){const t={};a.apiBaseUrl!==void 0&&(t.apiBaseUrl=a.apiBaseUrl),a.isAdmin!==void 0&&(t.isAdmin=a.isAdmin),Rn(t)}return{name:"mediables",async upload(t,o){const r=await xt().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 xt().attachMedia(o.modelType,String(o.modelId),[t],o.collection||"images")},async attachMany(t,o){await xt().attachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async detach(t,o){await xt().detachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async reorder(t,o){await xt().reorderMedia(t.modelType,String(t.modelId),o,t.collection||"images")},async fetchModelMedia(t){return await xt().fetchModelMedia(t.modelType,String(t.modelId),t.collection||"images")},getUrl(t,o){return xt().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 xt().deleteMedia(t)},async update(t,o){const r=await xt().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),Rn(o)}}}let ra=null;function m3(){return ra||(ra=Vr()),ra}function p3(){ra=null}const f3={apiBaseUrl:"/media-library-pro"};function Jo(){var a;return typeof document>"u"?null:((a=document.querySelector('meta[name="csrf-token"]'))==null?void 0:a.getAttribute("content"))||null}function Ci(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 Sr(a){const n={...f3,...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 s={Accept:"application/json",...n.headers},c=n.csrfToken||Jo();c&&(s["X-CSRF-TOKEN"]=c);const l={method:"POST",headers:s,body:r,credentials:"include"};i!=null&&i.signal&&(l.signal=i.signal);const d=await fetch(`${n.apiBaseUrl}/uploads`,l);if(!d.ok){const f=await d.json().catch(()=>({message:"Upload failed"}));throw new Error(f.message||`HTTP ${d.status}`)}const u=await d.json(),p=Ci(u);return i!=null&&i.onProgress&&i.onProgress(100),{media:p,uuid:u.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||Jo();r&&(i["X-CSRF-TOKEN"]=r);const s=new URLSearchParams;s.append("model_type",o.modelType),s.append("model_id",String(o.modelId)),o.collection&&s.append("collection",o.collection);try{const c=await fetch(`${n.apiBaseUrl}/media?${s}`,{method:"GET",headers:i,credentials:"include"});if(!c.ok)throw new Error(`HTTP ${c.status}`);return(await c.json()).map(Ci)}catch{return[]}},getUrl(o,i){var r;if(i){const s=(r=o.conversion_urls)==null?void 0:r[i];if(s)return s}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||Jo();r&&(i["X-CSRF-TOKEN"]=r);const s=await fetch(`${n.apiBaseUrl}/uploads/${o}`,{method:"DELETE",headers:i,credentials:"include"});if(!s.ok){const c=await s.json().catch(()=>({message:"Delete failed"}));throw new Error(c.message||`HTTP ${s.status}`)}},async update(o,i){const r={Accept:"application/json","Content-Type":"application/json",...n.headers},s=n.csrfToken||Jo();s&&(r["X-CSRF-TOKEN"]=s);const c=await fetch(`${n.apiBaseUrl}/uploads/${o}`,{method:"PATCH",headers:r,body:JSON.stringify(i),credentials:"include"});if(!c.ok){const d=await c.json().catch(()=>({message:"Update failed"}));throw new Error(d.message||`HTTP ${c.status}`)}const l=await c.json();return Ci(l)},configure(o){Object.assign(n,o)}}}let sa=null;function h3(){return sa||(sa=Sr()),sa}function v3(){sa=null}function Nc(a,n){switch(a){case"mediables":return Vr(n);case"spatie":return Sr(n);default:throw new Error(`Unknown adapter: ${a}`)}}function wa(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 Tc(a){var t;const n=a.split(".");return n.length>1?`.${(t=n.pop())==null?void 0:t.toLowerCase()}`:""}function Cr(a){return a.type.startsWith("image/")}async function Mc(a){return Cr(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 Bc(a,n){const t=[];if(n.maxFileSize&&a.size>n.maxFileSize&&t.push({field:"size",message:`File exceeds maximum size of ${wa(n.maxFileSize)}`,code:"MAX_FILE_SIZE"}),n.minFileSize&&a.size<n.minFileSize&&t.push({field:"size",message:`File is smaller than minimum size of ${wa(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=Tc(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(Cr(a)&&(n.maxDimensions||n.minDimensions)){const o=await Mc(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 _r(a={}){const n=e.ref(a.rules||{});function t(l){n.value=l}async function o(l){return Bc(l,n.value)}async function i(l){const d=new Map;return await Promise.all(l.map(async u=>{const p=await o(u);d.set(u,p)})),d}function r(l,d){return n.value.maxItems?d+l<=n.value.maxItems:!0}const s=e.computed(()=>{const l=[];return n.value.acceptedMimeTypes&&l.push(...n.value.acceptedMimeTypes),n.value.acceptedExtensions&&l.push(...n.value.acceptedExtensions),l.join(",")});function c(l){return!n.value.acceptedMimeTypes||n.value.acceptedMimeTypes.length===0?!0:n.value.acceptedMimeTypes.some(d=>d.endsWith("/*")?l.startsWith(d.slice(0,-1)):l===d)}return{rules:n,setRules:t,validateFile:o,validateFiles:i,canAddFiles:r,acceptString:s,isMimeTypeAllowed:c}}function g3(){return`upload-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function y3(a){if(a.type.startsWith("image/"))return URL.createObjectURL(a)}function Ic(a){const{adapter:n,maxConcurrent:t=3,rules:o,collection:i,onUploadStart:r,onUploadProgress:s,onUploadComplete:c,onUploadError:l,onQueueComplete:d}=a,u=e.ref(new Map),p=e.ref(new Set),f=o?{rules:o}:{},{validateFile:h}=_r(f);async function v(){if(p.value.size>=t)return;const x=Array.from(u.value.entries()).find(([A,M])=>M.status==="pending"&&!p.value.has(A));if(!x){Array.from(u.value.values()).every(M=>M.status==="completed"||M.status==="error")&&u.value.size>0&&(d==null||d());return}const[I,R]=x;await g(I,R)}async function g(x,I){p.value.add(x),I.status="uploading",I.abortController=new AbortController,u.value.set(x,{...I}),r==null||r(I);try{const R={onProgress:M=>{I.progress=M,u.value.set(x,{...I}),s==null||s(I)},signal:I.abortController.signal};i&&(R.collection=i);const A=await n.upload(I.file,R);I.status="completed",I.progress=100,I.media=A.media,u.value.set(x,{...I}),c==null||c(I,A.media)}catch(R){R.name==="AbortError"?u.value.delete(x):(I.status="error",I.error=R.message,u.value.set(x,{...I}),l==null||l(I,R))}finally{p.value.delete(x),delete I.abortController,v()}}async function E(x){var A;const I=Array.from(x),R=[];for(const M of I){const P=await h(M),H=g3(),B=y3(M),D={id:H,file:M,progress:0,status:P.valid?"pending":"error"};!P.valid&&((A=P.errors[0])!=null&&A.message)&&(D.error=P.errors[0].message),B&&(D.previewUrl=B),u.value.set(H,D);const X={media:null,clientId:H,name:M.name,order:0,upload:D,errors:P.errors};R.push(X)}for(let M=0;M<t;M++)v();return R}function T(x){const I=u.value.get(x);I&&(I.abortController&&I.abortController.abort(),I.previewUrl&&URL.revokeObjectURL(I.previewUrl),u.value.delete(x),p.value.delete(x),v())}async function _(x){const I=u.value.get(x);!I||I.status!=="error"||(I.status="pending",I.progress=0,delete I.error,u.value.set(x,{...I}),v())}function w(){for(const[x,I]of u.value.entries())(I.status==="completed"||I.status==="error")&&(I.previewUrl&&URL.revokeObjectURL(I.previewUrl),u.value.delete(x))}function m(){for(const x of u.value.values())x.abortController&&x.abortController.abort(),x.previewUrl&&URL.revokeObjectURL(x.previewUrl);u.value.clear(),p.value.clear()}function k(x){return u.value.get(x)}const N=e.computed(()=>p.value.size>0),S=e.computed(()=>p.value.size),y=e.computed(()=>Array.from(u.value.values()).filter(x=>x.status==="pending").length),C=e.computed(()=>u.value.size===0?!0:Array.from(u.value.values()).every(x=>x.status==="completed"||x.status==="error")),U=e.computed(()=>Array.from(u.value.values()));return{uploads:u,isUploading:N,activeCount:S,pendingCount:y,isComplete:C,addFiles:E,cancelUpload:T,retryUpload:_,clearCompleted:w,clearAll:m,getUpload:k,uploadsArray:U}}function Fc(a={}){const{enabled:n=!0,onReorder:t,onDragStart:o,onDragEnd:i,draggingClass:r="is-dragging",dropTargetClass:s="is-drop-target"}=a,c=e.ref({isDragging:!1,dragIndex:null,dropIndex:null,draggedItem:null}),l=e.ref(!1);let d=null;function u(_,w,m){n&&("dataTransfer"in _&&_.dataTransfer&&(_.dataTransfer.effectAllowed="move",_.dataTransfer.setData("text/plain",String(m))),d=_.target,d&&d.classList.add(r),c.value={isDragging:!0,dragIndex:m,dropIndex:m,draggedItem:w},l.value=!0,o==null||o(w,m))}function p(_,w){var m;if(!(!n||!c.value.isDragging)&&(_.preventDefault(),c.value.dropIndex!==w)){const k=document.querySelector(`.${s}`);k==null||k.classList.remove(s);const N=(m=_.target)==null?void 0:m.closest("[data-index]");N==null||N.classList.add(s),c.value.dropIndex=w}}function f(){if(!c.value.isDragging)return;const{dragIndex:_,dropIndex:w,draggedItem:m}=c.value;d&&d.classList.remove(r);const k=document.querySelector(`.${s}`);k==null||k.classList.remove(s),_!==null&&w!==null&&_!==w&&m&&(t==null||t({fromIndex:_,toIndex:w,item:m})),v(),i==null||i()}function h(){d&&d.classList.remove(r);const _=document.querySelector(`.${s}`);_==null||_.classList.remove(s),v(),i==null||i()}function v(){c.value={isDragging:!1,dragIndex:null,dropIndex:null,draggedItem:null},l.value=!1,d=null}function g(_,w,m){const k=[..._],[N]=k.splice(w,1);return k.splice(m,0,N),k.map((S,y)=>({...S,order:y}))}function E(_,w){return{draggable:n,"data-index":w,onDragstart:m=>u(m,_,w),onDragover:m=>p(m,w),onDragend:()=>f(),onDrop:m=>{m.preventDefault(),f()}}}function T(_){_.key==="Escape"&&c.value.isDragging&&h()}return e.onMounted(()=>{document.addEventListener("keydown",T)}),e.onUnmounted(()=>{document.removeEventListener("keydown",T),h()}),{dragState:c,isDragging:l,startDrag:u,handleDragOver:p,endDrag:f,cancelDrag:h,reorderItems:g,getDragProps:E}}function Za(a={}){const{initialItems:n=[],modelType:t,modelId:o,collection:i="images",maxItems:r,maxFileSize:s,acceptedMimeTypes:c,sortable:l=!0,disabled:d=!1,rules:u={},adapterType:p="mediables",adapter:f,maxConcurrentUploads:h=3,onChange:v,onUpload:g,onUploadComplete:E,onUploadError:T,onRemove:_,onReorder:w,onError:m,onReadyToSubmitChange:k}=a,N={maxItems:r,maxFileSize:s,acceptedMimeTypes:c,...u},S=f||Nc(p),y=e.ref([]),C=e.ref(!1),U=e.ref([]);function x(oe){if(oe.length===0)return[];const le=oe[0];return"media"in le&&"clientId"in le?oe:Yi(oe)}y.value=x(n);const{acceptString:I,canAddFiles:R}=_r({rules:N}),A=Ic({adapter:S,maxConcurrent:h,rules:N,collection:i,onUploadStart:oe=>{g==null||g(oe)},onUploadComplete:(oe,le)=>{const xe=y.value.findIndex(Ce=>Ce.clientId===oe.id);xe!==-1&&(y.value[xe]={...y.value[xe],media:le,name:le.name||le.file_name,upload:{...oe,status:"completed"}}),E==null||E(le)},onUploadError:(oe,le)=>{const xe=y.value.findIndex(Ce=>Ce.clientId===oe.id);xe!==-1&&(y.value[xe]={...y.value[xe],upload:{...oe,status:"error",error:le.message},errors:[{field:"upload",message:le.message,code:"UPLOAD_ERROR"}]}),T==null||T({file:oe.file,message:le.message})},onQueueComplete:()=>{v==null||v(y.value)}}),{dragState:M,getDragProps:P,reorderItems:H}=Fc({enabled:l&&!d,onReorder:oe=>{y.value=H(y.value,oe.fromIndex,oe.toIndex),w==null||w(y.value),v==null||v(y.value)}}),B=e.computed(()=>A.isUploading.value),D=e.computed(()=>!A.isUploading.value&&A.pendingCount.value===0),X=e.computed(()=>r?y.value.length>=r:!1),Z=e.computed(()=>Er(y.value)),ee=e.computed(()=>y.value.length),ge=e.computed(()=>r?Math.max(0,r-y.value.length):1/0);e.watch(D,oe=>{k==null||k(oe)});function Ee(oe){y.value=x(oe),v==null||v(y.value)}async function te(oe){if(d)return;const le=Array.from(oe);if(!R(le.length,y.value.length)){const Ze={field:"count",message:`Maximum ${r} files allowed`,code:"MAX_ITEMS"};U.value=[Ze],m==null||m([Ze]);return}const xe=await A.addFiles(le),Ce=y.value.length,dt=xe.map((Ze,vt)=>({...Ze,order:Ce+vt}));y.value=[...y.value,...dt],v==null||v(y.value)}function F(oe){d||(oe.upload&&(oe.upload.status==="uploading"||oe.upload.status==="pending")&&A.cancelUpload(oe.clientId),y.value=y.value.filter(le=>le.clientId!==oe.clientId),y.value=y.value.map((le,xe)=>({...le,order:xe})),_==null||_(oe),v==null||v(y.value))}function j(oe){const le=y.value.find(xe=>xe.clientId===oe);le&&F(le)}function de(){d||(A.clearAll(),y.value=[],v==null||v(y.value))}function ne(oe,le){d||!l||(y.value=H(y.value,oe,le),w==null||w(y.value),v==null||v(y.value))}function J(oe,le){if(d)return;const xe=y.value.findIndex(Ce=>Ce.clientId===oe);xe!==-1&&(y.value[xe]={...y.value[xe],...le},v==null||v(y.value))}function Be(oe){A.cancelUpload(oe),j(oe)}async function ce(oe){await A.retryUpload(oe)}async function re(){if(!t||!o)throw new Error("modelType and modelId are required for save()");const oe={modelType:t,modelId:o,collection:i},le=y.value.filter(xe=>xe.media&&!xe.markedForRemoval).map(xe=>xe.media.uuid);C.value=!0;try{await S.attachMany(le,oe),await S.reorder(oe,le)}finally{C.value=!1}}async function ke(){if(!t||!o)throw new Error("modelType and modelId are required for load()");const oe={modelType:t,modelId:o,collection:i};C.value=!0;try{const le=await S.fetchModelMedia(oe);y.value=Yi(le),v==null||v(y.value)}finally{C.value=!1}}return e.onMounted(()=>{t&&o&&n.length===0&&ke().catch(console.error)}),e.onUnmounted(()=>{A.clearAll()}),{items:y,setItems:Ee,addFiles:te,removeItem:F,removeItemById:j,clearAll:de,reorderItems:ne,updateItem:J,cancelUpload:Be,retryUpload:ce,save:re,load:ke,isLoading:C,isUploading:B,isReadyToSubmit:D,isAtMaxItems:X,errors:U,dragState:M,getDragProps:P,adapter:S,formValues:Z,acceptString:I,count:ee,remainingSlots:ge}}const w3=["aria-disabled"],b3=["accept","multiple","disabled"],k3={class:"media-dropzone__content"},x3={class:"media-dropzone__title"},E3={class:"media-dropzone__subtitle"},V3=["disabled"],S3={key:0,class:"media-dropzone__helper"},C3=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),s=e.computed(()=>({"media-dropzone":!0,"media-dropzone--drag-over":i.value,"media-dropzone--disabled":t.disabled})),c=e.computed(()=>{const g=[];return t.maxFileSize&&g.push(`Max size: ${wa(t.maxFileSize)}`),t.maxItems&&t.maxItems>1&&g.push(`Max files: ${t.maxItems}`),g.join(" • ")});function l(g){g.preventDefault(),!t.disabled&&(i.value=!0)}function d(g){g.preventDefault(),i.value=!1}function u(g){g.preventDefault()}function p(g){var T;if(g.preventDefault(),i.value=!1,t.disabled)return;const E=(T=g.dataTransfer)==null?void 0:T.files;E&&E.length>0&&o("files",E)}function f(){var g;t.disabled||(g=r.value)==null||g.click()}function h(g){const E=g.target,T=E.files;T&&T.length>0&&o("files",T),E.value=""}function v(g){(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),f())}return(g,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(s.value),role:"button",tabindex:"0","aria-disabled":g.disabled,"aria-label":"Upload files",onClick:f,onKeydown:v,onDragenter:l,onDragleave:d,onDragover:u,onDrop:p},[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",accept:g.accept,multiple:g.multiple,disabled:g.disabled,class:"media-dropzone__input",onChange:h},null,40,b3),e.createElementVNode("div",k3,[e.renderSlot(g.$slots,"icon",{},()=>[E[0]||(E[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",x3,[e.renderSlot(g.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(g.title),1)],!0)]),e.createElementVNode("p",E3,[e.renderSlot(g.$slots,"subtitle",{},()=>[e.createTextVNode(e.toDisplayString(g.subtitle),1)],!0)]),e.createElementVNode("button",{type:"button",class:"media-dropzone__button",disabled:g.disabled,onClick:e.withModifiers(f,["stop"])},[e.renderSlot(g.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(g.buttonText),1)],!0)],8,V3),c.value?(e.openBlock(),e.createElementBlock("p",S3,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)])],42,w3))}}),Nr=Me(C3,[["__scopeId","data-v-b1366c1e"]]),_3=["data-index"],N3={key:0,class:"media-item__drag-handle","aria-label":"Drag to reorder",role:"button",tabindex:"0"},T3={class:"media-item__thumbnail"},M3=["src","alt"],B3={key:1,class:"media-item__file-icon"},I3={key:2,class:"media-item__progress-overlay"},F3={class:"media-item__progress-text"},$3={key:3,class:"media-item__processing-overlay"},R3={key:4,class:"media-item__error-overlay"},D3={class:"media-item__info"},A3=["title"],U3={key:0,class:"media-item__size"},O3={key:1,class:"media-item__error-message"},L3={class:"media-item__actions"},z3=["disabled"],P3=["disabled"],j3=["disabled"],W3=["disabled"],Z3=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 w;return(w=t.item.upload)!=null&&w.previewUrl?t.item.upload.previewUrl:t.item.media?t.adapter.getThumbnailUrl(t.item.media):null}),s=e.computed(()=>{var w,m,k;return((w=t.item.upload)==null?void 0:w.status)==="uploading"||((m=t.item.upload)==null?void 0:m.status)==="pending"||((k=t.item.upload)==null?void 0:k.status)==="queued"}),c=e.computed(()=>{var w;return((w=t.item.upload)==null?void 0:w.status)==="processing"}),l=e.computed(()=>{var w;return((w=t.item.upload)==null?void 0:w.status)==="error"||t.item.errors&&t.item.errors.length>0}),d=e.computed(()=>{var w;return(w=t.item.upload)!=null&&w.error?t.item.upload.error:t.item.errors&&t.item.errors.length>0?t.item.errors[0].message:null}),u=e.computed(()=>{var w;return((w=t.item.upload)==null?void 0:w.progress)||0}),p=e.computed(()=>{var w;return t.item.name||((w=t.item.media)==null?void 0:w.file_name)||"Unknown file"}),f=e.computed(()=>{var S,y;const w=((S=t.item.media)==null?void 0:S.size)||((y=t.item.upload)==null?void 0:y.file.size);if(!w)return"";const m=1024,k=["Bytes","KB","MB","GB"],N=Math.floor(Math.log(w)/Math.log(m));return parseFloat((w/Math.pow(m,N)).toFixed(2))+" "+k[N]}),h=e.computed(()=>{var m,k;const w=((m=t.item.media)==null?void 0:m.mime_type)||((k=t.item.upload)==null?void 0:k.file.type);return w==null?void 0:w.startsWith("image/")}),v=e.computed(()=>({"media-item":!0,"media-item--uploading":s.value,"media-item--processing":c.value,"media-item--error":l.value,"media-item--disabled":t.disabled,"media-item--sortable":t.sortable}));function g(){t.disabled||o("remove",t.item)}function E(){t.disabled||o("edit",t.item)}function T(){t.disabled||o("retry",t.item)}function _(){t.disabled||o("cancel",t.item)}return(w,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(v.value),"data-index":w.index,onMouseenter:m[0]||(m[0]=k=>i.value=!0),onMouseleave:m[1]||(m[1]=k=>i.value=!1)},[w.sortable&&!w.disabled?(e.openBlock(),e.createElementBlock("div",N3,[...m[2]||(m[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",T3,[r.value&&h.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:r.value,alt:p.value,class:"media-item__image"},null,8,M3)):(e.openBlock(),e.createElementBlock("div",B3,[...m[3]||(m[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)])])),s.value?(e.openBlock(),e.createElementBlock("div",I3,[e.createElementVNode("div",{class:"media-item__progress-bar",style:e.normalizeStyle({width:`${u.value}%`})},null,4),e.createElementVNode("span",F3,e.toDisplayString(u.value)+"%",1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",$3,[...m[4]||(m[4]=[e.createElementVNode("div",{class:"media-item__spinner","aria-label":"Processing"},null,-1)])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",R3,[...m[5]||(m[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",D3,[e.createElementVNode("span",{class:"media-item__name",title:p.value},e.toDisplayString(p.value),9,A3),f.value?(e.openBlock(),e.createElementBlock("span",U3,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("span",O3,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",L3,[s.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-item__action media-item__action--cancel",disabled:w.disabled,"aria-label":"Cancel upload",onClick:_},[...m[6]||(m[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,z3)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"media-item__action media-item__action--retry",disabled:w.disabled,"aria-label":"Retry upload",onClick:T},[...m[7]||(m[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,P3)):e.createCommentVNode("",!0),w.showEdit&&w.item.media&&!s.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"media-item__action media-item__action--edit",disabled:w.disabled,"aria-label":"Edit",onClick:E},[...m[8]||(m[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,j3)):e.createCommentVNode("",!0),w.showRemove?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"media-item__action media-item__action--remove",disabled:w.disabled,"aria-label":"Remove",onClick:g},[...m[9]||(m[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,W3)):e.createCommentVNode("",!0)])],42,_3))}}),Tr=Me(Z3,[["__scopeId","data-v-ff81c9ec"]]),X3=["aria-label"],H3=["draggable","data-index","onDragstart","onDragover","onDragend","onDrop"],G3={key:0,class:"media-collection__footer"},J3={class:"media-collection__count"},Y3={key:0},K3={key:0,class:"media-collection__uploading"},q3=["name","value"],Q3=["name","value"],eV=["name","value"],tV=["name","value"],nV={key:3,class:"media-collection__errors",role:"alert","aria-live":"polite"},oV=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:B=>{o("update:modelValue",B),o("change",B)},onUpload:B=>{o("upload",B)},onUploadComplete:B=>{o("upload-complete",B)},onUploadError:B=>{o("upload-error",B)},onRemove:B=>{o("remove",B)},onReorder:B=>{o("reorder",B)},onError:B=>{o("validation-error",B)},onReadyToSubmitChange:B=>{o("is-ready-to-submit-change",B)}},{items:r,setItems:s,addFiles:c,removeItem:l,reorderItems:d,cancelUpload:u,retryUpload:p,isLoading:f,isUploading:h,isAtMaxItems:v,errors:g,dragState:E,getDragProps:T,adapter:_,formValues:w,acceptString:m,count:k,remainingSlots:N}=Za(i);e.provide("mediaAdapter",_),e.provide("mediaCollection",{items:r,addFiles:c,removeItem:l,reorderItems:d}),e.watch(()=>t.modelValue,B=>{B!==r.value&&s(B)},{deep:!0});const S=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!v.value),y=e.computed(()=>({"media-collection":!0,"media-collection--disabled":t.disabled,"media-collection--readonly":t.readonly,"media-collection--loading":f.value,"media-collection--has-items":r.value.length>0,"media-collection--dragging":E.value.isDragging}));function C(B){c(B)}function U(B){l(B)}function x(B){p(B.clientId)}function I(B){u(B.clientId)}function R(B){}function A(B,D,X){if(!t.sortable||t.disabled)return;const Z=T(D,X);Z.onDragstart&&Z.onDragstart(B)}function M(B,D){if(!t.sortable||t.disabled)return;B.preventDefault();const X=r.value[D],Z=T(X,D);Z.onDragover&&Z.onDragover(B)}function P(B,D){const X=T(B,D);X.onDragend&&X.onDragend()}function H(B,D){B.preventDefault();const X=r.value[D],Z=T(X,D);Z.onDrop&&Z.onDrop(B)}return(B,D)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(y.value)},[e.renderSlot(B.$slots,"dropzone",{addFiles:e.unref(c)},()=>[S.value?(e.openBlock(),e.createBlock(Nr,{key:0,accept:e.unref(m),multiple:B.maxItems!==1,disabled:B.disabled,"max-file-size":B.maxFileSize,"max-items":e.unref(N),onFiles:C},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(k)} media items`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r),(X,Z)=>e.renderSlot(B.$slots,"item",{key:X.clientId,item:X,index:Z,remove:()=>U(X)},()=>[e.createElementVNode("div",{class:e.normalizeClass(["media-collection__item-wrapper",{"media-collection__item-wrapper--drag-over":e.unref(E).dropIndex===Z}]),draggable:B.sortable&&!B.disabled,"data-index":Z,onDragstart:ee=>A(ee,X,Z),onDragover:ee=>M(ee,Z),onDragend:ee=>P(X,Z),onDrop:ee=>H(ee,Z)},[e.createVNode(Tr,{item:X,adapter:e.unref(_),disabled:B.disabled,sortable:B.sortable,"show-remove":!B.readonly,"show-edit":!1,index:Z,onRemove:U,onRetry:x,onCancel:I,onEdit:R},null,8,["item","adapter","disabled","sortable","show-remove","index"])],42,H3)],!0)),128))],8,X3)):S.value?e.createCommentVNode("",!0):e.renderSlot(B.$slots,"empty",{key:1},()=>[D[0]||(D[0]=e.createElementVNode("div",{class:"media-collection__empty"},[e.createElementVNode("p",null,"No files uploaded")],-1))],!0),e.renderSlot(B.$slots,"footer",{count:e.unref(k),isUploading:e.unref(h)},()=>[e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",G3,[e.createElementVNode("span",J3,[e.createTextVNode(e.toDisplayString(e.unref(k))+" "+e.toDisplayString(e.unref(k)===1?"file":"files")+" ",1),B.maxItems?(e.openBlock(),e.createElementBlock("span",Y3," / "+e.toDisplayString(B.maxItems)+" max",1)):e.createCommentVNode("",!0)]),e.unref(h)?(e.openBlock(),e.createElementBlock("span",K3," Uploading... ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],!0),B.generateFormFields?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,Z)=>(e.openBlock(),e.createElementBlock("input",{key:`${B.name}-${X.uuid}`,type:"hidden",name:`${B.name}[${Z}][uuid]`,value:X.uuid},null,8,q3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,Z)=>(e.openBlock(),e.createElementBlock("input",{key:`${B.name}-${X.uuid}-name`,type:"hidden",name:`${B.name}[${Z}][name]`,value:X.name},null,8,Q3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,Z)=>(e.openBlock(),e.createElementBlock("input",{key:`${B.name}-${X.uuid}-order`,type:"hidden",name:`${B.name}[${Z}][order]`,value:X.order},null,8,eV))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,Z)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`${B.name}-${X.uuid}-props`},[X.custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${B.name}[${Z}][custom_properties]`,value:JSON.stringify(X.custom_properties)},null,8,tV)):e.createCommentVNode("",!0)],64))),128))],64)):e.createCommentVNode("",!0),e.unref(g).length>0?(e.openBlock(),e.createElementBlock("div",nV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),X=>(e.openBlock(),e.createElementBlock("p",{key:X.code||X.message,class:"media-collection__error"},e.toDisplayString(X.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),aV=Me(oV,[["__scopeId","data-v-10a5bfff"]]);function Mr(a={}){const{initialItem:n,onChange:t,onReplace:o,onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d,...u}=a,f={...u,initialItems:n?[n]:[],maxItems:1,sortable:!1,onChange:S=>{t==null||t(S[0]||null)},onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d},h=Za(f),v=e.computed(()=>h.items.value[0]||null),g=e.computed(()=>v.value!==null),E=e.computed(()=>h.formValues.value[0]||null);function T(S){S===null?h.clearAll():h.setItems([S])}async function _(S){const y=v.value;y&&h.removeItem(y),await h.addFiles([S])}function w(){v.value&&h.removeItem(v.value)}async function m(S){const y=v.value;y&&h.removeItem(y),await h.addFiles([S]);const C=h.items.value[0];C&&(o==null||o(y,C))}function k(){var S;(S=v.value)!=null&&S.upload&&h.cancelUpload(v.value.clientId)}async function N(){var S,y;((y=(S=v.value)==null?void 0:S.upload)==null?void 0:y.status)==="error"&&await h.retryUpload(v.value.clientId)}return{item:v,setItem:T,addFile:_,removeItem:w,replaceItem:m,cancelUpload:k,retryUpload:N,save:h.save,load:h.load,isLoading:h.isLoading,isUploading:h.isUploading,isReadyToSubmit:h.isReadyToSubmit,hasItem:g,errors:h.errors,adapter:h.adapter,formValue:E,acceptString:h.acceptString}}const iV=["accept","disabled"],rV={class:"media-attachment__preview"},sV=["name","value"],lV=["name","value"],cV=["name","value"],dV=["name","value"],uV={key:4,class:"media-attachment__errors",role:"alert","aria-live":"polite"},mV=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:x=>{o("update:modelValue",x),o("change",x)},onUpload:x=>{o("upload",x)},onUploadComplete:x=>{o("upload-complete",x)},onUploadError:x=>{o("upload-error",x)},onRemove:x=>{o("remove",x)},onReplace:(x,I)=>{o("replace",I)},onError:x=>{o("validation-error",x)},onReadyToSubmitChange:x=>{o("is-ready-to-submit-change",x)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:p,retryUpload:f,isLoading:h,hasItem:v,errors:g,adapter:E,formValue:T,acceptString:_}=Mr(r);e.provide("mediaAdapter",E),e.watch(()=>t.modelValue,x=>{x!==s.value&&c(x)},{deep:!0});const w=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!v.value),m=e.computed(()=>({"media-attachment":!0,"media-attachment--disabled":t.disabled,"media-attachment--readonly":t.readonly,"media-attachment--loading":h.value,"media-attachment--has-item":v.value}));function k(x){x.length>0&&l(x[0])}function N(){var x;(x=i.value)==null||x.click()}function S(x){const I=x.target,R=I.files;R&&R.length>0&&u(R[0]),I.value=""}function y(x){d()}function C(x){f()}function U(x){p()}return(x,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(m.value)},[e.createElementVNode("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:e.unref(_),disabled:x.disabled,class:"media-attachment__hidden-input",onChange:S},null,40,iV),w.value?e.renderSlot(x.$slots,"dropzone",{key:0,addFile:e.unref(l)},()=>[e.createVNode(Nr,{accept:e.unref(_),multiple:!1,disabled:x.disabled,"max-file-size":x.maxFileSize,onFiles:k},null,8,["accept","disabled","max-file-size"])],!0):e.unref(v)&&e.unref(s)?e.renderSlot(x.$slots,"preview",{key:1,item:e.unref(s),remove:e.unref(d),replace:N},()=>[e.createElementVNode("div",rV,[e.createVNode(Tr,{item:e.unref(s),adapter:e.unref(E),disabled:x.disabled,sortable:!1,"show-remove":!x.readonly,"show-edit":!1,onRemove:y,onRetry:C,onCancel:U},null,8,["item","adapter","disabled","show-remove"]),x.showReplaceButton&&!x.readonly&&!x.disabled&&e.unref(s).media?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-attachment__replace-button",onClick:N},[...I[0]||(I[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(x.$slots,"empty",{key:2},()=>[I[1]||(I[1]=e.createElementVNode("div",{class:"media-attachment__empty"},[e.createElementVNode("p",null,"No file selected")],-1))],!0),x.generateFormFields&&e.unref(T)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("input",{type:"hidden",name:`${x.name}[uuid]`,value:e.unref(T).uuid},null,8,sV),e.createElementVNode("input",{type:"hidden",name:`${x.name}[name]`,value:e.unref(T).name},null,8,lV),e.createElementVNode("input",{type:"hidden",name:`${x.name}[order]`,value:e.unref(T).order},null,8,cV),e.unref(T).custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${x.name}[custom_properties]`,value:JSON.stringify(e.unref(T).custom_properties)},null,8,dV)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.unref(g).length>0?(e.openBlock(),e.createElementBlock("div",uV,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),R=>(e.openBlock(),e.createElementBlock("p",{key:R.code||R.message,class:"media-attachment__error"},e.toDisplayString(R.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),pV=Me(mV,[["__scopeId","data-v-26911174"]]),$c={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"}},fV=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:x=>{i("update:modelValue",x),i("change",x)},onUpload:x=>{i("upload",x)},onUploadComplete:x=>{i("upload-complete",x)},onUploadError:x=>{i("upload-error",x)},onRemove:x=>{i("remove",x)},onReorder:x=>{i("reorder",x)},onError:x=>{i("validation-error",x)},onReadyToSubmitChange:x=>{i("is-ready-to-submit-change",x)}},{items:s,setItems:c,addFiles:l,removeItem:d,reorderItems:u,updateItem:p,cancelUpload:f,retryUpload:h,isLoading:v,isUploading:g,isReadyToSubmit:E,isAtMaxItems:T,errors:_,dragState:w,getDragProps:m,adapter:k,formValues:N,acceptString:S}=Za(r);e.provide("mediaAdapter",k),e.provide("mediaCollection",{items:s,addFiles:l,removeItem:d,reorderItems:u}),e.watch(()=>o.modelValue,x=>{x!==s.value&&c(x)},{deep:!0});const y=e.computed(()=>({...$c,...o.labels})),C=e.computed(()=>({accept:S.value,multiple:o.maxItems!==1,disabled:o.disabled||o.readonly||T.value})),U=e.computed(()=>({items:s.value,isLoading:v.value,isUploading:g.value,isReadyToSubmit:E.value,isAtMaxItems:T.value,errors:_.value,addFiles:l,removeItem:d,reorderItems:u,clearAll:()=>{s.value.forEach(x=>d(x))},cancelUpload:f,retryUpload:h,labels:y.value,dropzoneProps:C.value}));return n({items:s,addFiles:l,removeItem:d,reorderItems:u,updateItem:p,cancelUpload:f,retryUpload:h,isLoading:v,isUploading:g,isReadyToSubmit:E,isAtMaxItems:T,errors:_,dragState:w,getDragProps:m,adapter:k,formValues:N,acceptString:S}),(x,I)=>e.renderSlot(x.$slots,"default",e.normalizeProps(e.guardReactiveProps(U.value)))}}),hV=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:y=>{i("update:modelValue",y),i("change",y)},onUpload:y=>{i("upload",y)},onUploadComplete:y=>{i("upload-complete",y)},onUploadError:y=>{i("upload-error",y)},onRemove:y=>{i("remove",y)},onReplace:(y,C)=>{i("replace",C)},onError:y=>{i("validation-error",y)},onReadyToSubmitChange:y=>{i("is-ready-to-submit-change",y)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:p,retryUpload:f,isLoading:h,isUploading:v,isReadyToSubmit:g,hasItem:E,errors:T,adapter:_,formValue:w,acceptString:m}=Mr(r);e.provide("mediaAdapter",_),e.watch(()=>o.modelValue,y=>{y!==s.value&&c(y)},{deep:!0});const k=e.computed(()=>({...$c,...o.labels})),N=e.computed(()=>({accept:m.value,multiple:!1,disabled:o.disabled||o.readonly||E.value})),S=e.computed(()=>({item:s.value,hasItem:E.value,isLoading:h.value,isUploading:v.value,isReadyToSubmit:g.value,errors:T.value,addFile:l,removeItem:d,replaceItem:u,cancelUpload:p,retryUpload:f,labels:k.value,dropzoneProps:N.value}));return n({item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:p,retryUpload:f,isLoading:h,isUploading:v,isReadyToSubmit:g,hasItem:E,errors:T,adapter:_,formValue:w,acceptString:m}),(y,C)=>e.renderSlot(y.$slots,"default",e.normalizeProps(e.guardReactiveProps(S.value)))}}),vV=["name","value"],gV=["name","value"],yV=["name","value"],wV=["name","value"],bV=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(()=>Er(t.value));function i(c,l){var u;const d=((u=o.value[c])==null?void 0:u.uuid)||"";return`${n.name}[${d}][${l}]`}function r(c,l){return`${n.name}[${c}][${l}]`}function s(c,l){return n.format==="spatie"?i(c,l):r(c,l)}return(c,l)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(d,u)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.uuid},[e.createElementVNode("input",{type:"hidden",name:s(u,"uuid"),value:d.uuid},null,8,vV),e.createElementVNode("input",{type:"hidden",name:s(u,"name"),value:d.name},null,8,gV),e.createElementVNode("input",{type:"hidden",name:s(u,"order"),value:d.order},null,8,yV),d.custom_properties&&Object.keys(d.custom_properties).length>0?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:s(u,"custom_properties"),value:JSON.stringify(d.custom_properties)},null,8,wV)):e.createCommentVNode("",!0)],64))),128))}}),kV=["data-testid"],xV=["data-testid"],EV=["id"],VV=["value","maxlength","disabled","aria-labelledby","placeholder","data-testid","onInput"],SV=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,s){const c=s.target;c instanceof HTMLInputElement&&o("update:items",t.items.map((l,d)=>d!==r?l:{...l,caption:c.value===""?null:c.value}))}return(r,s)=>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,(c,l)=>(e.openBlock(),e.createElementBlock("div",{key:c._key??c.id??`${c.url}:${l}`,class:"media-attachment-metadata-fields__row","data-testid":`${r.testIdPrefix}-${l}`},[e.createElementVNode("p",{id:`${r.testIdPrefix}-label-${l}`,class:"media-attachment-metadata-fields__label"},e.toDisplayString(r.label)+" for "+e.toDisplayString(r.getItemLabel(c,l)),9,EV),e.createElementVNode("input",{value:c.caption??"",type:"text",class:"media-attachment-metadata-fields__input",maxlength:r.maxLength,disabled:r.disabled,"aria-labelledby":`${r.testIdPrefix}-label-${l}`,placeholder:r.placeholder,"data-testid":`input-${r.testIdPrefix}-${l}`,onInput:d=>i(l,d)},null,40,VV)],8,xV))),128))],8,kV)):e.createCommentVNode("",!0)}}),CV=Me(SV,[["__scopeId","data-v-a153768a"]]);exports.AlbumBrowser=_c;exports.AlbumManager=K4;exports.AlbumMediaGrid=c3;exports.AlbumTree=Cc;exports.ArrayBufferTarget=ar;exports.ExistingMediaSelector=Rp;exports.ImageEditor=rl;exports.ImageEditorModal=sl;exports.LiveStreamManager=V4;exports.ManagedMediaGallery=lu;exports.MediaAttachment=pV;exports.MediaAttachmentMetadataFields=CV;exports.MediaCollection=aV;exports.MediaCollectionDropzone=Nr;exports.MediaCollectionItem=Tr;exports.MediaWorkspace=au;exports.ModelMediaManager=op;exports.Muxer=Il;exports.VideoEditor=Ji;exports.VideoEditorDialog=s2;exports.VideoEditorSimple=B2;exports.VideoExportPanel=dx;exports.VideoJobClient=kr;exports.VideoPlayer=Ec;exports.VideoTimeline=tk;exports.VideoToolsPanel=Wk;exports.VideoUploader=Kx;exports._sfc_main=fV;exports._sfc_main$1=hV;exports._sfc_main$2=bV;exports.applyTemporaryMediaStoreConfig=al;exports.configureMediaStore=Rn;exports.createAdapter=Nc;exports.createEmptyEditorState=Wd;exports.createImageEditor=u3;exports.createMediablesAdapter=Vr;exports.createSpatieAdapter=Sr;exports.deserializeEditorState=jd;exports.formatFileSize=wa;exports.fromMediaArray=Yi;exports.getFileExtension=Tc;exports.getImageDimensions=Mc;exports.getMediablesAdapter=m3;exports.getSpatieAdapter=h3;exports.isImageFile=Cr;exports.normalizeEditorState=Ki;exports.normalizeRecipeForServerRender=Pb;exports.recipeHasServerRenderableEdits=zb;exports.recipeHasUnsupportedServerEdits=xc;exports.resetMediablesAdapter=p3;exports.resetSpatieAdapter=v3;exports.restoreMediaStoreConfig=ol;exports.serializeEditorState=tl;exports.snapshotMediaStoreConfig=nl;exports.toFormValues=Er;exports.useAdminMediaStore=il;exports.useAlbumDragDrop=Sc;exports.useAlbumStore=Wa;exports.useAlbums=Vc;exports.useGlobalImageEditor=d3;exports.useImageEditorModal=xr;exports.useMediaAttachment=Mr;exports.useMediaCollection=Za;exports.useMediaDragSort=Fc;exports.useMediaStore=xt;exports.useMediaUploadQueue=Ic;exports.useMediaValidation=_r;exports.validateFile=Bc;
|
|
342
|
+
//# sourceMappingURL=index-Dqxd2fFw.cjs.map
|