@codingfactory/mediables-vue 2.4.19 → 2.4.20

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.
@@ -1,4 +1,4 @@
1
- "use strict";var Dd=Object.defineProperty;var Ud=(a,n,t)=>n in a?Dd(a,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[n]=t;var L=(a,n,t)=>Ud(a,typeof n!="symbol"?n+"":n,t);const ba=require("pinia"),e=require("vue"),ze=require("pixi.js"),ct=require("./editor-BIDFjsrP.cjs"),I=require("@ionic/vue"),Ad=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 Ye=Od(ze),Ni=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!==Ni)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={},m=d.values;if(m&&typeof m=="object"&&!Array.isArray(m))for(const[f,p]of Object.entries(m))zd(p)&&(u[f]=p);c.push({id:d.id,enabled:d.enabled!==!1,values:u})}return{version:Ni,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:Ni,crop:{rect:null,aspectRatio:"free",shape:"free"},filters:[]}}let Vt={apiBaseUrl:"/api/v1",isAdmin:!1};function $n(a){Vt={...Vt,...a}}function nl(){return{...Vt}}function ol(a){Vt={...a}}function al(a){const n=nl();return $n(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),m=e.ref(new Map),f=e.ref(new Map),p=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"}),N=e.computed(()=>T.value==="admin");function w(){return Vt.httpClient||Zd}function h(ce){const se=Vt.apiBaseUrl||"/api/v1",ke=T.value?`/${T.value}`:"";return`${se}${ke}${ce}`}function x(ce,se){return`${T.value??"default"}-${ce}-${JSON.stringify(se)}`}function D(ce){return Date.now()-ce<E}function C(){v.value.clear(),g.value={}}function y(ce){if(!ce||!ce.data)return;const se={};ce.data.forEach(ke=>{const oe=`${ke.file_name}-${ke.collection_name||"default"}`,le=se[oe];(!le||Object.keys(ke.generated_conversions||{}).length>Object.keys(le.generated_conversions||{}).length)&&(se[oe]=ke)}),a.value=Object.values(se),ce.meta&&(i.value=ce.meta.current_page,r.value=Math.ceil(ce.meta.total/ce.meta.per_page))}async function S(ce=1,se={}){const ke=x(ce,se),oe=v.value.get(ke);if(oe&&D(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()),N.value&&le.append("linked","1");for(const rt in se)if(Object.prototype.hasOwnProperty.call(se,rt)){const He=se[rt];He!=null&&He!==""&&le.append(rt,String(He))}const Se=await w()(h(`/media?${le}`));return v.value.set(ke,{data:Se,timestamp:Date.now()}),y(Se),Se}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 A(ce,se){t.value=!0,o.value=null;const ke=`${ce.name}-${Date.now()}`,oe={file:ce,progress:0,status:"uploading"};m.value.set(ke,oe);try{const le=new FormData;le.append("file",ce),le.append("collection",se.collection),se.ownerUuid&&(le.append("owner_uuid",se.ownerUuid),le.append("owner_type",se.ownerType||"")),se.usageUuid&&(le.append("usage_uuid",se.usageUuid),le.append("usage_type",se.usageType||""),le.append("usage_purpose",se.usagePurpose||"")),se.customProperties&&le.append("custom_properties",JSON.stringify(se.customProperties));const Se=await w()(h("/media"),{method:"POST",body:le});return oe.status="completed",oe.progress=100,oe.media=Se==null?void 0:Se.data,i.value===1&&(Se!=null&&Se.data)&&(a.value=[Se.data,...a.value]),C(),(Se==null?void 0:Se.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(()=>{m.value.delete(ke)},5e3)}}async function k(ce){t.value=!0,o.value=null;const se=a.value.findIndex(oe=>oe.uuid===ce);let ke;se!==-1&&(ke=a.value.splice(se,1)[0]);try{return await w()(h(`/media/${ce}`),{method:"DELETE"}),p.value.delete(ce),C(),!0}catch(oe){throw ke&&se!==-1&&a.value.splice(se,0,ke),o.value=oe instanceof Error?oe.message:"Failed to delete media",new Error(o.value)}finally{t.value=!1}}async function B(ce,se){t.value=!0,o.value=null;try{const oe=await w()(h(`/media/${ce}`),{method:"PATCH",body:se,data:se});if(oe!=null&&oe.data){const le=a.value.findIndex(Ee=>Ee.uuid===ce);return le!==-1&&(a.value[le]={...a.value[le],...oe.data}),C(),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 se=await w()(h("/media/collections"));return n.value=(se==null?void 0:se.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 U(ce,se,ke="images",oe){d.value=!0,u.value=null;try{const le=new URLSearchParams;le.append("collection",ke),oe&&le.append("search",oe);const Se=await w()(h(`/media/model/${ce}/${se}?${le}`));return Se!=null&&Se.data?(l.value=Se.data,Se.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 _(ce,se,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value];try{const Se=await w()(h(`/media/model/${ce}/${se}/attach`),{method:"POST",body:{media_uuids:ke,collection:oe}});return await U(ce,se,oe),(Se==null?void 0:Se.data)||[]}catch(Ee){throw l.value=le,u.value=Ee instanceof Error?Ee.message:"Failed to attach media",new Error(u.value)}finally{d.value=!1}}async function z(ce,se,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value];l.value=l.value.filter(Ee=>Ee.uuid!==ke);try{return await w()(h(`/media/model/${ce}/${se}/detach`),{method:"POST",body:{media_uuid:ke,collection:oe}}),!0}catch(Ee){throw l.value=le,u.value=Ee instanceof Error?Ee.message:"Failed to detach media",new Error(u.value)}finally{d.value=!1}}async function H(ce,se,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value],Ee=new Map(l.value.map(Se=>[Se.uuid,Se]));l.value=ke.map(Se=>Ee.get(Se)).filter(Se=>Se!==void 0);try{return await w()(h(`/media/model/${ce}/${se}/reorder`),{method:"POST",body:{media_uuids:ke,collection:oe}}),!0}catch(Se){throw l.value=le,u.value=Se instanceof Error?Se.message:"Failed to reorder media",new Error(u.value)}finally{d.value=!1}}async function M(ce,se,ke={}){const oe=w(),le=Vt.apiBaseUrl||"/api/v1",Ee=new FormData,Se=se.imageData,rt=Se.match(/^data:(image\/\w+);base64,/),He=rt?rt[1]:"image/png",pt=Se.replace(/^data:image\/\w+;base64,/,""),K=atob(pt),de=new Uint8Array(K.length);for(let J=0;J<K.length;J++)de[J]=K.charCodeAt(J);const ie=new Blob([de],{type:He});Ee.append("image_file",ie,`edited.${He==="image/jpeg"?"jpg":"png"}`);const he=tl(se.state);he&&Ee.append("editor_state",he),se.metadata&&(Ee.append("filters",JSON.stringify(se.metadata.filters)),se.metadata.cropRect&&Ee.append("crop_data",JSON.stringify(se.metadata.cropRect))),Ee.append("save_as_new","true"),ke.asVariant&&Ee.append("as_variant","true"),ke.name!==void 0&&Ee.append("name",ke.name);const _e=await oe(`${le}/editor/${ce}/save`,{method:"POST",body:Ee});if("media"in _e&&_e.media)return _e.media;if("status_url"in _e&&_e.status_url)return $(oe,_e.status_url,ke.pollTimeout??6e4);throw new Error("Unexpected response from editor save endpoint")}async function $(ce,se,ke){const oe=Date.now(),le=2e3;for(;Date.now()-oe<ke;){await new Promise(Se=>setTimeout(Se,le));const Ee=await ce(se);if(Ee.status==="completed"&&Ee.media)return Ee.media;if(Ee.status==="failed")throw new Error(Ee.error??"Image processing failed")}throw new Error("Image processing timed out")}function X(ce,se,ke){c.value=ke!==void 0?{type:ce,uuid:se,collection:ke}:{type:ce,uuid:se},g.value[`${ce}-${se}`]={timestamp:Date.now()}}function W(){c.value={type:null,uuid:null},l.value=[],u.value=null}async function te(){if(!c.value.type||!c.value.uuid)return;const ce=await U(c.value.type,c.value.uuid,c.value.collection||"images");l.value=ce||[]}function ge(){a.value.forEach(ce=>p.value.add(ce.uuid))}function Ne(){p.value.clear()}function ee(ce){p.value.has(ce)?p.value.delete(ce):p.value.add(ce)}function F(ce){return p.value.has(ce)}function P(){return Array.from(m.value.values()).some(ce=>ce.status==="uploading")}function pe(ce){return m.value.get(ce)||f.value.get(ce)}function ne(){return[...Array.from(m.value.values()),...Array.from(f.value.values())]}async function Y(){const ce=Array.from(p.value);let se=0;for(const ke of ce)try{await k(ke),se++}catch{}return Ne(),se}function Me(ce,se){var ke;return se&&((ke=ce.conversion_urls)!=null&&ke[se])?ce.conversion_urls[se]||"":ce.original_url||ce.url||""}return{items:a,collections:n,loading:t,error:o,currentPage:i,totalPages:r,itemsPerPage:s,isAdmin:N,modelContext:c,modelMedia:l,isLoadingModelMedia:d,modelMediaError:u,selectedItems:p,uploadProgress:m,uploadQueue:f,cachedResponses:g,fetchMedia:S,uploadFile:A,deleteMedia:k,updateMedia:B,clearCache:C,fetchCollections:R,fetchModelMedia:U,attachMedia:_,detachMedia:z,reorderMedia:H,saveEditedImage:M,setModelContext:X,clearModelContext:W,refreshModelMedia:te,selectAllItems:ge,clearSelection:Ne,toggleSelection:ee,isSelected:F,deleteSelectedItems:Y,getHttpClient:w,getApiUrl:h,hasActiveUploads:P,getUploadProgress:pe,getAllUploadProgress:ne,getMediaUrl:Me}}),il=()=>((Vt.apiScope!=="admin"||Vt.isAdmin!==!0)&&$n({...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 E;if(!r){o("error",new Error("Editor not initialized"));return}const u=r.exportImage("png",.92);if(!u){o("error",new Error("Failed to export image — the image could not be processed"));return}const m=r.getSerializableState(),f=r._renderer,p=((E=f.getExportDimensions)==null?void 0:E.call(f))??{width:0,height:0},v={width:Math.round(p.width),height:Math.round(p.height)};o("save",{imageData:u,dimensions:v,state:m})}function l(){o("cancel")}function d(){if(!i.value||r)return;window.PIXI=Ye,ct.initializeFilterRegistry();const u={theme:t.theme};t.preset&&(u.preset=t.preset),t.preset?t.cropShape==="circle"&&(u.cropShape="circle",u.initialAspectRatio="1:1",u.initialMode="crop"):(u.cropShape=t.cropShape==="circle"?"circle":"free",u.initialAspectRatio=t.cropShape==="circle"?"1:1":"free",u.initialMode=t.cropShape==="circle"?"crop":"adjust"),r=new ct.VanillaImageEditor(i.value,u),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})}return e.onMounted(()=>{i.value&&(i.value.clientWidth>0?d():(s=new ResizeObserver(u=>{const m=u[0];m&&m.contentRect.width>0&&!r&&(d(),s==null||s.disconnect(),s=null)}),s.observe(i.value)))}),e.watch(()=>t.initialImage,u=>{r&&u&&r.loadImage(u,{state:t.initialState??null,sessionKey:t.sessionKey})}),e.watch(()=>t.sessionKey,()=>{r&&t.initialImage&&r.loadImage(t.initialImage,{state:t.initialState??null,sessionKey:t.sessionKey})}),e.onUnmounted(()=>{s==null||s.disconnect(),s=null,r&&(r.destroy(),r=null)}),(u,m)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:i,class:"vanilla-editor-wrapper","data-testid":"vanilla-image-editor"},null,512))}}),Be=(a,n)=>{const t=a.__vccOpts||a;for(const[o,i]of n)t[o]=i;return t},rl=Be(Hd,[["__scopeId","data-v-d6416384"]]),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}},m=()=>{o("cancel"),p()},f=()=>{s.value||p()},p=()=>{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){p();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],N=E[E.length-1];g.shiftKey&&document.activeElement===T?(g.preventDefault(),N.focus()):!g.shiftKey&&document.activeElement===N&&(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:m,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=Be(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 m;const t=a,o=n,i=xt(),r=e.ref(t.initialScopeId??((m=t.subScopes[0])==null?void 0:m.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 p;const f={};(p=c.value)!=null&&p.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(p=>p.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,p)=>(e.openBlock(),e.createElementBlock("div",Kd,[e.createElementVNode("div",qd,[e.createElementVNode("label",Qd,[p[2]||(p[2]=e.createElementVNode("span",{class:"media-workspace-label-text"},"Scope",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":p[0]||(p[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:p[1]||(p[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=Be(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=Be(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>",Nu="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>",_u="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>",Fu="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>",Iu="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>",Ru="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>",$u="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>",Uu="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>",Au="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((m,f)=>{i=n.rejectOnCancel?f:m,s=l,u&&!o&&(o=setTimeout(()=>{t&&r(t),o=null,m(s())},u)),t=setTimeout(()=>{o&&r(o),o=null,m(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(x=>n.value.has(x.uuid))),c=e.computed(()=>n.value.size);e.watch(n,x=>{i.emit({type:"selection:changed",count:x.size,selectedIds:Array.from(x)})},{deep:!0});const l=e.computed(()=>a.value.length>0&&a.value.every(x=>n.value.has(x.uuid))),d=e.computed(()=>a.value.some(x=>n.value.has(x.uuid)));function u(x){return n.value.has(x)}function m(x){n.value.has(x)?(n.value.delete(x),t.value===x&&(t.value=null,o.value=-1)):(n.value.add(x),t.value=x,o.value=a.value.findIndex(D=>D.uuid===x),n.value.size===1&&r.selection())}function f(x){n.value.add(x),t.value=x,o.value=a.value.findIndex(D=>D.uuid===x)}function p(x){n.value.delete(x),t.value===x&&(t.value=null,o.value=-1)}function v(){a.value.forEach(x=>n.value.add(x.uuid))}function g(){n.value.clear(),t.value=null,o.value=-1}function E(){l.value?g():v()}function T(x,D){const C=a.value.findIndex(y=>y.uuid===x);if(C!==-1)if(D!=null&&D.shiftKey&&o.value!==-1){const y=Math.min(o.value,C),S=Math.max(o.value,C);for(let A=y;A<=S;A++)n.value.add(a.value[A].uuid)}else m(x)}function N(){if(a.value.length===0)return;let x=o.value+1;x>=a.value.length&&(x=0),g(),f(a.value[x].uuid)}function w(){if(a.value.length===0)return;let x=o.value-1;x<0&&(x=a.value.length-1),g(),f(a.value[x].uuid)}function h(x){switch(x.key){case"ArrowDown":x.preventDefault(),N();break;case"ArrowUp":x.preventDefault(),w();break;case"a":(x.ctrlKey||x.metaKey)&&(x.preventDefault(),v());break;case"Escape":x.preventDefault(),g();break;case" ":t.value&&(x.preventDefault(),m(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:m,select:f,deselect:p,selectAll:v,clear:g,toggleAll:E,rangeSelect:T,selectNext:N,selectPrevious:w,handleKeydown:h,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)),m=e.ref(!1),f=e.ref({}),p=e.ref(["images","documents","videos"]),v=e.ref(1),g=e.ref(!0),E=e.ref(!1),T=il(),N=em(l);function w(F){var se;const P=F.conversion_urls||{},pe=F.proxy_url||F.original_url||F.url||"",ne=P.thumb||P.preview||F.preview_url||F.thumbnail_url||pe,Y=F.custom_properties||{},Me=Y.width,ce=Y.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:pe,url:pe,thumbnail_url:ne,conversions:F.conversions||{},conversion_urls:P,generated_conversions:F.generated_conversions||{},custom_properties:Y,caption:F.caption||null,alt_text:F.alt_text||null,created_at:F.created_at,updated_at:F.updated_at,is_image:((se=F.mime_type)==null?void 0:se.startsWith("image/"))||!1,...typeof Me=="number"?{width:Me}:{},...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),N.clear(),F.forEach(P=>N.select(P))});const h=e.computed(()=>{var P;let F=l.value;return(P=f.value.types)!=null&&P.length&&(F=F.filter(pe=>{var Y,Me;const ne=(Y=pe.mime_type)==null?void 0:Y.split("/")[0];return(Me=f.value.types)==null?void 0:Me.includes(ne)})),(f.value.sizeMin!==void 0||f.value.sizeMax!==void 0)&&(F=F.filter(pe=>{const ne=pe.size/1048576;return!(f.value.sizeMin!==void 0&&ne<f.value.sizeMin||f.value.sizeMax!==void 0&&ne>f.value.sizeMax)})),F}),x=e.computed(()=>{var P;let F=0;return f.value.search&&F++,f.value.collection&&F++,(f.value.dateFrom||f.value.dateTo)&&F++,(P=f.value.types)!=null&&P.length&&(F+=f.value.types.length),(f.value.sizeMin!==void 0||f.value.sizeMax!==void 0)&&F++,F}),D=e.computed(()=>{const F=N.selectedCount.value;return F===0?"Select Media":`Select ${t.selectionMode==="multiple"?`${F} ${F===1?"Item":"Items"}`:"Item"}`}),C=e.computed(()=>{const F=N.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 S(F=!0){F?(c.value=!0,l.value=[],v.value=1,g.value=!0):E.value=!0;try{const P={collection:f.value.collection||t.collection,per_page:24};switch((s.value||f.value.search)&&(P.search=s.value||f.value.search||""),f.value.dateFrom&&(P.from_date=f.value.dateFrom),f.value.dateTo&&(P.to_date=f.value.dateTo),i.value){case"recent":await T.fetchMedia(v.value,P),F?l.value=T.items.map(pe=>w(pe)):l.value=[...l.value,...T.items.map(pe=>w(pe))],g.value=T.currentPage<T.totalPages;break;case"model":if(t.modelType&&t.modelId){const pe=await T.fetchModelMedia(t.modelType,t.modelId,P.collection,P.search);l.value=pe?pe.map(ne=>w(ne)):[],g.value=!1}break;case"library":await T.fetchMedia(v.value,P),F?l.value=T.items.map(pe=>w(pe)):l.value=[...l.value,...T.items.map(pe=>w(pe))],g.value=T.currentPage<T.totalPages;break}}catch{}finally{c.value=!1,E.value=!1}}async function A(F){if(!g.value||E.value){F!=null&&F.target&&F.target.complete();return}v.value++,await S(!1),F!=null&&F.target&&(F.target.complete(),g.value||(F.target.disabled=!0))}function k(F){return F==="recent"||F==="model"||F==="library"}function B(F){i.value=F,S()}function R(F){typeof F=="string"&&k(F)&&B(F)}async function U(F){t.selectionMode==="single"?(N.clear(),N.select(F.uuid)):(N.toggle(F.uuid),t.maxSelection&&N.selectedCount.value>t.maxSelection&&(N.deselect(F.uuid),await(await I.toastController.create({message:`Maximum ${t.maxSelection} items can be selected`,duration:2e3,color:"warning"})).present()))}function _(){o("confirm",N.selectedItems.value)}function z(){o("close")}function H(F){}const M=e.ref(null),$=e.ref(!1);function X(F){M.value=F,$.value=!0}function W(F){const P=l.value.findIndex(ne=>ne.uuid===F.uuid);P!==-1&&(l.value[P]=F);const pe={};F.alt_text!==void 0&&(pe.alt_text=F.alt_text),F.caption!==void 0&&(pe.caption=F.caption),F.custom_properties!==void 0&&(pe.custom_properties=F.custom_properties),T.updateMedia(F.uuid,pe)}function te(){S()}function ge(){f.value={},s.value="",S()}const Ne=Ku(()=>{S(!0)},300);e.watch(s,()=>{t.isOpen&&Ne()});async function ee(F){try{await(await I.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 S()}}]})).present()}catch{}}return e.watch(()=>t.isOpen,F=>{F&&S()}),e.onMounted(()=>{t.selectedItems.length>0&&t.selectedItems.forEach(F=>N.select(F))}),(F,P)=>{const pe=e.resolveComponent("AdminMediaGrid"),ne=e.resolveComponent("AdminMediaListItem");return e.openBlock(),e.createBlock(e.unref(I.IonModal),{"is-open":F.isOpen,onDidDismiss:z,"backdrop-dismiss":!1,class:"media-browser-modal"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(I.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{onClick:z},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(I.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.value),1)]),_:1})]),_:1}),e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",tm,[e.createVNode(e.unref(I.IonSegment),{value:i.value,onIonChange:P[0]||(P[0]=Y=>R(Y.detail.value)),class:"max-w-xs"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonSegmentButton),{value:"recent"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[15]||(P[15]=[e.createTextVNode("Recent",-1)])]),_:1})]),_:1}),t.modelType&&t.modelId?(e.openBlock(),e.createBlock(e.unref(I.IonSegmentButton),{key:0,value:"model"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[16]||(P[16]=[e.createTextVNode("Model",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonSegmentButton),{value:"library"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[17]||(P[17]=[e.createTextVNode("Library",-1)])]),_:1})]),_:1})]),_:1},8,["value"]),e.createVNode(e.unref(I.IonButton),{fill:"clear",size:"small",onClick:P[1]||(P[1]=Y=>m.value=!m.value),class:"relative"},{"icon-only":e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"filter-outline"})]),default:e.withCtx(()=>[x.value>0?(e.openBlock(),e.createBlock(e.unref(I.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(x.value),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})])]),_:1})]),_:1}),e.createVNode(e.unref(I.IonContent),null,{default:e.withCtx(()=>[e.createElementVNode("div",nm,[m.value?(e.openBlock(),e.createElementBlock("div",om,[e.createElementVNode("div",am,[e.createElementVNode("div",null,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[18]||(P[18]=[e.createTextVNode("Collection",-1)])]),_:1}),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":P[2]||(P[2]=Y=>f.value.collection=Y),class:"w-full p-2 border rounded"},[P[19]||(P[19]=e.createElementVNode("option",{value:""},"All Collections",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,Y=>(e.openBlock(),e.createElementBlock("option",{key:Y,value:Y},e.toDisplayString(Y),9,im))),128))],512),[[e.vModelSelect,f.value.collection]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[20]||(P[20]=[e.createTextVNode("From Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[3]||(P[3]=Y=>f.value.dateFrom=Y),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,f.value.dateFrom]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[21]||(P[21]=[e.createTextVNode("To Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[4]||(P[4]=Y=>f.value.dateTo=Y),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,f.value.dateTo]])])]),e.createElementVNode("div",rm,[e.createVNode(e.unref(I.IonButton),{size:"small",onClick:te},{default:e.withCtx(()=>[...P[22]||(P[22]=[e.createTextVNode("Apply",-1)])]),_:1}),e.createVNode(e.unref(I.IonButton),{size:"small",fill:"clear",onClick:ge},{default:e.withCtx(()=>[...P[23]||(P[23]=[e.createTextVNode("Clear",-1)])]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonSearchbar),{modelValue:s.value,"onUpdate:modelValue":P[5]||(P[5]=Y=>s.value=Y),placeholder:"Search media...",debounce:300,class:"mb-4"},null,8,["modelValue"]),e.createElementVNode("div",sm,[e.createVNode(e.unref(I.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{fill:r.value==="grid"?"solid":"clear",size:"small",onClick:P[6]||(P[6]=Y=>r.value="grid")},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"grid-outline"})]),_:1},8,["fill"]),e.createVNode(e.unref(I.IonButton),{fill:r.value==="list"?"solid":"clear",size:"small",onClick:P[7]||(P[7]=Y=>r.value="list")},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"list-outline"})]),_:1},8,["fill"])]),_:1})]),c.value?(e.openBlock(),e.createElementBlock("div",lm,[e.createVNode(e.unref(I.IonSpinner),{name:"crescent"})])):h.value.length===0?(e.openBlock(),e.createElementBlock("div",cm,[e.createVNode(e.unref(I.IonIcon),{name:"images-outline",class:"text-6xl text-theme-secondary mb-4"}),P[24]||(P[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(pe,{key:3,"media-items":h.value,"selected-items":e.unref(N).selectedItems.value,"is-loading":!1,"selection-mode":!0,columns:{mobile:2,sm:3,md:4,lg:5,xl:6},onToggleSelect:U,onPreview:H,onEdit:X,onDelete:ee},null,8,["media-items","selected-items"])):(e.openBlock(),e.createBlock(e.unref(I.IonList),{key:4,lines:"none",class:"rounded-lg overflow-hidden"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(Y,Me)=>(e.openBlock(),e.createBlock(ne,{key:Y.uuid,media:Y,selected:e.unref(N).isSelected(Y.uuid),"selection-mode":!0,index:Me,onToggleSelect:U,onPreview:H,onEdit:X,onDelete:ee},null,8,["media","selected","index"]))),128))]),_:1})),!c.value&&h.value.length>0&&i.value!=="model"?(e.openBlock(),e.createBlock(e.unref(I.IonInfiniteScroll),{key:5,threshold:"100px",onIonInfinite:P[8]||(P[8]=Y=>A(Y))},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonInfiniteScrollContent),{"loading-spinner":"crescent","loading-text":"Loading more media..."})]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(e.unref(I.IonModal),{"is-open":$.value,onDidDismiss:P[14]||(P[14]=Y=>$.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(I.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{onClick:P[9]||(P[9]=Y=>$.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(I.IonTitle),null,{default:e.withCtx(()=>[...P[25]||(P[25]=[e.createTextVNode("Edit Media Info",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(I.IonContent),{class:"p-4"},{default:e.withCtx(()=>[M.value?(e.openBlock(),e.createElementBlock("div",um,[e.createElementVNode("div",mm,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[26]||(P[26]=[e.createTextVNode("Caption",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[10]||(P[10]=Y=>M.value.caption=Y),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter caption..."},null,512),[[e.vModelText,M.value.caption]])]),e.createElementVNode("div",pm,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[27]||(P[27]=[e.createTextVNode("Alt Text",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[11]||(P[11]=Y=>M.value.alt_text=Y),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter alt text..."},null,512),[[e.vModelText,M.value.alt_text]])]),e.createElementVNode("div",fm,[e.createVNode(e.unref(I.IonButton),{onClick:P[12]||(P[12]=Y=>W(M.value))},{default:e.withCtx(()=>[...P[28]||(P[28]=[e.createTextVNode("Save",-1)])]),_:1}),e.createVNode(e.unref(I.IonButton),{fill:"clear",onClick:P[13]||(P[13]=Y=>$.value=!1)},{default:e.withCtx(()=>[...P[29]||(P[29]=[e.createTextVNode("Cancel",-1)])]),_:1})])])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["is-open"]),e.createVNode(e.unref(I.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",hm,[e.createElementVNode("div",vm,[e.unref(N).selectedCount.value>0?(e.openBlock(),e.createElementBlock("span",gm,[e.createTextVNode(e.toDisplayString(e.unref(N).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(I.IonButton),{fill:"clear",onClick:z},{default:e.withCtx(()=>[...P[30]||(P[30]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(I.IonButton),{disabled:C.value,onClick:_},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(D.value),1)]),_:1},8,["disabled"])])])]),_:1})]),_:1})]),_:1},8,["is-open"])}}}),xm=Be(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"],Nm={key:2,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-move"},_m=["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"},Fm={class:"text-center"},Im={class:"text-4xl text-gray-400 mb-2"},Rm={class:"text-sm font-medium text-gray-500"},$m={class:"absolute inset-0 bg-black/70 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2"},Dm=["onClick"],Um=["onClick"],Am=["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=C=>t.selectedItems.some(y=>y.uuid===C.uuid),d=e.computed(()=>{const C=t.columns,y=["grid","gap-4"];switch(C.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(C.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(C.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(C.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(C.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(C,y,S){t.reorderable&&(i.value=y,C.dataTransfer&&(C.dataTransfer.effectAllowed="move",C.dataTransfer.setData("text/html","")))}function m(C,y){t.reorderable&&(C.preventDefault(),r.value=y)}function f(){r.value=null}function p(C,y){if(!t.reorderable||!i.value)return;C.preventDefault();const S=[...t.mediaItems],A=S.findIndex(k=>{var B;return k.uuid===((B=i.value)==null?void 0:B.uuid)});if(A!==-1&&A!==y&&i.value){const[k]=S.splice(A,1);S.splice(y,0,k),o("reorder",S)}i.value=null,r.value=null}function v(C){return C<1024?C+" B":C<1024*1024?(C/1024).toFixed(1)+" KB":(C/(1024*1024)).toFixed(1)+" MB"}function g(C){var S;return C.thumbnail_url||((S=C.conversion_urls)==null?void 0:S.thumb)||C.original_url||C.url||""}function E(C){var A,k,B;const y=((A=C.mime_type)==null?void 0:A.startsWith("image/"))||!1,S=!!(C.thumbnail_url||(k=C.conversion_urls)!=null&&k.thumb||(B=C.conversion_urls)!=null&&B.preview||C.original_url||C.url);return y&&S}function T(C){var y;return((y=C.split(".").pop())==null?void 0:y.toUpperCase())||""}function N(C){var S;const y=((S=C.mime_type)==null?void 0:S.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(C=>{C.forEach(y=>{var S;if(y.isIntersecting){const A=y.target.getAttribute("data-media-id");A&&(s.value.add(A),(S=c.value)==null||S.unobserve(y.target))}})},{rootMargin:"50px"}))}),e.onUnmounted(()=>{c.value&&c.value.disconnect()});function w(C){return!0}function h(){c.value&&e.nextTick(()=>{document.querySelectorAll("[data-media-id]").forEach(y=>{var A;const S=y.getAttribute("data-media-id");S&&!s.value.has(S)&&((A=c.value)==null||A.observe(y))})})}e.watch(()=>t.mediaItems,()=>{s.value.clear(),h()},{immediate:!0,deep:!0});function x(C,y){const S=C.target;delete S.dataset.fallbackIndex}function D(C,y){const S=C.target,A=S.closest("[data-media-id]"),k=[y.original_url,y.url,y.thumbnail_url,"preview_url"in y?y.preview_url:void 0].filter(B=>B&&B.trim()!==""&&B!==S.src);if(k.length>0&&S.dataset.fallbackIndex){const B=parseInt(S.dataset.fallbackIndex);if(B<k.length){S.dataset.fallbackIndex=(B+1).toString(),S.src=k[B]||"";return}}else if(k.length>0){S.dataset.fallbackIndex="1",S.src=k[0]||"";return}if(S.style.display="none",A&&!A.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 Ud=(a,n,t)=>n in a?Dd(a,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[n]=t;var L=(a,n,t)=>Ud(a,typeof n!="symbol"?n+"":n,t);const ba=require("pinia"),e=require("vue"),ze=require("pixi.js"),ct=require("./editor--q100BnG.cjs"),I=require("@ionic/vue"),Ad=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 Ye=Od(ze),Ni=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!==Ni)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={},m=d.values;if(m&&typeof m=="object"&&!Array.isArray(m))for(const[f,p]of Object.entries(m))zd(p)&&(u[f]=p);c.push({id:d.id,enabled:d.enabled!==!1,values:u})}return{version:Ni,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:Ni,crop:{rect:null,aspectRatio:"free",shape:"free"},filters:[]}}let Vt={apiBaseUrl:"/api/v1",isAdmin:!1};function $n(a){Vt={...Vt,...a}}function nl(){return{...Vt}}function ol(a){Vt={...a}}function al(a){const n=nl();return $n(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),m=e.ref(new Map),f=e.ref(new Map),p=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"}),N=e.computed(()=>T.value==="admin");function w(){return Vt.httpClient||Zd}function h(ce){const se=Vt.apiBaseUrl||"/api/v1",ke=T.value?`/${T.value}`:"";return`${se}${ke}${ce}`}function x(ce,se){return`${T.value??"default"}-${ce}-${JSON.stringify(se)}`}function D(ce){return Date.now()-ce<E}function C(){v.value.clear(),g.value={}}function y(ce){if(!ce||!ce.data)return;const se={};ce.data.forEach(ke=>{const oe=`${ke.file_name}-${ke.collection_name||"default"}`,le=se[oe];(!le||Object.keys(ke.generated_conversions||{}).length>Object.keys(le.generated_conversions||{}).length)&&(se[oe]=ke)}),a.value=Object.values(se),ce.meta&&(i.value=ce.meta.current_page,r.value=Math.ceil(ce.meta.total/ce.meta.per_page))}async function S(ce=1,se={}){const ke=x(ce,se),oe=v.value.get(ke);if(oe&&D(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()),N.value&&le.append("linked","1");for(const rt in se)if(Object.prototype.hasOwnProperty.call(se,rt)){const He=se[rt];He!=null&&He!==""&&le.append(rt,String(He))}const Se=await w()(h(`/media?${le}`));return v.value.set(ke,{data:Se,timestamp:Date.now()}),y(Se),Se}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 A(ce,se){t.value=!0,o.value=null;const ke=`${ce.name}-${Date.now()}`,oe={file:ce,progress:0,status:"uploading"};m.value.set(ke,oe);try{const le=new FormData;le.append("file",ce),le.append("collection",se.collection),se.ownerUuid&&(le.append("owner_uuid",se.ownerUuid),le.append("owner_type",se.ownerType||"")),se.usageUuid&&(le.append("usage_uuid",se.usageUuid),le.append("usage_type",se.usageType||""),le.append("usage_purpose",se.usagePurpose||"")),se.customProperties&&le.append("custom_properties",JSON.stringify(se.customProperties));const Se=await w()(h("/media"),{method:"POST",body:le});return oe.status="completed",oe.progress=100,oe.media=Se==null?void 0:Se.data,i.value===1&&(Se!=null&&Se.data)&&(a.value=[Se.data,...a.value]),C(),(Se==null?void 0:Se.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(()=>{m.value.delete(ke)},5e3)}}async function k(ce){t.value=!0,o.value=null;const se=a.value.findIndex(oe=>oe.uuid===ce);let ke;se!==-1&&(ke=a.value.splice(se,1)[0]);try{return await w()(h(`/media/${ce}`),{method:"DELETE"}),p.value.delete(ce),C(),!0}catch(oe){throw ke&&se!==-1&&a.value.splice(se,0,ke),o.value=oe instanceof Error?oe.message:"Failed to delete media",new Error(o.value)}finally{t.value=!1}}async function B(ce,se){t.value=!0,o.value=null;try{const oe=await w()(h(`/media/${ce}`),{method:"PATCH",body:se,data:se});if(oe!=null&&oe.data){const le=a.value.findIndex(Ee=>Ee.uuid===ce);return le!==-1&&(a.value[le]={...a.value[le],...oe.data}),C(),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 se=await w()(h("/media/collections"));return n.value=(se==null?void 0:se.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 U(ce,se,ke="images",oe){d.value=!0,u.value=null;try{const le=new URLSearchParams;le.append("collection",ke),oe&&le.append("search",oe);const Se=await w()(h(`/media/model/${ce}/${se}?${le}`));return Se!=null&&Se.data?(l.value=Se.data,Se.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 _(ce,se,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value];try{const Se=await w()(h(`/media/model/${ce}/${se}/attach`),{method:"POST",body:{media_uuids:ke,collection:oe}});return await U(ce,se,oe),(Se==null?void 0:Se.data)||[]}catch(Ee){throw l.value=le,u.value=Ee instanceof Error?Ee.message:"Failed to attach media",new Error(u.value)}finally{d.value=!1}}async function z(ce,se,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value];l.value=l.value.filter(Ee=>Ee.uuid!==ke);try{return await w()(h(`/media/model/${ce}/${se}/detach`),{method:"POST",body:{media_uuid:ke,collection:oe}}),!0}catch(Ee){throw l.value=le,u.value=Ee instanceof Error?Ee.message:"Failed to detach media",new Error(u.value)}finally{d.value=!1}}async function H(ce,se,ke,oe="images"){d.value=!0,u.value=null;const le=[...l.value],Ee=new Map(l.value.map(Se=>[Se.uuid,Se]));l.value=ke.map(Se=>Ee.get(Se)).filter(Se=>Se!==void 0);try{return await w()(h(`/media/model/${ce}/${se}/reorder`),{method:"POST",body:{media_uuids:ke,collection:oe}}),!0}catch(Se){throw l.value=le,u.value=Se instanceof Error?Se.message:"Failed to reorder media",new Error(u.value)}finally{d.value=!1}}async function M(ce,se,ke={}){const oe=w(),le=Vt.apiBaseUrl||"/api/v1",Ee=new FormData,Se=se.imageData,rt=Se.match(/^data:(image\/\w+);base64,/),He=rt?rt[1]:"image/png",pt=Se.replace(/^data:image\/\w+;base64,/,""),K=atob(pt),de=new Uint8Array(K.length);for(let J=0;J<K.length;J++)de[J]=K.charCodeAt(J);const ie=new Blob([de],{type:He});Ee.append("image_file",ie,`edited.${He==="image/jpeg"?"jpg":"png"}`);const he=tl(se.state);he&&Ee.append("editor_state",he),se.metadata&&(Ee.append("filters",JSON.stringify(se.metadata.filters)),se.metadata.cropRect&&Ee.append("crop_data",JSON.stringify(se.metadata.cropRect))),Ee.append("save_as_new","true"),ke.asVariant&&Ee.append("as_variant","true"),ke.name!==void 0&&Ee.append("name",ke.name);const _e=await oe(`${le}/editor/${ce}/save`,{method:"POST",body:Ee});if("media"in _e&&_e.media)return _e.media;if("status_url"in _e&&_e.status_url)return $(oe,_e.status_url,ke.pollTimeout??6e4);throw new Error("Unexpected response from editor save endpoint")}async function $(ce,se,ke){const oe=Date.now(),le=2e3;for(;Date.now()-oe<ke;){await new Promise(Se=>setTimeout(Se,le));const Ee=await ce(se);if(Ee.status==="completed"&&Ee.media)return Ee.media;if(Ee.status==="failed")throw new Error(Ee.error??"Image processing failed")}throw new Error("Image processing timed out")}function X(ce,se,ke){c.value=ke!==void 0?{type:ce,uuid:se,collection:ke}:{type:ce,uuid:se},g.value[`${ce}-${se}`]={timestamp:Date.now()}}function W(){c.value={type:null,uuid:null},l.value=[],u.value=null}async function te(){if(!c.value.type||!c.value.uuid)return;const ce=await U(c.value.type,c.value.uuid,c.value.collection||"images");l.value=ce||[]}function ge(){a.value.forEach(ce=>p.value.add(ce.uuid))}function Ne(){p.value.clear()}function ee(ce){p.value.has(ce)?p.value.delete(ce):p.value.add(ce)}function F(ce){return p.value.has(ce)}function P(){return Array.from(m.value.values()).some(ce=>ce.status==="uploading")}function pe(ce){return m.value.get(ce)||f.value.get(ce)}function ne(){return[...Array.from(m.value.values()),...Array.from(f.value.values())]}async function Y(){const ce=Array.from(p.value);let se=0;for(const ke of ce)try{await k(ke),se++}catch{}return Ne(),se}function Me(ce,se){var ke;return se&&((ke=ce.conversion_urls)!=null&&ke[se])?ce.conversion_urls[se]||"":ce.original_url||ce.url||""}return{items:a,collections:n,loading:t,error:o,currentPage:i,totalPages:r,itemsPerPage:s,isAdmin:N,modelContext:c,modelMedia:l,isLoadingModelMedia:d,modelMediaError:u,selectedItems:p,uploadProgress:m,uploadQueue:f,cachedResponses:g,fetchMedia:S,uploadFile:A,deleteMedia:k,updateMedia:B,clearCache:C,fetchCollections:R,fetchModelMedia:U,attachMedia:_,detachMedia:z,reorderMedia:H,saveEditedImage:M,setModelContext:X,clearModelContext:W,refreshModelMedia:te,selectAllItems:ge,clearSelection:Ne,toggleSelection:ee,isSelected:F,deleteSelectedItems:Y,getHttpClient:w,getApiUrl:h,hasActiveUploads:P,getUploadProgress:pe,getAllUploadProgress:ne,getMediaUrl:Me}}),il=()=>((Vt.apiScope!=="admin"||Vt.isAdmin!==!0)&&$n({...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 E;if(!r){o("error",new Error("Editor not initialized"));return}const u=r.exportImage("png",.92);if(!u){o("error",new Error("Failed to export image — the image could not be processed"));return}const m=r.getSerializableState(),f=r._renderer,p=((E=f.getExportDimensions)==null?void 0:E.call(f))??{width:0,height:0},v={width:Math.round(p.width),height:Math.round(p.height)};o("save",{imageData:u,dimensions:v,state:m})}function l(){o("cancel")}function d(){if(!i.value||r)return;window.PIXI=Ye,ct.initializeFilterRegistry();const u={theme:t.theme};t.preset&&(u.preset=t.preset),t.preset?t.cropShape==="circle"&&(u.cropShape="circle",u.initialAspectRatio="1:1",u.initialMode="crop"):(u.cropShape=t.cropShape==="circle"?"circle":"free",u.initialAspectRatio=t.cropShape==="circle"?"1:1":"free",u.initialMode=t.cropShape==="circle"?"crop":"adjust"),r=new ct.VanillaImageEditor(i.value,u),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})}return e.onMounted(()=>{i.value&&(i.value.clientWidth>0?d():(s=new ResizeObserver(u=>{const m=u[0];m&&m.contentRect.width>0&&!r&&(d(),s==null||s.disconnect(),s=null)}),s.observe(i.value)))}),e.watch(()=>t.initialImage,u=>{r&&u&&r.loadImage(u,{state:t.initialState??null,sessionKey:t.sessionKey})}),e.watch(()=>t.sessionKey,()=>{r&&t.initialImage&&r.loadImage(t.initialImage,{state:t.initialState??null,sessionKey:t.sessionKey})}),e.onUnmounted(()=>{s==null||s.disconnect(),s=null,r&&(r.destroy(),r=null)}),(u,m)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:i,class:"vanilla-editor-wrapper","data-testid":"vanilla-image-editor"},null,512))}}),Be=(a,n)=>{const t=a.__vccOpts||a;for(const[o,i]of n)t[o]=i;return t},rl=Be(Hd,[["__scopeId","data-v-d6416384"]]),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}},m=()=>{o("cancel"),p()},f=()=>{s.value||p()},p=()=>{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){p();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],N=E[E.length-1];g.shiftKey&&document.activeElement===T?(g.preventDefault(),N.focus()):!g.shiftKey&&document.activeElement===N&&(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:m,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=Be(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 m;const t=a,o=n,i=xt(),r=e.ref(t.initialScopeId??((m=t.subScopes[0])==null?void 0:m.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 p;const f={};(p=c.value)!=null&&p.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(p=>p.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,p)=>(e.openBlock(),e.createElementBlock("div",Kd,[e.createElementVNode("div",qd,[e.createElementVNode("label",Qd,[p[2]||(p[2]=e.createElementVNode("span",{class:"media-workspace-label-text"},"Scope",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":p[0]||(p[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:p[1]||(p[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=Be(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=Be(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>",Nu="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>",_u="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>",Fu="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>",Iu="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>",Ru="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>",$u="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>",Uu="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>",Au="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((m,f)=>{i=n.rejectOnCancel?f:m,s=l,u&&!o&&(o=setTimeout(()=>{t&&r(t),o=null,m(s())},u)),t=setTimeout(()=>{o&&r(o),o=null,m(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(x=>n.value.has(x.uuid))),c=e.computed(()=>n.value.size);e.watch(n,x=>{i.emit({type:"selection:changed",count:x.size,selectedIds:Array.from(x)})},{deep:!0});const l=e.computed(()=>a.value.length>0&&a.value.every(x=>n.value.has(x.uuid))),d=e.computed(()=>a.value.some(x=>n.value.has(x.uuid)));function u(x){return n.value.has(x)}function m(x){n.value.has(x)?(n.value.delete(x),t.value===x&&(t.value=null,o.value=-1)):(n.value.add(x),t.value=x,o.value=a.value.findIndex(D=>D.uuid===x),n.value.size===1&&r.selection())}function f(x){n.value.add(x),t.value=x,o.value=a.value.findIndex(D=>D.uuid===x)}function p(x){n.value.delete(x),t.value===x&&(t.value=null,o.value=-1)}function v(){a.value.forEach(x=>n.value.add(x.uuid))}function g(){n.value.clear(),t.value=null,o.value=-1}function E(){l.value?g():v()}function T(x,D){const C=a.value.findIndex(y=>y.uuid===x);if(C!==-1)if(D!=null&&D.shiftKey&&o.value!==-1){const y=Math.min(o.value,C),S=Math.max(o.value,C);for(let A=y;A<=S;A++)n.value.add(a.value[A].uuid)}else m(x)}function N(){if(a.value.length===0)return;let x=o.value+1;x>=a.value.length&&(x=0),g(),f(a.value[x].uuid)}function w(){if(a.value.length===0)return;let x=o.value-1;x<0&&(x=a.value.length-1),g(),f(a.value[x].uuid)}function h(x){switch(x.key){case"ArrowDown":x.preventDefault(),N();break;case"ArrowUp":x.preventDefault(),w();break;case"a":(x.ctrlKey||x.metaKey)&&(x.preventDefault(),v());break;case"Escape":x.preventDefault(),g();break;case" ":t.value&&(x.preventDefault(),m(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:m,select:f,deselect:p,selectAll:v,clear:g,toggleAll:E,rangeSelect:T,selectNext:N,selectPrevious:w,handleKeydown:h,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)),m=e.ref(!1),f=e.ref({}),p=e.ref(["images","documents","videos"]),v=e.ref(1),g=e.ref(!0),E=e.ref(!1),T=il(),N=em(l);function w(F){var se;const P=F.conversion_urls||{},pe=F.proxy_url||F.original_url||F.url||"",ne=P.thumb||P.preview||F.preview_url||F.thumbnail_url||pe,Y=F.custom_properties||{},Me=Y.width,ce=Y.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:pe,url:pe,thumbnail_url:ne,conversions:F.conversions||{},conversion_urls:P,generated_conversions:F.generated_conversions||{},custom_properties:Y,caption:F.caption||null,alt_text:F.alt_text||null,created_at:F.created_at,updated_at:F.updated_at,is_image:((se=F.mime_type)==null?void 0:se.startsWith("image/"))||!1,...typeof Me=="number"?{width:Me}:{},...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),N.clear(),F.forEach(P=>N.select(P))});const h=e.computed(()=>{var P;let F=l.value;return(P=f.value.types)!=null&&P.length&&(F=F.filter(pe=>{var Y,Me;const ne=(Y=pe.mime_type)==null?void 0:Y.split("/")[0];return(Me=f.value.types)==null?void 0:Me.includes(ne)})),(f.value.sizeMin!==void 0||f.value.sizeMax!==void 0)&&(F=F.filter(pe=>{const ne=pe.size/1048576;return!(f.value.sizeMin!==void 0&&ne<f.value.sizeMin||f.value.sizeMax!==void 0&&ne>f.value.sizeMax)})),F}),x=e.computed(()=>{var P;let F=0;return f.value.search&&F++,f.value.collection&&F++,(f.value.dateFrom||f.value.dateTo)&&F++,(P=f.value.types)!=null&&P.length&&(F+=f.value.types.length),(f.value.sizeMin!==void 0||f.value.sizeMax!==void 0)&&F++,F}),D=e.computed(()=>{const F=N.selectedCount.value;return F===0?"Select Media":`Select ${t.selectionMode==="multiple"?`${F} ${F===1?"Item":"Items"}`:"Item"}`}),C=e.computed(()=>{const F=N.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 S(F=!0){F?(c.value=!0,l.value=[],v.value=1,g.value=!0):E.value=!0;try{const P={collection:f.value.collection||t.collection,per_page:24};switch((s.value||f.value.search)&&(P.search=s.value||f.value.search||""),f.value.dateFrom&&(P.from_date=f.value.dateFrom),f.value.dateTo&&(P.to_date=f.value.dateTo),i.value){case"recent":await T.fetchMedia(v.value,P),F?l.value=T.items.map(pe=>w(pe)):l.value=[...l.value,...T.items.map(pe=>w(pe))],g.value=T.currentPage<T.totalPages;break;case"model":if(t.modelType&&t.modelId){const pe=await T.fetchModelMedia(t.modelType,t.modelId,P.collection,P.search);l.value=pe?pe.map(ne=>w(ne)):[],g.value=!1}break;case"library":await T.fetchMedia(v.value,P),F?l.value=T.items.map(pe=>w(pe)):l.value=[...l.value,...T.items.map(pe=>w(pe))],g.value=T.currentPage<T.totalPages;break}}catch{}finally{c.value=!1,E.value=!1}}async function A(F){if(!g.value||E.value){F!=null&&F.target&&F.target.complete();return}v.value++,await S(!1),F!=null&&F.target&&(F.target.complete(),g.value||(F.target.disabled=!0))}function k(F){return F==="recent"||F==="model"||F==="library"}function B(F){i.value=F,S()}function R(F){typeof F=="string"&&k(F)&&B(F)}async function U(F){t.selectionMode==="single"?(N.clear(),N.select(F.uuid)):(N.toggle(F.uuid),t.maxSelection&&N.selectedCount.value>t.maxSelection&&(N.deselect(F.uuid),await(await I.toastController.create({message:`Maximum ${t.maxSelection} items can be selected`,duration:2e3,color:"warning"})).present()))}function _(){o("confirm",N.selectedItems.value)}function z(){o("close")}function H(F){}const M=e.ref(null),$=e.ref(!1);function X(F){M.value=F,$.value=!0}function W(F){const P=l.value.findIndex(ne=>ne.uuid===F.uuid);P!==-1&&(l.value[P]=F);const pe={};F.alt_text!==void 0&&(pe.alt_text=F.alt_text),F.caption!==void 0&&(pe.caption=F.caption),F.custom_properties!==void 0&&(pe.custom_properties=F.custom_properties),T.updateMedia(F.uuid,pe)}function te(){S()}function ge(){f.value={},s.value="",S()}const Ne=Ku(()=>{S(!0)},300);e.watch(s,()=>{t.isOpen&&Ne()});async function ee(F){try{await(await I.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 S()}}]})).present()}catch{}}return e.watch(()=>t.isOpen,F=>{F&&S()}),e.onMounted(()=>{t.selectedItems.length>0&&t.selectedItems.forEach(F=>N.select(F))}),(F,P)=>{const pe=e.resolveComponent("AdminMediaGrid"),ne=e.resolveComponent("AdminMediaListItem");return e.openBlock(),e.createBlock(e.unref(I.IonModal),{"is-open":F.isOpen,onDidDismiss:z,"backdrop-dismiss":!1,class:"media-browser-modal"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(I.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{onClick:z},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(I.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.value),1)]),_:1})]),_:1}),e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",tm,[e.createVNode(e.unref(I.IonSegment),{value:i.value,onIonChange:P[0]||(P[0]=Y=>R(Y.detail.value)),class:"max-w-xs"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonSegmentButton),{value:"recent"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[15]||(P[15]=[e.createTextVNode("Recent",-1)])]),_:1})]),_:1}),t.modelType&&t.modelId?(e.openBlock(),e.createBlock(e.unref(I.IonSegmentButton),{key:0,value:"model"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[16]||(P[16]=[e.createTextVNode("Model",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonSegmentButton),{value:"library"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[17]||(P[17]=[e.createTextVNode("Library",-1)])]),_:1})]),_:1})]),_:1},8,["value"]),e.createVNode(e.unref(I.IonButton),{fill:"clear",size:"small",onClick:P[1]||(P[1]=Y=>m.value=!m.value),class:"relative"},{"icon-only":e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"filter-outline"})]),default:e.withCtx(()=>[x.value>0?(e.openBlock(),e.createBlock(e.unref(I.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(x.value),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})])]),_:1})]),_:1}),e.createVNode(e.unref(I.IonContent),null,{default:e.withCtx(()=>[e.createElementVNode("div",nm,[m.value?(e.openBlock(),e.createElementBlock("div",om,[e.createElementVNode("div",am,[e.createElementVNode("div",null,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[18]||(P[18]=[e.createTextVNode("Collection",-1)])]),_:1}),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":P[2]||(P[2]=Y=>f.value.collection=Y),class:"w-full p-2 border rounded"},[P[19]||(P[19]=e.createElementVNode("option",{value:""},"All Collections",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,Y=>(e.openBlock(),e.createElementBlock("option",{key:Y,value:Y},e.toDisplayString(Y),9,im))),128))],512),[[e.vModelSelect,f.value.collection]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[20]||(P[20]=[e.createTextVNode("From Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[3]||(P[3]=Y=>f.value.dateFrom=Y),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,f.value.dateFrom]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[21]||(P[21]=[e.createTextVNode("To Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[4]||(P[4]=Y=>f.value.dateTo=Y),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,f.value.dateTo]])])]),e.createElementVNode("div",rm,[e.createVNode(e.unref(I.IonButton),{size:"small",onClick:te},{default:e.withCtx(()=>[...P[22]||(P[22]=[e.createTextVNode("Apply",-1)])]),_:1}),e.createVNode(e.unref(I.IonButton),{size:"small",fill:"clear",onClick:ge},{default:e.withCtx(()=>[...P[23]||(P[23]=[e.createTextVNode("Clear",-1)])]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonSearchbar),{modelValue:s.value,"onUpdate:modelValue":P[5]||(P[5]=Y=>s.value=Y),placeholder:"Search media...",debounce:300,class:"mb-4"},null,8,["modelValue"]),e.createElementVNode("div",sm,[e.createVNode(e.unref(I.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{fill:r.value==="grid"?"solid":"clear",size:"small",onClick:P[6]||(P[6]=Y=>r.value="grid")},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"grid-outline"})]),_:1},8,["fill"]),e.createVNode(e.unref(I.IonButton),{fill:r.value==="list"?"solid":"clear",size:"small",onClick:P[7]||(P[7]=Y=>r.value="list")},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"list-outline"})]),_:1},8,["fill"])]),_:1})]),c.value?(e.openBlock(),e.createElementBlock("div",lm,[e.createVNode(e.unref(I.IonSpinner),{name:"crescent"})])):h.value.length===0?(e.openBlock(),e.createElementBlock("div",cm,[e.createVNode(e.unref(I.IonIcon),{name:"images-outline",class:"text-6xl text-theme-secondary mb-4"}),P[24]||(P[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(pe,{key:3,"media-items":h.value,"selected-items":e.unref(N).selectedItems.value,"is-loading":!1,"selection-mode":!0,columns:{mobile:2,sm:3,md:4,lg:5,xl:6},onToggleSelect:U,onPreview:H,onEdit:X,onDelete:ee},null,8,["media-items","selected-items"])):(e.openBlock(),e.createBlock(e.unref(I.IonList),{key:4,lines:"none",class:"rounded-lg overflow-hidden"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(Y,Me)=>(e.openBlock(),e.createBlock(ne,{key:Y.uuid,media:Y,selected:e.unref(N).isSelected(Y.uuid),"selection-mode":!0,index:Me,onToggleSelect:U,onPreview:H,onEdit:X,onDelete:ee},null,8,["media","selected","index"]))),128))]),_:1})),!c.value&&h.value.length>0&&i.value!=="model"?(e.openBlock(),e.createBlock(e.unref(I.IonInfiniteScroll),{key:5,threshold:"100px",onIonInfinite:P[8]||(P[8]=Y=>A(Y))},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonInfiniteScrollContent),{"loading-spinner":"crescent","loading-text":"Loading more media..."})]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(e.unref(I.IonModal),{"is-open":$.value,onDidDismiss:P[14]||(P[14]=Y=>$.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(I.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{onClick:P[9]||(P[9]=Y=>$.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(I.IonTitle),null,{default:e.withCtx(()=>[...P[25]||(P[25]=[e.createTextVNode("Edit Media Info",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(I.IonContent),{class:"p-4"},{default:e.withCtx(()=>[M.value?(e.openBlock(),e.createElementBlock("div",um,[e.createElementVNode("div",mm,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[26]||(P[26]=[e.createTextVNode("Caption",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[10]||(P[10]=Y=>M.value.caption=Y),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter caption..."},null,512),[[e.vModelText,M.value.caption]])]),e.createElementVNode("div",pm,[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...P[27]||(P[27]=[e.createTextVNode("Alt Text",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[11]||(P[11]=Y=>M.value.alt_text=Y),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter alt text..."},null,512),[[e.vModelText,M.value.alt_text]])]),e.createElementVNode("div",fm,[e.createVNode(e.unref(I.IonButton),{onClick:P[12]||(P[12]=Y=>W(M.value))},{default:e.withCtx(()=>[...P[28]||(P[28]=[e.createTextVNode("Save",-1)])]),_:1}),e.createVNode(e.unref(I.IonButton),{fill:"clear",onClick:P[13]||(P[13]=Y=>$.value=!1)},{default:e.withCtx(()=>[...P[29]||(P[29]=[e.createTextVNode("Cancel",-1)])]),_:1})])])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["is-open"]),e.createVNode(e.unref(I.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",hm,[e.createElementVNode("div",vm,[e.unref(N).selectedCount.value>0?(e.openBlock(),e.createElementBlock("span",gm,[e.createTextVNode(e.toDisplayString(e.unref(N).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(I.IonButton),{fill:"clear",onClick:z},{default:e.withCtx(()=>[...P[30]||(P[30]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(I.IonButton),{disabled:C.value,onClick:_},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(D.value),1)]),_:1},8,["disabled"])])])]),_:1})]),_:1})]),_:1},8,["is-open"])}}}),xm=Be(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"],Nm={key:2,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-move"},_m=["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"},Fm={class:"text-center"},Im={class:"text-4xl text-gray-400 mb-2"},Rm={class:"text-sm font-medium text-gray-500"},$m={class:"absolute inset-0 bg-black/70 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2"},Dm=["onClick"],Um=["onClick"],Am=["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=C=>t.selectedItems.some(y=>y.uuid===C.uuid),d=e.computed(()=>{const C=t.columns,y=["grid","gap-4"];switch(C.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(C.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(C.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(C.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(C.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(C,y,S){t.reorderable&&(i.value=y,C.dataTransfer&&(C.dataTransfer.effectAllowed="move",C.dataTransfer.setData("text/html","")))}function m(C,y){t.reorderable&&(C.preventDefault(),r.value=y)}function f(){r.value=null}function p(C,y){if(!t.reorderable||!i.value)return;C.preventDefault();const S=[...t.mediaItems],A=S.findIndex(k=>{var B;return k.uuid===((B=i.value)==null?void 0:B.uuid)});if(A!==-1&&A!==y&&i.value){const[k]=S.splice(A,1);S.splice(y,0,k),o("reorder",S)}i.value=null,r.value=null}function v(C){return C<1024?C+" B":C<1024*1024?(C/1024).toFixed(1)+" KB":(C/(1024*1024)).toFixed(1)+" MB"}function g(C){var S;return C.thumbnail_url||((S=C.conversion_urls)==null?void 0:S.thumb)||C.original_url||C.url||""}function E(C){var A,k,B;const y=((A=C.mime_type)==null?void 0:A.startsWith("image/"))||!1,S=!!(C.thumbnail_url||(k=C.conversion_urls)!=null&&k.thumb||(B=C.conversion_urls)!=null&&B.preview||C.original_url||C.url);return y&&S}function T(C){var y;return((y=C.split(".").pop())==null?void 0:y.toUpperCase())||""}function N(C){var S;const y=((S=C.mime_type)==null?void 0:S.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(C=>{C.forEach(y=>{var S;if(y.isIntersecting){const A=y.target.getAttribute("data-media-id");A&&(s.value.add(A),(S=c.value)==null||S.unobserve(y.target))}})},{rootMargin:"50px"}))}),e.onUnmounted(()=>{c.value&&c.value.disconnect()});function w(C){return!0}function h(){c.value&&e.nextTick(()=>{document.querySelectorAll("[data-media-id]").forEach(y=>{var A;const S=y.getAttribute("data-media-id");S&&!s.value.has(S)&&((A=c.value)==null||A.observe(y))})})}e.watch(()=>t.mediaItems,()=>{s.value.clear(),h()},{immediate:!0,deep:!0});function x(C,y){const S=C.target;delete S.dataset.fallbackIndex}function D(C,y){const S=C.target,A=S.closest("[data-media-id]"),k=[y.original_url,y.url,y.thumbnail_url,"preview_url"in y?y.preview_url:void 0].filter(B=>B&&B.trim()!==""&&B!==S.src);if(k.length>0&&S.dataset.fallbackIndex){const B=parseInt(S.dataset.fallbackIndex);if(B<k.length){S.dataset.fallbackIndex=(B+1).toString(),S.src=k[B]||"";return}}else if(k.length>0){S.dataset.fallbackIndex="1",S.src=k[0]||"";return}if(S.style.display="none",A&&!A.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">${N(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]||(jy(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){Fe.call(this,a??"canceled",Fe.ERR_CANCELED,n,t),this.name="CanceledError"}G.inherits(Xn,Fe,{__CANCEL__:!0});function pc(a,n,t){const o=t.config.validateStatus;!t.status||!o||o(t.status)?a(t):n(new Fe("Request failed with status code "+t.status,[Fe.ERR_BAD_REQUEST,Fe.ERR_BAD_RESPONSE][Math.floor(t.status/100)-4],t.config,t.request,t))}function Wy(a){const n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(a);return n&&n[1]||""}function Zy(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 m=r,f=0;for(;m!==i;)f+=t[m++],m=m%a;if(i=(i+1)%a,i===r&&(r=(r+1)%a),d-s<n)return;const p=u&&d-u;return p?Math.round(f*1e3/p):void 0}}function Xy(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(),m=u-t;m>=o?s(d,u):(i=d,r||(r=setTimeout(()=>{r=null,s(i)},o-m)))},()=>i&&s(i)]}const ga=(a,n,t=3)=>{let o=0;const i=Zy(50,250);return Xy(r=>{const s=r.loaded,c=r.lengthComputable?r.total:void 0,l=s-o,d=i(l),u=s<=c;o=s;const m={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(m)},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)),Hy=mt.hasStandardBrowserEnv?((a,n)=>t=>(t=new URL(t,mt.origin),a.protocol===t.protocol&&a.host===t.host&&(n||a.port===t.port)))(new URL(mt.origin),mt.navigator&&/(msie|trident)/i.test(mt.navigator.userAgent)):()=>!0,Gy=mt.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 Jy(a){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(a)}function Yy(a,n){return n?a.replace(/\/?\/$/,"")+"/"+n.replace(/^\/+/,""):a}function fc(a,n,t){let o=!Jy(n);return a&&(o||t==!1)?Yy(a,n):n}const js=a=>a instanceof bt?{...a}:a;function xn(a,n){n=n||{};const t={};function o(d,u,m,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,m,f){if(G.isUndefined(u)){if(!G.isUndefined(d))return o(void 0,d,m,f)}else return o(d,u,m,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,m){if(m in n)return o(d,u);if(m 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,m)=>i(js(d),js(u),m,!0)};return G.forEach(Object.keys({...a,...n}),function(u){const m=l[u]||i,f=m(a[u],n[u],u);G.isUndefined(f)&&m!==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(mt.hasStandardBrowserEnv||mt.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if((l=s.getContentType())!==!1){const[d,...u]=l?l.split(";").map(m=>m.trim()).filter(Boolean):[];s.setContentType([d||"multipart/form-data",...u].join("; "))}}if(mt.hasStandardBrowserEnv&&(o&&G.isFunction(o)&&(o=o(n)),o||o!==!1&&Hy(n.url))){const d=i&&r&&Gy.read(r);d&&s.set(i,d)}return n},Ky=typeof XMLHttpRequest<"u",qy=Ky&&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,m,f,p,v;function g(){p&&p(),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()),x={data:!c||c==="text"||c==="json"?E.responseText:E.response,status:E.status,statusText:E.statusText,headers:w,config:a,request:E};pc(function(C){t(C),g()},function(C){o(C),g()},x),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 Fe("Request aborted",Fe.ECONNABORTED,a,E)),E=null)},E.onerror=function(){o(new Fe("Network Error",Fe.ERR_NETWORK,a,E)),E=null},E.ontimeout=function(){let h=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const x=i.transitional||dc;i.timeoutErrorMessage&&(h=i.timeoutErrorMessage),o(new Fe(h,x.clarifyTimeoutError?Fe.ETIMEDOUT:Fe.ECONNABORTED,a,E)),E=null},r===void 0&&s.setContentType(null),"setRequestHeader"in E&&G.forEach(s.toJSON(),function(h,x){E.setRequestHeader(x,h)}),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&&([m,p]=ga(l),E.upload.addEventListener("progress",m),E.upload.addEventListener("loadend",p)),(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 N=Wy(i.url);if(N&&mt.protocols.indexOf(N)===-1){o(new Fe("Unsupported protocol "+N+":",Fe.ERR_BAD_REQUEST,a));return}E.send(r||null)})},Qy=(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 Fe?u:new Xn(u instanceof Error?u.message:u))}};let s=n&&setTimeout(()=>{s=null,r(new Fe(`timeout ${n} of ms exceeded`,Fe.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}},ew=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},tw=async function*(a,n){for await(const t of nw(a))yield*ew(t,n)},nw=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=tw(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 m=u.byteLength;if(t){let f=r+=m;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",ow=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}},aw=vc&&gc(()=>{let a=!1;const n=new Request(mt.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 Fe(`Response type '${n}' is not supported`,Fe.ERR_NOT_SUPPORT,o)})})})(new Response);const iw=async a=>{if(a==null)return 0;if(G.isBlob(a))return a.size;if(G.isSpecCompliantForm(a))return(await new Request(mt.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 ow(a)).byteLength},rw=async(a,n)=>{const t=G.toFiniteNumber(a.getContentLength());return t??iw(n)},sw=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:m="same-origin",fetchOptions:f}=hc(a);d=d?(d+"").toLowerCase():"text";let p=Qy([i,r&&r.toAbortSignal()],s),v;const g=p&&p.unsubscribe&&(()=>{p.unsubscribe()});let E;try{if(l&&aw&&t!=="get"&&t!=="head"&&(E=await rw(u,o))!==0){let x=new Request(n,{method:"POST",body:o,duplex:"half"}),D;if(G.isFormData(o)&&(D=x.headers.get("content-type"))&&u.setContentType(D),x.body){const[C,y]=zs(E,ga(Ps(l)));o=Ws(x.body,Zs,C,y)}}G.isString(m)||(m=m?"include":"omit");const T="credentials"in Request.prototype;v=new Request(n,{...f,signal:p,method:t.toUpperCase(),headers:u.normalize().toJSON(),body:o,duplex:"half",credentials:T?m:void 0});let N=await fetch(v,f);const w=Xi&&(d==="stream"||d==="response");if(Xi&&(c||w&&g)){const x={};["status","statusText","headers"].forEach(S=>{x[S]=N[S]});const D=G.toFiniteNumber(N.headers.get("content-length")),[C,y]=c&&zs(D,ga(Ps(c),!0))||[];N=new Response(Ws(N.body,Zs,C,()=>{y&&y(),g&&g()}),x)}d=d||"text";let h=await ya[G.findKey(ya,d)||"text"](N,a);return!w&&g&&g(),await new Promise((x,D)=>{pc(x,D,{data:h,headers:bt.from(N.headers),status:N.status,statusText:N.statusText,config:a,request:v})})}catch(T){throw g&&g(),T&&T.name==="TypeError"&&/Load failed|fetch/i.test(T.message)?Object.assign(new Fe("Network Error",Fe.ERR_NETWORK,a,v),{cause:T.cause||T}):Fe.from(T,T&&T.code,a,v)}}),Hi={http:xy,xhr:qy,fetch:sw};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 Fe(`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 Fe("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 Fe(i(s," has been removed"+(t?" in "+t:"")),Fe.ERR_DEPRECATED);return t&&!Gs[s]&&(Gs[s]=!0),n?n(r,s,c):!0}};Pa.spelling=function(n){return(t,o)=>!0};function cw(a,n,t){if(typeof a!="object")throw new Fe("options must be an object",Fe.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 Fe("option "+r+" must be "+l,Fe.ERR_BAD_OPTION_VALUE);continue}if(t!==!0)throw new Fe("Unknown option "+r,Fe.ERR_BAD_OPTION)}}const ia={assertOptions:cw,validators:Pa},Lt=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:Lt.transitional(Lt.boolean),forcedJSONParsing:Lt.transitional(Lt.boolean),clarifyTimeoutError:Lt.transitional(Lt.boolean)},!1),i!=null&&(G.isFunction(i)?t.paramsSerializer={serialize:i}:ia.assertOptions(i,{encode:Lt.function,serialize:Lt.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ia.assertOptions(t,{baseUrl:Lt.spelling("baseURL"),withXsrfToken:Lt.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,m=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);m<f;)u=u.then(v[m++],v[m++]);return u}f=c.length;let p=t;for(m=0;m<f;){const v=c[m++],g=c[m++];try{p=v(p)}catch(E){g.call(this,E);break}}try{u=Hs.call(this,p)}catch(v){return Promise.reject(v)}for(m=0,f=d.length;m<f;)u=u.then(d[m++],d[m++]);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 dw=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 uw(a){return function(t){return a.apply(null,t)}}function mw(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 Je=kc(Bo);Je.Axios=bn;Je.CanceledError=Xn;Je.CancelToken=dw;Je.isCancel=mc;Je.VERSION=wc;Je.toFormData=La;Je.AxiosError=Fe;Je.Cancel=Je.CanceledError;Je.all=function(n){return Promise.all(n)};Je.spread=uw;Je.isAxiosError=mw;Je.mergeConfig=xn;Je.AxiosHeaders=bt;Je.formToJSON=a=>uc(G.isHTMLForm(a)?new FormData(a):a);Je.getAdapter=yc.getAdapter;Je.HttpStatusCode=Gi;Je.default=Je;const{Axios:H3,AxiosError:G3,CanceledError:J3,isCancel:Y3,CancelToken:K3,VERSION:q3,all:Q3,Cancel:eV,isAxiosError:tV,spread:nV,toFormData:oV,AxiosHeaders:aV,HttpStatusCode:iV,formToJSON:rV,getAdapter:sV,mergeConfig:lV}=Je;class kr{constructor(n="/api/v1"){this.eventSource=null,this.progressCallbacks=new Map,this.api=Je.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 pw={key:0,class:"mobile-layout"},fw={class:"mobile-toolbar"},hw={class:"mobile-toolbar-left"},vw=["aria-label"],gw={class:"mobile-toolbar-right"},yw=["disabled"],ww=["disabled"],bw={class:"preview-section"},kw={key:0,class:"mobile-export-overlay"},xw={class:"mobile-export-progress"},Ew={class:"mobile-export-bar"},Vw={class:"mobile-timeline-zoom"},Sw={key:1,class:"desktop-layout"},Cw={class:"desktop-main-row"},Nw={class:"preview-panel"},_w={class:"fit-toggle"},Tw={class:"editor-content"},Mw={class:"editor-tabs"},Bw={class:"tab-header"},Fw=["onClick"],Iw={class:"tab-content-area"},Rw={class:"filter-controls"},$w={class:"text-controls"},Dw={class:"transition-controls"},Uw={class:"audio-controls"},Aw={class:"adjustments-controls"},Ow={key:1,class:"no-filter-selected"},Lw={class:"export-controls"},zw={key:0,"data-testid":"video-export-status-completed"},Pw={key:1,"data-testid":"video-export-status-message",class:"export-status-message"},jw={class:"desktop-timeline-row"},Ww={class:"timeline-zoom"},Zw=["value"],Xw={class:"zoom-readout"},Hw={key:0,class:"dev-editor-controls","data-testid":"video-editor-dev-controls"},Gw={class:"dev-editor-row"},Jw={class:"dev-editor-field"},Yw={class:"dev-editor-field"},Kw=["disabled"],qw=["disabled"],Qw=["disabled"],eb={class:"dev-editor-row"},tb={class:"dev-editor-field dev-editor-field--wide"},nb=["value"],ob=["disabled"],ab=["disabled"],ib=["disabled"],rb=["disabled"],sb=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}),m=e.computed(()=>c.value?l.value:d.value),f=e.computed(()=>m.value==="filters"||E.value),p=e.computed(()=>m.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 N(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 N(V)?V:null}const h=e.shallowRef(null),x=e.ref(null),D=e.ref(w(o.initialRecipe)??"contain"),C=e.ref(null),y=e.ref(null),S=e.ref(null),A=e.ref(!1),k=new Map,B=e.ref([]),R=e.ref([]),U=e.ref([]),_=e.ref([]),z=e.ref(1),H=()=>{c.value=window.innerWidth<768},M=[{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}],$=[{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(()=>M.filter(b=>u.value[b.id])),W=e.computed(()=>$.filter(b=>u.value[b.id])),te=e.computed(()=>{var b,V;return((b=W.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=te.value),b[d.value]||(d.value=te.value)},{immediate:!0,deep:!0}),e.watch(te,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=te.value),d.value==="export"&&(d.value=te.value))},{immediate:!0,deep:!0});const ge=e.computed(()=>typeof window>"u"?!1:window.__MEDIABLES_EDITOR_DEV__===!0),{currentFrame:Ne,playheadPosition:ee,timelineClips:F,totalDuration:P,hasChanges:pe,isPlaying:ne,selectedClip:Y,zoomLevel:Me,playbackSpeed:ce,handleTrim:se,handleSplit:ke,handleClipSelect:oe,splitAtPlayhead:le,deleteSelectedClip:Ee,duplicateSelectedClip:Se,setZoomLevel:rt,moveClip:He,setFilters:pt,setTextOverlays:K,setAudioTracks:de,saveDraft:ie,clearHasChanges:he,resetChanges:_e,generateRecipe:J,zoomIn:ue,zoomOut:ve,fitToWindow:Z,togglePlayback:Q,setPlaying:ae,seekTo:xe,frameForward:De,frameBackward:Qe,skipToStart:We,skipToEnd:ft,setPlaybackSpeed:Ze,updateSourceDuration:Ht}=Vg(s.value,o.initialRecipe,o.media),{videoCompatibleFilters:Xa,activeFilters:et,selectedFilter:Br,previewFilter:Fo,previewFilterEffect:Fr,applyFilter:Ir,updateFilterParams:$c,removeFilter:Dc,clearAllFilters:Rr,setActiveFilters:Uc}=Rg();function Hn(b){var j,q;const V=((j=Y.value)==null?void 0:j.id)??((q=F.value[0])==null?void 0:q.id);V&&(A.value=!0,typeof b=="object"&&b.id?Ir(b.id):typeof b=="string"&&Ir(b),pt(et.value),h.value?h.value.setClipFilters(V,et.value):k.set(V,[...et.value]),oe(V),A.value=!1,Ut())}function Ac(){var V,j;const b=((V=Y.value)==null?void 0:V.id)??((j=F.value[0])==null?void 0:j.id);b&&oe(b)}function $r(b){const V=et.value.find(j=>j.filterId===b);V&&Dc(V.id)}const Gn=e.computed(()=>Xa.value.map(V=>{var q;const j=[];if(V.controls&&V.controls.length>0)for(const me of V.controls){const re=me.type;if(re==="button"||re==="text"||re==="range")continue;const fe={id:me.property||me.id,label:me.label||me.id,type:re,default:me.default??(re==="toggle"?!1:re==="color"?"#ffffff":0)};re==="slider"&&(fe.min=me.min??0,fe.max=me.max??1,fe.step=me.step??.01),re==="select"&&me.options&&(fe.options=me.options),j.push(fe)}else if(V.paramRanges){const me=Object.entries(V.paramRanges);for(const[re,fe]of me){const Ae=re.replace(/[-_]/g," ").replace(/\b\w/g,At=>At.toUpperCase()),ht=(q=V.defaultParams)==null?void 0:q[re],Yt=(fe.min+fe.max)/2;j.push({id:re,label:Ae,min:fe.min,max:fe.max,step:fe.step??.01,default:typeof ht=="number"?ht:Yt})}}return{id:V.id,name:V.name,category:V.category,params:j}})),Cn=e.ref("0.00"),Nn=e.ref("0.00"),en=e.ref("");e.watch(Gn,b=>{if(b.length===0){en.value="";return}b.some(j=>j.id===en.value)||(en.value=b[0].id)},{immediate:!0});const nt=e.ref(!1),Xe=e.ref(0),Gt=e.ref(!1),je=e.ref(null),Tt=e.ref(null);let Io=null,Ct=!1,Jt=null;const Ha=e.computed(()=>{const b=new Map;return et.value.forEach(V=>b.set(V.filterId,V)),b}),Oc=e.computed(()=>{var b,V;return Ne.value?Ne.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,j)=>{var me,re;const q=Rt.value;j(()=>{q&&q.startsWith("blob:")&&URL.revokeObjectURL(q)}),(me=o.media)!=null&&me.file?Rt.value=URL.createObjectURL(o.media.file):(re=o.media)!=null&&re.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}}),Ur=e.computed(()=>{var V;const b=(V=o.media)==null?void 0:V.url;return!!(b&&/^https?:/i.test(b))}),Ar=e.computed(()=>et.value),Or=e.computed(()=>ee.value),Lc=e.computed(()=>!!Y.value&&ee.value>0),zc=e.computed(()=>!!Y.value&&F.value.length>1),Ja=e.ref(0),$t=e.computed(()=>{try{const b=P.value??P;return b&&typeof b=="number"&&b>0?b:Ja.value}catch{return Ja.value}}),_n=e.ref(),Ya=e.ref(),Ka=e.ref(),qa=e.ref(),Ro=e.ref(0),cn=e.ref(!1);let gt=null,Dt=null;e.watch($t,b=>{var j;if(cn.value||!b||b<=0)return;const V=Ro.value||((j=_n.value)==null?void 0:j.clientWidth)||0;V>0&&(cn.value=!0,Z(V))}),e.watch(Ro,b=>{if(cn.value||!b||b<=0)return;$t.value>0&&(cn.value=!0,Z(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),Nn.value=Tn(b.sourceOut))}e.watch(()=>{var b,V,j;return[(b=Y.value)==null?void 0:b.id,(V=Y.value)==null?void 0:V.sourceIn,(j=Y.value)==null?void 0:j.sourceOut]},()=>{Pc(Y.value)},{immediate:!0});function zr(b){const V=Y.value;if(!V)return;const j=1/30,q=V.sourceMinIn??0,me=V.sourceMaxOut??$t.value,re=V.sourceIn+(ee.value-V.timelineStart);if(b==="start"){const Ae=Math.max(q,Math.min(re,V.sourceOut-j));Cn.value=Tn(Ae);return}const fe=Math.max(V.sourceIn+j,Math.min(re,me));Nn.value=Tn(fe)}function jc(){const b=Y.value;if(!b)return;const V=Lr(Cn.value),j=Lr(Nn.value);if(V===null||j===null)return;const q=1/30,me=b.sourceMinIn??0,re=b.sourceMaxOut??$t.value,fe=Math.max(me,Math.min(V,re-q)),Ae=Math.max(fe+q,Math.min(j,re));se(b.id,"start",fe),se(b.id,"end",Ae),Cn.value=Tn(fe),Nn.value=Tn(Ae),Y.value&&xe(Y.value.timelineStart)}function Wc(){en.value.trim()!==""&&Hn(en.value)}function Zc(){var b;Rr(),pt(et.value),(b=Y.value)!=null&&b.id&&(h.value?h.value.setClipFilters(Y.value.id,et.value):k.set(Y.value.id,[...et.value])),Ut()}function Pr(b,V,j){var me,re;const q=et.value.find(fe=>fe.filterId===b);q?(q.params={...q.params,[V]:j},pt(et.value),h.value&&((me=Y.value)!=null&&me.id)?h.value.setClipFilters(Y.value.id,et.value):(re=Y.value)!=null&&re.id&&k.set(Y.value.id,[...et.value]),Ut(),Ac()):Fo.value&&Fo.value.filterId===b&&(Fo.value.params={...Fo.value.params||{},[V]:j})}function jr(b){xe(b)}function Wr(b){!b||!Number.isFinite(b.timestamp)||xe(b.timestamp)}function Zr(b){ae(b)}function $o(b){!Number.isFinite(b)||b<=0||(Ja.value=b,Ht(b))}function Xc(){var V;const b=Ro.value||((V=_n.value)==null?void 0:V.clientWidth)||800;Z(b)}function Qa(b){cn.value=!0,rt(b)}function Hc(){cn.value=!0,ue()}function Gc(){cn.value=!0,ve()}function Jc(b){const V=b.target,j=Number(V.value);Qa(j)}function Xr(b){const V=Math.min(600,Math.max(10,Me.value+b));Qa(V)}function ei(){Dt==null||Dt(),Dt=null;const b=Ka.value,V=qa.value;if(!c.value||!b||!V)return;const j=()=>{Xr(-20)},q=()=>{Xr(20)};b.addEventListener("click",j),V.addEventListener("click",q),Dt=()=>{b.removeEventListener("click",j),V.removeEventListener("click",q)}}e.watch([c,Ka,qa],()=>{ei()},{flush:"post"});function Hr(b){var V;h.value=b,(V=h.value)!=null&&V.composition&&(C.value=new $g(h.value.composition),y.value=new va(h.value.composition),S.value=new Dg(h.value.composition));try{k.size&&(k.forEach((j,q)=>{h.value.setClipFilters(q,j)}),k.clear(),h.value.composition.computeFrame())}catch{}}function Yc(b){b!=null&&b.id&&Fr(b.id)}function Kc(b){$c(b),Ut()}async function qc(b){if(!C.value)return;const V=await C.value.addTextOverlay(b);B.value.push({id:V,...b})}async function Qc(b,V){if(!C.value)return;await C.value.updateTextOverlay(b,V);const j=B.value.findIndex(q=>q.id===b);j!==-1&&(B.value[j]={...B.value[j],...V})}async function ed(b){C.value&&(await C.value.removeTextOverlay(b),B.value=B.value.filter(V=>V.id!==b))}async function td(b){if(!y.value||_.value.length<2)return;const[V,j]=_.value,q=await y.value.applyTransition(V,j,b);R.value.push({id:q,...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(!S.value)return;const V=await S.value.addAudioTrack(b);U.value.push({id:V,...b})}async function id(b,V){if(!S.value)return;const j=U.value.findIndex(q=>q.id===b);j!==-1&&(U.value[j]={...U.value[j],...V})}async function rd(b){S.value&&(await S.value.removeAudioTrack(b),U.value=U.value.filter(V=>V.id!==b))}async function sd(b,V){if(!S.value)return;await S.value.updateVolume(b,V);const j=U.value.find(q=>q.id===b);j&&(j.volume=V)}async function ld(b,V){if(!S.value)return;await S.value.muteTrack(b,V);const j=U.value.find(q=>q.id===b);j&&(j.muted=V)}function cd(b){S.value&&(S.value.setMasterVolume(b),z.value=b)}function dd(b){i("thumbnail-selected",b)}function tn(){Io!==null&&(clearInterval(Io),Io=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=D.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 Ge(b,V,j){return Math.min(j,Math.max(V,b))}function ti(b,V){if(typeof b=="number"&&Number.isFinite(b))return b;if(typeof b=="string"){const j=Number(b);if(Number.isFinite(j))return j}return V}function dt(b,V,j){for(const q of V)if(q in b)return ti(b[q],j);return j}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:Ge(dt(V,["value","brightness"],0),-1,1)}];case"contrast":return[{type:"contrast",value:Ge(dt(V,["value","contrast"],1),.1,3)}];case"saturation":return[{type:"saturation",value:Ge(dt(V,["value","saturation"],1),0,3)}];case"blur":case"gaussian-blur":case"kawase-blur":case"radial-blur":return[{type:"blur",value:Ge(dt(V,["value","blur","radius"],0),0,25)}];case"sharpen":return[{type:"sharpen",value:Ge(dt(V,["value","amount"],1),0,5)}];case"sepia":return[{type:"sepia",value:1}];case"grayscale":return[{type:"grayscale",value:1}];case"adjustment":{const q=Ge(dt(V,["brightness"],1)-1,-1,1),me=Ge(dt(V,["contrast"],1),.1,3),re=Ge(dt(V,["saturation"],1),0,3);return[{type:"brightness",value:q},{type:"contrast",value:me},{type:"saturation",value:re}]}default:return[]}}function pd(b){const V=b.timeline[0],j=Array.isArray(V==null?void 0:V.filters)?V.filters:[],q=[];for(const re of j)if(q.push(...md(re)),q.length>=12)break;const me={...b,filters:q.slice(0,12)};if(b.timeline.length===1&&V){const re=Math.max(0,ti(V.sourceIn,0)),fe=ti(V.sourceOut,re);fe>re&&(me.trim={start:re,end:fe})}return me}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 j=V.value;if(typeof j=="number"&&Number.isFinite(j)&&j>0)return j}return null}async function Gr(b,V,j){var Yt,At,Mn,on;const q=b.timeline[0],me=q?Math.max(0,q.sourceIn):0,re=q?q.sourceOut:void 0,[fe,Ae]=fd((V==null?void 0:V.quality)??((Yt=b.output)==null?void 0:Yt.quality)),ht=((At=b.output)==null?void 0:At.fps)||30;ae(!1),E.value=!0,await e.nextTick();try{const ot=[200,500,1e3];let st=!1;for(const ci of ot){await new Promise($d=>setTimeout($d,ci));const Ao=T.value;if(!(!Ao||typeof Ao.captureFrameAt!="function")&&typeof Ao.ensureReadyForCapture=="function"&&(st=await Ao.ensureReadyForCapture(),st))break}const Ot=T.value;if(!Ot||typeof Ot.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-RBbYifm4.cjs"));if(!si())throw new Error("WebCodecs is not supported in this browser. Export requires Chrome 94+ or equivalent.");Jt=new AbortController;const Uo={width:fe,height:Ae,fps:ht,trimStart:me,signal:Jt.signal};re!==void 0&&(Uo.trimEnd=re),j&&(Uo.onProgress=j);const os=Rt.value;os!==""&&(Uo.sourceUrl=os);const Md=typeof Ot.duration=="number"&&Ot.duration>0?Ot.duration:((Mn=b.source)==null?void 0:Mn.duration)??re??0,Bd=await Yn({captureFrameAt:ci=>Ot.captureFrameAt(ci),duration:{value:Md}},Uo),li=new File([Bd],`edited-video-${Date.now()}.mp4`,{type:"video/mp4"}),Fd=hd(Ot),Id=((on=b.source)==null?void 0:on.duration)??0,Rd=Math.max(0,(re??Fd??Id)-me);return{file:li,recipe:b,meta:{duration:Rd,width:fe,height:Ae,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,Tt.value=null,je.value=null,Gt.value=!1,Xe.value=0;const j=Jn(b??J()),q=ts(j),me=Array.isArray(q.filters)&&q.filters.length>0,re=ai(q);if(!(pe.value||me||re))return he(),i("video-exported",null),null;const Ae=q.timeline[0],ht=Ae?Math.max(0,Ae.sourceIn):0,At=((Ae==null?void 0:Ae.sourceOut)??((on=q.source)==null?void 0:on.duration)??$t.value)-ht,Mn=o.serverRenderEndpoint!=null&&o.clientExportThreshold>0&&At>o.clientExportThreshold;if(Mn){nt.value=!0;try{return await gd(q),null}catch(ot){const st=ot instanceof Error?ot.message:"Server render failed";throw je.value=st,i("server-render-failed",st),ot}finally{nt.value=!1}}if(o.maxDuration>0&&At>o.maxDuration&&!Mn){const ot=`This video is too long for in-browser export (${Math.round(At)}s). Server rendering is not available. Try a shorter clip.`;return je.value=ot,i("video-exported",null),null}nt.value=!0;try{const ot=await Gr(q,V,st=>{Ct||(Xe.value=st)});return Ct?(je.value="Export canceled.",Xe.value=0,i("video-exported",null),null):(he(),i("recipe-generated",q),i("video-exported",ot),Xe.value=100,Gt.value=!0,ot)}catch(ot){if(Ct)return je.value="Export canceled.",Xe.value=0,i("video-exported",null),null;const st=ot instanceof Error?ot.message:"Local WebGL export failed.";throw je.value=st,new Error(`Video export failed: ${st}`)}finally{nt.value=!1}}function Do(){return new kr(o.serverRenderEndpoint??"/api/v1")}async function gd(b){const V=Do();je.value="Starting server render...",Xe.value=0;const j=await V.createRenderJob({source_media_uuid:s.value,recipe:b});Tt.value=j.id,i("server-render-started",j.id),i("export-started",j.id),je.value="Rendering on server...";const q=await V.pollRenderJob(j.id,(re,fe)=>{Xe.value=re,fe==="processing"&&(je.value=`Server rendering: ${re}%`)},3e3,(o.maxDuration>0?o.maxDuration*3:1800)*1e3);Xe.value=100,Gt.value=!0,je.value="Server render complete!",he(),i("recipe-generated",b);const me={id:q.id};typeof q.output_media_id=="string"&&q.output_media_id!==""&&(me.output_media_id=q.output_media_id),i("server-render-completed",me)}async function Jr(){if(!nt.value)return;Ct=!0,E.value=!1,Jt&&(Jt.abort(),Jt=null),tn();const b=Tt.value;if(b)try{await Do().cancelJob(b)}catch(V){const j=V instanceof Error?V.message:"Failed to cancel export";je.value=j,nt.value=!1,Tt.value=null;return}nt.value=!1,Xe.value=0,Gt.value=!1,Tt.value=null,je.value="Export canceled."}async function Yr(b){tn(),Ct=!1,Jt=null,Tt.value=null,je.value=null,Gt.value=!1,nt.value=!0,Xe.value=0;try{const V=Jn(ud(J(),b));i("recipe-generated",V);const j=s.value.startsWith("temp-"),q=V.timeline[0],me=Array.isArray(q==null?void 0:q.filters)?q.filters:[],re=!0,fe=typeof window<"u"&&window.MEDIABLES_ALLOW_SERVER_EXPORT_FALLBACK===1||typeof localStorage<"u"&&localStorage.getItem("mediables.export.allowServerFallback")==="1";if(re)try{const st=await Gr(V,b,si=>{Ct||(Xe.value=si)});if(Ct){je.value="Export canceled.",nt.value=!1,Xe.value=0;return}i("video-exported",st);const Ot=URL.createObjectURL(st.file),Yn=document.createElement("a");Yn.href=Ot,Yn.download=`edited-video-${Date.now()}.mp4`,Yn.click(),setTimeout(()=>URL.revokeObjectURL(Ot),100),nt.value=!1,Xe.value=100,Gt.value=!0;return}catch(st){if(Ct){je.value="Export canceled.",nt.value=!1,Xe.value=0;return}if(j||!fe)throw st;Xe.value=0,je.value="Local filter export failed, falling back to server render."}const Ae={"360p":"low","480p":"low","720p":"medium","1080p":"high","1440p":"ultra","2160p":"ultra"},ht=(b==null?void 0:b.quality)??V.output.quality,Yt=Ae[ht]??"high",At={...pd(V),export:{format:(b==null?void 0:b.format)??V.output.format,quality:Yt,resolution:ht,framerate:V.output.fps}},on=await Do().createJob({source_media_id:s.value,recipe:At}),ot=typeof on.id=="string"?on.id:null;if(!ot)throw new Error("Export failed: missing job id");Tt.value=ot,i("export-started",ot),_d(ot)}catch(V){if(E.value=!1,Jt=null,Ct){je.value="Export canceled.",nt.value=!1,Xe.value=0,Tt.value=null;return}try{const j=Jn(J()),q=new Blob([JSON.stringify(j,null,2)],{type:"application/json"}),me=URL.createObjectURL(q),re=document.createElement("a");re.href=me,re.download=`video-recipe-${Date.now()}.json`,re.click(),setTimeout(()=>URL.revokeObjectURL(me),100)}finally{nt.value=!1,Xe.value=0,Tt.value=null,je.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 j=b.pixiCanvas;if(j&&typeof j=="object"&&"value"in j){const q=j.value;return q instanceof HTMLCanvasElement?q:null}return j instanceof HTMLCanvasElement?j: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 j=V.value;if(typeof j=="number"&&Number.isFinite(j))return j}return null},bd=b=>{if(!b||typeof b!="object")return null;const j=b.videoElement;if(j&&typeof j=="object"&&"value"in j){const q=j.value;return q instanceof HTMLVideoElement?q:null}return j instanceof HTMLVideoElement?j:null},Kr=b=>typeof b.params=="object"&&b.params!==null?b.params:{},kd=b=>{const V=[];for(const j of b){const q=Kr(j),me=j.filterId.trim().toLowerCase();if(me==="brightness"){const fe=(Ge(dt(q,["value","brightness"],0),-1,1)+1)*100;V.push(`brightness(${fe.toFixed(2)}%)`);continue}if(me==="contrast"){const re=Ge(dt(q,["value","contrast"],1),.1,4);V.push(`contrast(${(re*100).toFixed(2)}%)`);continue}if(me==="saturation"||me==="saturate"){const re=Ge(dt(q,["value","saturation"],1),0,4);V.push(`saturate(${(re*100).toFixed(2)}%)`);continue}if(me==="grayscale"){V.push("grayscale(100%)");continue}if(me==="sepia"){V.push("sepia(100%)");continue}if(me==="blur"||me==="gaussian-blur"||me==="kawase-blur"){const re=Ge(dt(q,["value","blur","radius"],0),0,30);re>.01&&V.push(`blur(${re.toFixed(2)}px)`);continue}if(me==="adjustment"){const re=dt(q,["brightness"],1),fe=dt(q,["contrast"],1),Ae=dt(q,["saturation"],1);Math.abs(re-1)>.01&&V.push(`brightness(${(Ge(re,0,5)*100).toFixed(2)}%)`),Math.abs(fe-1)>.01&&V.push(`contrast(${(Ge(fe,.1,5)*100).toFixed(2)}%)`),Math.abs(Ae-1)>.01&&V.push(`saturate(${(Ge(Ae,0,5)*100).toFixed(2)}%)`);continue}if(me==="cinematic"){V.push("contrast(120%) brightness(95%) saturate(85%)");continue}if(me==="dramatic"){V.push("contrast(140%) brightness(90%) saturate(110%) sepia(10%)");continue}if(me==="dreamy"){V.push("blur(0.5px) brightness(105%) saturate(90%) contrast(95%)");continue}}return V.join(" ")},xd=b=>{const V=b.find(me=>me.filterId.trim().toLowerCase()==="noise");if(!V)return 0;const j=Kr(V),q=dt(j,["noise","value","amount","intensity"],.2);return q<=1?Ge(q,0,1):Ge(q/100,0,1)},Ed=(b,V,j,q)=>{if(q<=0)return;const me=b.getImageData(0,0,V,j),re=255*q;for(let fe=0;fe<me.data.length;fe+=4){const Ae=(Math.random()*2-1)*re;me.data[fe]=Ge(me.data[fe]+Ae,0,255),me.data[fe+1]=Ge(me.data[fe+1]+Ae,0,255),me.data[fe+2]=Ge(me.data[fe+2]+Ae,0,255)}b.putImageData(me,0,0)},qr=async b=>{b.readyState>=2&&b.videoWidth>0&&b.videoHeight>0||await new Promise(V=>{let j=!1,q=0;const me=()=>{j||(j=!0,b.removeEventListener("loadedmetadata",re),b.removeEventListener("loadeddata",re),b.removeEventListener("canplay",re),window.clearTimeout(q),V())},re=()=>{me()};b.addEventListener("loadedmetadata",re),b.addEventListener("loadeddata",re),b.addEventListener("canplay",re),q=window.setTimeout(()=>me(),800),b.play().catch(()=>{})})},Vd=async(b,V)=>{await new Promise(j=>{let q=!1,me=0;const re=()=>{q||(q=!0,b.removeEventListener("seeked",fe),window.clearTimeout(me),j())},fe=()=>{re()};if(Math.abs(b.currentTime-V)<.016){requestAnimationFrame(()=>re());return}b.addEventListener("seeked",fe),me=window.setTimeout(()=>re(),700),b.currentTime=V})},Qr=async(b,V)=>{await qr(b);const j=Math.floor(b.videoWidth),q=Math.floor(b.videoHeight);if(j<=0||q<=0)return null;const me=Number.isFinite(b.duration)&&b.duration>0?b.duration:0,re=me>0?Ge(V,0,me):0;await Vd(b,re);const fe=document.createElement("canvas");fe.width=j,fe.height=q;const Ae=fe.getContext("2d");if(!Ae)return null;const ht=kd(et.value);ht!==""&&(Ae.filter=ht);try{Ae.drawImage(b,0,0,j,q)}catch{return null}const Yt=xd(et.value);return Ed(Ae,j,q,Yt),oi(fe)},Sd=async(b,V)=>{const j=document.createElement("video");j.src=b,j.muted=!0,j.playsInline=!0,j.preload="auto",b.startsWith("blob:")||(j.crossOrigin="anonymous");try{return await qr(j),await Qr(j,V)}catch{return null}finally{j.pause(),j.removeAttribute("src"),j.load()}},Cd=async b=>{const V=T.value,j=oi(yd(V));if(j)return j;if(V!=null&&V.captureFrameAt)for(let re=0;re<4;re+=1){const fe=wd(V);if(fe!==null&&fe<=0&&re<2){await ni(80);continue}const Ae=await Promise.race([V.captureFrameAt(b),ni(450).then(()=>null)]),ht=oi(Ae);if(ht)return ht;await ni(80)}const q=bd(V);if(q){const re=await Qr(q,b);if(re)return re}const me=Ga.value.trim();if(me!==""){const re=await Sd(me,b);if(re)return re}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(et.value);if(!ai(b)&&V.length>0&&Array.isArray(b.timeline)&&b.timeline.length>0){const q=b.timeline[0];q&&(b.timeline=[{...q,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,Nd=b=>{if(!b||typeof b!="object")return null;const V=b.posterFrame;if(typeof V!="string")return null;const j=V.trim();return j!==""?j:null};async function ii(){const b=Jn(ts(ie())),V=es(et.value),j=ai(b)||V.length>0,q=Nd(o.initialRecipe);if(j){const me=ee.value>0?ee.value:.1;try{const re=await Cd(me);re?b.posterFrame=re:q&&(b.posterFrame=q)}catch{q&&(b.posterFrame=q)}}else delete b.posterFrame;return he(),i("draft-saved",b),b}function ns(){_e()&&(Rr(),Ut())}async function _d(b){tn();const V=Do();Io=window.setInterval(async()=>{try{if(Ct){tn();return}const j=await V.getJob(b),q=Number(j.progress??0);if(Xe.value=Number.isFinite(q)?q:0,j.status==="completed"||j.status==="failed"||j.status==="cancelled")if(tn(),nt.value=!1,Tt.value=null,j.status==="completed")Xe.value=100,Gt.value=!0,je.value=null;else{const me=j.status==="cancelled"||typeof j.error_message=="string"&&/cancel/i.test(j.error_message);je.value=me?"Export canceled.":typeof j.error_message=="string"&&j.error_message.trim()!==""?j.error_message:"Export failed"}}catch(j){tn(),nt.value=!1,Tt.value=null,je.value=j instanceof Error?j.message:"Failed to check export progress"}},2e3)}function ri(){const b=Jn(J());try{const V=b.timeline??[]}catch{}x.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(()=>Y.value,b=>{if(A.value||!b)return;const V=(b==null?void 0:b.filters)??[];Uc(V)},{immediate:!0}),e.watch(()=>et.value,b=>{pt(b),Ut()},{deep:!0}),e.watch(()=>B.value,b=>{K(b),Ut()},{deep:!0}),e.watch(()=>U.value,b=>{const V=b.map(j=>({...j,source:typeof j.source=="string"?j.source:void 0}));de(V),Ut()},{deep:!0}),e.watch(()=>ee.value,Ut),n({saveDraft:ii,exportForUpload:vd}),ri(),e.onUnmounted(()=>{tn(),Ct=!0,dn&&(clearTimeout(dn),dn=null),h.value&&(h.value.destroy(),h.value=null),C.value=null,y.value=null,S.value=null});function Td(){gt||!Ya.value||(gt=new wg({filters:Gn.value,callbacks:{onApplyFilter:b=>{Hn(b.id)},onRemoveFilter:b=>{$r(b)},onUpdateParam:(b,V,j)=>{Pr(b,V,j)},onPreviewFilter:b=>{Fr(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=()=>{!_n.value||nn||(nn=new ResizeObserver(V=>{V[0]&&(Ro.value=Math.round(V[0].contentRect.width))}),nn.observe(_n.value))};b(),nn||e.nextTick(b),c.value&&(ei(),Dt||e.nextTick(ei)),o.media&&ri(),c.value&&e.nextTick(()=>{Td()}),e.nextTick(()=>{const V=document.querySelector(".video-editor");V&&V.getBoundingClientRect();const j=document.querySelector(".mobile-layout");j&&j.getBoundingClientRect()})}),e.onUnmounted(()=>{window.removeEventListener("resize",H),nn==null||nn.disconnect(),nn=null,Dt==null||Dt(),Dt=null,gt==null||gt.destroy(),gt=null}),(b,V)=>{var j,q,me,re;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-editor",{mobile:c.value}])},[c.value?(e.openBlock(),e.createElementBlock("div",pw,[e.createElementVNode("div",fw,[e.createElementVNode("div",hw,[e.createElementVNode("button",{class:e.normalizeClass(["mobile-toolbar-btn",{active:e.unref(ne)}]),onClick:V[0]||(V[0]=(...fe)=>e.unref(Q)&&e.unref(Q)(...fe)),"aria-label":e.unref(ne)?"Pause":"Play","data-testid":"btn-mobile-play"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(ne)?e.unref(ml):e.unref(fl)},null,8,["icon"])],10,vw),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:ns,"aria-label":"Reset all changes","data-testid":"btn-mobile-reset"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Ln)},null,8,["icon"])])]),e.createElementVNode("div",gw,[e.createElementVNode("button",{class:"mobile-toolbar-btn mobile-toolbar-save",onClick:ii,"aria-label":"Save","data-testid":"btn-mobile-save",disabled:!e.unref(pe)},[e.createVNode(e.unref(I.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]=fe=>Yr()),"aria-label":"Export","data-testid":"btn-mobile-export",disabled:nt.value||!e.unref(pe)},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(vo)},null,8,["icon"])],8,ww),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[2]||(V[2]=fe=>i("close")),"aria-label":"Close","data-testid":"btn-mobile-close"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Dn)},null,8,["icon"])])])]),e.createElementVNode("div",bw,[e.withDirectives(e.createVNode(ms,{ref_key:"pixiPreviewMobileRef",ref:v,"aria-hidden":!f.value,class:"preview-host-child",source:Ga.value,"fallback-duration":$t.value,filters:Ar.value,playhead:Or.value,"is-playing":e.unref(ne),"fit-mode":D.value,active:f.value,onPlayPause:e.unref(Q),onFrameUpdate:Wr,onDurationChange:$o},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":!p.value,class:"preview-host-child","media-uuid":s.value,recipe:x.value,media:Dr.value,"enable-engine":p.value&&Ur.value,"fit-mode":D.value,onTimeUpdate:jr,onPlayStateChange:Zr,onDurationChange:$o,onEngineReady:Hr},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,p.value]]),nt.value?(e.openBlock(),e.createElementBlock("div",kw,[e.createElementVNode("div",xw,[e.createElementVNode("span",null,"Exporting "+e.toDisplayString(Xe.value)+"%",1),e.createElementVNode("div",Ew,[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:_n,class:"timeline-section"},[e.createElementVNode("div",Vw,[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(Fs,{playhead:e.unref(ee),clips:e.unref(F),"selected-clip-id":((j=e.unref(Y))==null?void 0:j.id)??((q=e.unref(F)[0])==null?void 0:q.id)??null,duration:$t.value,"zoom-level":e.unref(Me),sensitivity:.25,"is-mobile":!0,"onUpdate:playhead":e.unref(xe),onTrim:e.unref(se),onSplit:e.unref(ke),onClipSelect:e.unref(oe),onClipMove:e.unref(He)},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",Sw,[e.createElementVNode("div",Cw,[e.createElementVNode("div",Nw,[e.createElementVNode("div",_w,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[3]||(V[3]=fe=>D.value=fe),"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,D.value]])])]),e.withDirectives(e.createVNode(ms,{ref_key:"pixiPreviewDesktopRef",ref:g,"aria-hidden":!f.value,class:"preview-host-child",source:Ga.value,"fallback-duration":$t.value,filters:Ar.value,playhead:Or.value,"is-playing":e.unref(ne),"fit-mode":D.value,active:f.value,onPlayPause:e.unref(Q),onFrameUpdate:Wr,onDurationChange:$o},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":!p.value,class:"preview-host-child","media-uuid":s.value,recipe:x.value,media:Dr.value,"enable-engine":p.value&&Ur.value,"fit-mode":D.value,onTimeUpdate:jr,onPlayStateChange:Zr,onDurationChange:$o,onEngineReady:Hr},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,p.value]]),b.showThumbnailPicker?(e.openBlock(),e.createBlock(H0,{key:0,"media-uuid":s.value,duration:$t.value,onSelect:dd},null,8,["media-uuid","duration"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Tw,[e.createElementVNode("div",Mw,[e.createElementVNode("div",Bw,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value,fe=>(e.openBlock(),e.createElementBlock("button",{key:fe.id,class:e.normalizeClass(["tab-btn",{active:d.value===fe.id}]),onClick:Ae=>d.value=fe.id},e.toDisplayString(fe.label),11,Fw))),128))]),e.createElementVNode("div",Iw,[e.withDirectives(e.createElementVNode("div",Rw,[e.createVNode(a0,{filters:Gn.value,"active-filters":Ha.value,"thumbnail-url":Oc.value,onApplyFilter:Hn,onRemoveFilter:$r,onUpdateParam:Pr,onPreviewFilter:Yc},null,8,["filters","active-filters","thumbnail-url"])],512),[[e.vShow,d.value==="filters"]]),e.withDirectives(e.createElementVNode("div",$w,[e.createVNode(f1,{overlays:B.value,onAddOverlay:qc,onUpdateOverlay:Qc,onRemoveOverlay:ed},null,8,["overlays"])],512),[[e.vShow,d.value==="text"]]),e.withDirectives(e.createElementVNode("div",Dw,[e.createVNode(D1,{"selected-clips":_.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",Uw,[e.createVNode(gg,{"audio-layers":U.value,"master-volume":z.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",Aw,[e.unref(Br)?(e.openBlock(),e.createBlock(g0,{key:0,filter:e.unref(Br),"current-frame":e.unref(Ne),onUpdateParams:Kc},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",Ow,[...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",Lw,[e.createVNode(F0,{"can-export":e.unref(pe),"is-exporting":nt.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",zw," Export complete ")):e.createCommentVNode("",!0),je.value&&!Gt.value?(e.openBlock(),e.createElementBlock("div",Pw,e.toDisplayString(je.value),1)):e.createCommentVNode("",!0)],512),[[e.vShow,d.value==="export"]])])])])]),e.createElementVNode("div",jw,[e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:_n,class:"timeline-container"},[e.createElementVNode("div",Ww,[e.createElementVNode("label",null,[V[17]||(V[17]=e.createTextVNode(" Zoom ",-1)),e.createElementVNode("input",{type:"range",min:"10",max:"600",value:e.unref(Me),onInput:V[4]||(V[4]=fe=>Jc(fe))},null,40,Zw)]),e.createElementVNode("span",Xw,e.toDisplayString(Math.round(e.unref(Me)))+" px/s",1)]),e.createVNode(Fs,{playhead:e.unref(ee),clips:e.unref(F),"selected-clip-id":((me=e.unref(Y))==null?void 0:me.id)??((re=e.unref(F)[0])==null?void 0:re.id)??null,duration:$t.value,"zoom-level":e.unref(Me),sensitivity:.25,"onUpdate:playhead":e.unref(xe),onTrim:e.unref(se),onSplit:e.unref(ke),onClipSelect:e.unref(oe),onClipMove:e.unref(He)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"]),e.createVNode(wv,{"selected-clip":e.unref(Y),"can-split":Lc.value,"can-delete":zc.value,"is-playing":e.unref(ne),"zoom-level":e.unref(Me),"playback-speed":e.unref(ce),onSplit:e.unref(le),onDelete:e.unref(Ee),onDuplicate:e.unref(Se),onZoomIn:Hc,onZoomOut:Gc,onZoomChange:Qa,onFitToWindow:Xc,onPlayPause:e.unref(Q),onFrameForward:e.unref(De),onFrameBackward:e.unref(Qe),onSkipToStart:e.unref(We),onSkipToEnd:e.unref(ft),onSpeedChange:e.unref(Ze)},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",Hw,[e.createElementVNode("div",Gw,[e.createElementVNode("label",Jw,[V[18]||(V[18]=e.createElementVNode("span",null,"Trim start (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[5]||(V[5]=fe=>Cn.value=fe),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-start"},null,512),[[e.vModelText,Cn.value]])]),e.createElementVNode("label",Yw,[V[19]||(V[19]=e.createElementVNode("span",null,"Trim end (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[6]||(V[6]=fe=>Nn.value=fe),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-end"},null,512),[[e.vModelText,Nn.value]])]),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-start-playhead",disabled:!e.unref(Y),onClick:V[7]||(V[7]=fe=>zr("start"))}," Start = Playhead ",8,Kw),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-end-playhead",disabled:!e.unref(Y),onClick:V[8]||(V[8]=fe=>zr("end"))}," End = Playhead ",8,qw),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-trim",disabled:!e.unref(Y),onClick:jc}," Apply Trim ",8,Qw)]),e.createElementVNode("div",eb,[e.createElementVNode("label",tb,[V[20]||(V[20]=e.createElementVNode("span",null,"Quick filter",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[9]||(V[9]=fe=>en.value=fe),"data-testid":"video-dev-filter-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Gn.value,fe=>(e.openBlock(),e.createElementBlock("option",{key:fe.id,value:fe.id},e.toDisplayString(fe.name),9,nb))),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(Y)||en.value==="",onClick:Wc}," Apply Filter ",8,ob),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-clear-filters",disabled:e.unref(et).length===0,onClick:Zc}," Clear Filters ",8,ab),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(Y),onClick:V[10]||(V[10]=fe=>Hn("noise"))}," QA: Noise ",8,ib),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(Y),onClick:V[11]||(V[11]=fe=>Hn("grayscale"))}," QA: Grayscale ",8,rb)])])):e.createCommentVNode("",!0)],512)])]))],2)}}}),Ji=Be(sb,[["__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 p=Oe(l.timelineEnd);p!==null&&p>0&&p<=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)}},cb=(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 p=a.timeline[0];p&&Array.isArray(p.filters)&&p.filters.length>0&&(l=!0)}let d=!1;const u=Oe(t.trimStart)??Oe(t.trim_start)??Oe(o==null?void 0:o.start),m=Oe(t.trimEnd)??Oe(t.trim_end)??Oe(o==null?void 0:o.end);if(u!==null&&u>0&&(d=!0),m!==null&&s!==void 0&&m<s&&(d=!0),!d&&Array.isArray(a.timeline)&&a.timeline.length===1){const p=a.timeline[0];if(p){const v=Oe(p.sourceIn),g=Oe(p.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 p=a.timeline[0];if(p){const v=Oe(p.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)},db=(a,n={})=>{var f,p;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((p=n.exportMeta)==null?void 0:p.height);u!==null&&(t.height=u);const m=Ft(t.output);return t.fps=Oe(t.fps)??Oe(m==null?void 0:m.fps)??30,lb(t,n.mediaDuration??null),t},ub={key:0},mb=["data-testid"],pb={class:"ve-mobile-header"},fb=["data-testid"],hb={class:"ve-mobile-title"},vb=["data-testid","disabled"],gb={key:1,class:"ve-mobile-spacer","aria-hidden":"true"},yb={class:"ve-body"},wb=["data-testid"],bb=["aria-label"],kb={class:"ve-header"},xb={class:"ve-title"},Eb=["data-testid"],Vb={class:"ve-body"},Sb={class:"ve-footer"},Cb=["data-testid"],Nb=["data-testid","disabled"],_b=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(()=>m.value?o.savingText:o.confirmText),u=e.ref(typeof window<"u"?window.innerWidth<768:!1),m=e.ref(!1),f=e.ref(!1),p=e.ref(null),v=`temp-${Date.now()}`,g=e.computed(()=>{var z;const _=(z=o.featureFlags)==null?void 0:z.export;return typeof _=="boolean"?_: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 _={showThumbnailPicker:o.showThumbnailPicker,workflowMode:o.workflowMode,clientExportThreshold:o.clientExportThreshold,maxDuration:o.maxDuration,serverRenderEndpoint:o.serverRenderEndpoint};return o.featureFlags!==void 0&&(_.featureFlags=o.featureFlags),o.initialRecipe!==void 0&&(_.initialRecipe=o.initialRecipe),o.media!==void 0&&(_.media=o.media),_}),N=()=>{u.value=window.innerWidth<768};e.onMounted(()=>{window.addEventListener("resize",N)}),e.onUnmounted(()=>{window.removeEventListener("resize",N)}),e.onErrorCaptured(()=>(f.value=!0,!1));const w=_=>{const z=Array.isArray(_.timeline)?_.timeline:[];if(z.length===0)return 0;let H=0;for(const M of z){const $=Number(M.sourceIn),X=Number(M.sourceOut),W=Number(M.speed??1),te=Number.isFinite(W)&&W>0?W:1;if(Number.isFinite($)&&Number.isFinite(X)&&X>$){H+=(X-$)/te;continue}const ge=Number(M.timelineStart),Ne=Number(M.timelineEnd);Number.isFinite(ge)&&Number.isFinite(Ne)&&Ne>ge&&(H+=Ne-ge)}return H},h=(_,z,H)=>{let M=null;const $=new Promise((X,W)=>{M=setTimeout(()=>W(new Error(`${H} timed out after ${z}ms`)),z)});return Promise.race([_,$]).finally(()=>{M!==null&&clearTimeout(M)})},x=()=>{var $;const H=($=o.media)==null?void 0:$.duration;if(typeof H!="number"||!Number.isFinite(H)||H<=0)return 12e3;const M=Math.round(H*1e3);return Math.min(45e3,Math.max(12e3,M))},D=()=>{i("close"),i("update:open",!1)},C=()=>{m.value=!1,D()},y=_=>{i("recipe-generated",_)},S=_=>{i("export-started",_),i("save-started",_)},A=_=>{i("video-exported",_)},k=_=>{i("thumbnail-selected",_)},B=(_,z,H)=>{i("save-recipe",_);const M={recipe:_,exportPayload:z};H!==void 0&&(M.toastDescription=H),i("save-complete",M),D()},R=_=>{m.value||(i("draft-saved",_),B(_,null))},U=async()=>{var _;if(!m.value){if(f.value||p.value===null){i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),D();return}m.value=!0;try{const z=await h(p.value.saveDraft(),x(),"saveDraft");let H=null,M=!1,$;const X=w(z),W=X>0?X:((_=o.media)==null?void 0:_.duration)??0;if(g.value&&W>0&&W<=o.clientExportThreshold&&typeof p.value.exportForUpload=="function"){M=!0;const ge=Math.min(9e4,Math.max(15e3,o.clientExportThreshold*2e3));try{H=await h(p.value.exportForUpload(z),ge,"exportForUpload")}catch{H=null}}if(xc(z)&&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}M&&H===null&&($="Video edits saved. Final render will happen when you share."),B(z,H,$)}catch{i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),D()}finally{m.value=!1}}};return n({saveDraft:U}),(_,z)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[s.value?(e.openBlock(),e.createElementBlock("div",ub,[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ve-fullscreen","data-testid":r.value},[e.createElementVNode("header",pb,[e.createElementVNode("button",{class:"ve-mobile-action",type:"button","data-testid":`${r.value}-close-button`,onClick:C},e.toDisplayString(l.value),9,fb),e.createElementVNode("h2",hb,e.toDisplayString(_.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:m.value,onClick:U},e.toDisplayString(d.value),9,vb)):(e.openBlock(),e.createElementBlock("span",gb))]),e.createElementVNode("section",yb,[e.createVNode(Ji,e.mergeProps({ref_key:"videoEditorRef",ref:p,"media-uuid":E.value},T.value,{onClose:C,onDraftSaved:R,onExportStarted:S,onRecipeGenerated:y,onThumbnailSelected:k,onVideoExported:A}),null,16,["media-uuid"])])],8,mb)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"ve-overlay","data-testid":r.value,onClick:e.withModifiers(C,["self"])},[e.createElementVNode("div",{class:"ve-dialog",role:"dialog","aria-label":_.title,"aria-modal":"true"},[e.createElementVNode("header",kb,[e.createElementVNode("h2",xb,e.toDisplayString(_.title),1),e.createElementVNode("button",{class:"ve-close",type:"button","data-testid":`${r.value}-close-button`,"aria-label":"Close",onClick:C}," ✕ ",8,Eb)]),e.createElementVNode("section",Vb,[e.createVNode(Ji,e.mergeProps({ref_key:"videoEditorRef",ref:p,"media-uuid":E.value},T.value,{onClose:C,onDraftSaved:R,onExportStarted:S,onRecipeGenerated:y,onThumbnailSelected:k,onVideoExported:A}),null,16,["media-uuid"])]),e.createElementVNode("footer",Sb,[e.renderSlot(_.$slots,"footer",{close:C,isSaving:m.value,save:U},()=>[e.createElementVNode("button",{class:"ve-btn",type:"button","data-testid":`${r.value}-cancel-button`,onClick:C},e.toDisplayString(l.value),9,Cb),c.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ve-btn ve-btn--primary",type:"button","data-testid":`${r.value}-confirm-button`,disabled:m.value,onClick:U},e.toDisplayString(d.value),9,Nb)):e.createCommentVNode("",!0)],!0)])],8,bb)],8,wb))])):e.createCommentVNode("",!0)]))}}),Tb=Be(_b,[["__scopeId","data-v-0ff40919"]]),Mb={class:"video-editor-modal"},Bb={class:"video-preview-container"},Fb=["src"],Ib={class:"video-overlay-controls"},Rb=["aria-label"],$b={class:"time-display"},Db={class:"timeline-container"},Ub={class:"clip-name"},Ab={class:"timeline-time-labels"},Ob={class:"tool-tabs"},Lb=["onClick"],zb={class:"tool-panel"},Pb={key:0,class:"trim-panel"},jb={class:"trim-controls"},Wb={key:1,class:"filters-panel"},Zb={class:"filter-grid"},Xb=["onClick"],Hb={key:2,class:"text-panel"},Gb={key:3,class:"transitions-panel"},Jb={class:"transition-grid"},Yb=["onClick"],Kb={class:"action-buttons"},qb=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),m=e.ref(0),f=e.ref(null),p=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"}],N=[{id:"fade",name:"Fade"},{id:"slide",name:"Slide"},{id:"zoom",name:"Zoom"},{id:"wipe",name:"Wipe"}],w=e.ref();e.onMounted(()=>{var M,$;(M=t.media)!=null&&M.url?r.value=t.media.url:($=t.media)!=null&&$.file&&(r.value=URL.createObjectURL(t.media.file))}),e.onUnmounted(()=>{var M;(M=t.media)!=null&&M.file&&r.value&&URL.revokeObjectURL(r.value)});function h(){i.value&&(l.value=i.value.duration,m.value=l.value)}function x(){i.value&&(c.value=i.value.currentTime)}function D(){s.value=!1}function C(){i.value&&(s.value?(i.value.pause(),s.value=!1):(i.value.play(),s.value=!0))}function y(M){if(!M||isNaN(M))return"00:00";const $=Math.floor(M/60),X=Math.floor(M%60);return`${$.toString().padStart(2,"0")}:${X.toString().padStart(2,"0")}`}function S(M){if(!i.value||!w.value)return;const $=w.value.getBoundingClientRect(),te=(M.clientX-$.left)/$.width*l.value;i.value.currentTime=Math.max(0,Math.min(te,l.value))}function A(){u.value=c.value}function k(){m.value=c.value}function B(){u.value=0,m.value=l.value}function R(M){f.value=M;const $=W=>{if(!f.value||!w.value)return;const te=w.value.getBoundingClientRect(),ee=(W.clientX-te.left)/te.width*l.value;f.value==="start"?u.value=Math.max(0,Math.min(ee,m.value-1)):m.value=Math.max(u.value+1,Math.min(ee,l.value))},X=()=>{f.value=null,document.removeEventListener("mousemove",$),document.removeEventListener("mouseup",X)};document.addEventListener("mousemove",$),document.addEventListener("mouseup",X)}function U(M){if(v.value=M,!i.value)return;const $={none:"none",grayscale:"grayscale(100%)",sepia:"sepia(100%)",blur:"blur(5px)",brightness:"brightness(150%)",contrast:"contrast(150%)"};i.value.style.filter=$[M]||"none"}function _(){}function z(M){}function H(){const M={timeline:[{id:d.value,url:r.value,startTime:0,endTime:l.value,sourceIn:u.value,sourceOut:m.value,track:0}],filters:v.value?[{type:v.value}]:[],textOverlays:g.value?[{content:g.value}]:[],duration:m.value-u.value};o("save",M)}return(M,$)=>(e.openBlock(),e.createElementBlock("div",Mb,[e.createElementVNode("div",Bb,[e.createElementVNode("video",{ref_key:"videoElement",ref:i,class:"video-preview",src:r.value,onLoadedmetadata:h,onTimeupdate:x,onEnded:D,controls:""},null,40,Fb),e.createElementVNode("div",Ib,[e.createElementVNode("button",{class:"play-pause-btn",onClick:C,"aria-label":s.value?"Pause":"Play"},[e.createVNode(e.unref(I.IonIcon),{icon:s.value?e.unref(_u):e.unref(Fu)},null,8,["icon"])],8,Rb),e.createElementVNode("div",$b,e.toDisplayString(y(c.value))+" / "+e.toDisplayString(y(l.value)),1)])]),e.createElementVNode("div",Db,[e.createElementVNode("div",{class:"timeline-track",onClick:S,ref_key:"timelineTrack",ref:w},[e.createElementVNode("div",{class:"timeline-clip",style:e.normalizeStyle({left:`${u.value/l.value*100}%`,right:`${100-m.value/l.value*100}%`})},[e.createElementVNode("span",Ub,e.toDisplayString(d.value),1)],4),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:`${c.value/l.value*100}%`})},null,4),p.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"trim-handle trim-start",style:e.normalizeStyle({left:`${u.value/l.value*100}%`}),onMousedown:$[0]||($[0]=X=>R("start"))},null,36)):e.createCommentVNode("",!0),p.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"trim-handle trim-end",style:e.normalizeStyle({left:`${m.value/l.value*100}%`}),onMousedown:$[1]||($[1]=X=>R("end"))},null,36)):e.createCommentVNode("",!0)],512),e.createElementVNode("div",Ab,[e.createElementVNode("span",null,e.toDisplayString(y(0)),1),e.createElementVNode("span",null,e.toDisplayString(y(l.value)),1)])]),e.createElementVNode("div",Ob,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,X=>e.createElementVNode("button",{key:X.id,class:e.normalizeClass(["tool-tab",{active:p.value===X.id}]),onClick:W=>p.value=X.id},[e.createVNode(e.unref(I.IonIcon),{icon:X.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(X.label),1)],10,Lb)),64))]),e.createElementVNode("div",zb,[p.value==="trim"?(e.openBlock(),e.createElementBlock("div",Pb,[$[7]||($[7]=e.createElementVNode("h3",null,"Trim Video",-1)),$[8]||($[8]=e.createElementVNode("p",null,"Click and drag on the timeline to set trim points",-1)),e.createElementVNode("div",jb,[e.createElementVNode("button",{class:"btn-trim",onClick:A},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(ss)},null,8,["icon"]),$[4]||($[4]=e.createTextVNode(" Set Start ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:k},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(ss)},null,8,["icon"]),$[5]||($[5]=e.createTextVNode(" Set End ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:B},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Dn)},null,8,["icon"]),$[6]||($[6]=e.createTextVNode(" Clear ",-1))])])])):p.value==="filters"?(e.openBlock(),e.createElementBlock("div",Wb,[$[9]||($[9]=e.createElementVNode("h3",null,"Filters",-1)),e.createElementVNode("div",Zb,[(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:W=>U(X.id)},e.toDisplayString(X.name),11,Xb)),64))])])):p.value==="text"?(e.openBlock(),e.createElementBlock("div",Hb,[$[10]||($[10]=e.createElementVNode("h3",null,"Text Overlay",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[2]||($[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:_},"Add Text")])):p.value==="transitions"?(e.openBlock(),e.createElementBlock("div",Gb,[$[11]||($[11]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",Jb,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(N,X=>e.createElementVNode("button",{key:X.id,class:"transition-option",onClick:W=>(X.id,void 0)},e.toDisplayString(X.name),9,Yb)),64))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Kb,[e.createElementVNode("button",{class:"btn-cancel",onClick:$[3]||($[3]=X=>M.$emit("cancel"))},"CANCEL"),e.createElementVNode("button",{class:"btn-save",onClick:H},"SAVE")])]))}}),Qb=Be(qb,[["__scopeId","data-v-b933f33b"]]),e2={class:"time-label"},t2=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),m=l%(c*5)===0;s.push({time:l,position:d,label:u,major:m})}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",e2,e.toDisplayString(l.label),1),e.createElementVNode("div",{class:e.normalizeClass(["time-tick",{major:l.major}])},null,2)],4))),128))],4))}}),n2=Be(t2,[["__scopeId","data-v-0ef9c910"]]),o2=["data-track-index"],a2={class:"track-header"},i2={class:"track-label"},r2={class:"track-controls"},s2=["data-testid","aria-label"],l2=["data-testid","onMousedown","onClick"],c2={class:"clip-content"},d2={class:"clip-name"},u2={key:0,class:"clip-thumbnail"},m2=["src","alt"],p2=["onMousedown","aria-label"],f2=["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,N=E.timelineStart/t.duration*100,w=T/t.duration*100;return{left:`${N}%`,width:`${w}%`,backgroundColor:u(E)}}function u(E){const T=["#4A90E2","#7ED321","#F5A623","#BD10E0","#9013FE","#50E3C2","#B8E986","#F8E71C"],N=parseInt(E.id.replace(/\D/g,""))%T.length;return T[N]}function m(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 p(){r.value=!r.value}function v(E,T){if(c.value)return;s.value=!0;const N=T.clientX,w=E.timelineStart,h=D=>{if(!s.value)return;const C=D.clientX-N,y=parseFloat(l.value.width),S=C/(t.zoom*100)*(t.duration/y),A=Math.max(0,w+S);o("clip-move",E.id,A)},x=()=>{s.value=!1,document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",x)};document.addEventListener("mousemove",h),document.addEventListener("mouseup",x)}function g(E,T,N){c.value=T;const w=N.clientX,h=E.sourceIn,x=E.sourceOut,D=y=>{if(!c.value)return;const S=y.clientX-w,A=parseFloat(l.value.width),k=S/(t.zoom*100)*(t.duration/A);if(c.value==="start"){const B=Math.max(0,h+k);o("clip-trim",E.id,B,x)}else{const B=Math.max(h+1,x+k);o("clip-trim",E.id,h,B)}},C=()=>{c.value=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",C)};document.addEventListener("mousemove",D),document.addEventListener("mouseup",C)}return(E,T)=>(e.openBlock(),e.createElementBlock("div",{class:"video-track","data-track-index":E.trackIndex},[e.createElementVNode("div",a2,[e.createElementVNode("span",i2,"Track "+e.toDisplayString(E.trackIndex+1),1),e.createElementVNode("div",r2,[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:p},[e.createVNode(e.unref(I.IonIcon),{icon:r.value?e.unref(Hu):e.unref(Zu)},null,8,["icon"])],8,s2)):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,N=>(e.openBlock(),e.createElementBlock("div",{key:N.id,class:e.normalizeClass(["timeline-clip",{selected:N.id===i.value}]),style:e.normalizeStyle(d(N)),"data-testid":`clip-${N.id}`,onMousedown:w=>v(N,w),onClick:w=>f(N)},[e.createElementVNode("div",c2,[e.createElementVNode("span",d2,e.toDisplayString(m(N)),1),N.thumbnail?(e.openBlock(),e.createElementBlock("div",u2,[e.createElementVNode("img",{src:N.thumbnail,alt:m(N)},null,8,m2)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"trim-handle trim-start",onMousedown:e.withModifiers(w=>g(N,"start",w),["stop"]),"aria-label":`Trim start of ${m(N)}`},null,40,p2),e.createElementVNode("div",{class:"trim-handle trim-end",onMousedown:e.withModifiers(w=>g(N,"end",w),["stop"]),"aria-label":`Trim end of ${m(N)}`},null,40,f2)],46,l2))),128))],4)],8,o2))}}),v2=Be(h2,[["__scopeId","data-v-48e480d2"]]),g2={class:"video-timeline"},y2={class:"timeline-tracks"},w2=["aria-label","aria-valuenow","aria-valuemax"],b2={class:"timeline-controls"},k2={class:"zoom-level"},x2=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(h=>h.track||0));return Array(w+1).fill(null)}),d=e.computed(()=>`${t.currentTime/t.duration*100}%`);function u(w){return t.clips.filter(h=>(h.track||0)===w)}function m(w){const h=Math.floor(w/60),x=Math.floor(w%60);return`${h}:${x.toString().padStart(2,"0")}`}function f(w,h){o("clip-move",w,h)}function p(w,h,x){o("clip-trim",w,h,x)}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=x=>{if(!s.value||!c.value)return;const D=c.value.getBoundingClientRect(),S=Math.max(0,Math.min(x.clientX-D.left,D.width))/D.width*t.duration;o("seek",S)},h=()=>{s.value=!1,document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",h)};document.addEventListener("mousemove",w),document.addEventListener("mouseup",h)}function N(w){let h=t.currentTime;switch(w.key){case"ArrowLeft":h=Math.max(0,t.currentTime-1);break;case"ArrowRight":h=Math.min(t.duration,t.currentTime+1);break;case"Home":h=0;break;case"End":h=t.duration;break;default:return}w.preventDefault(),o("seek",h)}return e.onMounted(()=>{c.value=document.querySelector(".video-timeline")}),e.onUnmounted(()=>{}),(w,h)=>(e.openBlock(),e.createElementBlock("div",g2,[e.createVNode(n2,{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,(x,D)=>(e.openBlock(),e.createBlock(v2,{key:`track-${D}`,"data-testid":`track-${D}`,clips:u(D),"track-index":D,zoom:i.value,duration:w.duration,onClipMove:f,onClipTrim:p,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 ${m(w.currentTime)}`,role:"slider","aria-valuenow":w.currentTime,"aria-valuemax":w.duration,tabindex:"0",onKeydown:N},null,44,w2),e.createElementVNode("div",b2,[e.createElementVNode("button",{"data-testid":"btn-zoom-in","aria-label":"Zoom in",onClick:g},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(qi)},null,8,["icon"])]),e.createElementVNode("span",k2,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(I.IonIcon),{icon:e.unref(Au)},null,8,["icon"])])])]))}}),E2=Be(x2,[["__scopeId","data-v-001df415"]]),V2={class:"video-filters-panel"},S2={class:"filter-controls"},C2=["for"],N2={class:"filter-slider-group"},_2=["id","onUpdate:modelValue","min","max","step","data-testid","aria-label","aria-valuenow","aria-valuemin","aria-valuemax","onInput"],T2={class:"filter-value"},M2={class:"filter-actions"},B2={key:0,class:"filter-presets"},F2={class:"preset-list"},I2=["data-testid","aria-label","onClick"],R2=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,p)=>(f[p.type]=p.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,p){switch(f){case"brightness":case"contrast":case"saturation":case"sepia":case"grayscale":return`${p}%`;case"hue":return`${p}°`;case"blur":case"sharpen":return p.toFixed(1);default:return p.toString()}}function c(f){return["brightness","contrast","saturation","hue","blur","sharpen","sepia","grayscale"].includes(f)}function l(f){if(!c(f))return;const p={id:`filter-${f}`,filterId:f,params:{value:i[f]},intensity:1};t("filter-change",p)}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 p={id:`custom-${Date.now()}`,name:f,values:{...i}};r.value.push(p)}function m(f){Object.entries(f.values).forEach(([p,v])=>{i[p]=v,l(p)})}return(f,p)=>(e.openBlock(),e.createElementBlock("div",V2,[p[3]||(p[3]=e.createElementVNode("h3",null,"Video Filters",-1)),e.createElementVNode("div",S2,[(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,C2),e.createElementVNode("div",N2,[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,_2),[[e.vModelText,i[v.type],void 0,{number:!0}]]),e.createElementVNode("span",T2,e.toDisplayString(s(v.type,i[v.type])),1)])])),64))]),e.createElementVNode("div",M2,[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(I.IonIcon),{icon:e.unref(Ln)},null,8,["icon"]),p[0]||(p[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(I.IonIcon),{icon:e.unref(er)},null,8,["icon"]),p[1]||(p[1]=e.createTextVNode(" Save as Preset ",-1))])]),r.value.length>0?(e.openBlock(),e.createElementBlock("div",B2,[p[2]||(p[2]=e.createElementVNode("h4",null,"Presets",-1)),e.createElementVNode("div",F2,[(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=>m(v)},e.toDisplayString(v.name),9,I2))),128))])])):e.createCommentVNode("",!0)]))}}),$2=Be(R2,[["__scopeId","data-v-5ad2ac63"]]),D2={class:"video-text-panel"},U2={class:"text-input-group"},A2={class:"text-options"},O2={class:"option-row"},L2={class:"option-row"},z2={class:"option-row"},P2={class:"option-row"},j2={class:"checkbox-label"},W2={class:"option-row"},Z2={class:"text-overlay-list"},X2={key:0,class:"empty-state"},H2=["data-testid"],G2={class:"overlay-preview"},J2={class:"overlay-controls"},Y2=["data-testid","aria-label","onClick"],K2=["data-testid","aria-label","onClick"],q2=["data-testid","aria-label","onClick"],Q2=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(m=>m.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",D2,[u[17]||(u[17]=e.createElementVNode("h3",null,"Text Overlays",-1)),e.createElementVNode("div",U2,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=m=>i.text=m),type:"text",placeholder:"Enter text...",class:"text-input","data-testid":"input-text","aria-label":"Text overlay content",onKeyup:e.withKeys(r,["enter"])},null,544),[[e.vModelText,i.text]]),e.createElementVNode("button",{class:"add-text-btn","data-testid":"btn-add-text","aria-label":"Add text overlay",onClick:r},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(qi)},null,8,["icon"]),u[7]||(u[7]=e.createTextVNode(" Add ",-1))])]),e.createElementVNode("div",A2,[e.createElementVNode("div",O2,[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]=m=>i.fontFamily=m),"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",L2,[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]=m=>i.fontSize=m),type:"number",min:"10",max:"200","data-testid":"input-font-size"},null,512),[[e.vModelText,i.fontSize,void 0,{number:!0}]])]),e.createElementVNode("div",z2,[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]=m=>i.color=m),type:"color","data-testid":"input-text-color"},null,512),[[e.vModelText,i.color]])]),e.createElementVNode("div",P2,[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]=m=>i.backgroundColor=m),type:"color","data-testid":"input-bg-color"},null,512),[[e.vModelText,i.backgroundColor]]),e.createElementVNode("label",j2,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[5]||(u[5]=m=>i.hasBackground=m),type:"checkbox","data-testid":"checkbox-bg"},null,512),[[e.vModelCheckbox,i.hasBackground]]),u[12]||(u[12]=e.createTextVNode(" Enable ",-1))])]),e.createElementVNode("div",W2,[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]=m=>i.animation=m),"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",Z2,[u[16]||(u[16]=e.createElementVNode("h4",null,"Active Overlays",-1)),o.value.length===0?(e.openBlock(),e.createElementBlock("div",X2," No text overlays added yet ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(m,f)=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:"text-overlay-item","data-testid":`overlay-${f}`},[e.createElementVNode("div",G2,[e.createElementVNode("span",{style:e.normalizeStyle({fontFamily:m.fontFamily,fontSize:`${Math.min(m.fontSize/4,16)}px`,color:m.color})},e.toDisplayString(m.text),5)]),e.createElementVNode("div",J2,[e.createElementVNode("button",{class:"edit-btn","data-testid":`btn-edit-${f}`,"aria-label":`Edit overlay: ${m.text}`,onClick:p=>c(m)},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(wu)},null,8,["icon"])],8,Y2),e.createElementVNode("button",{class:"duplicate-btn","data-testid":`btn-duplicate-${f}`,"aria-label":`Duplicate overlay: ${m.text}`,onClick:p=>l(m)},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(yu)},null,8,["icon"])],8,K2),e.createElementVNode("button",{class:"remove-btn","data-testid":`btn-remove-${f}`,"aria-label":`Remove overlay: ${m.text}`,onClick:p=>s(m.id)},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(zu)},null,8,["icon"])],8,q2)])],8,H2))),128))])]))}}),ek=Be(Q2,[["__scopeId","data-v-4d240e1e"]]),tk={class:"video-tools-panel"},nk={class:"tool-tabs"},ok=["data-testid","aria-label","aria-selected","onClick"],ak={class:"tool-content"},ik={key:0,class:"trim-panel",role:"tabpanel","aria-label":"Trim controls"},rk={class:"trim-actions"},sk={key:3,class:"transitions-panel",role:"tabpanel","aria-label":"Transition controls"},lk={class:"transition-types"},ck=["data-testid","aria-label","onClick"],dk={class:"transition-preview"},uk=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",tk,[e.createElementVNode("div",nk,[(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(I.IonIcon),{icon:r.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(r.name),1)],10,ok)),64))]),e.createElementVNode("div",ak,[o.activeTool==="trim"?(e.openBlock(),e.createElementBlock("div",ik,[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",rk,[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(I.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(I.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(I.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($2,{key:1,onFilterChange:i[3]||(i[3]=r=>o.$emit("filter-change",r))})):e.createCommentVNode("",!0),o.activeTool==="text"?(e.openBlock(),e.createBlock(ek,{key:2,onTextAdd:i[4]||(i[4]=r=>o.$emit("text-add",r))})):e.createCommentVNode("",!0),o.activeTool==="transitions"?(e.openBlock(),e.createElementBlock("div",sk,[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",dk,[e.createVNode(e.unref(I.IonIcon),{icon:r.icon},null,8,["icon"])]),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],8,ck)),64))])])):e.createCommentVNode("",!0)])]))}}),mk=Be(uk,[["__scopeId","data-v-fc135306"]]),pk={class:"video-export-panel"},fk={class:"export-presets"},hk=["value"],vk={key:0,class:"preset-details"},gk={class:"detail-row"},yk={class:"detail-row"},wk={class:"detail-row"},bk={class:"advanced-options"},kk={class:"options-content"},xk={class:"option-group"},Ek={class:"option-group"},Vk={class:"option-group"},Sk=["disabled"],Ck={key:1,class:"export-progress"},Nk={class:"progress-message"},_k={class:"progress-bar"},Tk=["aria-valuenow"],Mk={class:"progress-percentage"},Bk=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",pk,[u[14]||(u[14]=e.createElementVNode("h3",null,"Export Video",-1)),e.createElementVNode("div",fk,[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]=m=>i.value=m),"data-testid":"preset-select","aria-label":"Select export preset"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.presets,m=>(e.openBlock(),e.createElementBlock("option",{key:m.id,value:m.id},e.toDisplayString(m.name),9,hk))),128))],512),[[e.vModelSelect,i.value]])]),s.value?(e.openBlock(),e.createElementBlock("div",vk,[e.createElementVNode("div",gk,[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",wk,[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",bk,[u[12]||(u[12]=e.createElementVNode("summary",null,"Advanced Options",-1)),e.createElementVNode("div",kk,[e.createElementVNode("div",xk,[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]=m=>r.quality=m),"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",Ek,[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]=m=>r.bitrate=m),type:"number",min:"1",max:"50","data-testid":"bitrate-input"},null,512),[[e.vModelText,r.bitrate,void 0,{number:!0}]])]),e.createElementVNode("div",Vk,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[3]||(u[3]=m=>r.includeAudio=m),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(I.IonSpinner),{key:0,name:"crescent"})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(vo)},null,8,["icon"]),u[13]||(u[13]=e.createTextVNode(" Export Video ",-1))],64))],8,Sk),d.isExporting?(e.openBlock(),e.createElementBlock("div",Ck,[e.createElementVNode("div",Nk,e.toDisplayString(c.value),1),e.createElementVNode("div",_k,[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,Tk)]),e.createElementVNode("div",Mk,e.toDisplayString(d.exportProgress)+"% ",1)])):e.createCommentVNode("",!0)]))}}),Fk=Be(Bk,[["__scopeId","data-v-5caf8fe6"]]),Ik=["data-testid"],Rk={class:"progress-header"},$k={class:"file-info"},Dk={class:"file-details"},Uk={class:"file-name"},Ak={class:"file-meta"},Ok={class:"file-size"},Lk={key:0,class:"separator"},zk={key:1,class:"upload-speed"},Pk={key:2,class:"separator"},jk={key:3,class:"time-remaining"},Wk={class:"progress-actions"},Zk={key:0,class:"status-icon completed","data-testid":"video-upload-status-completed"},Xk={key:1,class:"status-icon error","data-testid":"video-upload-status-error"},Hk={key:2,class:"status-icon processing","data-testid":"video-upload-status-processing",role:"status","aria-label":"Processing video"},Gk=["aria-valuenow","aria-label"],Jk={class:"progress-bar"},Yk={class:"progress-percent"},Kk={key:1,class:"error-message","data-testid":"video-upload-error"},qk={key:2,class:"thumbnail-preview","data-testid":"video-upload-thumbnail"},Qk=["src","alt"],ex={key:0,class:"video-duration"},tx=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 p=Math.floor(f/60);return p<60?`${p}m ${Math.round(f%60)}s`:`${Math.floor(p/60)}h ${p%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 p=["B","KB","MB","GB","TB"],v=1024,g=Math.floor(Math.log(f)/Math.log(v));return`${(f/Math.pow(v,g)).toFixed(1)} ${p[g]}`}function u(f){if(f===0)return"0 B/s";const p=["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)} ${p[g]}`}function m(f){const p=Math.floor(f/3600),v=Math.floor(f%3600/60),g=Math.floor(f%60);return p>0?`${p}:${v.toString().padStart(2,"0")}:${g.toString().padStart(2,"0")}`:`${v}:${g.toString().padStart(2,"0")}`}return(f,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["upload-progress-item",t.value]),"data-testid":`video-upload-progress-${f.upload.id}`},[e.createElementVNode("div",Rk,[e.createElementVNode("div",$k,[e.createVNode(e.unref(I.IonIcon),{icon:o.value,class:"file-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("div",Dk,[e.createElementVNode("h4",Uk,e.toDisplayString(f.upload.filename),1),e.createElementVNode("p",Ak,[e.createElementVNode("span",Ok,e.toDisplayString(d(f.upload.bytesTotal||0)),1),f.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",Lk,"•")):e.createCommentVNode("",!0),f.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",zk,e.toDisplayString(u(f.upload.uploadSpeed||0)),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",Pk,"•")):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",jk,e.toDisplayString(s.value)+" remaining ",1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",Wk,[f.upload.status==="completed"?(e.openBlock(),e.createElementBlock("div",Zk,[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(ll)},null,8,["icon"])])):f.upload.status==="error"?(e.openBlock(),e.createElementBlock("div",Xk,[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(du),"aria-hidden":"true"},null,8,["icon"])])):f.upload.status==="processing"?(e.openBlock(),e.createElementBlock("div",Hk,[e.createVNode(e.unref(I.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),f.upload.status==="uploading"?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:3,fill:"clear",size:"small",onClick:p[0]||(p[0]=v=>f.$emit("cancel")),"data-testid":"btn-cancel-video-upload","aria-label":"Cancel upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Dn),slot:"icon-only"},null,8,["icon"])]),_:1})):f.upload.status==="error"?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:4,fill:"clear",size:"small",onClick:p[1]||(p[1]=v=>f.$emit("retry")),"data-testid":"btn-retry-video-upload","aria-label":"Retry upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Ln),slot:"icon-only"},null,8,["icon"])]),_:1})):f.upload.status==="completed"?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:5,fill:"clear",size:"small",onClick:p[2]||(p[2]=v=>f.$emit("remove")),"data-testid":"btn-remove-video-upload","aria-label":"Remove from list"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.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",Jk,[e.createElementVNode("div",{class:e.normalizeClass(["progress-fill",{indeterminate:f.upload.status==="processing"}]),style:e.normalizeStyle({width:r.value+"%"})},null,6)]),e.createElementVNode("span",Yk,e.toDisplayString(Math.round(r.value))+"%",1)],8,Gk)):e.createCommentVNode("",!0),f.upload.error?(e.openBlock(),e.createElementBlock("div",Kk,[e.createVNode(e.unref(I.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",qk,[e.createElementVNode("img",{src:c.value,alt:f.upload.filename},null,8,Qk),l.value?(e.openBlock(),e.createElementBlock("div",ex,e.toDisplayString(m(l.value)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,Ik))}}),nx=Be(tx,[["__scopeId","data-v-9eacbf91"]]),Ei=4,ox=500,ax=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 ix(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 rx(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 sx(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 cx(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 dx(a,n){return a instanceof Error?a:new Error(n)}function ux(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=ox*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||!ax.has(o.status)||t>=Ei)return o;await Qs(qs(t))}catch(o){if(!ux(o)||t>=Ei)throw o;await Qs(qs(t))}throw new Error(`${a} failed after retry attempts`)}function mx(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 k=Array.from(n.value.values());return k.length===0?0:k.reduce((R,U)=>R+U.progress,0)/k.length});function d(k){o.value=k}function u(){}async function m(k){var R;const B=k.filter(U=>f(U));if(B.length!==0&&((R=a.onFilesSelected)==null||R.call(a,B),a.autoUpload!==!1))for(const U of B)await p(U)}function f(k){return!(a.maxFileSize&&k.size>a.maxFileSize||a.allowedFormats&&a.allowedFormats.length>0&&!a.allowedFormats.includes(k.type))}async function p(k){var U,_,z;const B=A(k);if(n.value.has(B)){const H=n.value.get(B);if((H==null?void 0:H.status)==="uploading")return}const R={id:B,file:k,filename:k.name,progress:0,status:"pending",startedAt:new Date,bytesTotal:k.size,bytesUploaded:0};n.value.set(R.id,R),t.value.add(R.id);try{R.status="uploading",(U=a.onUploadStart)==null||U.call(a,R);const H=await v(k);a.resumable===!0||H.resumable===!0?await E(R,H):await g(R,H),R.status="processing",R.progress=100;const $=await x(H.media_uuid);R.status="completed",R.media=$,(_=a.onUploadComplete)==null||_.call(a,$)}catch(H){if(R.status!=="cancelled"){const M=dx(H,"Upload failed");R.status="error",R.error=M.message,(z=a.onUploadError)==null||z.call(a,M,R)}}finally{t.value.delete(R.id),i.delete(R.id),r.delete(R.id)}}async function v(k){if(!o.value)throw new Error("API client not configured");const B={collection:a.collection||"videos",filename:k.name,size:k.size,mime_type:k.type,...a.ownerUuid!==void 0?{ownerUuid:a.ownerUuid}:{},...a.ownerType!==void 0?{ownerType:a.ownerType}:{}},R=await o.value.post("/api/v1/video/upload",B);return ix(R)}async function g(k,B){const R=new XMLHttpRequest,U=Ks(B),_=Zo(B.headers);return new Promise((z,H)=>{R.upload.addEventListener("progress",M=>{var $;M.lengthComputable&&(Xo(k,M.loaded),($=a.onUploadProgress)==null||$.call(a,k))}),R.addEventListener("load",()=>{i.delete(k.id),R.status>=200&&R.status<300?z():H(new Error(`Upload failed with status ${R.status}`))}),R.addEventListener("error",()=>{i.delete(k.id),H(new Error("Upload failed"))}),R.addEventListener("abort",()=>{i.delete(k.id),H(new Error("Upload cancelled"))}),R.open(U,B.upload_url),Object.entries(_).forEach(([M,$])=>{R.setRequestHeader(M,$)}),!Object.keys(_).some(M=>M.toLowerCase()==="content-type")&&k.file.type&&R.setRequestHeader("Content-Type",k.file.type),i.set(k.id,R),R.send(k.file)})}async function E(k,B){var H;if(sx(B)){await T(k,B);return}const R=a.chunkSize||5*1024*1024,U=N(k.file,R),_=new AbortController;r.set(k.id,_);const z=await h(B.upload_id);z&&(U.forEach(M=>{M.end<=z.bytesUploaded&&(M.uploaded=!0)}),Xo(k,z.bytesUploaded));for(const M of U)M.uploaded||(await w(k,B,M,_),Xo(k,M.end),(H=a.onUploadProgress)==null||H.call(a,k))}async function T(k,B){var X;const R=new AbortController;r.set(k.id,R);const U={...Zo(B.headers),"Tus-Resumable":"1.0.0","Upload-Length":String(k.file.size),"Upload-Metadata":cx(k,B)},_=await el("Resumable upload initialization",()=>fetch(B.upload_url,{method:"POST",headers:U,signal:R.signal}));if(!_.ok)throw new Error(`Failed to initialize resumable upload: ${_.status}`);const z=_.headers.get("Location");if(!z)throw new Error("Resumable upload endpoint did not return upload location");const H=new URL(z,B.upload_url).toString(),M=a.chunkSize||5*1024*1024;let $=0;for(;$<k.file.size;){const W=Math.min($+M,k.file.size),te=k.file.slice($,W),ge={...Zo(B.headers),"Tus-Resumable":"1.0.0","Upload-Offset":String($),"Content-Type":"application/offset+octet-stream"},Ne=await el("Resumable chunk upload",()=>fetch(H,{method:"PATCH",headers:ge,body:te,signal:R.signal}));if(Ne.status===409){const F=Number(Ne.headers.get("Upload-Offset")??"-1");if(Number.isFinite(F)&&F>=0){$=F;continue}}if(!Ne.ok)throw new Error(`Resumable chunk upload failed: ${Ne.status}`);const ee=Number(Ne.headers.get("Upload-Offset")??String(W));$=Number.isFinite(ee)&&ee>$?ee:W,Xo(k,$),(X=a.onUploadProgress)==null||X.call(a,k)}}function N(k,B){const R=[];let U=0,_=0;for(;U<k.size;){const z=Math.min(U+B,k.size);R.push({start:U,end:z,blob:k.slice(U,z),index:_,uploaded:!1}),U=z,_++}return R}async function w(k,B,R,U){const _={...Zo(B.headers),"Content-Range":`bytes ${R.start}-${R.end-1}/${k.file.size}`,"Content-Type":k.file.type||"application/octet-stream"},z=await fetch(B.upload_url,{method:Ks(B),headers:_,body:R.blob,signal:U.signal});if(!z.ok)throw new Error(`Chunk upload failed: ${z.status}`);R.uploaded=!0}async function h(k){return null}async function x(k){if(!o.value)throw new Error("API client not configured");const B=60;let R=0;for(;R<B;){const U=await o.value.get(`/api/v1/video/${k}`),_=rx(U),z=String(_.processing_status);if(z==="ready")return _;if(z==="failed"||z==="error")throw new Error("Video processing failed");await new Promise(H=>{window.setTimeout(H,5e3)}),R++}throw new Error("Video processing timeout")}function D(k){const B=n.value.get(k);if(!B)return;const R=i.get(k);R&&(R.abort(),i.delete(k));const U=r.get(k);U&&(U.abort(),r.delete(k)),B.status="cancelled",B.error="Upload cancelled",t.value.delete(k)}async function C(k){const B=n.value.get(k);B&&(B.status="pending",B.error="",B.progress=0,B.bytesUploaded=0,await p(B.file))}function y(k){n.value.delete(k),t.value.delete(k),i.delete(k),r.delete(k)}function S(){Array.from(n.value.entries()).forEach(([k,B])=>{B.status==="completed"&&n.value.delete(k)})}function A(k){return`${k.name}-${k.size}-${Date.now()}`}return{uploads:c,isUploading:s,totalProgress:l,openFilePicker:u,handleFileSelect:m,validateFile:f,startUpload:p,cancelUpload:D,retryUpload:C,removeUpload:y,clearCompleted:S,setApiClient:d}}const px=["accept","multiple"],fx={key:0,class:"upload-trigger","data-testid":"video-uploader-trigger"},hx=["onKeydown"],vx={key:1,class:"upload-list","data-testid":"video-upload-list"},gx={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:m,setApiClient:f}=mx({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:h=>o("upload-start",h),onUploadProgress:h=>o("upload-progress",h),onUploadComplete:h=>o("upload-complete",h),onUploadError:(h,x)=>o("upload-error",h,x),onFilesSelected:h=>o("files-selected",h)});t.apiClient&&f(t.apiClient);const p=e.computed(()=>t.allowedFormats.join(",")),v=e.computed(()=>t.multiple||s.value.length===0);function g(){i.value&&i.value.click()}function E(h){const x=h.target,D=Array.from(x.files||[]);D.length>0&&(l(D),x.value="")}function T(h){var C;h.preventDefault(),r.value=!1;const D=Array.from(((C=h.dataTransfer)==null?void 0:C.files)||[]).filter(y=>y.type.startsWith("video/"));D.length>0&&l(D)}function N(h){var x;h.preventDefault(),(x=h.dataTransfer)!=null&&x.types.includes("Files")&&(r.value=!0)}function w(h){h.target.closest(".video-uploader")||(r.value=!1)}return e.onMounted(()=>{document.addEventListener("dragover",N),document.addEventListener("dragleave",w),document.addEventListener("drop",h=>h.preventDefault())}),e.onUnmounted(()=>{document.removeEventListener("dragover",N),document.removeEventListener("dragleave",w),document.removeEventListener("drop",h=>h.preventDefault())}),(h,x)=>(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:p.value,multiple:h.multiple,onChange:E,"data-testid":"video-uploader-input","aria-label":"Select video files to upload",hidden:""},null,40,px),!e.unref(c)||v.value?(e.openBlock(),e.createElementBlock("div",fx,[e.renderSlot(h.$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(I.IonIcon),{icon:e.unref(vl),class:"upload-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("h3",null,e.toDisplayString(h.label),1),e.createElementVNode("p",null,e.toDisplayString(h.description),1),e.createVNode(e.unref(I.IonButton),{size:"small","data-testid":"btn-select-video","aria-label":"Select video file"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(qi),slot:"start","aria-hidden":"true"},null,8,["icon"]),x[2]||(x[2]=e.createTextVNode(" Select Video ",-1))]),_:1})],40,hx)],!0)])):e.createCommentVNode("",!0),e.unref(s).length>0?(e.openBlock(),e.createElementBlock("div",vx,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),D=>(e.openBlock(),e.createBlock(nx,{key:D.id,upload:D,onCancel:C=>e.unref(d)(D.id),onRetry:C=>e.unref(u)(D.id),onRemove:C=>e.unref(m)(D.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:x[0]||(x[0]=e.withModifiers(()=>{},["prevent"])),onDragleave:x[1]||(x[1]=D=>r.value=!1)},[e.createElementVNode("div",gx,[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(vo),"aria-hidden":"true"},null,8,["icon"]),x[3]||(x[3]=e.createElementVNode("p",null,"Drop video files here",-1))])],32)):e.createCommentVNode("",!0)],2))}}),wx=Be(yx,[["__scopeId","data-v-ea7587f7"]]),bx=["aria-valuenow","aria-valuemax","aria-label"],kx={class:"progress-bar"},xx={class:"time-display","data-testid":"video-time-display"},Ex={class:"current-time"},Vx={class:"duration"},Sx={class:"control-buttons"},Cx={class:"controls-left"},Nx=["aria-label"],_x={class:"controls-center"},Tx={key:0,class:"volume-controls"},Mx=["aria-label"],Bx=["value"],Fx={class:"controls-right"},Ix={key:0,class:"quality-selector"},Rx=["aria-expanded"],$x={class:"quality-label"},Dx={key:0,class:"quality-menu","data-testid":"video-quality-menu",role:"menu"},Ux=["data-testid","aria-label","onClick"],Ax=["aria-label"],Ox=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=I.isPlatform("mobile"),l="pictureInPictureEnabled"in document,d=e.computed(()=>({width:`${t.currentTime/t.duration*100}%`})),u=e.computed(()=>({left:`${t.currentTime/t.duration*100}%`})),m=e.computed(()=>{if(!t.buffered||t.buffered.length===0)return{width:"0%"};for(let h=0;h<t.buffered.length;h++){const x=t.buffered.start(h),D=t.buffered.end(h);if(t.currentTime>=x&&t.currentTime<=D)return{width:`${D/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 p=null;function v(){i.value=!0,g()}function g(){p&&clearTimeout(p),t.playing&&!c&&(p=setTimeout(()=>{i.value=!1},3e3))}function E(h){if(!s.value||t.isLive)return;const x=s.value.getBoundingClientRect(),C=(h.clientX-x.left)/x.width*t.duration;o("seek",Math.max(0,Math.min(C,t.duration)))}function T(h){const x=h.target;o("setVolume",parseInt(x.value))}function N(h){o("selectQuality",h),r.value=!1}function w(h){if(!isFinite(h))return"0:00";const x=Math.floor(h/3600),D=Math.floor(h%3600/60),C=Math.floor(h%60);return x>0?`${x}:${D.toString().padStart(2,"0")}:${C.toString().padStart(2,"0")}`:`${D}:${C.toString().padStart(2,"0")}`}return e.onMounted(()=>{document.addEventListener("mousemove",v),g()}),e.onUnmounted(()=>{document.removeEventListener("mousemove",v),p&&clearTimeout(p)}),(h,x)=>(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(h.currentTime),"aria-valuemin":"0","aria-valuemax":Math.round(h.duration),"aria-label":h.isLive?"Live stream":"Video progress",tabindex:"0",onClick:E},[e.createElementVNode("div",kx,[e.createElementVNode("div",{class:"progress-buffered",style:e.normalizeStyle(m.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",xx,[e.createElementVNode("span",Ex,e.toDisplayString(w(h.currentTime)),1),x[7]||(x[7]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",Vx,e.toDisplayString(h.isLive?"LIVE":w(h.duration)),1)])],8,bx),e.createElementVNode("div",Sx,[e.createElementVNode("div",Cx,[e.createElementVNode("button",{class:"control-btn play-pause","data-testid":"btn-video-play-pause",onClick:x[0]||(x[0]=D=>h.$emit("play-pause")),"aria-label":h.playing?"Pause":"Play"},[e.createVNode(e.unref(I.IonIcon),{icon:h.playing?e.unref(Nu):e.unref(Tu),"aria-hidden":"true"},null,8,["icon"])],8,Nx),h.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"control-btn skip-backward","data-testid":"btn-video-skip-backward",onClick:x[1]||(x[1]=D=>h.$emit("skip-backward")),"aria-label":"Skip backward 10 seconds"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Mu),"aria-hidden":"true"},null,8,["icon"]),x[8]||(x[8]=e.createElementVNode("span",{class:"skip-label"},"10",-1))])),h.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn skip-forward","data-testid":"btn-video-skip-forward",onClick:x[2]||(x[2]=D=>h.$emit("skip-forward")),"aria-label":"Skip forward 10 seconds"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Iu),"aria-hidden":"true"},null,8,["icon"]),x[9]||(x[9]=e.createElementVNode("span",{class:"skip-label"},"10",-1))]))]),e.createElementVNode("div",_x,[e.unref(c)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Tx,[e.createElementVNode("button",{class:"control-btn mute-btn","data-testid":"btn-video-mute",onClick:x[3]||(x[3]=D=>h.$emit("toggleMute")),"aria-label":h.muted?"Unmute":"Mute"},[e.createVNode(e.unref(I.IonIcon),{icon:f.value,"aria-hidden":"true"},null,8,["icon"])],8,Mx),e.createElementVNode("input",{type:"range",class:"volume-slider","data-testid":"slider-video-volume",min:"0",max:"100",value:h.muted?0:h.volume,onInput:T,"aria-label":"Volume"},null,40,Bx)]))]),e.createElementVNode("div",Fx,[h.qualityLevels.length>1?(e.openBlock(),e.createElementBlock("div",Ix,[e.createElementVNode("button",{class:"control-btn quality-btn","data-testid":"btn-video-quality",onClick:x[4]||(x[4]=D=>r.value=!r.value),"aria-label":"Quality settings","aria-expanded":r.value},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Ou),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("span",$x,e.toDisplayString(h.currentQuality),1)],8,Rx),r.value?(e.openBlock(),e.createElementBlock("div",Dx,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.qualityLevels,D=>(e.openBlock(),e.createElementBlock("button",{key:D.label,class:e.normalizeClass(["quality-option",{active:D.label===h.currentQuality}]),"data-testid":`btn-video-quality-${D.label}`,"aria-label":`Set quality to ${D.label}`,role:"menuitem",onClick:C=>N(D)},e.toDisplayString(D.label),11,Ux))),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:x[5]||(x[5]=D=>h.$emit("togglePiP")),"aria-label":"Picture in Picture"},[e.createVNode(e.unref(I.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:x[6]||(x[6]=D=>h.$emit("toggleFullscreen")),"aria-label":h.fullscreen?"Exit fullscreen":"Enter fullscreen"},[e.createVNode(e.unref(I.IonIcon),{icon:h.fullscreen?e.unref(gu):e.unref(bu),"aria-hidden":"true"},null,8,["icon"])],8,Ax)])])],2))}}),Lx=Be(Ox,[["__scopeId","data-v-2ae77c13"]]);function zx(a={}){var te,ge,Ne;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),m=e.ref(!1),f=e.ref(null),p=e.ref("idle"),v=e.ref(a.playbackUrl||((te=a.media)==null?void 0:te.playback_url)||((ge=a.media)==null?void 0:ge.url)||""),g=e.ref(null),E=e.ref(a.isLive||!1),T=e.ref(null),N=e.ref(null);function w(ee){N.value=ee}if((Ne=a.media)!=null&&Ne.token_expires_at){const ee=new Date(a.media.token_expires_at);g.value=Number.isNaN(ee.getTime())?null:ee}async function h(){var F;const ee=E.value?t.value:n.value;if(ee)try{await ee.play(),o.value=!0,p.value=E.value?"live":"playing",(F=a.onPlay)==null||F.call(a)}catch{f.value="Failed to play video",p.value="error"}}function x(){var F;const ee=E.value?t.value:n.value;ee&&(ee.pause(),o.value=!1,p.value="paused",(F=a.onPause)==null||F.call(a))}function D(){o.value?x():h()}function C(ee){const F=E.value?t.value:n.value;if(!F||E.value)return;const P=Number.isFinite(F.duration)?F.duration:ee;F.currentTime=Math.max(0,Math.min(ee,P)),i.value=F.currentTime}function y(ee=10){const F=n.value;!F||E.value||C(F.currentTime+ee)}function S(ee=10){const F=n.value;!F||E.value||C(F.currentTime-ee)}function A(){const ee=E.value?t.value:n.value;ee&&(ee.muted=!ee.muted,c.value=ee.muted)}function k(ee){const F=E.value?t.value:n.value;if(!F)return;const P=Math.max(0,Math.min(100,ee));F.volume=P/100,s.value=P,P>0&&F.muted&&(F.muted=!1,c.value=!1)}function B(ee){const F=n.value;!F||E.value||(F.playbackRate=ee,u.value=ee)}async function R(){const ee=document.querySelector(".video-player-container");if(ee)try{document.fullscreenElement?(await document.exitFullscreen(),l.value=!1):(await ee.requestFullscreen(),l.value=!0)}catch{}}async function U(){const ee=E.value?t.value:n.value;if(ee)try{document.pictureInPictureElement?await document.exitPictureInPicture():document.pictureInPictureEnabled&&await ee.requestPictureInPicture()}catch{}}async function _(){var F;f.value=null,p.value="loading",(F=a.media)!=null&&F.provider&&a.media.provider!=="local"&&await z();const ee=E.value?t.value:n.value;ee&&(ee.load(),await h())}async function z(){if(!(!N.value||!a.media))try{m.value=!0;const ee=await N.value.get(`/api/v1/video/${a.media.uuid}/playback`);v.value=ee.playback_url,g.value=new Date(ee.token_expires_at);const F=E.value?t.value:n.value;if(F&&F.src!==v.value){const P=!F.paused,pe=F.currentTime;F.src=v.value,E.value||(F.currentTime=pe),P&&await h()}}catch{f.value="Failed to refresh playback token",p.value="error"}finally{m.value=!1}}async function H(ee){if(t.value){if(t.value.canPlayType("application/vnd.apple.mpegurl")){t.value.src=ee;return}try{t.value.src=ee}catch{f.value="Live streaming not supported in this browser",p.value="error"}}}function M(){T.value&&(T.value.destroy(),T.value=null)}function $(){var F;const ee=E.value?t.value:n.value;ee&&(i.value=ee.currentTime,r.value=ee.duration,(F=a.onTimeUpdate)==null||F.call(a,ee.currentTime))}const X=e.computed(()=>{if(!d.value||d.value.length===0||!r.value)return 0;for(let ee=0;ee<d.value.length;ee++){const F=d.value.start(ee),P=d.value.end(ee);if(i.value>=F&&i.value<=P)return P/r.value*100}return 0});function W(){if(!g.value)return!1;const ee=new Date;return g.value.getTime()-ee.getTime()<5*60*1e3}return e.watch([n,t],([ee,F])=>{const P=E.value?F:ee;P&&(P.addEventListener("timeupdate",$),P.addEventListener("loadedmetadata",()=>{r.value=P.duration,p.value="ready"}),P.addEventListener("progress",()=>{d.value=P.buffered}),P.addEventListener("ended",()=>{var pe;o.value=!1,p.value="ended",(pe=a.onEnded)==null||pe.call(a)}),P.addEventListener("error",pe=>{var ne;p.value="error",(ne=a.onError)==null||ne.call(a,"Video playback error")}),P.volume=s.value/100,P.muted=c.value)}),e.onUnmounted(()=>{M();const ee=E.value?t.value:n.value;ee&&ee.removeEventListener("timeupdate",$)}),{videoEl:n,liveVideoEl:t,playing:o,currentTime:i,duration:r,volume:s,muted:c,isFullscreen:l,bufferedRanges:d,bufferedPercent:X,playbackRate:u,isLoading:m,error:f,status:p,currentPlaybackUrl:v,tokenExpiresAt:g,play:h,pause:x,togglePlayPause:D,seek:C,skipForward:y,skipBackward:S,toggleMute:A,setVolume:k,setPlaybackRate:B,toggleFullscreen:R,togglePiP:U,retry:_,refreshToken:z,setupLiveStream:H,setApiClient:w,shouldRefreshToken:W}}const Px=["src","poster","controls","autoplay","muted","loop","preload"],jx={key:1,ref:"livePlayerEl",class:"live-player"},Wx=["controls","muted"],Zx={key:0,class:"live-indicator","data-testid":"video-live-indicator","aria-label":"Live stream"},Xx={key:2,class:"video-loading","data-testid":"video-loading",role:"status","aria-label":"Loading video"},Hx={key:3,class:"video-error","data-testid":"video-error",role:"alert"},Gx={key:5,class:"gesture-zones","data-testid":"video-gesture-zones"},Jx=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:m,bufferedRanges:f,isLoading:p,error:v,status:g,currentPlaybackUrl:E,tokenExpiresAt:T,play:N,pause:w,seek:h,toggleMute:x,setVolume:D,toggleFullscreen:C,togglePlayPause:y,skipForward:S,skipBackward:A,retry:k,refreshToken:B,setApiClient:R,shouldRefreshToken:U,setupLiveStream:_}=zx({...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 z(){await B()}const H=e.computed(()=>{const ne=["video-player-container"];return t.className&&ne.push(t.className),m.value&&ne.push("fullscreen"),t.isLive&&ne.push("is-live"),s.value&&ne.push("is-playing"),p.value&&ne.push("is-loading"),ne}),M=e.computed(()=>{var ne,Y;if(t.poster)return t.poster;if((ne=t.media)!=null&&ne.poster_url)return t.media.poster_url;if((Y=t.media)!=null&&Y.thumbnail_url)return t.media.thumbnail_url});function $(ne){const Y=ne.target;o("loadedmetadata",{duration:Y.duration,width:Y.videoWidth,height:Y.videoHeight})}function X(ne){const Y=ne.target;c.value=Y.currentTime,o("timeupdate",Y.currentTime)}function W(){s.value=!0,o("play")}function te(){s.value=!1,o("pause")}function ge(){s.value=!1,o("ended")}function Ne(ne){const Y=ne.target;let Me="Failed to load video";if(Y.error)switch(Y.error.code){case Y.error.MEDIA_ERR_ABORTED:Me="Video playback aborted";break;case Y.error.MEDIA_ERR_NETWORK:Me="Network error while loading video";break;case Y.error.MEDIA_ERR_DECODE:Me="Video decoding error";break;case Y.error.MEDIA_ERR_SRC_NOT_SUPPORTED:Me="Video format not supported";break}v.value=Me,o("error",Me)}function ee(ne){const Y=ne.target;f.value=Y.buffered,o("progress",Y.buffered)}function F(){p.value=!0}function P(){p.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 Y=new Date(ne);T.value=Number.isNaN(Y.getTime())?null:Y},{immediate:!0}),e.watch(()=>{var ne;return(ne=t.media)==null?void 0:ne.playback_url},async(ne,Y)=>{if(t.playbackUrl||!ne||ne===Y)return;const Me=i.value;if(!Me||t.isLive){E.value=ne;return}const ce=!Me.paused,se=Me.currentTime;E.value=ne,await e.nextTick();try{Me.currentTime=se}catch{}ce&&await N()},{immediate:!0});let pe=null;return e.watch(()=>t.isLive,async ne=>{var Me;if(!ne)return;const Y=t.playbackUrl||((Me=t.media)==null?void 0:Me.playback_url)||"";Y&&await _(Y)},{immediate:!0}),e.onMounted(()=>{var ne;(ne=t.media)!=null&&ne.provider&&t.media.provider!=="local"&&(pe=setInterval(()=>{U()&&z()},3e4)),I.isPlatform("mobile")&&t.showCustomControls}),e.onUnmounted(()=>{pe&&clearInterval(pe)}),(ne,Y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-player-container",H.value]),"data-testid":"video-player"},[ne.isLive?(e.openBlock(),e.createElementBlock("div",jx,[e.createElementVNode("video",{ref_key:"liveVideoEl",ref:r,controls:ne.controls&&!ne.showCustomControls,autoplay:!0,muted:e.unref(u),onPlay:W,onPause:te,onError:Ne,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,Wx),e.unref(g)==="live"?(e.openBlock(),e.createElementBlock("div",Zx,[...Y[3]||(Y[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:M.value,controls:ne.controls&&!ne.showCustomControls,autoplay:ne.autoplay,muted:e.unref(u),loop:ne.loop,preload:ne.preload,onLoadedmetadata:$,onTimeupdate:X,onPlay:W,onPause:te,onEnded:ge,onError:Ne,onProgress:ee,onWaiting:F,onCanplay:P,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,Px)),e.unref(p)?(e.openBlock(),e.createElementBlock("div",Xx,[e.createVNode(e.unref(I.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",Hx,[e.createVNode(e.unref(I.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(I.IonButton),{size:"small",onClick:e.unref(k),"data-testid":"btn-video-retry","aria-label":"Retry loading video"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Ln),slot:"start","aria-hidden":"true"},null,8,["icon"]),Y[4]||(Y[4]=e.createTextVNode(" Retry ",-1))]),_:1},8,["onClick"])])):e.createCommentVNode("",!0),ne.showCustomControls&&!e.unref(v)?(e.openBlock(),e.createBlock(Lx,{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(m),isLive:ne.isLive,onPlay:e.unref(N),onPause:e.unref(w),onSeek:e.unref(h),onToggleMute:e.unref(x),onSetVolume:e.unref(D),onToggleFullscreen:e.unref(C),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",Gx,[e.createElementVNode("div",{class:"gesture-left","data-testid":"video-gesture-skip-back","aria-label":"Double tap to skip backward",onDblclick:Y[0]||(Y[0]=(...Me)=>e.unref(A)&&e.unref(A)(...Me))},null,32),e.createElementVNode("div",{class:"gesture-center","data-testid":"video-gesture-play-pause","aria-label":"Tap to play or pause",onClick:Y[1]||(Y[1]=(...Me)=>e.unref(y)&&e.unref(y)(...Me))}),e.createElementVNode("div",{class:"gesture-right","data-testid":"video-gesture-skip-forward","aria-label":"Double tap to skip forward",onDblclick:Y[2]||(Y[2]=(...Me)=>e.unref(S)&&e.unref(S)(...Me))},null,32)])):e.createCommentVNode("",!0)],2))}}),Ec=Be(Jx,[["__scopeId","data-v-b8db4951"]]),Yx=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(_=>_.status==="live")),l=e.computed(()=>r.value.filter(_=>_.processing_status==="processing"));function d(_){a.value.set(_.uuid,_)}function u(_,z){const H=a.value.get(_);H&&a.value.set(_,{...H,...z})}function m(_){a.value.delete(_)}function f(_){return a.value.get(_)}function p(_){n.value.set(_.id,_)}function v(_,z){const H=n.value.get(_);H&&n.value.set(_,{...H,...z})}function g(_,z){const H=n.value.get(_);H&&n.value.set(_,{...H,status:z.status,viewer_count:z.viewer_count,peak_viewers:z.peak_viewers})}function E(_){n.value.delete(_)}function T(_){return n.value.get(_)}function N(_){return s.value.find(z=>z.media_uuid===_)}function w(_){t.value.set(_.id,_)}function h(_,z){const H=t.value.get(_);H&&t.value.set(_,{...H,...z})}function x(_){t.value.delete(_)}function D(_){return t.value.get(_)}function C(_){return Array.from(t.value.values()).filter(z=>z.media_uuid===_)}function y(_){o.value=_}function S(_){o.value&&(o.value={...o.value,..._})}function A(){o.value=null}function k(_){i.value=_}function B(){a.value.clear(),n.value.clear(),t.value.clear(),o.value=null,i.value=!1}function R(_){a.value.clear(),_.forEach(z=>{a.value.set(z.uuid,z)})}function U(_){n.value.clear(),_.forEach(z=>{n.value.set(z.id,z)})}return{videos:a,liveStreams:n,exportJobs:t,currentEditorState:o,isProcessing:i,allVideos:r,allLiveStreams:s,activeLiveStreams:c,processingVideos:l,setVideo:d,updateVideo:u,removeVideo:m,getVideo:f,setLiveStream:p,updateLiveStream:v,updateLiveStreamStats:g,removeLiveStream:E,getLiveStream:T,getLiveStreamByMedia:N,addExportJob:w,updateExportJob:h,removeExportJob:x,getExportJob:D,getExportJobsByMedia:C,setEditorState:y,updateEditorState:S,clearEditorState:A,setProcessing:k,clearAll:B,loadVideos:R,loadLiveStreams:U}});let hn=null;function Kx(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 qx(a){const n=Yx(),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),m=e.ref(0);let f;const p=e.computed(()=>d.value?Math.floor((new Date().getTime()-d.value.getTime())/1e3):0),v=e.computed(()=>{var A;if(!((A=t.value)!=null&&A.playback_url))return null;const S=new URL(t.value.playback_url);return S.searchParams.set("live","true"),o.value&&S.searchParams.set("latency","low"),S.toString()}),g=e.computed(()=>{var S;return((S=t.value)==null?void 0:S.status)==="live"}),E=e.computed(()=>{var S;return((S=t.value)==null?void 0:S.status)==="idle"}),T=e.computed(()=>{var S;return((S=t.value)==null?void 0:S.status)==="ended"});async function N(S={}){s.value=!0,l.value=null;try{const A=await Ho.post("/live",{title:r.value||S.title||"Live Stream",low_latency:S.low_latency??o.value,auto_record:S.auto_record??i.value,...S}),k=Go(A);return t.value=k,n.setLiveStream(k),D(),k}catch(A){throw l.value=Vi(A,"Failed to create stream"),A instanceof Error?A: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 S=await Ho.post(`/live/${t.value.id}/end`),A=Go(S,t.value);return t.value=A,n.setLiveStream(A),C(),A}catch(S){throw l.value=Vi(S,"Failed to end stream"),S instanceof Error?S:new Error(l.value)}finally{c.value=!1}}async function h(){if(t.value)try{const S=await Ho.get(`/live/${t.value.id}`),A=Go(S,t.value);u.value=A.viewer_count,m.value=A.peak_viewers,t.value=A;const k={status:A.status,viewer_count:A.viewer_count,peak_viewers:A.peak_viewers};A.started_at&&(k.started_at=A.started_at),A.ended_at&&(k.ended_at=A.ended_at),n.updateLiveStreamStats(A.id,k),A.status==="live"&&!d.value&&A.started_at&&(d.value=new Date(A.started_at)),A.status==="ended"&&C()}catch{}}async function x(S){try{const A=await Ho.get(`/live/${S}`),k=Go(A,t.value);return{rtmp_url:k.rtmp_url,stream_key:k.stream_key,playback_url:k.playback_url||""}}catch(A){throw l.value=Vi(A,"Failed to get stream credentials"),A instanceof Error?A:new Error(l.value)}}function D(S=5e3){C(),f=window.setInterval(()=>{h()},S)}function C(){f!==void 0&&(clearInterval(f),f=void 0)}async function y(){if(!a)return;const S=n.getLiveStreamByMedia(a);S&&(t.value=S,u.value=S.viewer_count,m.value=S.peak_viewers,S.status==="live"&&(D(),S.started_at&&(d.value=new Date(S.started_at))))}return a&&y(),e.onUnmounted(()=>{C()}),{stream:t,lowLatency:o,autoRecord:i,streamTitle:r,isCreating:s,isEnding:c,error:l,streamDuration:p,viewerCount:u,peakViewers:m,playbackUrl:v,isLive:g,isIdle:E,hasEnded:T,createStream:N,endStream:w,refreshStreamStatus:h,getStreamCredentials:x,startStatusPolling:D,stopStatusPolling:C}}const Qx={class:"stream-status"},eE={class:"flex items-center justify-between"},tE={class:"flex items-center gap-3"},nE={key:0,class:"flex items-center"},oE={key:2,class:"text-sm text-gray-600"},aE={key:0,class:"flex items-center gap-2"},iE={class:"text-sm font-medium text-gray-700"},rE={key:0,class:"text-xs text-gray-500"},sE=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",Qx,[e.createElementVNode("div",eE,[e.createElementVNode("div",tE,[r.status==="live"?(e.openBlock(),e.createElementBlock("div",nE,[...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",oE,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)]),r.viewers!==void 0?(e.openBlock(),e.createElementBlock("div",aE,[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",iE,e.toDisplayString(r.viewers)+" "+e.toDisplayString(r.viewers===1?"viewer":"viewers"),1),r.peakViewers>r.viewers?(e.openBlock(),e.createElementBlock("span",rE," (Peak: "+e.toDisplayString(r.peakViewers)+") ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),lE=Be(sE,[["__scopeId","data-v-1d09c19f"]]),cE={class:"stream-credentials"},dE={class:"space-y-3"},uE={class:"credential-field"},mE={class:"flex gap-2"},pE=["value"],fE={class:"credential-field"},hE={class:"flex gap-2"},vE=["value","type"],gE=["aria-label"],yE={key:0,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},wE={key:1,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},bE={key:0,class:"mt-2 text-sm text-green-600"},kE=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",cE,[u[8]||(u[8]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Stream Settings",-1)),e.createElementVNode("div",dE,[e.createElementVNode("div",uE,[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",mE,[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,pE),e.createElementVNode("button",{onClick:u[0]||(u[0]=m=>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",fE,[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,vE),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",wE,[...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,gE),e.createElementVNode("button",{onClick:u[1]||(u[1]=m=>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",bE,e.toDisplayString(r.value)+" copied to clipboard! ",1)):e.createCommentVNode("",!0)]),_:1})]))}}),xE=Be(kE,[["__scopeId","data-v-306d92f6"]]),EE={class:"live-stream-manager","data-testid":"live-stream-manager"},VE={key:0,class:"stream-setup"},SE={class:"space-y-4"},CE={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},NE={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},_E=["disabled"],TE={key:0},ME={key:1,class:"flex items-center justify-center"},BE={key:1,class:"stream-active space-y-6"},FE={key:1,class:"video-preview"},IE={key:2,class:"analytics-panel"},RE={class:"grid grid-cols-2 gap-4"},$E={class:"bg-gray-50 p-3 rounded"},DE={class:"text-2xl font-bold text-gray-900"},UE={class:"bg-gray-50 p-3 rounded"},AE={class:"text-2xl font-bold text-gray-900"},OE={class:"stream-controls flex gap-3"},LE=["disabled"],zE={key:0},PE={key:1},jE={key:2,class:"mt-4 p-4 bg-red-50 border border-red-200 rounded-lg"},WE={class:"text-red-600 text-sm"},ZE=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&&Kx(t.httpClient);const{stream:i,lowLatency:r,autoRecord:s,streamTitle:c,isCreating:l,isEnding:d,error:u,createStream:m,endStream:f,streamDuration:p,playbackUrl:v,refreshStreamStatus:g}=qx(t.mediaUuid),E=e.ref(!1);async function T(){var D;try{const C=await m({title:c.value,low_latency:r.value,auto_record:s.value});o("stream-created",C),(D=t.onStreamCreated)==null||D.call(t,C)}catch(C){o("error",C)}}async function N(){var D;try{const C=await f();o("stream-ended",C),(D=t.onStreamEnded)==null||D.call(t,C)}catch(C){o("error",C)}}function w(){i.value=null,c.value="",E.value=!1,u.value=null}async function h(D,C){try{await navigator.clipboard.writeText(D)}catch{}}let x;return e.onMounted(()=>{var D;((D=i.value)==null?void 0:D.status)==="live"&&(x=window.setInterval(()=>{g()},5e3))}),e.onUnmounted(()=>{x&&clearInterval(x)}),(D,C)=>(e.openBlock(),e.createElementBlock("div",EE,[e.unref(i)?(e.openBlock(),e.createElementBlock("div",BE,[e.createVNode(lE,{status:e.unref(i).status,viewers:e.unref(i).viewer_count,duration:e.unref(p),"peak-viewers":e.unref(i).peak_viewers},null,8,["status","viewers","duration","peak-viewers"]),e.unref(i).status==="idle"?(e.openBlock(),e.createBlock(xE,{key:0,"rtmp-url":e.unref(i).rtmp_url,"stream-key":e.unref(i).stream_key,onCopy:h},null,8,["rtmp-url","stream-key"])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",FE,[C[9]||(C[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",IE,[C[12]||(C[12]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Live Analytics",-1)),e.createElementVNode("div",RE,[e.createElementVNode("div",$E,[e.createElementVNode("div",DE,e.toDisplayString(e.unref(i).viewer_count),1),C[10]||(C[10]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Current Viewers",-1))]),e.createElementVNode("div",UE,[e.createElementVNode("div",AE,e.toDisplayString(e.unref(i).peak_viewers),1),C[11]||(C[11]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Peak Viewers",-1))])])])):e.createCommentVNode("",!0),e.createElementVNode("div",OE,[e.unref(i).status==="idle"?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:C[3]||(C[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:N,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",PE,"Ending...")):(e.openBlock(),e.createElementBlock("span",zE,"End Stream"))],8,LE)):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",VE,[C[8]||(C[8]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Start Live Stream",-1)),e.createElementVNode("div",SE,[e.createElementVNode("div",CE,[C[4]||(C[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":C[0]||(C[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",NE,[C[5]||(C[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":C[1]||(C[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,[C[6]||(C[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":C[2]||(C[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",ME,[...C[7]||(C[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",TE,"Create Stream"))],8,_E)])])),e.unref(u)?(e.openBlock(),e.createElementBlock("div",jE,[e.createElementVNode("p",WE,e.toDisplayString(e.unref(u)),1)])):e.createCommentVNode("",!0)]))}}),XE=Be(ZE,[["__scopeId","data-v-26291f6f"]]),HE={class:"album-tree-node"},GE=["data-album-id","draggable","aria-selected","aria-expanded"],JE={key:1,class:"album-node__chevron-placeholder"},YE={key:2,"data-testid":"media-count",class:"album-node__count"},KE={key:0,class:"album-tree-node__children",role:"group"},qE=16,QE=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*qE}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}),m=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"),m.value&&w.push("album-node--invalid-drop"),w});function p(){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 N(w){t.draggable&&(w.preventDefault(),o("drop",t.album.id))}return(w,h)=>{var D;const x=e.resolveComponent("AlbumTreeNode",!0);return e.openBlock(),e.createElementBlock("div",HE,[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:N},[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(I.IonIcon),{icon:i.value?e.unref(fu):e.unref(hu)},null,8,["icon"])])):(e.openBlock(),e.createElementBlock("span",JE)),e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Eu),class:"album-node__icon"},null,8,["icon"]),e.createElementVNode("span",{"data-testid":"album-name",class:"album-node__name",onClick:p},e.toDisplayString(w.album.name),1),w.showMediaCount?(e.openBlock(),e.createElementBlock("span",YE,e.toDisplayString(w.album.media_count),1)):e.createCommentVNode("",!0)],46,GE),i.value&&((D=w.album.children)!=null&&D.length)?(e.openBlock(),e.createElementBlock("div",KE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.album.children,C=>(e.openBlock(),e.createBlock(x,{key:C.id,album:C,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:h[0]||(h[0]=y=>o("select",y)),onToggleExpand:h[1]||(h[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)])}}}),e4=Be(QE,[["__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 h=new Map;return a.value.forEach(x=>h.set(x.id,x)),h}),s=e.computed(()=>a.value.filter(h=>h.parent_id===null));async function c(h){t.value=!0,o.value=null;try{const x=(h==null?void 0:h.parent_id)??null,D=x?`/api/v1/albums?parent_id=${x}`:"/api/v1/albums?parent_id=null",C=await fetch(D);if(!C.ok)throw new Error("Failed to fetch albums");((await C.json()).data||[]).forEach(A=>{const k=a.value.findIndex(B=>B.id===A.id);k>=0?a.value[k]=A:a.value.push(A)}),x!==null&&i.value.add(x)}catch(x){o.value=x instanceof Error?x.message:"Unknown error"}finally{t.value=!1}}async function l(h){t.value=!0,o.value=null;try{const x=await fetch(`/api/v1/albums/${h}`);if(!x.ok)throw new Error("Failed to fetch album");const C=(await x.json()).data,y=a.value.findIndex(S=>S.id===C.id);return y>=0?a.value[y]=C:a.value.push(C),C}catch(x){throw o.value=x instanceof Error?x.message:"Unknown error",x}finally{t.value=!1}}async function d(h){t.value=!0,o.value=null;try{const x=await fetch(`/api/v1/albums/${h}/media`);if(!x.ok)throw new Error("Failed to fetch album media");const C=(await x.json()).data||[];return n.value.set(h,C),C}catch(x){throw o.value=x instanceof Error?x.message:"Unknown error",x}finally{t.value=!1}}async function u(h,x){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${h}/media/reorder`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({media_ids:x})})).ok)throw new Error("Failed to reorder album media");const C=n.value.get(h)||[],y=x.map(S=>C.find(A=>A.uuid===S)).filter(S=>S!==void 0);n.value.set(h,y)}catch(D){throw o.value=D instanceof Error?D.message:"Unknown error",D}finally{t.value=!1}}async function m(h){t.value=!0,o.value=null;try{const x=await fetch("/api/v1/albums",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(h)});if(!x.ok)throw new Error("Failed to create album");const C=(await x.json()).data;return a.value.push(C),C}catch(x){throw o.value=x instanceof Error?x.message:"Unknown error",x}finally{t.value=!1}}async function f(h,x){t.value=!0,o.value=null;try{const D=await fetch(`/api/v1/albums/${h}`,{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(x)});if(!D.ok)throw new Error("Failed to update album");const y=(await D.json()).data,S=a.value.findIndex(A=>A.id===y.id);return S>=0&&(a.value[S]=y),y}catch(D){throw o.value=D instanceof Error?D.message:"Unknown error",D}finally{t.value=!1}}async function p(h){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${h}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"})).ok)throw new Error("Failed to delete album");const D=a.value.findIndex(C=>C.id===h);D>=0&&a.value.splice(D,1),n.value.delete(h)}catch(x){throw o.value=x instanceof Error?x.message:"Unknown error",x}finally{t.value=!1}}function v(h){return a.value.filter(x=>x.parent_id===h)}function g(h){return i.value.has(h)}function E(h){return n.value.get(h)||[]}async function T(h,x){const D=a.value.findIndex(y=>y.id===h);if(D<0)return;const C=a.value[D];a.value[D]={...C,parent_id:x};try{if(!(await fetch(`/api/v1/albums/${h}/move`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({parent_id:x})})).ok)throw new Error("Failed to move album")}catch(y){throw a.value[D]=C,o.value=y instanceof Error?y.message:"Unknown error",y instanceof Error?y:new Error("Failed to move album")}}function N(h){a.value=h}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:m,updateAlbum:f,deleteAlbum:p,getChildrenOf:v,childrenLoaded:g,getAlbumMedia:E,moveAlbum:T,setAlbums:N,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,m){await a.moveAlbum(u,m)}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(m,f){if(m===f)return!0;const p=new Set,v=[m];for(;v.length>0;){const g=v.shift();if(!g||p.has(g))continue;p.add(g);const E=n.get(g)||[];for(const T of E){if(T===f)return!0;v.push(T)}}return!1}function r(m,f){return m===f?!1:f===null?!0:!i(m,f)}function s(m){o.value={isDragging:!0,draggedAlbumId:m,dropTargetId:null,dropPosition:null}}function c(){o.value={isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null}}function l(m){o.value.dropTargetId=m}function d(){o.value.dropTargetId=null,o.value.dropPosition=null}async function u(){const{draggedAlbumId:m,dropTargetId:f}=o.value;if(!m){c();return}if(!r(m,f)){c();return}try{await t(m,f)}finally{c()}}return{dragState:o,isDescendant:i,canDropOn:r,startDrag:s,endDrag:c,setDropTarget:l,clearDropTarget:d,executeDrop:u}}const t4={key:0,"data-testid":"loading-spinner",class:"album-tree__loading"},n4={key:1,"data-testid":"error-state",class:"album-tree__error"},o4={key:2,"data-testid":"empty-state",class:"album-tree__empty"},a4={key:3,class:"album-tree__content",role:"group"},i4=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:m,fetchAlbums:f,getChildrenOf:p,childrenLoaded:v,moveAlbum:g}=Vc(),E=e.shallowRef(new Set(o.expandedIds)),T=e.ref(o.modelValue??null),N=e.ref(null),w=new Map,h=new Map;function x(F){w.clear(),h.clear();for(const P of F){w.set(P.id,P);const pe=P.parent_id??null,ne=h.get(pe)??[];ne.push(P.id),h.set(pe,ne)}}e.watch(l,F=>{x(F)},{immediate:!0});const{dragState:D,canDropOn:C,startDrag:y,endDrag:S,setDropTarget:A,clearDropTarget:k,executeDrop:B}=Sc({childrenByParentId:h,onMove:async(F,P)=>{await g(F,P),i("album-moved",{albumId:F,newParentId:P})}});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=>U(F)));function U(F){if(!E.value.has(F.id))return F;const P=p(F.id);return{...F,children:P.map(pe=>U(pe))}}const _=e.computed(()=>{const F=[];function P(pe){var ne;for(const Y of pe)F.push(Y),E.value.has(Y.id)&&((ne=Y.children)!=null&&ne.length)&&P(Y.children)}return P(R.value),F});function z(F){var ne;if(!_.value.length)return;const P=N.value?_.value.findIndex(Y=>Y.id===N.value):-1,pe=P>=0?_.value[P]:null;switch(F.key){case"ArrowDown":F.preventDefault(),P<_.value.length-1?N.value=_.value[P+1].id:P===-1&&_.value.length>0&&(N.value=_.value[0].id);break;case"ArrowUp":F.preventDefault(),P>0&&(N.value=_.value[P-1].id);break;case"ArrowRight":F.preventDefault(),pe&&(pe.children_count>0&&!E.value.has(pe.id)?H(pe.id):E.value.has(pe.id)&&((ne=pe.children)!=null&&ne.length)&&(N.value=pe.children[0].id));break;case"ArrowLeft":F.preventDefault(),pe&&(E.value.has(pe.id)&&pe.children_count>0?H(pe.id):pe.parent_id&&(N.value=pe.parent_id));break;case"Enter":case" ":F.preventDefault(),pe&&M(pe);break;case"Home":F.preventDefault(),_.value.length>0&&(N.value=_.value[0].id);break;case"End":F.preventDefault(),_.value.length>0&&(N.value=_.value[_.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 M(F){T.value=F.id,i("update:modelValue",F.id),i("album-selected",F)}function $(F){o.draggable&&y(F)}function X(F){var pe;if(!o.draggable)return;const P=(pe=D.value)==null?void 0:pe.draggedAlbumId;P&&(A(F),C(P,F))}function W(){o.draggable&&k()}async function te(F){o.draggable&&(A(F),await B())}function ge(F){o.draggable&&(F.preventDefault(),A(null))}async function Ne(F){o.draggable&&(F.preventDefault(),A(null),await B())}function ee(){S()}return n({focusedId:N}),(F,P)=>(e.openBlock(),e.createElementBlock("div",{class:"album-tree","data-testid":"album-tree",tabindex:"0",role:"tree","aria-label":"Album tree",onKeydown:z,onDragover:ge,onDrop:Ne,onDragend:ee},[e.unref(u)?(e.openBlock(),e.createElementBlock("div",t4,[e.createVNode(e.unref(I.IonSpinner),{name:"crescent"})])):e.unref(m)?(e.openBlock(),e.createElementBlock("div",n4,[e.createElementVNode("p",null,e.toDisplayString(e.unref(m)),1)])):e.unref(d).length?(e.openBlock(),e.createElementBlock("div",a4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,pe=>(e.openBlock(),e.createBlock(e4,{key:pe.id,album:pe,depth:0,"selected-id":T.value,"expanded-ids":E.value,"focused-id":N.value,draggable:r.value,"drag-state":r.value?e.unref(D):null,"show-media-count":s.value,compact:c.value,onSelect:M,onToggleExpand:H,onDragStart:$,onDragOver:X,onDragLeave:W,onDrop:te},null,8,["album","selected-id","expanded-ids","focused-id","draggable","drag-state","show-media-count","compact"]))),128))])):(e.openBlock(),e.createElementBlock("div",o4,[P[0]||(P[0]=e.createElementVNode("p",null,"No albums yet",-1)),e.renderSlot(F.$slots,"empty-action",{},void 0,!0)]))],32))}}),Cc=Be(i4,[["__scopeId","data-v-ae3dea7a"]]),r4=300,s4=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,p=>{i.value=p??null});const l=e.computed(()=>r.value!==null);function d(p){const v=Date.now();if(c.value===p.id&&v-s.value<r4){o("confirm",p);return}s.value=v,c.value=p.id,i.value=p.id,r.value=p}function u(){r.value&&o("confirm",r.value)}function m(){o("close")}function f(){o("close")}return(p,v)=>(e.openBlock(),e.createBlock(e.unref(I.IonModal),{"is-open":p.isOpen,class:"album-browser-modal",onDidDismiss:f},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.title),1)]),_:1}),e.createVNode(e.unref(I.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{"data-testid":"cancel-button",onClick:m},{default:e.withCtx(()=>[...v[1]||(v[1]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(I.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(I.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{fill:"clear",onClick:m},{default:e.withCtx(()=>[...v[2]||(v[2]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(I.IonButton),{"data-testid":"confirm-button",fill:"solid",color:"primary",disabled:!l.value,onClick:u},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.confirmText),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"]))}}),Nc=Be(s4,[["__scopeId","data-v-21676ec1"]]),l4={class:"ion-padding-start text-sm"},c4={class:"ion-padding-start text-sm"},d4={key:1},u4={key:1,class:"album-manager-inline rounded-lg border border-gray-200 bg-white p-4"},m4={class:"flex items-center justify-between gap-3 pb-3"},p4={class:"text-base font-semibold text-gray-900"},f4={class:"ion-padding-start text-sm"},h4={class:"ion-padding-start text-sm"},v4={class:"flex justify-between pt-2"},g4={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),m=e.ref(!1),f=e.ref(null),p=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 z=l.value.name.trim().length>0,H=l.value.name.length<=to,M=l.value.description.length<=no;return z&&H&&M&&!p.value}),N=e.computed(()=>{var z;return((z=u.value)==null?void 0:z.name)??"None (Root)"}),w=e.computed(()=>f.value?f.value.children_count===0&&f.value.media_count===0:!1),h=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 x()});async function x(){if(t.albumId)try{const z=await i.fetchAlbum(t.albumId);f.value=z,l.value={name:z.name,description:z.description??"",parent_id:z.parent_id},z.parent_id&&(u.value={id:z.parent_id,name:"Parent Album"})}catch(z){o("error",z)}}function D(){d.value.name=!0}function C(){d.value.description=!0}function y(){m.value=!0}function S(z){u.value={id:z.id,name:z.name},l.value.parent_id=z.id,m.value=!1}function A(){m.value=!1}function k(){o("close")}function B(){o("close")}async function R(){if(d.value.name=!0,d.value.description=!0,!(!T.value||p.value)){p.value=!0;try{const z={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,z);o("updated",H)}else{const H=await i.createAlbum(z);o("created",H)}o("close")}catch(z){o("error",z)}finally{p.value=!1}}}function U(){w.value&&(v.value=!0)}async function _(z){var M;if((((M=z.detail)==null?void 0:M.role)??"")!=="confirm"){v.value=!1;return}if(t.albumId){p.value=!0;try{await i.deleteAlbum(t.albumId),o("deleted",t.albumId),o("close")}catch($){o("error",$)}finally{p.value=!1,v.value=!1}}}return(z,H)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[z.mode==="modal"?(e.openBlock(),e.createBlock(e.unref(I.IonModal),{key:0,"is-open":z.isOpen,class:"album-manager-modal",onDidDismiss:B},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1}),e.createVNode(e.unref(I.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:k},{default:e.withCtx(()=>[...H[4]||(H[4]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(I.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(I.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[5]||(H[5]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(I.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":H[0]||(H[0]=M=>l.value.name=M),"data-testid":"name-input",maxlength:to,onIonBlur:D},null,8,["modelValue"])]),_:1}),g.value?(e.openBlock(),e.createBlock(e.unref(I.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(I.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[6]||(H[6]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(I.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":H[1]||(H[1]=M=>l.value.description=M),"data-testid":"description-input",maxlength:no,onIonBlur:C},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref(I.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",c4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonItem),{button:"","data-testid":"parent-selector",onClick:y},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...H[7]||(H[7]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(I.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(N.value),1)]),_:1})]),_:1})],32)]),_:1}),e.createVNode(e.unref(I.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButtons),{slot:"start"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",disabled:!w.value,title:w.value?void 0:h.value,onClick:U},{default:e.withCtx(()=>[...H[8]||(H[8]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(I.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!T.value,onClick:R},{default:e.withCtx(()=>[p.value?(e.openBlock(),e.createBlock(e.unref(I.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",d4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"])):(e.openBlock(),e.createElementBlock("div",u4,[e.createElementVNode("div",m4,[e.createElementVNode("h2",p4,e.toDisplayString(s.value),1),e.createVNode(e.unref(I.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:k},{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(I.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[10]||(H[10]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(I.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":H[2]||(H[2]=M=>l.value.name=M),"data-testid":"name-input",maxlength:to,onIonBlur:D},null,8,["modelValue"])]),_:1}),g.value?(e.openBlock(),e.createBlock(e.unref(I.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",f4,e.toDisplayString(g.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[11]||(H[11]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(I.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":H[3]||(H[3]=M=>l.value.description=M),"data-testid":"description-input",maxlength:no,onIonBlur:C},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref(I.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(I.IonItem),{button:"","data-testid":"parent-selector",onClick:y},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...H[12]||(H[12]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(I.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(N.value),1)]),_:1})]),_:1}),e.createElementVNode("div",v4,[e.createElementVNode("div",null,[r.value?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",fill:"outline",disabled:!w.value,title:w.value?void 0:h.value,onClick:U},{default:e.withCtx(()=>[...H[13]||(H[13]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),e.createVNode(e.unref(I.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!T.value,onClick:R},{default:e.withCtx(()=>[p.value?(e.openBlock(),e.createBlock(e.unref(I.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",g4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])])],32)])),e.createVNode(Nc,{"is-open":m.value,"selected-album-id":l.value.parent_id,title:"Select Parent Album",onClose:A,onConfirm:S},null,8,["is-open","selected-album-id"]),e.createVNode(e.unref(I.IonAlert),{"is-open":v.value,header:"Delete Album?",message:h.value,buttons:[{text:"Cancel",role:"cancel"},{text:"Delete",role:"confirm",cssClass:"alert-button-danger"}],onDidDismiss:_},null,8,["is-open","message"])],64))}}),w4=Be(y4,[["__scopeId","data-v-22083f3a"]]),b4={class:"album-media-grid"},k4={class:"aspect-square"},x4={key:1,"data-testid":"empty-state",class:"flex flex-col items-center justify-center py-12 gap-4"},E4={class:"text-gray-500"},V4=["data-media-id","draggable","onDragstart","onDragover","onDrop","onMouseenter"],S4={key:0,"data-testid":"drop-indicator",class:"absolute inset-0 border-2 border-primary rounded-lg pointer-events-none z-30"},C4={key:1,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-grab"},N4={class:"aspect-square relative"},_4=["src","alt"],T4={key:0,class:"absolute inset-0 bg-black/50 flex items-center justify-center gap-2 transition-opacity"},M4=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),m=e.computed(()=>!u.value&&r.value.length===0),f=e.computed(()=>{const B=t.columns;return["grid","gap-4",`grid-cols-${B.mobile??2}`,`sm:grid-cols-${B.sm??3}`,`md:grid-cols-${B.md??4}`,`lg:grid-cols-${B.lg??5}`,`xl:grid-cols-${B.xl??6}`]}),p=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 B=await i.fetchAlbumMedia(t.albumId);r.value=B}catch{r.value=[]}finally{s.value=!1}}function g(B){return t.selectedItems.includes(B)}function E(B){o("toggle-select",B);const R=g(B.uuid)?t.selectedItems.filter(U=>U!==B.uuid):[...t.selectedItems,B.uuid];o("selection-change",R)}function T(B){if(B.conversions&&typeof B.conversions=="object"){const R=B.conversions.thumb;if(typeof R=="string")return R}return B.original_url}function N(B){c.value=B}function w(){c.value=null}function h(B){o("preview",B)}function x(B){o("edit",B)}function D(B){o("detach",B.uuid)}function C(){o("add")}function y(B,R){t.reorderable&&(l.value=R,B.dataTransfer&&(B.dataTransfer.effectAllowed="move",B.dataTransfer.setData("text/plain",String(R))))}function S(B,R){!t.reorderable||l.value===null||(B.preventDefault(),d.value=R)}function A(B,R){if(!t.reorderable||l.value===null)return;B.preventDefault();const U=l.value;if(U!==R){const _=[...r.value],[z]=_.splice(U,1);_.splice(R,0,z),r.value=_;const H=_.map(M=>M.uuid);o("reorder",H),i.reorderAlbumMedia(t.albumId,H).catch(()=>{v()})}l.value=null,d.value=null}function k(){l.value=null,d.value=null}return(B,R)=>(e.openBlock(),e.createElementBlock("div",b4,[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(p.value,U=>(e.openBlock(),e.createBlock(e.unref(I.IonCard),{key:U,class:"m-0"},{default:e.withCtx(()=>[e.createElementVNode("div",k4,[e.createVNode(e.unref(I.IonSkeletonText),{animated:"",class:"w-full h-full skeleton"})])]),_:1}))),128))],2)):m.value?(e.openBlock(),e.createElementBlock("div",x4,[e.createVNode(e.unref(I.IonIcon),{name:"images-outline",class:"text-6xl text-gray-400"}),e.createElementVNode("p",E4,e.toDisplayString(B.emptyText),1),e.createVNode(e.unref(I.IonButton),{"data-testid":"add-media-btn",onClick:C},{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,(U,_)=>(e.openBlock(),e.createElementBlock("div",{key:U.uuid,"data-media-id":U.uuid,class:e.normalizeClass(["media-item relative group",{"opacity-50":l.value===_,"ring-2 ring-primary":d.value===_&&l.value!==_}]),draggable:B.reorderable,onDragstart:z=>y(z,_),onDragover:z=>S(z,_),onDrop:z=>A(z,_),onDragend:k,onMouseenter:z=>N(U.uuid),onMouseleave:w},[d.value===_&&l.value!==_&&B.reorderable?(e.openBlock(),e.createElementBlock("div",S4)):e.createCommentVNode("",!0),B.reorderable?(e.openBlock(),e.createElementBlock("div",C4,[e.createVNode(e.unref(I.IonIcon),{name:"reorder-three-outline",class:"text-white drop-shadow-md"})])):e.createCommentVNode("",!0),B.selectionMode?(e.openBlock(),e.createBlock(e.unref(I.IonCheckbox),{key:2,"data-testid":"media-checkbox",checked:g(U.uuid),class:"absolute top-2 left-2 z-20",onIonChange:z=>E(U)},null,8,["checked","onIonChange"])):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonCard),{class:"m-0 overflow-hidden"},{default:e.withCtx(()=>[e.createElementVNode("div",N4,[e.createElementVNode("img",{src:T(U),alt:U.file_name,class:"w-full h-full object-cover"},null,8,_4),B.showActions&&c.value===U.uuid?(e.openBlock(),e.createElementBlock("div",T4,[e.createVNode(e.unref(I.IonButton),{"data-testid":"action-preview",fill:"clear",size:"small",color:"light",onClick:z=>h(U)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{slot:"icon-only",name:"eye-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(I.IonButton),{"data-testid":"action-edit",fill:"clear",size:"small",color:"light",onClick:z=>x(U)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{slot:"icon-only",name:"create-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(I.IonButton),{"data-testid":"action-detach",fill:"clear",size:"small",color:"danger",onClick:z=>D(U)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{slot:"icon-only",name:"close-circle-outline"})]),_:1},8,["onClick"])])):e.createCommentVNode("",!0)])]),_:2},1024)],42,V4))),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:C},[e.createVNode(e.unref(I.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))]))}}),B4=Be(M4,[["__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 N=T;o.value=N.image??null,s.value=N.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},m=async T=>{try{return t.value=!0,i.value=T,a.onSave&&await a.onSave(T),u(),T}catch(N){const w=N;throw c.value=w,a.onError&&a.onError(w),w}finally{t.value=!1}},f=()=>{a.onCancel&&a.onCancel(),u()},p=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:m,handleCancel:f,handleError:p,clearError:v,getEditedImage:g}}let Si=null;function F4(a){return Si||(Si=xr(a)),Si}function I4(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),$n(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),$n(o)}}}let ra=null;function R4(){return ra||(ra=Vr()),ra}function $4(){ra=null}const D4={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={...D4,...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(),m=Ci(u);return i!=null&&i.onProgress&&i.onProgress(100),{media:m,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 U4(){return sa||(sa=Sr()),sa}function A4(){sa=null}function _c(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 Nr(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 m=await o(u);d.set(u,m)})),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 O4(){return`upload-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function L4(a){if(a.type.startsWith("image/"))return URL.createObjectURL(a)}function Fc(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),m=e.ref(new Set),f=o?{rules:o}:{},{validateFile:p}=Nr(f);async function v(){if(m.value.size>=t)return;const k=Array.from(u.value.entries()).find(([U,_])=>_.status==="pending"&&!m.value.has(U));if(!k){Array.from(u.value.values()).every(_=>_.status==="completed"||_.status==="error")&&u.value.size>0&&(d==null||d());return}const[B,R]=k;await g(B,R)}async function g(k,B){m.value.add(k),B.status="uploading",B.abortController=new AbortController,u.value.set(k,{...B}),r==null||r(B);try{const R={onProgress:_=>{B.progress=_,u.value.set(k,{...B}),s==null||s(B)},signal:B.abortController.signal};i&&(R.collection=i);const U=await n.upload(B.file,R);B.status="completed",B.progress=100,B.media=U.media,u.value.set(k,{...B}),c==null||c(B,U.media)}catch(R){R.name==="AbortError"?u.value.delete(k):(B.status="error",B.error=R.message,u.value.set(k,{...B}),l==null||l(B,R))}finally{m.value.delete(k),delete B.abortController,v()}}async function E(k){var U;const B=Array.from(k),R=[];for(const _ of B){const z=await p(_),H=O4(),M=L4(_),$={id:H,file:_,progress:0,status:z.valid?"pending":"error"};!z.valid&&((U=z.errors[0])!=null&&U.message)&&($.error=z.errors[0].message),M&&($.previewUrl=M),u.value.set(H,$);const X={media:null,clientId:H,name:_.name,order:0,upload:$,errors:z.errors};R.push(X)}for(let _=0;_<t;_++)v();return R}function T(k){const B=u.value.get(k);B&&(B.abortController&&B.abortController.abort(),B.previewUrl&&URL.revokeObjectURL(B.previewUrl),u.value.delete(k),m.value.delete(k),v())}async function N(k){const B=u.value.get(k);!B||B.status!=="error"||(B.status="pending",B.progress=0,delete B.error,u.value.set(k,{...B}),v())}function w(){for(const[k,B]of u.value.entries())(B.status==="completed"||B.status==="error")&&(B.previewUrl&&URL.revokeObjectURL(B.previewUrl),u.value.delete(k))}function h(){for(const k of u.value.values())k.abortController&&k.abortController.abort(),k.previewUrl&&URL.revokeObjectURL(k.previewUrl);u.value.clear(),m.value.clear()}function x(k){return u.value.get(k)}const D=e.computed(()=>m.value.size>0),C=e.computed(()=>m.value.size),y=e.computed(()=>Array.from(u.value.values()).filter(k=>k.status==="pending").length),S=e.computed(()=>u.value.size===0?!0:Array.from(u.value.values()).every(k=>k.status==="completed"||k.status==="error")),A=e.computed(()=>Array.from(u.value.values()));return{uploads:u,isUploading:D,activeCount:C,pendingCount:y,isComplete:S,addFiles:E,cancelUpload:T,retryUpload:N,clearCompleted:w,clearAll:h,getUpload:x,uploadsArray:A}}function Ic(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(N,w,h){n&&("dataTransfer"in N&&N.dataTransfer&&(N.dataTransfer.effectAllowed="move",N.dataTransfer.setData("text/plain",String(h))),d=N.target,d&&d.classList.add(r),c.value={isDragging:!0,dragIndex:h,dropIndex:h,draggedItem:w},l.value=!0,o==null||o(w,h))}function m(N,w){var h;if(!(!n||!c.value.isDragging)&&(N.preventDefault(),c.value.dropIndex!==w)){const x=document.querySelector(`.${s}`);x==null||x.classList.remove(s);const D=(h=N.target)==null?void 0:h.closest("[data-index]");D==null||D.classList.add(s),c.value.dropIndex=w}}function f(){if(!c.value.isDragging)return;const{dragIndex:N,dropIndex:w,draggedItem:h}=c.value;d&&d.classList.remove(r);const x=document.querySelector(`.${s}`);x==null||x.classList.remove(s),N!==null&&w!==null&&N!==w&&h&&(t==null||t({fromIndex:N,toIndex:w,item:h})),v(),i==null||i()}function p(){d&&d.classList.remove(r);const N=document.querySelector(`.${s}`);N==null||N.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(N,w,h){const x=[...N],[D]=x.splice(w,1);return x.splice(h,0,D),x.map((C,y)=>({...C,order:y}))}function E(N,w){return{draggable:n,"data-index":w,onDragstart:h=>u(h,N,w),onDragover:h=>m(h,w),onDragend:()=>f(),onDrop:h=>{h.preventDefault(),f()}}}function T(N){N.key==="Escape"&&c.value.isDragging&&p()}return e.onMounted(()=>{document.addEventListener("keydown",T)}),e.onUnmounted(()=>{document.removeEventListener("keydown",T),p()}),{dragState:c,isDragging:l,startDrag:u,handleDragOver:m,endDrag:f,cancelDrag:p,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:m="mediables",adapter:f,maxConcurrentUploads:p=3,onChange:v,onUpload:g,onUploadComplete:E,onUploadError:T,onRemove:N,onReorder:w,onError:h,onReadyToSubmitChange:x}=a,D={maxItems:r,maxFileSize:s,acceptedMimeTypes:c,...u},C=f||_c(m),y=e.ref([]),S=e.ref(!1),A=e.ref([]);function k(oe){if(oe.length===0)return[];const le=oe[0];return"media"in le&&"clientId"in le?oe:Yi(oe)}y.value=k(n);const{acceptString:B,canAddFiles:R}=Nr({rules:D}),U=Fc({adapter:C,maxConcurrent:p,rules:D,collection:i,onUploadStart:oe=>{g==null||g(oe)},onUploadComplete:(oe,le)=>{const Ee=y.value.findIndex(Se=>Se.clientId===oe.id);Ee!==-1&&(y.value[Ee]={...y.value[Ee],media:le,name:le.name||le.file_name,upload:{...oe,status:"completed"}}),E==null||E(le)},onUploadError:(oe,le)=>{const Ee=y.value.findIndex(Se=>Se.clientId===oe.id);Ee!==-1&&(y.value[Ee]={...y.value[Ee],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:_,getDragProps:z,reorderItems:H}=Ic({enabled:l&&!d,onReorder:oe=>{y.value=H(y.value,oe.fromIndex,oe.toIndex),w==null||w(y.value),v==null||v(y.value)}}),M=e.computed(()=>U.isUploading.value),$=e.computed(()=>!U.isUploading.value&&U.pendingCount.value===0),X=e.computed(()=>r?y.value.length>=r:!1),W=e.computed(()=>Er(y.value)),te=e.computed(()=>y.value.length),ge=e.computed(()=>r?Math.max(0,r-y.value.length):1/0);e.watch($,oe=>{x==null||x(oe)});function Ne(oe){y.value=k(oe),v==null||v(y.value)}async function ee(oe){if(d)return;const le=Array.from(oe);if(!R(le.length,y.value.length)){const He={field:"count",message:`Maximum ${r} files allowed`,code:"MAX_ITEMS"};A.value=[He],h==null||h([He]);return}const Ee=await U.addFiles(le),Se=y.value.length,rt=Ee.map((He,pt)=>({...He,order:Se+pt}));y.value=[...y.value,...rt],v==null||v(y.value)}function F(oe){d||(oe.upload&&(oe.upload.status==="uploading"||oe.upload.status==="pending")&&U.cancelUpload(oe.clientId),y.value=y.value.filter(le=>le.clientId!==oe.clientId),y.value=y.value.map((le,Ee)=>({...le,order:Ee})),N==null||N(oe),v==null||v(y.value))}function P(oe){const le=y.value.find(Ee=>Ee.clientId===oe);le&&F(le)}function pe(){d||(U.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 Y(oe,le){if(d)return;const Ee=y.value.findIndex(Se=>Se.clientId===oe);Ee!==-1&&(y.value[Ee]={...y.value[Ee],...le},v==null||v(y.value))}function Me(oe){U.cancelUpload(oe),P(oe)}async function ce(oe){await U.retryUpload(oe)}async function se(){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(Ee=>Ee.media&&!Ee.markedForRemoval).map(Ee=>Ee.media.uuid);S.value=!0;try{await C.attachMany(le,oe),await C.reorder(oe,le)}finally{S.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};S.value=!0;try{const le=await C.fetchModelMedia(oe);y.value=Yi(le),v==null||v(y.value)}finally{S.value=!1}}return e.onMounted(()=>{t&&o&&n.length===0&&ke().catch(console.error)}),e.onUnmounted(()=>{U.clearAll()}),{items:y,setItems:Ne,addFiles:ee,removeItem:F,removeItemById:P,clearAll:pe,reorderItems:ne,updateItem:Y,cancelUpload:Me,retryUpload:ce,save:se,load:ke,isLoading:S,isUploading:M,isReadyToSubmit:$,isAtMaxItems:X,errors:A,dragState:_,getDragProps:z,adapter:C,formValues:W,acceptString:B,count:te,remainingSlots:ge}}const z4=["aria-disabled"],P4=["accept","multiple","disabled"],j4={class:"media-dropzone__content"},W4={class:"media-dropzone__title"},Z4={class:"media-dropzone__subtitle"},X4=["disabled"],H4={key:0,class:"media-dropzone__helper"},G4=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 m(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 p(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:m},[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",accept:g.accept,multiple:g.multiple,disabled:g.disabled,class:"media-dropzone__input",onChange:p},null,40,P4),e.createElementVNode("div",j4,[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",W4,[e.renderSlot(g.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(g.title),1)],!0)]),e.createElementVNode("p",Z4,[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,X4),c.value?(e.openBlock(),e.createElementBlock("p",H4,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)])],42,z4))}}),_r=Be(G4,[["__scopeId","data-v-b1366c1e"]]),J4=["data-index"],Y4={key:0,class:"media-item__drag-handle","aria-label":"Drag to reorder",role:"button",tabindex:"0"},K4={class:"media-item__thumbnail"},q4=["src","alt"],Q4={key:1,class:"media-item__file-icon"},e3={key:2,class:"media-item__progress-overlay"},t3={class:"media-item__progress-text"},n3={key:3,class:"media-item__processing-overlay"},o3={key:4,class:"media-item__error-overlay"},a3={class:"media-item__info"},i3=["title"],r3={key:0,class:"media-item__size"},s3={key:1,class:"media-item__error-message"},l3={class:"media-item__actions"},c3=["disabled"],d3=["disabled"],u3=["disabled"],m3=["disabled"],p3=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,h,x;return((w=t.item.upload)==null?void 0:w.status)==="uploading"||((h=t.item.upload)==null?void 0:h.status)==="pending"||((x=t.item.upload)==null?void 0:x.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}),m=e.computed(()=>{var w;return t.item.name||((w=t.item.media)==null?void 0:w.file_name)||"Unknown file"}),f=e.computed(()=>{var C,y;const w=((C=t.item.media)==null?void 0:C.size)||((y=t.item.upload)==null?void 0:y.file.size);if(!w)return"";const h=1024,x=["Bytes","KB","MB","GB"],D=Math.floor(Math.log(w)/Math.log(h));return parseFloat((w/Math.pow(h,D)).toFixed(2))+" "+x[D]}),p=e.computed(()=>{var h,x;const w=((h=t.item.media)==null?void 0:h.mime_type)||((x=t.item.upload)==null?void 0:x.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 N(){t.disabled||o("cancel",t.item)}return(w,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(v.value),"data-index":w.index,onMouseenter:h[0]||(h[0]=x=>i.value=!0),onMouseleave:h[1]||(h[1]=x=>i.value=!1)},[w.sortable&&!w.disabled?(e.openBlock(),e.createElementBlock("div",Y4,[...h[2]||(h[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",K4,[r.value&&p.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:r.value,alt:m.value,class:"media-item__image"},null,8,q4)):(e.openBlock(),e.createElementBlock("div",Q4,[...h[3]||(h[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",e3,[e.createElementVNode("div",{class:"media-item__progress-bar",style:e.normalizeStyle({width:`${u.value}%`})},null,4),e.createElementVNode("span",t3,e.toDisplayString(u.value)+"%",1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",n3,[...h[4]||(h[4]=[e.createElementVNode("div",{class:"media-item__spinner","aria-label":"Processing"},null,-1)])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",o3,[...h[5]||(h[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",a3,[e.createElementVNode("span",{class:"media-item__name",title:m.value},e.toDisplayString(m.value),9,i3),f.value?(e.openBlock(),e.createElementBlock("span",r3,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("span",s3,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:N},[...h[6]||(h[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,c3)):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},[...h[7]||(h[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,d3)):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},[...h[8]||(h[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,u3)):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},[...h[9]||(h[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,m3)):e.createCommentVNode("",!0)])],42,J4))}}),Tr=Be(p3,[["__scopeId","data-v-ff81c9ec"]]),f3=["aria-label"],h3=["draggable","data-index","onDragstart","onDragover","onDragend","onDrop"],v3={key:0,class:"media-collection__footer"},g3={class:"media-collection__count"},y3={key:0},w3={key:0,class:"media-collection__uploading"},b3=["name","value"],k3=["name","value"],x3=["name","value"],E3=["name","value"],V3={key:3,class:"media-collection__errors",role:"alert","aria-live":"polite"},S3=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:M=>{o("update:modelValue",M),o("change",M)},onUpload:M=>{o("upload",M)},onUploadComplete:M=>{o("upload-complete",M)},onUploadError:M=>{o("upload-error",M)},onRemove:M=>{o("remove",M)},onReorder:M=>{o("reorder",M)},onError:M=>{o("validation-error",M)},onReadyToSubmitChange:M=>{o("is-ready-to-submit-change",M)}},{items:r,setItems:s,addFiles:c,removeItem:l,reorderItems:d,cancelUpload:u,retryUpload:m,isLoading:f,isUploading:p,isAtMaxItems:v,errors:g,dragState:E,getDragProps:T,adapter:N,formValues:w,acceptString:h,count:x,remainingSlots:D}=Za(i);e.provide("mediaAdapter",N),e.provide("mediaCollection",{items:r,addFiles:c,removeItem:l,reorderItems:d}),e.watch(()=>t.modelValue,M=>{M!==r.value&&s(M)},{deep:!0});const C=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 S(M){c(M)}function A(M){l(M)}function k(M){m(M.clientId)}function B(M){u(M.clientId)}function R(M){}function U(M,$,X){if(!t.sortable||t.disabled)return;const W=T($,X);W.onDragstart&&W.onDragstart(M)}function _(M,$){if(!t.sortable||t.disabled)return;M.preventDefault();const X=r.value[$],W=T(X,$);W.onDragover&&W.onDragover(M)}function z(M,$){const X=T(M,$);X.onDragend&&X.onDragend()}function H(M,$){M.preventDefault();const X=r.value[$],W=T(X,$);W.onDrop&&W.onDrop(M)}return(M,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(y.value)},[e.renderSlot(M.$slots,"dropzone",{addFiles:e.unref(c)},()=>[C.value?(e.openBlock(),e.createBlock(_r,{key:0,accept:e.unref(h),multiple:M.maxItems!==1,disabled:M.disabled,"max-file-size":M.maxFileSize,"max-items":e.unref(D),onFiles:S},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(x)} media items`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r),(X,W)=>e.renderSlot(M.$slots,"item",{key:X.clientId,item:X,index:W,remove:()=>A(X)},()=>[e.createElementVNode("div",{class:e.normalizeClass(["media-collection__item-wrapper",{"media-collection__item-wrapper--drag-over":e.unref(E).dropIndex===W}]),draggable:M.sortable&&!M.disabled,"data-index":W,onDragstart:te=>U(te,X,W),onDragover:te=>_(te,W),onDragend:te=>z(X,W),onDrop:te=>H(te,W)},[e.createVNode(Tr,{item:X,adapter:e.unref(N),disabled:M.disabled,sortable:M.sortable,"show-remove":!M.readonly,"show-edit":!1,index:W,onRemove:A,onRetry:k,onCancel:B,onEdit:R},null,8,["item","adapter","disabled","sortable","show-remove","index"])],42,h3)],!0)),128))],8,f3)):C.value?e.createCommentVNode("",!0):e.renderSlot(M.$slots,"empty",{key:1},()=>[$[0]||($[0]=e.createElementVNode("div",{class:"media-collection__empty"},[e.createElementVNode("p",null,"No files uploaded")],-1))],!0),e.renderSlot(M.$slots,"footer",{count:e.unref(x),isUploading:e.unref(p)},()=>[e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",v3,[e.createElementVNode("span",g3,[e.createTextVNode(e.toDisplayString(e.unref(x))+" "+e.toDisplayString(e.unref(x)===1?"file":"files")+" ",1),M.maxItems?(e.openBlock(),e.createElementBlock("span",y3," / "+e.toDisplayString(M.maxItems)+" max",1)):e.createCommentVNode("",!0)]),e.unref(p)?(e.openBlock(),e.createElementBlock("span",w3," Uploading... ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],!0),M.generateFormFields?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,W)=>(e.openBlock(),e.createElementBlock("input",{key:`${M.name}-${X.uuid}`,type:"hidden",name:`${M.name}[${W}][uuid]`,value:X.uuid},null,8,b3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,W)=>(e.openBlock(),e.createElementBlock("input",{key:`${M.name}-${X.uuid}-name`,type:"hidden",name:`${M.name}[${W}][name]`,value:X.name},null,8,k3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,W)=>(e.openBlock(),e.createElementBlock("input",{key:`${M.name}-${X.uuid}-order`,type:"hidden",name:`${M.name}[${W}][order]`,value:X.order},null,8,x3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,W)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`${M.name}-${X.uuid}-props`},[X.custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${M.name}[${W}][custom_properties]`,value:JSON.stringify(X.custom_properties)},null,8,E3)):e.createCommentVNode("",!0)],64))),128))],64)):e.createCommentVNode("",!0),e.unref(g).length>0?(e.openBlock(),e.createElementBlock("div",V3,[(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))}}),C3=Be(S3,[["__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:C=>{t==null||t(C[0]||null)},onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d},p=Za(f),v=e.computed(()=>p.items.value[0]||null),g=e.computed(()=>v.value!==null),E=e.computed(()=>p.formValues.value[0]||null);function T(C){C===null?p.clearAll():p.setItems([C])}async function N(C){const y=v.value;y&&p.removeItem(y),await p.addFiles([C])}function w(){v.value&&p.removeItem(v.value)}async function h(C){const y=v.value;y&&p.removeItem(y),await p.addFiles([C]);const S=p.items.value[0];S&&(o==null||o(y,S))}function x(){var C;(C=v.value)!=null&&C.upload&&p.cancelUpload(v.value.clientId)}async function D(){var C,y;((y=(C=v.value)==null?void 0:C.upload)==null?void 0:y.status)==="error"&&await p.retryUpload(v.value.clientId)}return{item:v,setItem:T,addFile:N,removeItem:w,replaceItem:h,cancelUpload:x,retryUpload:D,save:p.save,load:p.load,isLoading:p.isLoading,isUploading:p.isUploading,isReadyToSubmit:p.isReadyToSubmit,hasItem:g,errors:p.errors,adapter:p.adapter,formValue:E,acceptString:p.acceptString}}const N3=["accept","disabled"],_3={class:"media-attachment__preview"},T3=["name","value"],M3=["name","value"],B3=["name","value"],F3=["name","value"],I3={key:4,class:"media-attachment__errors",role:"alert","aria-live":"polite"},R3=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:k=>{o("update:modelValue",k),o("change",k)},onUpload:k=>{o("upload",k)},onUploadComplete:k=>{o("upload-complete",k)},onUploadError:k=>{o("upload-error",k)},onRemove:k=>{o("remove",k)},onReplace:(k,B)=>{o("replace",B)},onError:k=>{o("validation-error",k)},onReadyToSubmitChange:k=>{o("is-ready-to-submit-change",k)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:f,isLoading:p,hasItem:v,errors:g,adapter:E,formValue:T,acceptString:N}=Mr(r);e.provide("mediaAdapter",E),e.watch(()=>t.modelValue,k=>{k!==s.value&&c(k)},{deep:!0});const w=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!v.value),h=e.computed(()=>({"media-attachment":!0,"media-attachment--disabled":t.disabled,"media-attachment--readonly":t.readonly,"media-attachment--loading":p.value,"media-attachment--has-item":v.value}));function x(k){k.length>0&&l(k[0])}function D(){var k;(k=i.value)==null||k.click()}function C(k){const B=k.target,R=B.files;R&&R.length>0&&u(R[0]),B.value=""}function y(k){d()}function S(k){f()}function A(k){m()}return(k,B)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(h.value)},[e.createElementVNode("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:e.unref(N),disabled:k.disabled,class:"media-attachment__hidden-input",onChange:C},null,40,N3),w.value?e.renderSlot(k.$slots,"dropzone",{key:0,addFile:e.unref(l)},()=>[e.createVNode(_r,{accept:e.unref(N),multiple:!1,disabled:k.disabled,"max-file-size":k.maxFileSize,onFiles:x},null,8,["accept","disabled","max-file-size"])],!0):e.unref(v)&&e.unref(s)?e.renderSlot(k.$slots,"preview",{key:1,item:e.unref(s),remove:e.unref(d),replace:D},()=>[e.createElementVNode("div",_3,[e.createVNode(Tr,{item:e.unref(s),adapter:e.unref(E),disabled:k.disabled,sortable:!1,"show-remove":!k.readonly,"show-edit":!1,onRemove:y,onRetry:S,onCancel:A},null,8,["item","adapter","disabled","show-remove"]),k.showReplaceButton&&!k.readonly&&!k.disabled&&e.unref(s).media?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-attachment__replace-button",onClick:D},[...B[0]||(B[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(k.$slots,"empty",{key:2},()=>[B[1]||(B[1]=e.createElementVNode("div",{class:"media-attachment__empty"},[e.createElementVNode("p",null,"No file selected")],-1))],!0),k.generateFormFields&&e.unref(T)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("input",{type:"hidden",name:`${k.name}[uuid]`,value:e.unref(T).uuid},null,8,T3),e.createElementVNode("input",{type:"hidden",name:`${k.name}[name]`,value:e.unref(T).name},null,8,M3),e.createElementVNode("input",{type:"hidden",name:`${k.name}[order]`,value:e.unref(T).order},null,8,B3),e.unref(T).custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${k.name}[custom_properties]`,value:JSON.stringify(e.unref(T).custom_properties)},null,8,F3)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.unref(g).length>0?(e.openBlock(),e.createElementBlock("div",I3,[(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))}}),$3=Be(R3,[["__scopeId","data-v-26911174"]]),Rc={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"}},D3=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:k=>{i("update:modelValue",k),i("change",k)},onUpload:k=>{i("upload",k)},onUploadComplete:k=>{i("upload-complete",k)},onUploadError:k=>{i("upload-error",k)},onRemove:k=>{i("remove",k)},onReorder:k=>{i("reorder",k)},onError:k=>{i("validation-error",k)},onReadyToSubmitChange:k=>{i("is-ready-to-submit-change",k)}},{items:s,setItems:c,addFiles:l,removeItem:d,reorderItems:u,updateItem:m,cancelUpload:f,retryUpload:p,isLoading:v,isUploading:g,isReadyToSubmit:E,isAtMaxItems:T,errors:N,dragState:w,getDragProps:h,adapter:x,formValues:D,acceptString:C}=Za(r);e.provide("mediaAdapter",x),e.provide("mediaCollection",{items:s,addFiles:l,removeItem:d,reorderItems:u}),e.watch(()=>o.modelValue,k=>{k!==s.value&&c(k)},{deep:!0});const y=e.computed(()=>({...Rc,...o.labels})),S=e.computed(()=>({accept:C.value,multiple:o.maxItems!==1,disabled:o.disabled||o.readonly||T.value})),A=e.computed(()=>({items:s.value,isLoading:v.value,isUploading:g.value,isReadyToSubmit:E.value,isAtMaxItems:T.value,errors:N.value,addFiles:l,removeItem:d,reorderItems:u,clearAll:()=>{s.value.forEach(k=>d(k))},cancelUpload:f,retryUpload:p,labels:y.value,dropzoneProps:S.value}));return n({items:s,addFiles:l,removeItem:d,reorderItems:u,updateItem:m,cancelUpload:f,retryUpload:p,isLoading:v,isUploading:g,isReadyToSubmit:E,isAtMaxItems:T,errors:N,dragState:w,getDragProps:h,adapter:x,formValues:D,acceptString:C}),(k,B)=>e.renderSlot(k.$slots,"default",e.normalizeProps(e.guardReactiveProps(A.value)))}}),U3=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,S)=>{i("replace",S)},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:m,retryUpload:f,isLoading:p,isUploading:v,isReadyToSubmit:g,hasItem:E,errors:T,adapter:N,formValue:w,acceptString:h}=Mr(r);e.provide("mediaAdapter",N),e.watch(()=>o.modelValue,y=>{y!==s.value&&c(y)},{deep:!0});const x=e.computed(()=>({...Rc,...o.labels})),D=e.computed(()=>({accept:h.value,multiple:!1,disabled:o.disabled||o.readonly||E.value})),C=e.computed(()=>({item:s.value,hasItem:E.value,isLoading:p.value,isUploading:v.value,isReadyToSubmit:g.value,errors:T.value,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:f,labels:x.value,dropzoneProps:D.value}));return n({item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:f,isLoading:p,isUploading:v,isReadyToSubmit:g,hasItem:E,errors:T,adapter:N,formValue:w,acceptString:h}),(y,S)=>e.renderSlot(y.$slots,"default",e.normalizeProps(e.guardReactiveProps(C.value)))}}),A3=["name","value"],O3=["name","value"],L3=["name","value"],z3=["name","value"],P3=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,A3),e.createElementVNode("input",{type:"hidden",name:s(u,"name"),value:d.name},null,8,O3),e.createElementVNode("input",{type:"hidden",name:s(u,"order"),value:d.order},null,8,L3),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,z3)):e.createCommentVNode("",!0)],64))),128))}});exports.AlbumBrowser=Nc;exports.AlbumManager=w4;exports.AlbumMediaGrid=B4;exports.AlbumTree=Cc;exports.ArrayBufferTarget=ar;exports.ImageEditor=rl;exports.ImageEditorModal=sl;exports.LiveStreamManager=XE;exports.ManagedMediaGallery=lu;exports.MediaAttachment=$3;exports.MediaCollection=C3;exports.MediaCollectionDropzone=_r;exports.MediaCollectionItem=Tr;exports.MediaWorkspace=au;exports.ModelMediaManager=op;exports.Muxer=Fl;exports.VideoEditor=Ji;exports.VideoEditorDialog=Tb;exports.VideoEditorSimple=Qb;exports.VideoExportPanel=Fk;exports.VideoJobClient=kr;exports.VideoPlayer=Ec;exports.VideoTimeline=E2;exports.VideoToolsPanel=mk;exports.VideoUploader=wx;exports._sfc_main=D3;exports._sfc_main$1=U3;exports._sfc_main$2=P3;exports.applyTemporaryMediaStoreConfig=al;exports.configureMediaStore=$n;exports.createAdapter=_c;exports.createEmptyEditorState=Wd;exports.createImageEditor=I4;exports.createMediablesAdapter=Vr;exports.createSpatieAdapter=Sr;exports.deserializeEditorState=jd;exports.formatFileSize=wa;exports.fromMediaArray=Yi;exports.getFileExtension=Tc;exports.getImageDimensions=Mc;exports.getMediablesAdapter=R4;exports.getSpatieAdapter=U4;exports.isImageFile=Cr;exports.normalizeEditorState=Ki;exports.normalizeRecipeForServerRender=db;exports.recipeHasServerRenderableEdits=cb;exports.recipeHasUnsupportedServerEdits=xc;exports.resetMediablesAdapter=$4;exports.resetSpatieAdapter=A4;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=F4;exports.useImageEditorModal=xr;exports.useMediaAttachment=Mr;exports.useMediaCollection=Za;exports.useMediaDragSort=Ic;exports.useMediaStore=xt;exports.useMediaUploadQueue=Fc;exports.useMediaValidation=Nr;exports.validateFile=Bc;
342
- //# sourceMappingURL=index-DM7D7H0K.cjs.map
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:Lt.transitional(Lt.boolean),forcedJSONParsing:Lt.transitional(Lt.boolean),clarifyTimeoutError:Lt.transitional(Lt.boolean)},!1),i!=null&&(G.isFunction(i)?t.paramsSerializer={serialize:i}:ia.assertOptions(i,{encode:Lt.function,serialize:Lt.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ia.assertOptions(t,{baseUrl:Lt.spelling("baseURL"),withXsrfToken:Lt.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,m=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);m<f;)u=u.then(v[m++],v[m++]);return u}f=c.length;let p=t;for(m=0;m<f;){const v=c[m++],g=c[m++];try{p=v(p)}catch(E){g.call(this,E);break}}try{u=Hs.call(this,p)}catch(v){return Promise.reject(v)}for(m=0,f=d.length;m<f;)u=u.then(d[m++],d[m++]);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 dw=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 uw(a){return function(t){return a.apply(null,t)}}function mw(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 Je=kc(Bo);Je.Axios=bn;Je.CanceledError=Xn;Je.CancelToken=dw;Je.isCancel=mc;Je.VERSION=wc;Je.toFormData=La;Je.AxiosError=Fe;Je.Cancel=Je.CanceledError;Je.all=function(n){return Promise.all(n)};Je.spread=uw;Je.isAxiosError=mw;Je.mergeConfig=xn;Je.AxiosHeaders=bt;Je.formToJSON=a=>uc(G.isHTMLForm(a)?new FormData(a):a);Je.getAdapter=yc.getAdapter;Je.HttpStatusCode=Gi;Je.default=Je;const{Axios:H3,AxiosError:G3,CanceledError:J3,isCancel:Y3,CancelToken:K3,VERSION:q3,all:Q3,Cancel:eV,isAxiosError:tV,spread:nV,toFormData:oV,AxiosHeaders:aV,HttpStatusCode:iV,formToJSON:rV,getAdapter:sV,mergeConfig:lV}=Je;class kr{constructor(n="/api/v1"){this.eventSource=null,this.progressCallbacks=new Map,this.api=Je.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 pw={key:0,class:"mobile-layout"},fw={class:"mobile-toolbar"},hw={class:"mobile-toolbar-left"},vw=["aria-label"],gw={class:"mobile-toolbar-right"},yw=["disabled"],ww=["disabled"],bw={class:"preview-section"},kw={key:0,class:"mobile-export-overlay"},xw={class:"mobile-export-progress"},Ew={class:"mobile-export-bar"},Vw={class:"mobile-timeline-zoom"},Sw={key:1,class:"desktop-layout"},Cw={class:"desktop-main-row"},Nw={class:"preview-panel"},_w={class:"fit-toggle"},Tw={class:"editor-content"},Mw={class:"editor-tabs"},Bw={class:"tab-header"},Fw=["onClick"],Iw={class:"tab-content-area"},Rw={class:"filter-controls"},$w={class:"text-controls"},Dw={class:"transition-controls"},Uw={class:"audio-controls"},Aw={class:"adjustments-controls"},Ow={key:1,class:"no-filter-selected"},Lw={class:"export-controls"},zw={key:0,"data-testid":"video-export-status-completed"},Pw={key:1,"data-testid":"video-export-status-message",class:"export-status-message"},jw={class:"desktop-timeline-row"},Ww={class:"timeline-zoom"},Zw=["value"],Xw={class:"zoom-readout"},Hw={key:0,class:"dev-editor-controls","data-testid":"video-editor-dev-controls"},Gw={class:"dev-editor-row"},Jw={class:"dev-editor-field"},Yw={class:"dev-editor-field"},Kw=["disabled"],qw=["disabled"],Qw=["disabled"],eb={class:"dev-editor-row"},tb={class:"dev-editor-field dev-editor-field--wide"},nb=["value"],ob=["disabled"],ab=["disabled"],ib=["disabled"],rb=["disabled"],sb=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}),m=e.computed(()=>c.value?l.value:d.value),f=e.computed(()=>m.value==="filters"||E.value),p=e.computed(()=>m.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 N(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 N(V)?V:null}const h=e.shallowRef(null),x=e.ref(null),D=e.ref(w(o.initialRecipe)??"contain"),C=e.ref(null),y=e.ref(null),S=e.ref(null),A=e.ref(!1),k=new Map,B=e.ref([]),R=e.ref([]),U=e.ref([]),_=e.ref([]),z=e.ref(1),H=()=>{c.value=window.innerWidth<768},M=[{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}],$=[{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(()=>M.filter(b=>u.value[b.id])),W=e.computed(()=>$.filter(b=>u.value[b.id])),te=e.computed(()=>{var b,V;return((b=W.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=te.value),b[d.value]||(d.value=te.value)},{immediate:!0,deep:!0}),e.watch(te,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=te.value),d.value==="export"&&(d.value=te.value))},{immediate:!0,deep:!0});const ge=e.computed(()=>typeof window>"u"?!1:window.__MEDIABLES_EDITOR_DEV__===!0),{currentFrame:Ne,playheadPosition:ee,timelineClips:F,totalDuration:P,hasChanges:pe,isPlaying:ne,selectedClip:Y,zoomLevel:Me,playbackSpeed:ce,handleTrim:se,handleSplit:ke,handleClipSelect:oe,splitAtPlayhead:le,deleteSelectedClip:Ee,duplicateSelectedClip:Se,setZoomLevel:rt,moveClip:He,setFilters:pt,setTextOverlays:K,setAudioTracks:de,saveDraft:ie,clearHasChanges:he,resetChanges:_e,generateRecipe:J,zoomIn:ue,zoomOut:ve,fitToWindow:Z,togglePlayback:Q,setPlaying:ae,seekTo:xe,frameForward:De,frameBackward:Qe,skipToStart:We,skipToEnd:ft,setPlaybackSpeed:Ze,updateSourceDuration:Ht}=Vg(s.value,o.initialRecipe,o.media),{videoCompatibleFilters:Xa,activeFilters:et,selectedFilter:Br,previewFilter:Fo,previewFilterEffect:Fr,applyFilter:Ir,updateFilterParams:$c,removeFilter:Dc,clearAllFilters:Rr,setActiveFilters:Uc}=Rg();function Hn(b){var j,q;const V=((j=Y.value)==null?void 0:j.id)??((q=F.value[0])==null?void 0:q.id);V&&(A.value=!0,typeof b=="object"&&b.id?Ir(b.id):typeof b=="string"&&Ir(b),pt(et.value),h.value?h.value.setClipFilters(V,et.value):k.set(V,[...et.value]),oe(V),A.value=!1,Ut())}function Ac(){var V,j;const b=((V=Y.value)==null?void 0:V.id)??((j=F.value[0])==null?void 0:j.id);b&&oe(b)}function $r(b){const V=et.value.find(j=>j.filterId===b);V&&Dc(V.id)}const Gn=e.computed(()=>Xa.value.map(V=>{var q;const j=[];if(V.controls&&V.controls.length>0)for(const me of V.controls){const re=me.type;if(re==="button"||re==="text"||re==="range")continue;const fe={id:me.property||me.id,label:me.label||me.id,type:re,default:me.default??(re==="toggle"?!1:re==="color"?"#ffffff":0)};re==="slider"&&(fe.min=me.min??0,fe.max=me.max??1,fe.step=me.step??.01),re==="select"&&me.options&&(fe.options=me.options),j.push(fe)}else if(V.paramRanges){const me=Object.entries(V.paramRanges);for(const[re,fe]of me){const Ae=re.replace(/[-_]/g," ").replace(/\b\w/g,At=>At.toUpperCase()),ht=(q=V.defaultParams)==null?void 0:q[re],Yt=(fe.min+fe.max)/2;j.push({id:re,label:Ae,min:fe.min,max:fe.max,step:fe.step??.01,default:typeof ht=="number"?ht:Yt})}}return{id:V.id,name:V.name,category:V.category,params:j}})),Cn=e.ref("0.00"),Nn=e.ref("0.00"),en=e.ref("");e.watch(Gn,b=>{if(b.length===0){en.value="";return}b.some(j=>j.id===en.value)||(en.value=b[0].id)},{immediate:!0});const nt=e.ref(!1),Xe=e.ref(0),Gt=e.ref(!1),je=e.ref(null),Tt=e.ref(null);let Io=null,Ct=!1,Jt=null;const Ha=e.computed(()=>{const b=new Map;return et.value.forEach(V=>b.set(V.filterId,V)),b}),Oc=e.computed(()=>{var b,V;return Ne.value?Ne.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,j)=>{var me,re;const q=Rt.value;j(()=>{q&&q.startsWith("blob:")&&URL.revokeObjectURL(q)}),(me=o.media)!=null&&me.file?Rt.value=URL.createObjectURL(o.media.file):(re=o.media)!=null&&re.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}}),Ur=e.computed(()=>{var V;const b=(V=o.media)==null?void 0:V.url;return!!(b&&/^https?:/i.test(b))}),Ar=e.computed(()=>et.value),Or=e.computed(()=>ee.value),Lc=e.computed(()=>!!Y.value&&ee.value>0),zc=e.computed(()=>!!Y.value&&F.value.length>1),Ja=e.ref(0),$t=e.computed(()=>{try{const b=P.value??P;return b&&typeof b=="number"&&b>0?b:Ja.value}catch{return Ja.value}}),_n=e.ref(),Ya=e.ref(),Ka=e.ref(),qa=e.ref(),Ro=e.ref(0),cn=e.ref(!1);let gt=null,Dt=null;e.watch($t,b=>{var j;if(cn.value||!b||b<=0)return;const V=Ro.value||((j=_n.value)==null?void 0:j.clientWidth)||0;V>0&&(cn.value=!0,Z(V))}),e.watch(Ro,b=>{if(cn.value||!b||b<=0)return;$t.value>0&&(cn.value=!0,Z(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),Nn.value=Tn(b.sourceOut))}e.watch(()=>{var b,V,j;return[(b=Y.value)==null?void 0:b.id,(V=Y.value)==null?void 0:V.sourceIn,(j=Y.value)==null?void 0:j.sourceOut]},()=>{Pc(Y.value)},{immediate:!0});function zr(b){const V=Y.value;if(!V)return;const j=1/30,q=V.sourceMinIn??0,me=V.sourceMaxOut??$t.value,re=V.sourceIn+(ee.value-V.timelineStart);if(b==="start"){const Ae=Math.max(q,Math.min(re,V.sourceOut-j));Cn.value=Tn(Ae);return}const fe=Math.max(V.sourceIn+j,Math.min(re,me));Nn.value=Tn(fe)}function jc(){const b=Y.value;if(!b)return;const V=Lr(Cn.value),j=Lr(Nn.value);if(V===null||j===null)return;const q=1/30,me=b.sourceMinIn??0,re=b.sourceMaxOut??$t.value,fe=Math.max(me,Math.min(V,re-q)),Ae=Math.max(fe+q,Math.min(j,re));se(b.id,"start",fe),se(b.id,"end",Ae),Cn.value=Tn(fe),Nn.value=Tn(Ae),Y.value&&xe(Y.value.timelineStart)}function Wc(){en.value.trim()!==""&&Hn(en.value)}function Zc(){var b;Rr(),pt(et.value),(b=Y.value)!=null&&b.id&&(h.value?h.value.setClipFilters(Y.value.id,et.value):k.set(Y.value.id,[...et.value])),Ut()}function Pr(b,V,j){var me,re;const q=et.value.find(fe=>fe.filterId===b);q?(q.params={...q.params,[V]:j},pt(et.value),h.value&&((me=Y.value)!=null&&me.id)?h.value.setClipFilters(Y.value.id,et.value):(re=Y.value)!=null&&re.id&&k.set(Y.value.id,[...et.value]),Ut(),Ac()):Fo.value&&Fo.value.filterId===b&&(Fo.value.params={...Fo.value.params||{},[V]:j})}function jr(b){xe(b)}function Wr(b){!b||!Number.isFinite(b.timestamp)||xe(b.timestamp)}function Zr(b){ae(b)}function $o(b){!Number.isFinite(b)||b<=0||(Ja.value=b,Ht(b))}function Xc(){var V;const b=Ro.value||((V=_n.value)==null?void 0:V.clientWidth)||800;Z(b)}function Qa(b){cn.value=!0,rt(b)}function Hc(){cn.value=!0,ue()}function Gc(){cn.value=!0,ve()}function Jc(b){const V=b.target,j=Number(V.value);Qa(j)}function Xr(b){const V=Math.min(600,Math.max(10,Me.value+b));Qa(V)}function ei(){Dt==null||Dt(),Dt=null;const b=Ka.value,V=qa.value;if(!c.value||!b||!V)return;const j=()=>{Xr(-20)},q=()=>{Xr(20)};b.addEventListener("click",j),V.addEventListener("click",q),Dt=()=>{b.removeEventListener("click",j),V.removeEventListener("click",q)}}e.watch([c,Ka,qa],()=>{ei()},{flush:"post"});function Hr(b){var V;h.value=b,(V=h.value)!=null&&V.composition&&(C.value=new $g(h.value.composition),y.value=new va(h.value.composition),S.value=new Dg(h.value.composition));try{k.size&&(k.forEach((j,q)=>{h.value.setClipFilters(q,j)}),k.clear(),h.value.composition.computeFrame())}catch{}}function Yc(b){b!=null&&b.id&&Fr(b.id)}function Kc(b){$c(b),Ut()}async function qc(b){if(!C.value)return;const V=await C.value.addTextOverlay(b);B.value.push({id:V,...b})}async function Qc(b,V){if(!C.value)return;await C.value.updateTextOverlay(b,V);const j=B.value.findIndex(q=>q.id===b);j!==-1&&(B.value[j]={...B.value[j],...V})}async function ed(b){C.value&&(await C.value.removeTextOverlay(b),B.value=B.value.filter(V=>V.id!==b))}async function td(b){if(!y.value||_.value.length<2)return;const[V,j]=_.value,q=await y.value.applyTransition(V,j,b);R.value.push({id:q,...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(!S.value)return;const V=await S.value.addAudioTrack(b);U.value.push({id:V,...b})}async function id(b,V){if(!S.value)return;const j=U.value.findIndex(q=>q.id===b);j!==-1&&(U.value[j]={...U.value[j],...V})}async function rd(b){S.value&&(await S.value.removeAudioTrack(b),U.value=U.value.filter(V=>V.id!==b))}async function sd(b,V){if(!S.value)return;await S.value.updateVolume(b,V);const j=U.value.find(q=>q.id===b);j&&(j.volume=V)}async function ld(b,V){if(!S.value)return;await S.value.muteTrack(b,V);const j=U.value.find(q=>q.id===b);j&&(j.muted=V)}function cd(b){S.value&&(S.value.setMasterVolume(b),z.value=b)}function dd(b){i("thumbnail-selected",b)}function tn(){Io!==null&&(clearInterval(Io),Io=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=D.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 Ge(b,V,j){return Math.min(j,Math.max(V,b))}function ti(b,V){if(typeof b=="number"&&Number.isFinite(b))return b;if(typeof b=="string"){const j=Number(b);if(Number.isFinite(j))return j}return V}function dt(b,V,j){for(const q of V)if(q in b)return ti(b[q],j);return j}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:Ge(dt(V,["value","brightness"],0),-1,1)}];case"contrast":return[{type:"contrast",value:Ge(dt(V,["value","contrast"],1),.1,3)}];case"saturation":return[{type:"saturation",value:Ge(dt(V,["value","saturation"],1),0,3)}];case"blur":case"gaussian-blur":case"kawase-blur":case"radial-blur":return[{type:"blur",value:Ge(dt(V,["value","blur","radius"],0),0,25)}];case"sharpen":return[{type:"sharpen",value:Ge(dt(V,["value","amount"],1),0,5)}];case"sepia":return[{type:"sepia",value:1}];case"grayscale":return[{type:"grayscale",value:1}];case"adjustment":{const q=Ge(dt(V,["brightness"],1)-1,-1,1),me=Ge(dt(V,["contrast"],1),.1,3),re=Ge(dt(V,["saturation"],1),0,3);return[{type:"brightness",value:q},{type:"contrast",value:me},{type:"saturation",value:re}]}default:return[]}}function pd(b){const V=b.timeline[0],j=Array.isArray(V==null?void 0:V.filters)?V.filters:[],q=[];for(const re of j)if(q.push(...md(re)),q.length>=12)break;const me={...b,filters:q.slice(0,12)};if(b.timeline.length===1&&V){const re=Math.max(0,ti(V.sourceIn,0)),fe=ti(V.sourceOut,re);fe>re&&(me.trim={start:re,end:fe})}return me}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 j=V.value;if(typeof j=="number"&&Number.isFinite(j)&&j>0)return j}return null}async function Gr(b,V,j){var Yt,At,Mn,on;const q=b.timeline[0],me=q?Math.max(0,q.sourceIn):0,re=q?q.sourceOut:void 0,[fe,Ae]=fd((V==null?void 0:V.quality)??((Yt=b.output)==null?void 0:Yt.quality)),ht=((At=b.output)==null?void 0:At.fps)||30;ae(!1),E.value=!0,await e.nextTick();try{const ot=[200,500,1e3];let st=!1;for(const ci of ot){await new Promise($d=>setTimeout($d,ci));const Ao=T.value;if(!(!Ao||typeof Ao.captureFrameAt!="function")&&typeof Ao.ensureReadyForCapture=="function"&&(st=await Ao.ensureReadyForCapture(),st))break}const Ot=T.value;if(!Ot||typeof Ot.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-NQy9Zz24.cjs"));if(!si())throw new Error("WebCodecs is not supported in this browser. Export requires Chrome 94+ or equivalent.");Jt=new AbortController;const Uo={width:fe,height:Ae,fps:ht,trimStart:me,signal:Jt.signal};re!==void 0&&(Uo.trimEnd=re),j&&(Uo.onProgress=j);const os=Rt.value;os!==""&&(Uo.sourceUrl=os);const Md=typeof Ot.duration=="number"&&Ot.duration>0?Ot.duration:((Mn=b.source)==null?void 0:Mn.duration)??re??0,Bd=await Yn({captureFrameAt:ci=>Ot.captureFrameAt(ci),duration:{value:Md}},Uo),li=new File([Bd],`edited-video-${Date.now()}.mp4`,{type:"video/mp4"}),Fd=hd(Ot),Id=((on=b.source)==null?void 0:on.duration)??0,Rd=Math.max(0,(re??Fd??Id)-me);return{file:li,recipe:b,meta:{duration:Rd,width:fe,height:Ae,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,Tt.value=null,je.value=null,Gt.value=!1,Xe.value=0;const j=Jn(b??J()),q=ts(j),me=Array.isArray(q.filters)&&q.filters.length>0,re=ai(q);if(!(pe.value||me||re))return he(),i("video-exported",null),null;const Ae=q.timeline[0],ht=Ae?Math.max(0,Ae.sourceIn):0,At=((Ae==null?void 0:Ae.sourceOut)??((on=q.source)==null?void 0:on.duration)??$t.value)-ht,Mn=o.serverRenderEndpoint!=null&&o.clientExportThreshold>0&&At>o.clientExportThreshold;if(Mn){nt.value=!0;try{return await gd(q),null}catch(ot){const st=ot instanceof Error?ot.message:"Server render failed";throw je.value=st,i("server-render-failed",st),ot}finally{nt.value=!1}}if(o.maxDuration>0&&At>o.maxDuration&&!Mn){const ot=`This video is too long for in-browser export (${Math.round(At)}s). Server rendering is not available. Try a shorter clip.`;return je.value=ot,i("video-exported",null),null}nt.value=!0;try{const ot=await Gr(q,V,st=>{Ct||(Xe.value=st)});return Ct?(je.value="Export canceled.",Xe.value=0,i("video-exported",null),null):(he(),i("recipe-generated",q),i("video-exported",ot),Xe.value=100,Gt.value=!0,ot)}catch(ot){if(Ct)return je.value="Export canceled.",Xe.value=0,i("video-exported",null),null;const st=ot instanceof Error?ot.message:"Local WebGL export failed.";throw je.value=st,new Error(`Video export failed: ${st}`)}finally{nt.value=!1}}function Do(){return new kr(o.serverRenderEndpoint??"/api/v1")}async function gd(b){const V=Do();je.value="Starting server render...",Xe.value=0;const j=await V.createRenderJob({source_media_uuid:s.value,recipe:b});Tt.value=j.id,i("server-render-started",j.id),i("export-started",j.id),je.value="Rendering on server...";const q=await V.pollRenderJob(j.id,(re,fe)=>{Xe.value=re,fe==="processing"&&(je.value=`Server rendering: ${re}%`)},3e3,(o.maxDuration>0?o.maxDuration*3:1800)*1e3);Xe.value=100,Gt.value=!0,je.value="Server render complete!",he(),i("recipe-generated",b);const me={id:q.id};typeof q.output_media_id=="string"&&q.output_media_id!==""&&(me.output_media_id=q.output_media_id),i("server-render-completed",me)}async function Jr(){if(!nt.value)return;Ct=!0,E.value=!1,Jt&&(Jt.abort(),Jt=null),tn();const b=Tt.value;if(b)try{await Do().cancelJob(b)}catch(V){const j=V instanceof Error?V.message:"Failed to cancel export";je.value=j,nt.value=!1,Tt.value=null;return}nt.value=!1,Xe.value=0,Gt.value=!1,Tt.value=null,je.value="Export canceled."}async function Yr(b){tn(),Ct=!1,Jt=null,Tt.value=null,je.value=null,Gt.value=!1,nt.value=!0,Xe.value=0;try{const V=Jn(ud(J(),b));i("recipe-generated",V);const j=s.value.startsWith("temp-"),q=V.timeline[0],me=Array.isArray(q==null?void 0:q.filters)?q.filters:[],re=!0,fe=typeof window<"u"&&window.MEDIABLES_ALLOW_SERVER_EXPORT_FALLBACK===1||typeof localStorage<"u"&&localStorage.getItem("mediables.export.allowServerFallback")==="1";if(re)try{const st=await Gr(V,b,si=>{Ct||(Xe.value=si)});if(Ct){je.value="Export canceled.",nt.value=!1,Xe.value=0;return}i("video-exported",st);const Ot=URL.createObjectURL(st.file),Yn=document.createElement("a");Yn.href=Ot,Yn.download=`edited-video-${Date.now()}.mp4`,Yn.click(),setTimeout(()=>URL.revokeObjectURL(Ot),100),nt.value=!1,Xe.value=100,Gt.value=!0;return}catch(st){if(Ct){je.value="Export canceled.",nt.value=!1,Xe.value=0;return}if(j||!fe)throw st;Xe.value=0,je.value="Local filter export failed, falling back to server render."}const Ae={"360p":"low","480p":"low","720p":"medium","1080p":"high","1440p":"ultra","2160p":"ultra"},ht=(b==null?void 0:b.quality)??V.output.quality,Yt=Ae[ht]??"high",At={...pd(V),export:{format:(b==null?void 0:b.format)??V.output.format,quality:Yt,resolution:ht,framerate:V.output.fps}},on=await Do().createJob({source_media_id:s.value,recipe:At}),ot=typeof on.id=="string"?on.id:null;if(!ot)throw new Error("Export failed: missing job id");Tt.value=ot,i("export-started",ot),_d(ot)}catch(V){if(E.value=!1,Jt=null,Ct){je.value="Export canceled.",nt.value=!1,Xe.value=0,Tt.value=null;return}try{const j=Jn(J()),q=new Blob([JSON.stringify(j,null,2)],{type:"application/json"}),me=URL.createObjectURL(q),re=document.createElement("a");re.href=me,re.download=`video-recipe-${Date.now()}.json`,re.click(),setTimeout(()=>URL.revokeObjectURL(me),100)}finally{nt.value=!1,Xe.value=0,Tt.value=null,je.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 j=b.pixiCanvas;if(j&&typeof j=="object"&&"value"in j){const q=j.value;return q instanceof HTMLCanvasElement?q:null}return j instanceof HTMLCanvasElement?j: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 j=V.value;if(typeof j=="number"&&Number.isFinite(j))return j}return null},bd=b=>{if(!b||typeof b!="object")return null;const j=b.videoElement;if(j&&typeof j=="object"&&"value"in j){const q=j.value;return q instanceof HTMLVideoElement?q:null}return j instanceof HTMLVideoElement?j:null},Kr=b=>typeof b.params=="object"&&b.params!==null?b.params:{},kd=b=>{const V=[];for(const j of b){const q=Kr(j),me=j.filterId.trim().toLowerCase();if(me==="brightness"){const fe=(Ge(dt(q,["value","brightness"],0),-1,1)+1)*100;V.push(`brightness(${fe.toFixed(2)}%)`);continue}if(me==="contrast"){const re=Ge(dt(q,["value","contrast"],1),.1,4);V.push(`contrast(${(re*100).toFixed(2)}%)`);continue}if(me==="saturation"||me==="saturate"){const re=Ge(dt(q,["value","saturation"],1),0,4);V.push(`saturate(${(re*100).toFixed(2)}%)`);continue}if(me==="grayscale"){V.push("grayscale(100%)");continue}if(me==="sepia"){V.push("sepia(100%)");continue}if(me==="blur"||me==="gaussian-blur"||me==="kawase-blur"){const re=Ge(dt(q,["value","blur","radius"],0),0,30);re>.01&&V.push(`blur(${re.toFixed(2)}px)`);continue}if(me==="adjustment"){const re=dt(q,["brightness"],1),fe=dt(q,["contrast"],1),Ae=dt(q,["saturation"],1);Math.abs(re-1)>.01&&V.push(`brightness(${(Ge(re,0,5)*100).toFixed(2)}%)`),Math.abs(fe-1)>.01&&V.push(`contrast(${(Ge(fe,.1,5)*100).toFixed(2)}%)`),Math.abs(Ae-1)>.01&&V.push(`saturate(${(Ge(Ae,0,5)*100).toFixed(2)}%)`);continue}if(me==="cinematic"){V.push("contrast(120%) brightness(95%) saturate(85%)");continue}if(me==="dramatic"){V.push("contrast(140%) brightness(90%) saturate(110%) sepia(10%)");continue}if(me==="dreamy"){V.push("blur(0.5px) brightness(105%) saturate(90%) contrast(95%)");continue}}return V.join(" ")},xd=b=>{const V=b.find(me=>me.filterId.trim().toLowerCase()==="noise");if(!V)return 0;const j=Kr(V),q=dt(j,["noise","value","amount","intensity"],.2);return q<=1?Ge(q,0,1):Ge(q/100,0,1)},Ed=(b,V,j,q)=>{if(q<=0)return;const me=b.getImageData(0,0,V,j),re=255*q;for(let fe=0;fe<me.data.length;fe+=4){const Ae=(Math.random()*2-1)*re;me.data[fe]=Ge(me.data[fe]+Ae,0,255),me.data[fe+1]=Ge(me.data[fe+1]+Ae,0,255),me.data[fe+2]=Ge(me.data[fe+2]+Ae,0,255)}b.putImageData(me,0,0)},qr=async b=>{b.readyState>=2&&b.videoWidth>0&&b.videoHeight>0||await new Promise(V=>{let j=!1,q=0;const me=()=>{j||(j=!0,b.removeEventListener("loadedmetadata",re),b.removeEventListener("loadeddata",re),b.removeEventListener("canplay",re),window.clearTimeout(q),V())},re=()=>{me()};b.addEventListener("loadedmetadata",re),b.addEventListener("loadeddata",re),b.addEventListener("canplay",re),q=window.setTimeout(()=>me(),800),b.play().catch(()=>{})})},Vd=async(b,V)=>{await new Promise(j=>{let q=!1,me=0;const re=()=>{q||(q=!0,b.removeEventListener("seeked",fe),window.clearTimeout(me),j())},fe=()=>{re()};if(Math.abs(b.currentTime-V)<.016){requestAnimationFrame(()=>re());return}b.addEventListener("seeked",fe),me=window.setTimeout(()=>re(),700),b.currentTime=V})},Qr=async(b,V)=>{await qr(b);const j=Math.floor(b.videoWidth),q=Math.floor(b.videoHeight);if(j<=0||q<=0)return null;const me=Number.isFinite(b.duration)&&b.duration>0?b.duration:0,re=me>0?Ge(V,0,me):0;await Vd(b,re);const fe=document.createElement("canvas");fe.width=j,fe.height=q;const Ae=fe.getContext("2d");if(!Ae)return null;const ht=kd(et.value);ht!==""&&(Ae.filter=ht);try{Ae.drawImage(b,0,0,j,q)}catch{return null}const Yt=xd(et.value);return Ed(Ae,j,q,Yt),oi(fe)},Sd=async(b,V)=>{const j=document.createElement("video");j.src=b,j.muted=!0,j.playsInline=!0,j.preload="auto",b.startsWith("blob:")||(j.crossOrigin="anonymous");try{return await qr(j),await Qr(j,V)}catch{return null}finally{j.pause(),j.removeAttribute("src"),j.load()}},Cd=async b=>{const V=T.value,j=oi(yd(V));if(j)return j;if(V!=null&&V.captureFrameAt)for(let re=0;re<4;re+=1){const fe=wd(V);if(fe!==null&&fe<=0&&re<2){await ni(80);continue}const Ae=await Promise.race([V.captureFrameAt(b),ni(450).then(()=>null)]),ht=oi(Ae);if(ht)return ht;await ni(80)}const q=bd(V);if(q){const re=await Qr(q,b);if(re)return re}const me=Ga.value.trim();if(me!==""){const re=await Sd(me,b);if(re)return re}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(et.value);if(!ai(b)&&V.length>0&&Array.isArray(b.timeline)&&b.timeline.length>0){const q=b.timeline[0];q&&(b.timeline=[{...q,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,Nd=b=>{if(!b||typeof b!="object")return null;const V=b.posterFrame;if(typeof V!="string")return null;const j=V.trim();return j!==""?j:null};async function ii(){const b=Jn(ts(ie())),V=es(et.value),j=ai(b)||V.length>0,q=Nd(o.initialRecipe);if(j){const me=ee.value>0?ee.value:.1;try{const re=await Cd(me);re?b.posterFrame=re:q&&(b.posterFrame=q)}catch{q&&(b.posterFrame=q)}}else delete b.posterFrame;return he(),i("draft-saved",b),b}function ns(){_e()&&(Rr(),Ut())}async function _d(b){tn();const V=Do();Io=window.setInterval(async()=>{try{if(Ct){tn();return}const j=await V.getJob(b),q=Number(j.progress??0);if(Xe.value=Number.isFinite(q)?q:0,j.status==="completed"||j.status==="failed"||j.status==="cancelled")if(tn(),nt.value=!1,Tt.value=null,j.status==="completed")Xe.value=100,Gt.value=!0,je.value=null;else{const me=j.status==="cancelled"||typeof j.error_message=="string"&&/cancel/i.test(j.error_message);je.value=me?"Export canceled.":typeof j.error_message=="string"&&j.error_message.trim()!==""?j.error_message:"Export failed"}}catch(j){tn(),nt.value=!1,Tt.value=null,je.value=j instanceof Error?j.message:"Failed to check export progress"}},2e3)}function ri(){const b=Jn(J());try{const V=b.timeline??[]}catch{}x.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(()=>Y.value,b=>{if(A.value||!b)return;const V=(b==null?void 0:b.filters)??[];Uc(V)},{immediate:!0}),e.watch(()=>et.value,b=>{pt(b),Ut()},{deep:!0}),e.watch(()=>B.value,b=>{K(b),Ut()},{deep:!0}),e.watch(()=>U.value,b=>{const V=b.map(j=>({...j,source:typeof j.source=="string"?j.source:void 0}));de(V),Ut()},{deep:!0}),e.watch(()=>ee.value,Ut),n({saveDraft:ii,exportForUpload:vd}),ri(),e.onUnmounted(()=>{tn(),Ct=!0,dn&&(clearTimeout(dn),dn=null),h.value&&(h.value.destroy(),h.value=null),C.value=null,y.value=null,S.value=null});function Td(){gt||!Ya.value||(gt=new wg({filters:Gn.value,callbacks:{onApplyFilter:b=>{Hn(b.id)},onRemoveFilter:b=>{$r(b)},onUpdateParam:(b,V,j)=>{Pr(b,V,j)},onPreviewFilter:b=>{Fr(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=()=>{!_n.value||nn||(nn=new ResizeObserver(V=>{V[0]&&(Ro.value=Math.round(V[0].contentRect.width))}),nn.observe(_n.value))};b(),nn||e.nextTick(b),c.value&&(ei(),Dt||e.nextTick(ei)),o.media&&ri(),c.value&&e.nextTick(()=>{Td()}),e.nextTick(()=>{const V=document.querySelector(".video-editor");V&&V.getBoundingClientRect();const j=document.querySelector(".mobile-layout");j&&j.getBoundingClientRect()})}),e.onUnmounted(()=>{window.removeEventListener("resize",H),nn==null||nn.disconnect(),nn=null,Dt==null||Dt(),Dt=null,gt==null||gt.destroy(),gt=null}),(b,V)=>{var j,q,me,re;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-editor",{mobile:c.value}])},[c.value?(e.openBlock(),e.createElementBlock("div",pw,[e.createElementVNode("div",fw,[e.createElementVNode("div",hw,[e.createElementVNode("button",{class:e.normalizeClass(["mobile-toolbar-btn",{active:e.unref(ne)}]),onClick:V[0]||(V[0]=(...fe)=>e.unref(Q)&&e.unref(Q)(...fe)),"aria-label":e.unref(ne)?"Pause":"Play","data-testid":"btn-mobile-play"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(ne)?e.unref(ml):e.unref(fl)},null,8,["icon"])],10,vw),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:ns,"aria-label":"Reset all changes","data-testid":"btn-mobile-reset"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Ln)},null,8,["icon"])])]),e.createElementVNode("div",gw,[e.createElementVNode("button",{class:"mobile-toolbar-btn mobile-toolbar-save",onClick:ii,"aria-label":"Save","data-testid":"btn-mobile-save",disabled:!e.unref(pe)},[e.createVNode(e.unref(I.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]=fe=>Yr()),"aria-label":"Export","data-testid":"btn-mobile-export",disabled:nt.value||!e.unref(pe)},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(vo)},null,8,["icon"])],8,ww),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[2]||(V[2]=fe=>i("close")),"aria-label":"Close","data-testid":"btn-mobile-close"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Dn)},null,8,["icon"])])])]),e.createElementVNode("div",bw,[e.withDirectives(e.createVNode(ms,{ref_key:"pixiPreviewMobileRef",ref:v,"aria-hidden":!f.value,class:"preview-host-child",source:Ga.value,"fallback-duration":$t.value,filters:Ar.value,playhead:Or.value,"is-playing":e.unref(ne),"fit-mode":D.value,active:f.value,onPlayPause:e.unref(Q),onFrameUpdate:Wr,onDurationChange:$o},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":!p.value,class:"preview-host-child","media-uuid":s.value,recipe:x.value,media:Dr.value,"enable-engine":p.value&&Ur.value,"fit-mode":D.value,onTimeUpdate:jr,onPlayStateChange:Zr,onDurationChange:$o,onEngineReady:Hr},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,p.value]]),nt.value?(e.openBlock(),e.createElementBlock("div",kw,[e.createElementVNode("div",xw,[e.createElementVNode("span",null,"Exporting "+e.toDisplayString(Xe.value)+"%",1),e.createElementVNode("div",Ew,[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:_n,class:"timeline-section"},[e.createElementVNode("div",Vw,[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(Fs,{playhead:e.unref(ee),clips:e.unref(F),"selected-clip-id":((j=e.unref(Y))==null?void 0:j.id)??((q=e.unref(F)[0])==null?void 0:q.id)??null,duration:$t.value,"zoom-level":e.unref(Me),sensitivity:.25,"is-mobile":!0,"onUpdate:playhead":e.unref(xe),onTrim:e.unref(se),onSplit:e.unref(ke),onClipSelect:e.unref(oe),onClipMove:e.unref(He)},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",Sw,[e.createElementVNode("div",Cw,[e.createElementVNode("div",Nw,[e.createElementVNode("div",_w,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[3]||(V[3]=fe=>D.value=fe),"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,D.value]])])]),e.withDirectives(e.createVNode(ms,{ref_key:"pixiPreviewDesktopRef",ref:g,"aria-hidden":!f.value,class:"preview-host-child",source:Ga.value,"fallback-duration":$t.value,filters:Ar.value,playhead:Or.value,"is-playing":e.unref(ne),"fit-mode":D.value,active:f.value,onPlayPause:e.unref(Q),onFrameUpdate:Wr,onDurationChange:$o},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":!p.value,class:"preview-host-child","media-uuid":s.value,recipe:x.value,media:Dr.value,"enable-engine":p.value&&Ur.value,"fit-mode":D.value,onTimeUpdate:jr,onPlayStateChange:Zr,onDurationChange:$o,onEngineReady:Hr},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,p.value]]),b.showThumbnailPicker?(e.openBlock(),e.createBlock(H0,{key:0,"media-uuid":s.value,duration:$t.value,onSelect:dd},null,8,["media-uuid","duration"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Tw,[e.createElementVNode("div",Mw,[e.createElementVNode("div",Bw,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value,fe=>(e.openBlock(),e.createElementBlock("button",{key:fe.id,class:e.normalizeClass(["tab-btn",{active:d.value===fe.id}]),onClick:Ae=>d.value=fe.id},e.toDisplayString(fe.label),11,Fw))),128))]),e.createElementVNode("div",Iw,[e.withDirectives(e.createElementVNode("div",Rw,[e.createVNode(a0,{filters:Gn.value,"active-filters":Ha.value,"thumbnail-url":Oc.value,onApplyFilter:Hn,onRemoveFilter:$r,onUpdateParam:Pr,onPreviewFilter:Yc},null,8,["filters","active-filters","thumbnail-url"])],512),[[e.vShow,d.value==="filters"]]),e.withDirectives(e.createElementVNode("div",$w,[e.createVNode(f1,{overlays:B.value,onAddOverlay:qc,onUpdateOverlay:Qc,onRemoveOverlay:ed},null,8,["overlays"])],512),[[e.vShow,d.value==="text"]]),e.withDirectives(e.createElementVNode("div",Dw,[e.createVNode(D1,{"selected-clips":_.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",Uw,[e.createVNode(gg,{"audio-layers":U.value,"master-volume":z.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",Aw,[e.unref(Br)?(e.openBlock(),e.createBlock(g0,{key:0,filter:e.unref(Br),"current-frame":e.unref(Ne),onUpdateParams:Kc},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",Ow,[...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",Lw,[e.createVNode(F0,{"can-export":e.unref(pe),"is-exporting":nt.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",zw," Export complete ")):e.createCommentVNode("",!0),je.value&&!Gt.value?(e.openBlock(),e.createElementBlock("div",Pw,e.toDisplayString(je.value),1)):e.createCommentVNode("",!0)],512),[[e.vShow,d.value==="export"]])])])])]),e.createElementVNode("div",jw,[e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:_n,class:"timeline-container"},[e.createElementVNode("div",Ww,[e.createElementVNode("label",null,[V[17]||(V[17]=e.createTextVNode(" Zoom ",-1)),e.createElementVNode("input",{type:"range",min:"10",max:"600",value:e.unref(Me),onInput:V[4]||(V[4]=fe=>Jc(fe))},null,40,Zw)]),e.createElementVNode("span",Xw,e.toDisplayString(Math.round(e.unref(Me)))+" px/s",1)]),e.createVNode(Fs,{playhead:e.unref(ee),clips:e.unref(F),"selected-clip-id":((me=e.unref(Y))==null?void 0:me.id)??((re=e.unref(F)[0])==null?void 0:re.id)??null,duration:$t.value,"zoom-level":e.unref(Me),sensitivity:.25,"onUpdate:playhead":e.unref(xe),onTrim:e.unref(se),onSplit:e.unref(ke),onClipSelect:e.unref(oe),onClipMove:e.unref(He)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"]),e.createVNode(wv,{"selected-clip":e.unref(Y),"can-split":Lc.value,"can-delete":zc.value,"is-playing":e.unref(ne),"zoom-level":e.unref(Me),"playback-speed":e.unref(ce),onSplit:e.unref(le),onDelete:e.unref(Ee),onDuplicate:e.unref(Se),onZoomIn:Hc,onZoomOut:Gc,onZoomChange:Qa,onFitToWindow:Xc,onPlayPause:e.unref(Q),onFrameForward:e.unref(De),onFrameBackward:e.unref(Qe),onSkipToStart:e.unref(We),onSkipToEnd:e.unref(ft),onSpeedChange:e.unref(Ze)},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",Hw,[e.createElementVNode("div",Gw,[e.createElementVNode("label",Jw,[V[18]||(V[18]=e.createElementVNode("span",null,"Trim start (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[5]||(V[5]=fe=>Cn.value=fe),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-start"},null,512),[[e.vModelText,Cn.value]])]),e.createElementVNode("label",Yw,[V[19]||(V[19]=e.createElementVNode("span",null,"Trim end (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[6]||(V[6]=fe=>Nn.value=fe),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-end"},null,512),[[e.vModelText,Nn.value]])]),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-start-playhead",disabled:!e.unref(Y),onClick:V[7]||(V[7]=fe=>zr("start"))}," Start = Playhead ",8,Kw),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-end-playhead",disabled:!e.unref(Y),onClick:V[8]||(V[8]=fe=>zr("end"))}," End = Playhead ",8,qw),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-trim",disabled:!e.unref(Y),onClick:jc}," Apply Trim ",8,Qw)]),e.createElementVNode("div",eb,[e.createElementVNode("label",tb,[V[20]||(V[20]=e.createElementVNode("span",null,"Quick filter",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[9]||(V[9]=fe=>en.value=fe),"data-testid":"video-dev-filter-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Gn.value,fe=>(e.openBlock(),e.createElementBlock("option",{key:fe.id,value:fe.id},e.toDisplayString(fe.name),9,nb))),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(Y)||en.value==="",onClick:Wc}," Apply Filter ",8,ob),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-clear-filters",disabled:e.unref(et).length===0,onClick:Zc}," Clear Filters ",8,ab),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(Y),onClick:V[10]||(V[10]=fe=>Hn("noise"))}," QA: Noise ",8,ib),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(Y),onClick:V[11]||(V[11]=fe=>Hn("grayscale"))}," QA: Grayscale ",8,rb)])])):e.createCommentVNode("",!0)],512)])]))],2)}}}),Ji=Be(sb,[["__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 p=Oe(l.timelineEnd);p!==null&&p>0&&p<=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)}},cb=(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 p=a.timeline[0];p&&Array.isArray(p.filters)&&p.filters.length>0&&(l=!0)}let d=!1;const u=Oe(t.trimStart)??Oe(t.trim_start)??Oe(o==null?void 0:o.start),m=Oe(t.trimEnd)??Oe(t.trim_end)??Oe(o==null?void 0:o.end);if(u!==null&&u>0&&(d=!0),m!==null&&s!==void 0&&m<s&&(d=!0),!d&&Array.isArray(a.timeline)&&a.timeline.length===1){const p=a.timeline[0];if(p){const v=Oe(p.sourceIn),g=Oe(p.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 p=a.timeline[0];if(p){const v=Oe(p.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)},db=(a,n={})=>{var f,p;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((p=n.exportMeta)==null?void 0:p.height);u!==null&&(t.height=u);const m=Ft(t.output);return t.fps=Oe(t.fps)??Oe(m==null?void 0:m.fps)??30,lb(t,n.mediaDuration??null),t},ub={key:0},mb=["data-testid"],pb={class:"ve-mobile-header"},fb=["data-testid"],hb={class:"ve-mobile-title"},vb=["data-testid","disabled"],gb={key:1,class:"ve-mobile-spacer","aria-hidden":"true"},yb={class:"ve-body"},wb=["data-testid"],bb=["aria-label"],kb={class:"ve-header"},xb={class:"ve-title"},Eb=["data-testid"],Vb={class:"ve-body"},Sb={class:"ve-footer"},Cb=["data-testid"],Nb=["data-testid","disabled"],_b=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(()=>m.value?o.savingText:o.confirmText),u=e.ref(typeof window<"u"?window.innerWidth<768:!1),m=e.ref(!1),f=e.ref(!1),p=e.ref(null),v=`temp-${Date.now()}`,g=e.computed(()=>{var z;const _=(z=o.featureFlags)==null?void 0:z.export;return typeof _=="boolean"?_: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 _={showThumbnailPicker:o.showThumbnailPicker,workflowMode:o.workflowMode,clientExportThreshold:o.clientExportThreshold,maxDuration:o.maxDuration,serverRenderEndpoint:o.serverRenderEndpoint};return o.featureFlags!==void 0&&(_.featureFlags=o.featureFlags),o.initialRecipe!==void 0&&(_.initialRecipe=o.initialRecipe),o.media!==void 0&&(_.media=o.media),_}),N=()=>{u.value=window.innerWidth<768};e.onMounted(()=>{window.addEventListener("resize",N)}),e.onUnmounted(()=>{window.removeEventListener("resize",N)}),e.onErrorCaptured(()=>(f.value=!0,!1));const w=_=>{const z=Array.isArray(_.timeline)?_.timeline:[];if(z.length===0)return 0;let H=0;for(const M of z){const $=Number(M.sourceIn),X=Number(M.sourceOut),W=Number(M.speed??1),te=Number.isFinite(W)&&W>0?W:1;if(Number.isFinite($)&&Number.isFinite(X)&&X>$){H+=(X-$)/te;continue}const ge=Number(M.timelineStart),Ne=Number(M.timelineEnd);Number.isFinite(ge)&&Number.isFinite(Ne)&&Ne>ge&&(H+=Ne-ge)}return H},h=(_,z,H)=>{let M=null;const $=new Promise((X,W)=>{M=setTimeout(()=>W(new Error(`${H} timed out after ${z}ms`)),z)});return Promise.race([_,$]).finally(()=>{M!==null&&clearTimeout(M)})},x=()=>{var $;const H=($=o.media)==null?void 0:$.duration;if(typeof H!="number"||!Number.isFinite(H)||H<=0)return 12e3;const M=Math.round(H*1e3);return Math.min(45e3,Math.max(12e3,M))},D=()=>{i("close"),i("update:open",!1)},C=()=>{m.value=!1,D()},y=_=>{i("recipe-generated",_)},S=_=>{i("export-started",_),i("save-started",_)},A=_=>{i("video-exported",_)},k=_=>{i("thumbnail-selected",_)},B=(_,z,H)=>{i("save-recipe",_);const M={recipe:_,exportPayload:z};H!==void 0&&(M.toastDescription=H),i("save-complete",M),D()},R=_=>{m.value||(i("draft-saved",_),B(_,null))},U=async()=>{var _;if(!m.value){if(f.value||p.value===null){i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),D();return}m.value=!0;try{const z=await h(p.value.saveDraft(),x(),"saveDraft");let H=null,M=!1,$;const X=w(z),W=X>0?X:((_=o.media)==null?void 0:_.duration)??0;if(g.value&&W>0&&W<=o.clientExportThreshold&&typeof p.value.exportForUpload=="function"){M=!0;const ge=Math.min(9e4,Math.max(15e3,o.clientExportThreshold*2e3));try{H=await h(p.value.exportForUpload(z),ge,"exportForUpload")}catch{H=null}}if(xc(z)&&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}M&&H===null&&($="Video edits saved. Final render will happen when you share."),B(z,H,$)}catch{i("save-error",{code:"save-failed",message:"Unable to save video edits. Please try again."}),D()}finally{m.value=!1}}};return n({saveDraft:U}),(_,z)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[s.value?(e.openBlock(),e.createElementBlock("div",ub,[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ve-fullscreen","data-testid":r.value},[e.createElementVNode("header",pb,[e.createElementVNode("button",{class:"ve-mobile-action",type:"button","data-testid":`${r.value}-close-button`,onClick:C},e.toDisplayString(l.value),9,fb),e.createElementVNode("h2",hb,e.toDisplayString(_.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:m.value,onClick:U},e.toDisplayString(d.value),9,vb)):(e.openBlock(),e.createElementBlock("span",gb))]),e.createElementVNode("section",yb,[e.createVNode(Ji,e.mergeProps({ref_key:"videoEditorRef",ref:p,"media-uuid":E.value},T.value,{onClose:C,onDraftSaved:R,onExportStarted:S,onRecipeGenerated:y,onThumbnailSelected:k,onVideoExported:A}),null,16,["media-uuid"])])],8,mb)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"ve-overlay","data-testid":r.value,onClick:e.withModifiers(C,["self"])},[e.createElementVNode("div",{class:"ve-dialog",role:"dialog","aria-label":_.title,"aria-modal":"true"},[e.createElementVNode("header",kb,[e.createElementVNode("h2",xb,e.toDisplayString(_.title),1),e.createElementVNode("button",{class:"ve-close",type:"button","data-testid":`${r.value}-close-button`,"aria-label":"Close",onClick:C}," ✕ ",8,Eb)]),e.createElementVNode("section",Vb,[e.createVNode(Ji,e.mergeProps({ref_key:"videoEditorRef",ref:p,"media-uuid":E.value},T.value,{onClose:C,onDraftSaved:R,onExportStarted:S,onRecipeGenerated:y,onThumbnailSelected:k,onVideoExported:A}),null,16,["media-uuid"])]),e.createElementVNode("footer",Sb,[e.renderSlot(_.$slots,"footer",{close:C,isSaving:m.value,save:U},()=>[e.createElementVNode("button",{class:"ve-btn",type:"button","data-testid":`${r.value}-cancel-button`,onClick:C},e.toDisplayString(l.value),9,Cb),c.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ve-btn ve-btn--primary",type:"button","data-testid":`${r.value}-confirm-button`,disabled:m.value,onClick:U},e.toDisplayString(d.value),9,Nb)):e.createCommentVNode("",!0)],!0)])],8,bb)],8,wb))])):e.createCommentVNode("",!0)]))}}),Tb=Be(_b,[["__scopeId","data-v-0ff40919"]]),Mb={class:"video-editor-modal"},Bb={class:"video-preview-container"},Fb=["src"],Ib={class:"video-overlay-controls"},Rb=["aria-label"],$b={class:"time-display"},Db={class:"timeline-container"},Ub={class:"clip-name"},Ab={class:"timeline-time-labels"},Ob={class:"tool-tabs"},Lb=["onClick"],zb={class:"tool-panel"},Pb={key:0,class:"trim-panel"},jb={class:"trim-controls"},Wb={key:1,class:"filters-panel"},Zb={class:"filter-grid"},Xb=["onClick"],Hb={key:2,class:"text-panel"},Gb={key:3,class:"transitions-panel"},Jb={class:"transition-grid"},Yb=["onClick"],Kb={class:"action-buttons"},qb=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),m=e.ref(0),f=e.ref(null),p=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"}],N=[{id:"fade",name:"Fade"},{id:"slide",name:"Slide"},{id:"zoom",name:"Zoom"},{id:"wipe",name:"Wipe"}],w=e.ref();e.onMounted(()=>{var M,$;(M=t.media)!=null&&M.url?r.value=t.media.url:($=t.media)!=null&&$.file&&(r.value=URL.createObjectURL(t.media.file))}),e.onUnmounted(()=>{var M;(M=t.media)!=null&&M.file&&r.value&&URL.revokeObjectURL(r.value)});function h(){i.value&&(l.value=i.value.duration,m.value=l.value)}function x(){i.value&&(c.value=i.value.currentTime)}function D(){s.value=!1}function C(){i.value&&(s.value?(i.value.pause(),s.value=!1):(i.value.play(),s.value=!0))}function y(M){if(!M||isNaN(M))return"00:00";const $=Math.floor(M/60),X=Math.floor(M%60);return`${$.toString().padStart(2,"0")}:${X.toString().padStart(2,"0")}`}function S(M){if(!i.value||!w.value)return;const $=w.value.getBoundingClientRect(),te=(M.clientX-$.left)/$.width*l.value;i.value.currentTime=Math.max(0,Math.min(te,l.value))}function A(){u.value=c.value}function k(){m.value=c.value}function B(){u.value=0,m.value=l.value}function R(M){f.value=M;const $=W=>{if(!f.value||!w.value)return;const te=w.value.getBoundingClientRect(),ee=(W.clientX-te.left)/te.width*l.value;f.value==="start"?u.value=Math.max(0,Math.min(ee,m.value-1)):m.value=Math.max(u.value+1,Math.min(ee,l.value))},X=()=>{f.value=null,document.removeEventListener("mousemove",$),document.removeEventListener("mouseup",X)};document.addEventListener("mousemove",$),document.addEventListener("mouseup",X)}function U(M){if(v.value=M,!i.value)return;const $={none:"none",grayscale:"grayscale(100%)",sepia:"sepia(100%)",blur:"blur(5px)",brightness:"brightness(150%)",contrast:"contrast(150%)"};i.value.style.filter=$[M]||"none"}function _(){}function z(M){}function H(){const M={timeline:[{id:d.value,url:r.value,startTime:0,endTime:l.value,sourceIn:u.value,sourceOut:m.value,track:0}],filters:v.value?[{type:v.value}]:[],textOverlays:g.value?[{content:g.value}]:[],duration:m.value-u.value};o("save",M)}return(M,$)=>(e.openBlock(),e.createElementBlock("div",Mb,[e.createElementVNode("div",Bb,[e.createElementVNode("video",{ref_key:"videoElement",ref:i,class:"video-preview",src:r.value,onLoadedmetadata:h,onTimeupdate:x,onEnded:D,controls:""},null,40,Fb),e.createElementVNode("div",Ib,[e.createElementVNode("button",{class:"play-pause-btn",onClick:C,"aria-label":s.value?"Pause":"Play"},[e.createVNode(e.unref(I.IonIcon),{icon:s.value?e.unref(_u):e.unref(Fu)},null,8,["icon"])],8,Rb),e.createElementVNode("div",$b,e.toDisplayString(y(c.value))+" / "+e.toDisplayString(y(l.value)),1)])]),e.createElementVNode("div",Db,[e.createElementVNode("div",{class:"timeline-track",onClick:S,ref_key:"timelineTrack",ref:w},[e.createElementVNode("div",{class:"timeline-clip",style:e.normalizeStyle({left:`${u.value/l.value*100}%`,right:`${100-m.value/l.value*100}%`})},[e.createElementVNode("span",Ub,e.toDisplayString(d.value),1)],4),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:`${c.value/l.value*100}%`})},null,4),p.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"trim-handle trim-start",style:e.normalizeStyle({left:`${u.value/l.value*100}%`}),onMousedown:$[0]||($[0]=X=>R("start"))},null,36)):e.createCommentVNode("",!0),p.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"trim-handle trim-end",style:e.normalizeStyle({left:`${m.value/l.value*100}%`}),onMousedown:$[1]||($[1]=X=>R("end"))},null,36)):e.createCommentVNode("",!0)],512),e.createElementVNode("div",Ab,[e.createElementVNode("span",null,e.toDisplayString(y(0)),1),e.createElementVNode("span",null,e.toDisplayString(y(l.value)),1)])]),e.createElementVNode("div",Ob,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,X=>e.createElementVNode("button",{key:X.id,class:e.normalizeClass(["tool-tab",{active:p.value===X.id}]),onClick:W=>p.value=X.id},[e.createVNode(e.unref(I.IonIcon),{icon:X.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(X.label),1)],10,Lb)),64))]),e.createElementVNode("div",zb,[p.value==="trim"?(e.openBlock(),e.createElementBlock("div",Pb,[$[7]||($[7]=e.createElementVNode("h3",null,"Trim Video",-1)),$[8]||($[8]=e.createElementVNode("p",null,"Click and drag on the timeline to set trim points",-1)),e.createElementVNode("div",jb,[e.createElementVNode("button",{class:"btn-trim",onClick:A},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(ss)},null,8,["icon"]),$[4]||($[4]=e.createTextVNode(" Set Start ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:k},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(ss)},null,8,["icon"]),$[5]||($[5]=e.createTextVNode(" Set End ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:B},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Dn)},null,8,["icon"]),$[6]||($[6]=e.createTextVNode(" Clear ",-1))])])])):p.value==="filters"?(e.openBlock(),e.createElementBlock("div",Wb,[$[9]||($[9]=e.createElementVNode("h3",null,"Filters",-1)),e.createElementVNode("div",Zb,[(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:W=>U(X.id)},e.toDisplayString(X.name),11,Xb)),64))])])):p.value==="text"?(e.openBlock(),e.createElementBlock("div",Hb,[$[10]||($[10]=e.createElementVNode("h3",null,"Text Overlay",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[2]||($[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:_},"Add Text")])):p.value==="transitions"?(e.openBlock(),e.createElementBlock("div",Gb,[$[11]||($[11]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",Jb,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(N,X=>e.createElementVNode("button",{key:X.id,class:"transition-option",onClick:W=>(X.id,void 0)},e.toDisplayString(X.name),9,Yb)),64))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Kb,[e.createElementVNode("button",{class:"btn-cancel",onClick:$[3]||($[3]=X=>M.$emit("cancel"))},"CANCEL"),e.createElementVNode("button",{class:"btn-save",onClick:H},"SAVE")])]))}}),Qb=Be(qb,[["__scopeId","data-v-b933f33b"]]),e2={class:"time-label"},t2=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),m=l%(c*5)===0;s.push({time:l,position:d,label:u,major:m})}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",e2,e.toDisplayString(l.label),1),e.createElementVNode("div",{class:e.normalizeClass(["time-tick",{major:l.major}])},null,2)],4))),128))],4))}}),n2=Be(t2,[["__scopeId","data-v-0ef9c910"]]),o2=["data-track-index"],a2={class:"track-header"},i2={class:"track-label"},r2={class:"track-controls"},s2=["data-testid","aria-label"],l2=["data-testid","onMousedown","onClick"],c2={class:"clip-content"},d2={class:"clip-name"},u2={key:0,class:"clip-thumbnail"},m2=["src","alt"],p2=["onMousedown","aria-label"],f2=["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,N=E.timelineStart/t.duration*100,w=T/t.duration*100;return{left:`${N}%`,width:`${w}%`,backgroundColor:u(E)}}function u(E){const T=["#4A90E2","#7ED321","#F5A623","#BD10E0","#9013FE","#50E3C2","#B8E986","#F8E71C"],N=parseInt(E.id.replace(/\D/g,""))%T.length;return T[N]}function m(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 p(){r.value=!r.value}function v(E,T){if(c.value)return;s.value=!0;const N=T.clientX,w=E.timelineStart,h=D=>{if(!s.value)return;const C=D.clientX-N,y=parseFloat(l.value.width),S=C/(t.zoom*100)*(t.duration/y),A=Math.max(0,w+S);o("clip-move",E.id,A)},x=()=>{s.value=!1,document.removeEventListener("mousemove",h),document.removeEventListener("mouseup",x)};document.addEventListener("mousemove",h),document.addEventListener("mouseup",x)}function g(E,T,N){c.value=T;const w=N.clientX,h=E.sourceIn,x=E.sourceOut,D=y=>{if(!c.value)return;const S=y.clientX-w,A=parseFloat(l.value.width),k=S/(t.zoom*100)*(t.duration/A);if(c.value==="start"){const B=Math.max(0,h+k);o("clip-trim",E.id,B,x)}else{const B=Math.max(h+1,x+k);o("clip-trim",E.id,h,B)}},C=()=>{c.value=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",C)};document.addEventListener("mousemove",D),document.addEventListener("mouseup",C)}return(E,T)=>(e.openBlock(),e.createElementBlock("div",{class:"video-track","data-track-index":E.trackIndex},[e.createElementVNode("div",a2,[e.createElementVNode("span",i2,"Track "+e.toDisplayString(E.trackIndex+1),1),e.createElementVNode("div",r2,[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:p},[e.createVNode(e.unref(I.IonIcon),{icon:r.value?e.unref(Hu):e.unref(Zu)},null,8,["icon"])],8,s2)):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,N=>(e.openBlock(),e.createElementBlock("div",{key:N.id,class:e.normalizeClass(["timeline-clip",{selected:N.id===i.value}]),style:e.normalizeStyle(d(N)),"data-testid":`clip-${N.id}`,onMousedown:w=>v(N,w),onClick:w=>f(N)},[e.createElementVNode("div",c2,[e.createElementVNode("span",d2,e.toDisplayString(m(N)),1),N.thumbnail?(e.openBlock(),e.createElementBlock("div",u2,[e.createElementVNode("img",{src:N.thumbnail,alt:m(N)},null,8,m2)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"trim-handle trim-start",onMousedown:e.withModifiers(w=>g(N,"start",w),["stop"]),"aria-label":`Trim start of ${m(N)}`},null,40,p2),e.createElementVNode("div",{class:"trim-handle trim-end",onMousedown:e.withModifiers(w=>g(N,"end",w),["stop"]),"aria-label":`Trim end of ${m(N)}`},null,40,f2)],46,l2))),128))],4)],8,o2))}}),v2=Be(h2,[["__scopeId","data-v-48e480d2"]]),g2={class:"video-timeline"},y2={class:"timeline-tracks"},w2=["aria-label","aria-valuenow","aria-valuemax"],b2={class:"timeline-controls"},k2={class:"zoom-level"},x2=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(h=>h.track||0));return Array(w+1).fill(null)}),d=e.computed(()=>`${t.currentTime/t.duration*100}%`);function u(w){return t.clips.filter(h=>(h.track||0)===w)}function m(w){const h=Math.floor(w/60),x=Math.floor(w%60);return`${h}:${x.toString().padStart(2,"0")}`}function f(w,h){o("clip-move",w,h)}function p(w,h,x){o("clip-trim",w,h,x)}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=x=>{if(!s.value||!c.value)return;const D=c.value.getBoundingClientRect(),S=Math.max(0,Math.min(x.clientX-D.left,D.width))/D.width*t.duration;o("seek",S)},h=()=>{s.value=!1,document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",h)};document.addEventListener("mousemove",w),document.addEventListener("mouseup",h)}function N(w){let h=t.currentTime;switch(w.key){case"ArrowLeft":h=Math.max(0,t.currentTime-1);break;case"ArrowRight":h=Math.min(t.duration,t.currentTime+1);break;case"Home":h=0;break;case"End":h=t.duration;break;default:return}w.preventDefault(),o("seek",h)}return e.onMounted(()=>{c.value=document.querySelector(".video-timeline")}),e.onUnmounted(()=>{}),(w,h)=>(e.openBlock(),e.createElementBlock("div",g2,[e.createVNode(n2,{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,(x,D)=>(e.openBlock(),e.createBlock(v2,{key:`track-${D}`,"data-testid":`track-${D}`,clips:u(D),"track-index":D,zoom:i.value,duration:w.duration,onClipMove:f,onClipTrim:p,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 ${m(w.currentTime)}`,role:"slider","aria-valuenow":w.currentTime,"aria-valuemax":w.duration,tabindex:"0",onKeydown:N},null,44,w2),e.createElementVNode("div",b2,[e.createElementVNode("button",{"data-testid":"btn-zoom-in","aria-label":"Zoom in",onClick:g},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(qi)},null,8,["icon"])]),e.createElementVNode("span",k2,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(I.IonIcon),{icon:e.unref(Au)},null,8,["icon"])])])]))}}),E2=Be(x2,[["__scopeId","data-v-001df415"]]),V2={class:"video-filters-panel"},S2={class:"filter-controls"},C2=["for"],N2={class:"filter-slider-group"},_2=["id","onUpdate:modelValue","min","max","step","data-testid","aria-label","aria-valuenow","aria-valuemin","aria-valuemax","onInput"],T2={class:"filter-value"},M2={class:"filter-actions"},B2={key:0,class:"filter-presets"},F2={class:"preset-list"},I2=["data-testid","aria-label","onClick"],R2=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,p)=>(f[p.type]=p.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,p){switch(f){case"brightness":case"contrast":case"saturation":case"sepia":case"grayscale":return`${p}%`;case"hue":return`${p}°`;case"blur":case"sharpen":return p.toFixed(1);default:return p.toString()}}function c(f){return["brightness","contrast","saturation","hue","blur","sharpen","sepia","grayscale"].includes(f)}function l(f){if(!c(f))return;const p={id:`filter-${f}`,filterId:f,params:{value:i[f]},intensity:1};t("filter-change",p)}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 p={id:`custom-${Date.now()}`,name:f,values:{...i}};r.value.push(p)}function m(f){Object.entries(f.values).forEach(([p,v])=>{i[p]=v,l(p)})}return(f,p)=>(e.openBlock(),e.createElementBlock("div",V2,[p[3]||(p[3]=e.createElementVNode("h3",null,"Video Filters",-1)),e.createElementVNode("div",S2,[(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,C2),e.createElementVNode("div",N2,[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,_2),[[e.vModelText,i[v.type],void 0,{number:!0}]]),e.createElementVNode("span",T2,e.toDisplayString(s(v.type,i[v.type])),1)])])),64))]),e.createElementVNode("div",M2,[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(I.IonIcon),{icon:e.unref(Ln)},null,8,["icon"]),p[0]||(p[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(I.IonIcon),{icon:e.unref(er)},null,8,["icon"]),p[1]||(p[1]=e.createTextVNode(" Save as Preset ",-1))])]),r.value.length>0?(e.openBlock(),e.createElementBlock("div",B2,[p[2]||(p[2]=e.createElementVNode("h4",null,"Presets",-1)),e.createElementVNode("div",F2,[(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=>m(v)},e.toDisplayString(v.name),9,I2))),128))])])):e.createCommentVNode("",!0)]))}}),$2=Be(R2,[["__scopeId","data-v-5ad2ac63"]]),D2={class:"video-text-panel"},U2={class:"text-input-group"},A2={class:"text-options"},O2={class:"option-row"},L2={class:"option-row"},z2={class:"option-row"},P2={class:"option-row"},j2={class:"checkbox-label"},W2={class:"option-row"},Z2={class:"text-overlay-list"},X2={key:0,class:"empty-state"},H2=["data-testid"],G2={class:"overlay-preview"},J2={class:"overlay-controls"},Y2=["data-testid","aria-label","onClick"],K2=["data-testid","aria-label","onClick"],q2=["data-testid","aria-label","onClick"],Q2=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(m=>m.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",D2,[u[17]||(u[17]=e.createElementVNode("h3",null,"Text Overlays",-1)),e.createElementVNode("div",U2,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=m=>i.text=m),type:"text",placeholder:"Enter text...",class:"text-input","data-testid":"input-text","aria-label":"Text overlay content",onKeyup:e.withKeys(r,["enter"])},null,544),[[e.vModelText,i.text]]),e.createElementVNode("button",{class:"add-text-btn","data-testid":"btn-add-text","aria-label":"Add text overlay",onClick:r},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(qi)},null,8,["icon"]),u[7]||(u[7]=e.createTextVNode(" Add ",-1))])]),e.createElementVNode("div",A2,[e.createElementVNode("div",O2,[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]=m=>i.fontFamily=m),"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",L2,[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]=m=>i.fontSize=m),type:"number",min:"10",max:"200","data-testid":"input-font-size"},null,512),[[e.vModelText,i.fontSize,void 0,{number:!0}]])]),e.createElementVNode("div",z2,[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]=m=>i.color=m),type:"color","data-testid":"input-text-color"},null,512),[[e.vModelText,i.color]])]),e.createElementVNode("div",P2,[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]=m=>i.backgroundColor=m),type:"color","data-testid":"input-bg-color"},null,512),[[e.vModelText,i.backgroundColor]]),e.createElementVNode("label",j2,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[5]||(u[5]=m=>i.hasBackground=m),type:"checkbox","data-testid":"checkbox-bg"},null,512),[[e.vModelCheckbox,i.hasBackground]]),u[12]||(u[12]=e.createTextVNode(" Enable ",-1))])]),e.createElementVNode("div",W2,[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]=m=>i.animation=m),"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",Z2,[u[16]||(u[16]=e.createElementVNode("h4",null,"Active Overlays",-1)),o.value.length===0?(e.openBlock(),e.createElementBlock("div",X2," No text overlays added yet ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(m,f)=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:"text-overlay-item","data-testid":`overlay-${f}`},[e.createElementVNode("div",G2,[e.createElementVNode("span",{style:e.normalizeStyle({fontFamily:m.fontFamily,fontSize:`${Math.min(m.fontSize/4,16)}px`,color:m.color})},e.toDisplayString(m.text),5)]),e.createElementVNode("div",J2,[e.createElementVNode("button",{class:"edit-btn","data-testid":`btn-edit-${f}`,"aria-label":`Edit overlay: ${m.text}`,onClick:p=>c(m)},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(wu)},null,8,["icon"])],8,Y2),e.createElementVNode("button",{class:"duplicate-btn","data-testid":`btn-duplicate-${f}`,"aria-label":`Duplicate overlay: ${m.text}`,onClick:p=>l(m)},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(yu)},null,8,["icon"])],8,K2),e.createElementVNode("button",{class:"remove-btn","data-testid":`btn-remove-${f}`,"aria-label":`Remove overlay: ${m.text}`,onClick:p=>s(m.id)},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(zu)},null,8,["icon"])],8,q2)])],8,H2))),128))])]))}}),ek=Be(Q2,[["__scopeId","data-v-4d240e1e"]]),tk={class:"video-tools-panel"},nk={class:"tool-tabs"},ok=["data-testid","aria-label","aria-selected","onClick"],ak={class:"tool-content"},ik={key:0,class:"trim-panel",role:"tabpanel","aria-label":"Trim controls"},rk={class:"trim-actions"},sk={key:3,class:"transitions-panel",role:"tabpanel","aria-label":"Transition controls"},lk={class:"transition-types"},ck=["data-testid","aria-label","onClick"],dk={class:"transition-preview"},uk=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",tk,[e.createElementVNode("div",nk,[(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(I.IonIcon),{icon:r.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(r.name),1)],10,ok)),64))]),e.createElementVNode("div",ak,[o.activeTool==="trim"?(e.openBlock(),e.createElementBlock("div",ik,[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",rk,[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(I.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(I.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(I.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($2,{key:1,onFilterChange:i[3]||(i[3]=r=>o.$emit("filter-change",r))})):e.createCommentVNode("",!0),o.activeTool==="text"?(e.openBlock(),e.createBlock(ek,{key:2,onTextAdd:i[4]||(i[4]=r=>o.$emit("text-add",r))})):e.createCommentVNode("",!0),o.activeTool==="transitions"?(e.openBlock(),e.createElementBlock("div",sk,[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",dk,[e.createVNode(e.unref(I.IonIcon),{icon:r.icon},null,8,["icon"])]),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],8,ck)),64))])])):e.createCommentVNode("",!0)])]))}}),mk=Be(uk,[["__scopeId","data-v-fc135306"]]),pk={class:"video-export-panel"},fk={class:"export-presets"},hk=["value"],vk={key:0,class:"preset-details"},gk={class:"detail-row"},yk={class:"detail-row"},wk={class:"detail-row"},bk={class:"advanced-options"},kk={class:"options-content"},xk={class:"option-group"},Ek={class:"option-group"},Vk={class:"option-group"},Sk=["disabled"],Ck={key:1,class:"export-progress"},Nk={class:"progress-message"},_k={class:"progress-bar"},Tk=["aria-valuenow"],Mk={class:"progress-percentage"},Bk=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",pk,[u[14]||(u[14]=e.createElementVNode("h3",null,"Export Video",-1)),e.createElementVNode("div",fk,[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]=m=>i.value=m),"data-testid":"preset-select","aria-label":"Select export preset"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.presets,m=>(e.openBlock(),e.createElementBlock("option",{key:m.id,value:m.id},e.toDisplayString(m.name),9,hk))),128))],512),[[e.vModelSelect,i.value]])]),s.value?(e.openBlock(),e.createElementBlock("div",vk,[e.createElementVNode("div",gk,[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",wk,[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",bk,[u[12]||(u[12]=e.createElementVNode("summary",null,"Advanced Options",-1)),e.createElementVNode("div",kk,[e.createElementVNode("div",xk,[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]=m=>r.quality=m),"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",Ek,[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]=m=>r.bitrate=m),type:"number",min:"1",max:"50","data-testid":"bitrate-input"},null,512),[[e.vModelText,r.bitrate,void 0,{number:!0}]])]),e.createElementVNode("div",Vk,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[3]||(u[3]=m=>r.includeAudio=m),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(I.IonSpinner),{key:0,name:"crescent"})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(vo)},null,8,["icon"]),u[13]||(u[13]=e.createTextVNode(" Export Video ",-1))],64))],8,Sk),d.isExporting?(e.openBlock(),e.createElementBlock("div",Ck,[e.createElementVNode("div",Nk,e.toDisplayString(c.value),1),e.createElementVNode("div",_k,[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,Tk)]),e.createElementVNode("div",Mk,e.toDisplayString(d.exportProgress)+"% ",1)])):e.createCommentVNode("",!0)]))}}),Fk=Be(Bk,[["__scopeId","data-v-5caf8fe6"]]),Ik=["data-testid"],Rk={class:"progress-header"},$k={class:"file-info"},Dk={class:"file-details"},Uk={class:"file-name"},Ak={class:"file-meta"},Ok={class:"file-size"},Lk={key:0,class:"separator"},zk={key:1,class:"upload-speed"},Pk={key:2,class:"separator"},jk={key:3,class:"time-remaining"},Wk={class:"progress-actions"},Zk={key:0,class:"status-icon completed","data-testid":"video-upload-status-completed"},Xk={key:1,class:"status-icon error","data-testid":"video-upload-status-error"},Hk={key:2,class:"status-icon processing","data-testid":"video-upload-status-processing",role:"status","aria-label":"Processing video"},Gk=["aria-valuenow","aria-label"],Jk={class:"progress-bar"},Yk={class:"progress-percent"},Kk={key:1,class:"error-message","data-testid":"video-upload-error"},qk={key:2,class:"thumbnail-preview","data-testid":"video-upload-thumbnail"},Qk=["src","alt"],ex={key:0,class:"video-duration"},tx=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 p=Math.floor(f/60);return p<60?`${p}m ${Math.round(f%60)}s`:`${Math.floor(p/60)}h ${p%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 p=["B","KB","MB","GB","TB"],v=1024,g=Math.floor(Math.log(f)/Math.log(v));return`${(f/Math.pow(v,g)).toFixed(1)} ${p[g]}`}function u(f){if(f===0)return"0 B/s";const p=["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)} ${p[g]}`}function m(f){const p=Math.floor(f/3600),v=Math.floor(f%3600/60),g=Math.floor(f%60);return p>0?`${p}:${v.toString().padStart(2,"0")}:${g.toString().padStart(2,"0")}`:`${v}:${g.toString().padStart(2,"0")}`}return(f,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["upload-progress-item",t.value]),"data-testid":`video-upload-progress-${f.upload.id}`},[e.createElementVNode("div",Rk,[e.createElementVNode("div",$k,[e.createVNode(e.unref(I.IonIcon),{icon:o.value,class:"file-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("div",Dk,[e.createElementVNode("h4",Uk,e.toDisplayString(f.upload.filename),1),e.createElementVNode("p",Ak,[e.createElementVNode("span",Ok,e.toDisplayString(d(f.upload.bytesTotal||0)),1),f.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",Lk,"•")):e.createCommentVNode("",!0),f.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",zk,e.toDisplayString(u(f.upload.uploadSpeed||0)),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",Pk,"•")):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",jk,e.toDisplayString(s.value)+" remaining ",1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",Wk,[f.upload.status==="completed"?(e.openBlock(),e.createElementBlock("div",Zk,[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(ll)},null,8,["icon"])])):f.upload.status==="error"?(e.openBlock(),e.createElementBlock("div",Xk,[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(du),"aria-hidden":"true"},null,8,["icon"])])):f.upload.status==="processing"?(e.openBlock(),e.createElementBlock("div",Hk,[e.createVNode(e.unref(I.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),f.upload.status==="uploading"?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:3,fill:"clear",size:"small",onClick:p[0]||(p[0]=v=>f.$emit("cancel")),"data-testid":"btn-cancel-video-upload","aria-label":"Cancel upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Dn),slot:"icon-only"},null,8,["icon"])]),_:1})):f.upload.status==="error"?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:4,fill:"clear",size:"small",onClick:p[1]||(p[1]=v=>f.$emit("retry")),"data-testid":"btn-retry-video-upload","aria-label":"Retry upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Ln),slot:"icon-only"},null,8,["icon"])]),_:1})):f.upload.status==="completed"?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:5,fill:"clear",size:"small",onClick:p[2]||(p[2]=v=>f.$emit("remove")),"data-testid":"btn-remove-video-upload","aria-label":"Remove from list"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.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",Jk,[e.createElementVNode("div",{class:e.normalizeClass(["progress-fill",{indeterminate:f.upload.status==="processing"}]),style:e.normalizeStyle({width:r.value+"%"})},null,6)]),e.createElementVNode("span",Yk,e.toDisplayString(Math.round(r.value))+"%",1)],8,Gk)):e.createCommentVNode("",!0),f.upload.error?(e.openBlock(),e.createElementBlock("div",Kk,[e.createVNode(e.unref(I.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",qk,[e.createElementVNode("img",{src:c.value,alt:f.upload.filename},null,8,Qk),l.value?(e.openBlock(),e.createElementBlock("div",ex,e.toDisplayString(m(l.value)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,Ik))}}),nx=Be(tx,[["__scopeId","data-v-9eacbf91"]]),Ei=4,ox=500,ax=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 ix(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 rx(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 sx(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 cx(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 dx(a,n){return a instanceof Error?a:new Error(n)}function ux(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=ox*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||!ax.has(o.status)||t>=Ei)return o;await Qs(qs(t))}catch(o){if(!ux(o)||t>=Ei)throw o;await Qs(qs(t))}throw new Error(`${a} failed after retry attempts`)}function mx(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 k=Array.from(n.value.values());return k.length===0?0:k.reduce((R,U)=>R+U.progress,0)/k.length});function d(k){o.value=k}function u(){}async function m(k){var R;const B=k.filter(U=>f(U));if(B.length!==0&&((R=a.onFilesSelected)==null||R.call(a,B),a.autoUpload!==!1))for(const U of B)await p(U)}function f(k){return!(a.maxFileSize&&k.size>a.maxFileSize||a.allowedFormats&&a.allowedFormats.length>0&&!a.allowedFormats.includes(k.type))}async function p(k){var U,_,z;const B=A(k);if(n.value.has(B)){const H=n.value.get(B);if((H==null?void 0:H.status)==="uploading")return}const R={id:B,file:k,filename:k.name,progress:0,status:"pending",startedAt:new Date,bytesTotal:k.size,bytesUploaded:0};n.value.set(R.id,R),t.value.add(R.id);try{R.status="uploading",(U=a.onUploadStart)==null||U.call(a,R);const H=await v(k);a.resumable===!0||H.resumable===!0?await E(R,H):await g(R,H),R.status="processing",R.progress=100;const $=await x(H.media_uuid);R.status="completed",R.media=$,(_=a.onUploadComplete)==null||_.call(a,$)}catch(H){if(R.status!=="cancelled"){const M=dx(H,"Upload failed");R.status="error",R.error=M.message,(z=a.onUploadError)==null||z.call(a,M,R)}}finally{t.value.delete(R.id),i.delete(R.id),r.delete(R.id)}}async function v(k){if(!o.value)throw new Error("API client not configured");const B={collection:a.collection||"videos",filename:k.name,size:k.size,mime_type:k.type,...a.ownerUuid!==void 0?{ownerUuid:a.ownerUuid}:{},...a.ownerType!==void 0?{ownerType:a.ownerType}:{}},R=await o.value.post("/api/v1/video/upload",B);return ix(R)}async function g(k,B){const R=new XMLHttpRequest,U=Ks(B),_=Zo(B.headers);return new Promise((z,H)=>{R.upload.addEventListener("progress",M=>{var $;M.lengthComputable&&(Xo(k,M.loaded),($=a.onUploadProgress)==null||$.call(a,k))}),R.addEventListener("load",()=>{i.delete(k.id),R.status>=200&&R.status<300?z():H(new Error(`Upload failed with status ${R.status}`))}),R.addEventListener("error",()=>{i.delete(k.id),H(new Error("Upload failed"))}),R.addEventListener("abort",()=>{i.delete(k.id),H(new Error("Upload cancelled"))}),R.open(U,B.upload_url),Object.entries(_).forEach(([M,$])=>{R.setRequestHeader(M,$)}),!Object.keys(_).some(M=>M.toLowerCase()==="content-type")&&k.file.type&&R.setRequestHeader("Content-Type",k.file.type),i.set(k.id,R),R.send(k.file)})}async function E(k,B){var H;if(sx(B)){await T(k,B);return}const R=a.chunkSize||5*1024*1024,U=N(k.file,R),_=new AbortController;r.set(k.id,_);const z=await h(B.upload_id);z&&(U.forEach(M=>{M.end<=z.bytesUploaded&&(M.uploaded=!0)}),Xo(k,z.bytesUploaded));for(const M of U)M.uploaded||(await w(k,B,M,_),Xo(k,M.end),(H=a.onUploadProgress)==null||H.call(a,k))}async function T(k,B){var X;const R=new AbortController;r.set(k.id,R);const U={...Zo(B.headers),"Tus-Resumable":"1.0.0","Upload-Length":String(k.file.size),"Upload-Metadata":cx(k,B)},_=await el("Resumable upload initialization",()=>fetch(B.upload_url,{method:"POST",headers:U,signal:R.signal}));if(!_.ok)throw new Error(`Failed to initialize resumable upload: ${_.status}`);const z=_.headers.get("Location");if(!z)throw new Error("Resumable upload endpoint did not return upload location");const H=new URL(z,B.upload_url).toString(),M=a.chunkSize||5*1024*1024;let $=0;for(;$<k.file.size;){const W=Math.min($+M,k.file.size),te=k.file.slice($,W),ge={...Zo(B.headers),"Tus-Resumable":"1.0.0","Upload-Offset":String($),"Content-Type":"application/offset+octet-stream"},Ne=await el("Resumable chunk upload",()=>fetch(H,{method:"PATCH",headers:ge,body:te,signal:R.signal}));if(Ne.status===409){const F=Number(Ne.headers.get("Upload-Offset")??"-1");if(Number.isFinite(F)&&F>=0){$=F;continue}}if(!Ne.ok)throw new Error(`Resumable chunk upload failed: ${Ne.status}`);const ee=Number(Ne.headers.get("Upload-Offset")??String(W));$=Number.isFinite(ee)&&ee>$?ee:W,Xo(k,$),(X=a.onUploadProgress)==null||X.call(a,k)}}function N(k,B){const R=[];let U=0,_=0;for(;U<k.size;){const z=Math.min(U+B,k.size);R.push({start:U,end:z,blob:k.slice(U,z),index:_,uploaded:!1}),U=z,_++}return R}async function w(k,B,R,U){const _={...Zo(B.headers),"Content-Range":`bytes ${R.start}-${R.end-1}/${k.file.size}`,"Content-Type":k.file.type||"application/octet-stream"},z=await fetch(B.upload_url,{method:Ks(B),headers:_,body:R.blob,signal:U.signal});if(!z.ok)throw new Error(`Chunk upload failed: ${z.status}`);R.uploaded=!0}async function h(k){return null}async function x(k){if(!o.value)throw new Error("API client not configured");const B=60;let R=0;for(;R<B;){const U=await o.value.get(`/api/v1/video/${k}`),_=rx(U),z=String(_.processing_status);if(z==="ready")return _;if(z==="failed"||z==="error")throw new Error("Video processing failed");await new Promise(H=>{window.setTimeout(H,5e3)}),R++}throw new Error("Video processing timeout")}function D(k){const B=n.value.get(k);if(!B)return;const R=i.get(k);R&&(R.abort(),i.delete(k));const U=r.get(k);U&&(U.abort(),r.delete(k)),B.status="cancelled",B.error="Upload cancelled",t.value.delete(k)}async function C(k){const B=n.value.get(k);B&&(B.status="pending",B.error="",B.progress=0,B.bytesUploaded=0,await p(B.file))}function y(k){n.value.delete(k),t.value.delete(k),i.delete(k),r.delete(k)}function S(){Array.from(n.value.entries()).forEach(([k,B])=>{B.status==="completed"&&n.value.delete(k)})}function A(k){return`${k.name}-${k.size}-${Date.now()}`}return{uploads:c,isUploading:s,totalProgress:l,openFilePicker:u,handleFileSelect:m,validateFile:f,startUpload:p,cancelUpload:D,retryUpload:C,removeUpload:y,clearCompleted:S,setApiClient:d}}const px=["accept","multiple"],fx={key:0,class:"upload-trigger","data-testid":"video-uploader-trigger"},hx=["onKeydown"],vx={key:1,class:"upload-list","data-testid":"video-upload-list"},gx={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:m,setApiClient:f}=mx({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:h=>o("upload-start",h),onUploadProgress:h=>o("upload-progress",h),onUploadComplete:h=>o("upload-complete",h),onUploadError:(h,x)=>o("upload-error",h,x),onFilesSelected:h=>o("files-selected",h)});t.apiClient&&f(t.apiClient);const p=e.computed(()=>t.allowedFormats.join(",")),v=e.computed(()=>t.multiple||s.value.length===0);function g(){i.value&&i.value.click()}function E(h){const x=h.target,D=Array.from(x.files||[]);D.length>0&&(l(D),x.value="")}function T(h){var C;h.preventDefault(),r.value=!1;const D=Array.from(((C=h.dataTransfer)==null?void 0:C.files)||[]).filter(y=>y.type.startsWith("video/"));D.length>0&&l(D)}function N(h){var x;h.preventDefault(),(x=h.dataTransfer)!=null&&x.types.includes("Files")&&(r.value=!0)}function w(h){h.target.closest(".video-uploader")||(r.value=!1)}return e.onMounted(()=>{document.addEventListener("dragover",N),document.addEventListener("dragleave",w),document.addEventListener("drop",h=>h.preventDefault())}),e.onUnmounted(()=>{document.removeEventListener("dragover",N),document.removeEventListener("dragleave",w),document.removeEventListener("drop",h=>h.preventDefault())}),(h,x)=>(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:p.value,multiple:h.multiple,onChange:E,"data-testid":"video-uploader-input","aria-label":"Select video files to upload",hidden:""},null,40,px),!e.unref(c)||v.value?(e.openBlock(),e.createElementBlock("div",fx,[e.renderSlot(h.$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(I.IonIcon),{icon:e.unref(vl),class:"upload-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("h3",null,e.toDisplayString(h.label),1),e.createElementVNode("p",null,e.toDisplayString(h.description),1),e.createVNode(e.unref(I.IonButton),{size:"small","data-testid":"btn-select-video","aria-label":"Select video file"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(qi),slot:"start","aria-hidden":"true"},null,8,["icon"]),x[2]||(x[2]=e.createTextVNode(" Select Video ",-1))]),_:1})],40,hx)],!0)])):e.createCommentVNode("",!0),e.unref(s).length>0?(e.openBlock(),e.createElementBlock("div",vx,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),D=>(e.openBlock(),e.createBlock(nx,{key:D.id,upload:D,onCancel:C=>e.unref(d)(D.id),onRetry:C=>e.unref(u)(D.id),onRemove:C=>e.unref(m)(D.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:x[0]||(x[0]=e.withModifiers(()=>{},["prevent"])),onDragleave:x[1]||(x[1]=D=>r.value=!1)},[e.createElementVNode("div",gx,[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(vo),"aria-hidden":"true"},null,8,["icon"]),x[3]||(x[3]=e.createElementVNode("p",null,"Drop video files here",-1))])],32)):e.createCommentVNode("",!0)],2))}}),wx=Be(yx,[["__scopeId","data-v-ea7587f7"]]),bx=["aria-valuenow","aria-valuemax","aria-label"],kx={class:"progress-bar"},xx={class:"time-display","data-testid":"video-time-display"},Ex={class:"current-time"},Vx={class:"duration"},Sx={class:"control-buttons"},Cx={class:"controls-left"},Nx=["aria-label"],_x={class:"controls-center"},Tx={key:0,class:"volume-controls"},Mx=["aria-label"],Bx=["value"],Fx={class:"controls-right"},Ix={key:0,class:"quality-selector"},Rx=["aria-expanded"],$x={class:"quality-label"},Dx={key:0,class:"quality-menu","data-testid":"video-quality-menu",role:"menu"},Ux=["data-testid","aria-label","onClick"],Ax=["aria-label"],Ox=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=I.isPlatform("mobile"),l="pictureInPictureEnabled"in document,d=e.computed(()=>({width:`${t.currentTime/t.duration*100}%`})),u=e.computed(()=>({left:`${t.currentTime/t.duration*100}%`})),m=e.computed(()=>{if(!t.buffered||t.buffered.length===0)return{width:"0%"};for(let h=0;h<t.buffered.length;h++){const x=t.buffered.start(h),D=t.buffered.end(h);if(t.currentTime>=x&&t.currentTime<=D)return{width:`${D/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 p=null;function v(){i.value=!0,g()}function g(){p&&clearTimeout(p),t.playing&&!c&&(p=setTimeout(()=>{i.value=!1},3e3))}function E(h){if(!s.value||t.isLive)return;const x=s.value.getBoundingClientRect(),C=(h.clientX-x.left)/x.width*t.duration;o("seek",Math.max(0,Math.min(C,t.duration)))}function T(h){const x=h.target;o("setVolume",parseInt(x.value))}function N(h){o("selectQuality",h),r.value=!1}function w(h){if(!isFinite(h))return"0:00";const x=Math.floor(h/3600),D=Math.floor(h%3600/60),C=Math.floor(h%60);return x>0?`${x}:${D.toString().padStart(2,"0")}:${C.toString().padStart(2,"0")}`:`${D}:${C.toString().padStart(2,"0")}`}return e.onMounted(()=>{document.addEventListener("mousemove",v),g()}),e.onUnmounted(()=>{document.removeEventListener("mousemove",v),p&&clearTimeout(p)}),(h,x)=>(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(h.currentTime),"aria-valuemin":"0","aria-valuemax":Math.round(h.duration),"aria-label":h.isLive?"Live stream":"Video progress",tabindex:"0",onClick:E},[e.createElementVNode("div",kx,[e.createElementVNode("div",{class:"progress-buffered",style:e.normalizeStyle(m.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",xx,[e.createElementVNode("span",Ex,e.toDisplayString(w(h.currentTime)),1),x[7]||(x[7]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",Vx,e.toDisplayString(h.isLive?"LIVE":w(h.duration)),1)])],8,bx),e.createElementVNode("div",Sx,[e.createElementVNode("div",Cx,[e.createElementVNode("button",{class:"control-btn play-pause","data-testid":"btn-video-play-pause",onClick:x[0]||(x[0]=D=>h.$emit("play-pause")),"aria-label":h.playing?"Pause":"Play"},[e.createVNode(e.unref(I.IonIcon),{icon:h.playing?e.unref(Nu):e.unref(Tu),"aria-hidden":"true"},null,8,["icon"])],8,Nx),h.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"control-btn skip-backward","data-testid":"btn-video-skip-backward",onClick:x[1]||(x[1]=D=>h.$emit("skip-backward")),"aria-label":"Skip backward 10 seconds"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Mu),"aria-hidden":"true"},null,8,["icon"]),x[8]||(x[8]=e.createElementVNode("span",{class:"skip-label"},"10",-1))])),h.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn skip-forward","data-testid":"btn-video-skip-forward",onClick:x[2]||(x[2]=D=>h.$emit("skip-forward")),"aria-label":"Skip forward 10 seconds"},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Iu),"aria-hidden":"true"},null,8,["icon"]),x[9]||(x[9]=e.createElementVNode("span",{class:"skip-label"},"10",-1))]))]),e.createElementVNode("div",_x,[e.unref(c)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Tx,[e.createElementVNode("button",{class:"control-btn mute-btn","data-testid":"btn-video-mute",onClick:x[3]||(x[3]=D=>h.$emit("toggleMute")),"aria-label":h.muted?"Unmute":"Mute"},[e.createVNode(e.unref(I.IonIcon),{icon:f.value,"aria-hidden":"true"},null,8,["icon"])],8,Mx),e.createElementVNode("input",{type:"range",class:"volume-slider","data-testid":"slider-video-volume",min:"0",max:"100",value:h.muted?0:h.volume,onInput:T,"aria-label":"Volume"},null,40,Bx)]))]),e.createElementVNode("div",Fx,[h.qualityLevels.length>1?(e.openBlock(),e.createElementBlock("div",Ix,[e.createElementVNode("button",{class:"control-btn quality-btn","data-testid":"btn-video-quality",onClick:x[4]||(x[4]=D=>r.value=!r.value),"aria-label":"Quality settings","aria-expanded":r.value},[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Ou),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("span",$x,e.toDisplayString(h.currentQuality),1)],8,Rx),r.value?(e.openBlock(),e.createElementBlock("div",Dx,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.qualityLevels,D=>(e.openBlock(),e.createElementBlock("button",{key:D.label,class:e.normalizeClass(["quality-option",{active:D.label===h.currentQuality}]),"data-testid":`btn-video-quality-${D.label}`,"aria-label":`Set quality to ${D.label}`,role:"menuitem",onClick:C=>N(D)},e.toDisplayString(D.label),11,Ux))),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:x[5]||(x[5]=D=>h.$emit("togglePiP")),"aria-label":"Picture in Picture"},[e.createVNode(e.unref(I.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:x[6]||(x[6]=D=>h.$emit("toggleFullscreen")),"aria-label":h.fullscreen?"Exit fullscreen":"Enter fullscreen"},[e.createVNode(e.unref(I.IonIcon),{icon:h.fullscreen?e.unref(gu):e.unref(bu),"aria-hidden":"true"},null,8,["icon"])],8,Ax)])])],2))}}),Lx=Be(Ox,[["__scopeId","data-v-2ae77c13"]]);function zx(a={}){var te,ge,Ne;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),m=e.ref(!1),f=e.ref(null),p=e.ref("idle"),v=e.ref(a.playbackUrl||((te=a.media)==null?void 0:te.playback_url)||((ge=a.media)==null?void 0:ge.url)||""),g=e.ref(null),E=e.ref(a.isLive||!1),T=e.ref(null),N=e.ref(null);function w(ee){N.value=ee}if((Ne=a.media)!=null&&Ne.token_expires_at){const ee=new Date(a.media.token_expires_at);g.value=Number.isNaN(ee.getTime())?null:ee}async function h(){var F;const ee=E.value?t.value:n.value;if(ee)try{await ee.play(),o.value=!0,p.value=E.value?"live":"playing",(F=a.onPlay)==null||F.call(a)}catch{f.value="Failed to play video",p.value="error"}}function x(){var F;const ee=E.value?t.value:n.value;ee&&(ee.pause(),o.value=!1,p.value="paused",(F=a.onPause)==null||F.call(a))}function D(){o.value?x():h()}function C(ee){const F=E.value?t.value:n.value;if(!F||E.value)return;const P=Number.isFinite(F.duration)?F.duration:ee;F.currentTime=Math.max(0,Math.min(ee,P)),i.value=F.currentTime}function y(ee=10){const F=n.value;!F||E.value||C(F.currentTime+ee)}function S(ee=10){const F=n.value;!F||E.value||C(F.currentTime-ee)}function A(){const ee=E.value?t.value:n.value;ee&&(ee.muted=!ee.muted,c.value=ee.muted)}function k(ee){const F=E.value?t.value:n.value;if(!F)return;const P=Math.max(0,Math.min(100,ee));F.volume=P/100,s.value=P,P>0&&F.muted&&(F.muted=!1,c.value=!1)}function B(ee){const F=n.value;!F||E.value||(F.playbackRate=ee,u.value=ee)}async function R(){const ee=document.querySelector(".video-player-container");if(ee)try{document.fullscreenElement?(await document.exitFullscreen(),l.value=!1):(await ee.requestFullscreen(),l.value=!0)}catch{}}async function U(){const ee=E.value?t.value:n.value;if(ee)try{document.pictureInPictureElement?await document.exitPictureInPicture():document.pictureInPictureEnabled&&await ee.requestPictureInPicture()}catch{}}async function _(){var F;f.value=null,p.value="loading",(F=a.media)!=null&&F.provider&&a.media.provider!=="local"&&await z();const ee=E.value?t.value:n.value;ee&&(ee.load(),await h())}async function z(){if(!(!N.value||!a.media))try{m.value=!0;const ee=await N.value.get(`/api/v1/video/${a.media.uuid}/playback`);v.value=ee.playback_url,g.value=new Date(ee.token_expires_at);const F=E.value?t.value:n.value;if(F&&F.src!==v.value){const P=!F.paused,pe=F.currentTime;F.src=v.value,E.value||(F.currentTime=pe),P&&await h()}}catch{f.value="Failed to refresh playback token",p.value="error"}finally{m.value=!1}}async function H(ee){if(t.value){if(t.value.canPlayType("application/vnd.apple.mpegurl")){t.value.src=ee;return}try{t.value.src=ee}catch{f.value="Live streaming not supported in this browser",p.value="error"}}}function M(){T.value&&(T.value.destroy(),T.value=null)}function $(){var F;const ee=E.value?t.value:n.value;ee&&(i.value=ee.currentTime,r.value=ee.duration,(F=a.onTimeUpdate)==null||F.call(a,ee.currentTime))}const X=e.computed(()=>{if(!d.value||d.value.length===0||!r.value)return 0;for(let ee=0;ee<d.value.length;ee++){const F=d.value.start(ee),P=d.value.end(ee);if(i.value>=F&&i.value<=P)return P/r.value*100}return 0});function W(){if(!g.value)return!1;const ee=new Date;return g.value.getTime()-ee.getTime()<5*60*1e3}return e.watch([n,t],([ee,F])=>{const P=E.value?F:ee;P&&(P.addEventListener("timeupdate",$),P.addEventListener("loadedmetadata",()=>{r.value=P.duration,p.value="ready"}),P.addEventListener("progress",()=>{d.value=P.buffered}),P.addEventListener("ended",()=>{var pe;o.value=!1,p.value="ended",(pe=a.onEnded)==null||pe.call(a)}),P.addEventListener("error",pe=>{var ne;p.value="error",(ne=a.onError)==null||ne.call(a,"Video playback error")}),P.volume=s.value/100,P.muted=c.value)}),e.onUnmounted(()=>{M();const ee=E.value?t.value:n.value;ee&&ee.removeEventListener("timeupdate",$)}),{videoEl:n,liveVideoEl:t,playing:o,currentTime:i,duration:r,volume:s,muted:c,isFullscreen:l,bufferedRanges:d,bufferedPercent:X,playbackRate:u,isLoading:m,error:f,status:p,currentPlaybackUrl:v,tokenExpiresAt:g,play:h,pause:x,togglePlayPause:D,seek:C,skipForward:y,skipBackward:S,toggleMute:A,setVolume:k,setPlaybackRate:B,toggleFullscreen:R,togglePiP:U,retry:_,refreshToken:z,setupLiveStream:H,setApiClient:w,shouldRefreshToken:W}}const Px=["src","poster","controls","autoplay","muted","loop","preload"],jx={key:1,ref:"livePlayerEl",class:"live-player"},Wx=["controls","muted"],Zx={key:0,class:"live-indicator","data-testid":"video-live-indicator","aria-label":"Live stream"},Xx={key:2,class:"video-loading","data-testid":"video-loading",role:"status","aria-label":"Loading video"},Hx={key:3,class:"video-error","data-testid":"video-error",role:"alert"},Gx={key:5,class:"gesture-zones","data-testid":"video-gesture-zones"},Jx=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:m,bufferedRanges:f,isLoading:p,error:v,status:g,currentPlaybackUrl:E,tokenExpiresAt:T,play:N,pause:w,seek:h,toggleMute:x,setVolume:D,toggleFullscreen:C,togglePlayPause:y,skipForward:S,skipBackward:A,retry:k,refreshToken:B,setApiClient:R,shouldRefreshToken:U,setupLiveStream:_}=zx({...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 z(){await B()}const H=e.computed(()=>{const ne=["video-player-container"];return t.className&&ne.push(t.className),m.value&&ne.push("fullscreen"),t.isLive&&ne.push("is-live"),s.value&&ne.push("is-playing"),p.value&&ne.push("is-loading"),ne}),M=e.computed(()=>{var ne,Y;if(t.poster)return t.poster;if((ne=t.media)!=null&&ne.poster_url)return t.media.poster_url;if((Y=t.media)!=null&&Y.thumbnail_url)return t.media.thumbnail_url});function $(ne){const Y=ne.target;o("loadedmetadata",{duration:Y.duration,width:Y.videoWidth,height:Y.videoHeight})}function X(ne){const Y=ne.target;c.value=Y.currentTime,o("timeupdate",Y.currentTime)}function W(){s.value=!0,o("play")}function te(){s.value=!1,o("pause")}function ge(){s.value=!1,o("ended")}function Ne(ne){const Y=ne.target;let Me="Failed to load video";if(Y.error)switch(Y.error.code){case Y.error.MEDIA_ERR_ABORTED:Me="Video playback aborted";break;case Y.error.MEDIA_ERR_NETWORK:Me="Network error while loading video";break;case Y.error.MEDIA_ERR_DECODE:Me="Video decoding error";break;case Y.error.MEDIA_ERR_SRC_NOT_SUPPORTED:Me="Video format not supported";break}v.value=Me,o("error",Me)}function ee(ne){const Y=ne.target;f.value=Y.buffered,o("progress",Y.buffered)}function F(){p.value=!0}function P(){p.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 Y=new Date(ne);T.value=Number.isNaN(Y.getTime())?null:Y},{immediate:!0}),e.watch(()=>{var ne;return(ne=t.media)==null?void 0:ne.playback_url},async(ne,Y)=>{if(t.playbackUrl||!ne||ne===Y)return;const Me=i.value;if(!Me||t.isLive){E.value=ne;return}const ce=!Me.paused,se=Me.currentTime;E.value=ne,await e.nextTick();try{Me.currentTime=se}catch{}ce&&await N()},{immediate:!0});let pe=null;return e.watch(()=>t.isLive,async ne=>{var Me;if(!ne)return;const Y=t.playbackUrl||((Me=t.media)==null?void 0:Me.playback_url)||"";Y&&await _(Y)},{immediate:!0}),e.onMounted(()=>{var ne;(ne=t.media)!=null&&ne.provider&&t.media.provider!=="local"&&(pe=setInterval(()=>{U()&&z()},3e4)),I.isPlatform("mobile")&&t.showCustomControls}),e.onUnmounted(()=>{pe&&clearInterval(pe)}),(ne,Y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-player-container",H.value]),"data-testid":"video-player"},[ne.isLive?(e.openBlock(),e.createElementBlock("div",jx,[e.createElementVNode("video",{ref_key:"liveVideoEl",ref:r,controls:ne.controls&&!ne.showCustomControls,autoplay:!0,muted:e.unref(u),onPlay:W,onPause:te,onError:Ne,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,Wx),e.unref(g)==="live"?(e.openBlock(),e.createElementBlock("div",Zx,[...Y[3]||(Y[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:M.value,controls:ne.controls&&!ne.showCustomControls,autoplay:ne.autoplay,muted:e.unref(u),loop:ne.loop,preload:ne.preload,onLoadedmetadata:$,onTimeupdate:X,onPlay:W,onPause:te,onEnded:ge,onError:Ne,onProgress:ee,onWaiting:F,onCanplay:P,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,Px)),e.unref(p)?(e.openBlock(),e.createElementBlock("div",Xx,[e.createVNode(e.unref(I.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",Hx,[e.createVNode(e.unref(I.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(I.IonButton),{size:"small",onClick:e.unref(k),"data-testid":"btn-video-retry","aria-label":"Retry loading video"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Ln),slot:"start","aria-hidden":"true"},null,8,["icon"]),Y[4]||(Y[4]=e.createTextVNode(" Retry ",-1))]),_:1},8,["onClick"])])):e.createCommentVNode("",!0),ne.showCustomControls&&!e.unref(v)?(e.openBlock(),e.createBlock(Lx,{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(m),isLive:ne.isLive,onPlay:e.unref(N),onPause:e.unref(w),onSeek:e.unref(h),onToggleMute:e.unref(x),onSetVolume:e.unref(D),onToggleFullscreen:e.unref(C),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",Gx,[e.createElementVNode("div",{class:"gesture-left","data-testid":"video-gesture-skip-back","aria-label":"Double tap to skip backward",onDblclick:Y[0]||(Y[0]=(...Me)=>e.unref(A)&&e.unref(A)(...Me))},null,32),e.createElementVNode("div",{class:"gesture-center","data-testid":"video-gesture-play-pause","aria-label":"Tap to play or pause",onClick:Y[1]||(Y[1]=(...Me)=>e.unref(y)&&e.unref(y)(...Me))}),e.createElementVNode("div",{class:"gesture-right","data-testid":"video-gesture-skip-forward","aria-label":"Double tap to skip forward",onDblclick:Y[2]||(Y[2]=(...Me)=>e.unref(S)&&e.unref(S)(...Me))},null,32)])):e.createCommentVNode("",!0)],2))}}),Ec=Be(Jx,[["__scopeId","data-v-b8db4951"]]),Yx=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(_=>_.status==="live")),l=e.computed(()=>r.value.filter(_=>_.processing_status==="processing"));function d(_){a.value.set(_.uuid,_)}function u(_,z){const H=a.value.get(_);H&&a.value.set(_,{...H,...z})}function m(_){a.value.delete(_)}function f(_){return a.value.get(_)}function p(_){n.value.set(_.id,_)}function v(_,z){const H=n.value.get(_);H&&n.value.set(_,{...H,...z})}function g(_,z){const H=n.value.get(_);H&&n.value.set(_,{...H,status:z.status,viewer_count:z.viewer_count,peak_viewers:z.peak_viewers})}function E(_){n.value.delete(_)}function T(_){return n.value.get(_)}function N(_){return s.value.find(z=>z.media_uuid===_)}function w(_){t.value.set(_.id,_)}function h(_,z){const H=t.value.get(_);H&&t.value.set(_,{...H,...z})}function x(_){t.value.delete(_)}function D(_){return t.value.get(_)}function C(_){return Array.from(t.value.values()).filter(z=>z.media_uuid===_)}function y(_){o.value=_}function S(_){o.value&&(o.value={...o.value,..._})}function A(){o.value=null}function k(_){i.value=_}function B(){a.value.clear(),n.value.clear(),t.value.clear(),o.value=null,i.value=!1}function R(_){a.value.clear(),_.forEach(z=>{a.value.set(z.uuid,z)})}function U(_){n.value.clear(),_.forEach(z=>{n.value.set(z.id,z)})}return{videos:a,liveStreams:n,exportJobs:t,currentEditorState:o,isProcessing:i,allVideos:r,allLiveStreams:s,activeLiveStreams:c,processingVideos:l,setVideo:d,updateVideo:u,removeVideo:m,getVideo:f,setLiveStream:p,updateLiveStream:v,updateLiveStreamStats:g,removeLiveStream:E,getLiveStream:T,getLiveStreamByMedia:N,addExportJob:w,updateExportJob:h,removeExportJob:x,getExportJob:D,getExportJobsByMedia:C,setEditorState:y,updateEditorState:S,clearEditorState:A,setProcessing:k,clearAll:B,loadVideos:R,loadLiveStreams:U}});let hn=null;function Kx(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 qx(a){const n=Yx(),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),m=e.ref(0);let f;const p=e.computed(()=>d.value?Math.floor((new Date().getTime()-d.value.getTime())/1e3):0),v=e.computed(()=>{var A;if(!((A=t.value)!=null&&A.playback_url))return null;const S=new URL(t.value.playback_url);return S.searchParams.set("live","true"),o.value&&S.searchParams.set("latency","low"),S.toString()}),g=e.computed(()=>{var S;return((S=t.value)==null?void 0:S.status)==="live"}),E=e.computed(()=>{var S;return((S=t.value)==null?void 0:S.status)==="idle"}),T=e.computed(()=>{var S;return((S=t.value)==null?void 0:S.status)==="ended"});async function N(S={}){s.value=!0,l.value=null;try{const A=await Ho.post("/live",{title:r.value||S.title||"Live Stream",low_latency:S.low_latency??o.value,auto_record:S.auto_record??i.value,...S}),k=Go(A);return t.value=k,n.setLiveStream(k),D(),k}catch(A){throw l.value=Vi(A,"Failed to create stream"),A instanceof Error?A: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 S=await Ho.post(`/live/${t.value.id}/end`),A=Go(S,t.value);return t.value=A,n.setLiveStream(A),C(),A}catch(S){throw l.value=Vi(S,"Failed to end stream"),S instanceof Error?S:new Error(l.value)}finally{c.value=!1}}async function h(){if(t.value)try{const S=await Ho.get(`/live/${t.value.id}`),A=Go(S,t.value);u.value=A.viewer_count,m.value=A.peak_viewers,t.value=A;const k={status:A.status,viewer_count:A.viewer_count,peak_viewers:A.peak_viewers};A.started_at&&(k.started_at=A.started_at),A.ended_at&&(k.ended_at=A.ended_at),n.updateLiveStreamStats(A.id,k),A.status==="live"&&!d.value&&A.started_at&&(d.value=new Date(A.started_at)),A.status==="ended"&&C()}catch{}}async function x(S){try{const A=await Ho.get(`/live/${S}`),k=Go(A,t.value);return{rtmp_url:k.rtmp_url,stream_key:k.stream_key,playback_url:k.playback_url||""}}catch(A){throw l.value=Vi(A,"Failed to get stream credentials"),A instanceof Error?A:new Error(l.value)}}function D(S=5e3){C(),f=window.setInterval(()=>{h()},S)}function C(){f!==void 0&&(clearInterval(f),f=void 0)}async function y(){if(!a)return;const S=n.getLiveStreamByMedia(a);S&&(t.value=S,u.value=S.viewer_count,m.value=S.peak_viewers,S.status==="live"&&(D(),S.started_at&&(d.value=new Date(S.started_at))))}return a&&y(),e.onUnmounted(()=>{C()}),{stream:t,lowLatency:o,autoRecord:i,streamTitle:r,isCreating:s,isEnding:c,error:l,streamDuration:p,viewerCount:u,peakViewers:m,playbackUrl:v,isLive:g,isIdle:E,hasEnded:T,createStream:N,endStream:w,refreshStreamStatus:h,getStreamCredentials:x,startStatusPolling:D,stopStatusPolling:C}}const Qx={class:"stream-status"},eE={class:"flex items-center justify-between"},tE={class:"flex items-center gap-3"},nE={key:0,class:"flex items-center"},oE={key:2,class:"text-sm text-gray-600"},aE={key:0,class:"flex items-center gap-2"},iE={class:"text-sm font-medium text-gray-700"},rE={key:0,class:"text-xs text-gray-500"},sE=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",Qx,[e.createElementVNode("div",eE,[e.createElementVNode("div",tE,[r.status==="live"?(e.openBlock(),e.createElementBlock("div",nE,[...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",oE,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)]),r.viewers!==void 0?(e.openBlock(),e.createElementBlock("div",aE,[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",iE,e.toDisplayString(r.viewers)+" "+e.toDisplayString(r.viewers===1?"viewer":"viewers"),1),r.peakViewers>r.viewers?(e.openBlock(),e.createElementBlock("span",rE," (Peak: "+e.toDisplayString(r.peakViewers)+") ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),lE=Be(sE,[["__scopeId","data-v-1d09c19f"]]),cE={class:"stream-credentials"},dE={class:"space-y-3"},uE={class:"credential-field"},mE={class:"flex gap-2"},pE=["value"],fE={class:"credential-field"},hE={class:"flex gap-2"},vE=["value","type"],gE=["aria-label"],yE={key:0,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},wE={key:1,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},bE={key:0,class:"mt-2 text-sm text-green-600"},kE=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",cE,[u[8]||(u[8]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Stream Settings",-1)),e.createElementVNode("div",dE,[e.createElementVNode("div",uE,[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",mE,[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,pE),e.createElementVNode("button",{onClick:u[0]||(u[0]=m=>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",fE,[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,vE),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",wE,[...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,gE),e.createElementVNode("button",{onClick:u[1]||(u[1]=m=>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",bE,e.toDisplayString(r.value)+" copied to clipboard! ",1)):e.createCommentVNode("",!0)]),_:1})]))}}),xE=Be(kE,[["__scopeId","data-v-306d92f6"]]),EE={class:"live-stream-manager","data-testid":"live-stream-manager"},VE={key:0,class:"stream-setup"},SE={class:"space-y-4"},CE={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},NE={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},_E=["disabled"],TE={key:0},ME={key:1,class:"flex items-center justify-center"},BE={key:1,class:"stream-active space-y-6"},FE={key:1,class:"video-preview"},IE={key:2,class:"analytics-panel"},RE={class:"grid grid-cols-2 gap-4"},$E={class:"bg-gray-50 p-3 rounded"},DE={class:"text-2xl font-bold text-gray-900"},UE={class:"bg-gray-50 p-3 rounded"},AE={class:"text-2xl font-bold text-gray-900"},OE={class:"stream-controls flex gap-3"},LE=["disabled"],zE={key:0},PE={key:1},jE={key:2,class:"mt-4 p-4 bg-red-50 border border-red-200 rounded-lg"},WE={class:"text-red-600 text-sm"},ZE=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&&Kx(t.httpClient);const{stream:i,lowLatency:r,autoRecord:s,streamTitle:c,isCreating:l,isEnding:d,error:u,createStream:m,endStream:f,streamDuration:p,playbackUrl:v,refreshStreamStatus:g}=qx(t.mediaUuid),E=e.ref(!1);async function T(){var D;try{const C=await m({title:c.value,low_latency:r.value,auto_record:s.value});o("stream-created",C),(D=t.onStreamCreated)==null||D.call(t,C)}catch(C){o("error",C)}}async function N(){var D;try{const C=await f();o("stream-ended",C),(D=t.onStreamEnded)==null||D.call(t,C)}catch(C){o("error",C)}}function w(){i.value=null,c.value="",E.value=!1,u.value=null}async function h(D,C){try{await navigator.clipboard.writeText(D)}catch{}}let x;return e.onMounted(()=>{var D;((D=i.value)==null?void 0:D.status)==="live"&&(x=window.setInterval(()=>{g()},5e3))}),e.onUnmounted(()=>{x&&clearInterval(x)}),(D,C)=>(e.openBlock(),e.createElementBlock("div",EE,[e.unref(i)?(e.openBlock(),e.createElementBlock("div",BE,[e.createVNode(lE,{status:e.unref(i).status,viewers:e.unref(i).viewer_count,duration:e.unref(p),"peak-viewers":e.unref(i).peak_viewers},null,8,["status","viewers","duration","peak-viewers"]),e.unref(i).status==="idle"?(e.openBlock(),e.createBlock(xE,{key:0,"rtmp-url":e.unref(i).rtmp_url,"stream-key":e.unref(i).stream_key,onCopy:h},null,8,["rtmp-url","stream-key"])):e.createCommentVNode("",!0),e.unref(v)?(e.openBlock(),e.createElementBlock("div",FE,[C[9]||(C[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",IE,[C[12]||(C[12]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Live Analytics",-1)),e.createElementVNode("div",RE,[e.createElementVNode("div",$E,[e.createElementVNode("div",DE,e.toDisplayString(e.unref(i).viewer_count),1),C[10]||(C[10]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Current Viewers",-1))]),e.createElementVNode("div",UE,[e.createElementVNode("div",AE,e.toDisplayString(e.unref(i).peak_viewers),1),C[11]||(C[11]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Peak Viewers",-1))])])])):e.createCommentVNode("",!0),e.createElementVNode("div",OE,[e.unref(i).status==="idle"?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:C[3]||(C[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:N,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",PE,"Ending...")):(e.openBlock(),e.createElementBlock("span",zE,"End Stream"))],8,LE)):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",VE,[C[8]||(C[8]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Start Live Stream",-1)),e.createElementVNode("div",SE,[e.createElementVNode("div",CE,[C[4]||(C[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":C[0]||(C[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",NE,[C[5]||(C[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":C[1]||(C[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,[C[6]||(C[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":C[2]||(C[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",ME,[...C[7]||(C[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",TE,"Create Stream"))],8,_E)])])),e.unref(u)?(e.openBlock(),e.createElementBlock("div",jE,[e.createElementVNode("p",WE,e.toDisplayString(e.unref(u)),1)])):e.createCommentVNode("",!0)]))}}),XE=Be(ZE,[["__scopeId","data-v-26291f6f"]]),HE={class:"album-tree-node"},GE=["data-album-id","draggable","aria-selected","aria-expanded"],JE={key:1,class:"album-node__chevron-placeholder"},YE={key:2,"data-testid":"media-count",class:"album-node__count"},KE={key:0,class:"album-tree-node__children",role:"group"},qE=16,QE=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*qE}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}),m=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"),m.value&&w.push("album-node--invalid-drop"),w});function p(){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 N(w){t.draggable&&(w.preventDefault(),o("drop",t.album.id))}return(w,h)=>{var D;const x=e.resolveComponent("AlbumTreeNode",!0);return e.openBlock(),e.createElementBlock("div",HE,[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:N},[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(I.IonIcon),{icon:i.value?e.unref(fu):e.unref(hu)},null,8,["icon"])])):(e.openBlock(),e.createElementBlock("span",JE)),e.createVNode(e.unref(I.IonIcon),{icon:e.unref(Eu),class:"album-node__icon"},null,8,["icon"]),e.createElementVNode("span",{"data-testid":"album-name",class:"album-node__name",onClick:p},e.toDisplayString(w.album.name),1),w.showMediaCount?(e.openBlock(),e.createElementBlock("span",YE,e.toDisplayString(w.album.media_count),1)):e.createCommentVNode("",!0)],46,GE),i.value&&((D=w.album.children)!=null&&D.length)?(e.openBlock(),e.createElementBlock("div",KE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.album.children,C=>(e.openBlock(),e.createBlock(x,{key:C.id,album:C,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:h[0]||(h[0]=y=>o("select",y)),onToggleExpand:h[1]||(h[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)])}}}),e4=Be(QE,[["__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 h=new Map;return a.value.forEach(x=>h.set(x.id,x)),h}),s=e.computed(()=>a.value.filter(h=>h.parent_id===null));async function c(h){t.value=!0,o.value=null;try{const x=(h==null?void 0:h.parent_id)??null,D=x?`/api/v1/albums?parent_id=${x}`:"/api/v1/albums?parent_id=null",C=await fetch(D);if(!C.ok)throw new Error("Failed to fetch albums");((await C.json()).data||[]).forEach(A=>{const k=a.value.findIndex(B=>B.id===A.id);k>=0?a.value[k]=A:a.value.push(A)}),x!==null&&i.value.add(x)}catch(x){o.value=x instanceof Error?x.message:"Unknown error"}finally{t.value=!1}}async function l(h){t.value=!0,o.value=null;try{const x=await fetch(`/api/v1/albums/${h}`);if(!x.ok)throw new Error("Failed to fetch album");const C=(await x.json()).data,y=a.value.findIndex(S=>S.id===C.id);return y>=0?a.value[y]=C:a.value.push(C),C}catch(x){throw o.value=x instanceof Error?x.message:"Unknown error",x}finally{t.value=!1}}async function d(h){t.value=!0,o.value=null;try{const x=await fetch(`/api/v1/albums/${h}/media`);if(!x.ok)throw new Error("Failed to fetch album media");const C=(await x.json()).data||[];return n.value.set(h,C),C}catch(x){throw o.value=x instanceof Error?x.message:"Unknown error",x}finally{t.value=!1}}async function u(h,x){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${h}/media/reorder`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({media_ids:x})})).ok)throw new Error("Failed to reorder album media");const C=n.value.get(h)||[],y=x.map(S=>C.find(A=>A.uuid===S)).filter(S=>S!==void 0);n.value.set(h,y)}catch(D){throw o.value=D instanceof Error?D.message:"Unknown error",D}finally{t.value=!1}}async function m(h){t.value=!0,o.value=null;try{const x=await fetch("/api/v1/albums",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(h)});if(!x.ok)throw new Error("Failed to create album");const C=(await x.json()).data;return a.value.push(C),C}catch(x){throw o.value=x instanceof Error?x.message:"Unknown error",x}finally{t.value=!1}}async function f(h,x){t.value=!0,o.value=null;try{const D=await fetch(`/api/v1/albums/${h}`,{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(x)});if(!D.ok)throw new Error("Failed to update album");const y=(await D.json()).data,S=a.value.findIndex(A=>A.id===y.id);return S>=0&&(a.value[S]=y),y}catch(D){throw o.value=D instanceof Error?D.message:"Unknown error",D}finally{t.value=!1}}async function p(h){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${h}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"})).ok)throw new Error("Failed to delete album");const D=a.value.findIndex(C=>C.id===h);D>=0&&a.value.splice(D,1),n.value.delete(h)}catch(x){throw o.value=x instanceof Error?x.message:"Unknown error",x}finally{t.value=!1}}function v(h){return a.value.filter(x=>x.parent_id===h)}function g(h){return i.value.has(h)}function E(h){return n.value.get(h)||[]}async function T(h,x){const D=a.value.findIndex(y=>y.id===h);if(D<0)return;const C=a.value[D];a.value[D]={...C,parent_id:x};try{if(!(await fetch(`/api/v1/albums/${h}/move`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({parent_id:x})})).ok)throw new Error("Failed to move album")}catch(y){throw a.value[D]=C,o.value=y instanceof Error?y.message:"Unknown error",y instanceof Error?y:new Error("Failed to move album")}}function N(h){a.value=h}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:m,updateAlbum:f,deleteAlbum:p,getChildrenOf:v,childrenLoaded:g,getAlbumMedia:E,moveAlbum:T,setAlbums:N,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,m){await a.moveAlbum(u,m)}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(m,f){if(m===f)return!0;const p=new Set,v=[m];for(;v.length>0;){const g=v.shift();if(!g||p.has(g))continue;p.add(g);const E=n.get(g)||[];for(const T of E){if(T===f)return!0;v.push(T)}}return!1}function r(m,f){return m===f?!1:f===null?!0:!i(m,f)}function s(m){o.value={isDragging:!0,draggedAlbumId:m,dropTargetId:null,dropPosition:null}}function c(){o.value={isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null}}function l(m){o.value.dropTargetId=m}function d(){o.value.dropTargetId=null,o.value.dropPosition=null}async function u(){const{draggedAlbumId:m,dropTargetId:f}=o.value;if(!m){c();return}if(!r(m,f)){c();return}try{await t(m,f)}finally{c()}}return{dragState:o,isDescendant:i,canDropOn:r,startDrag:s,endDrag:c,setDropTarget:l,clearDropTarget:d,executeDrop:u}}const t4={key:0,"data-testid":"loading-spinner",class:"album-tree__loading"},n4={key:1,"data-testid":"error-state",class:"album-tree__error"},o4={key:2,"data-testid":"empty-state",class:"album-tree__empty"},a4={key:3,class:"album-tree__content",role:"group"},i4=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:m,fetchAlbums:f,getChildrenOf:p,childrenLoaded:v,moveAlbum:g}=Vc(),E=e.shallowRef(new Set(o.expandedIds)),T=e.ref(o.modelValue??null),N=e.ref(null),w=new Map,h=new Map;function x(F){w.clear(),h.clear();for(const P of F){w.set(P.id,P);const pe=P.parent_id??null,ne=h.get(pe)??[];ne.push(P.id),h.set(pe,ne)}}e.watch(l,F=>{x(F)},{immediate:!0});const{dragState:D,canDropOn:C,startDrag:y,endDrag:S,setDropTarget:A,clearDropTarget:k,executeDrop:B}=Sc({childrenByParentId:h,onMove:async(F,P)=>{await g(F,P),i("album-moved",{albumId:F,newParentId:P})}});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=>U(F)));function U(F){if(!E.value.has(F.id))return F;const P=p(F.id);return{...F,children:P.map(pe=>U(pe))}}const _=e.computed(()=>{const F=[];function P(pe){var ne;for(const Y of pe)F.push(Y),E.value.has(Y.id)&&((ne=Y.children)!=null&&ne.length)&&P(Y.children)}return P(R.value),F});function z(F){var ne;if(!_.value.length)return;const P=N.value?_.value.findIndex(Y=>Y.id===N.value):-1,pe=P>=0?_.value[P]:null;switch(F.key){case"ArrowDown":F.preventDefault(),P<_.value.length-1?N.value=_.value[P+1].id:P===-1&&_.value.length>0&&(N.value=_.value[0].id);break;case"ArrowUp":F.preventDefault(),P>0&&(N.value=_.value[P-1].id);break;case"ArrowRight":F.preventDefault(),pe&&(pe.children_count>0&&!E.value.has(pe.id)?H(pe.id):E.value.has(pe.id)&&((ne=pe.children)!=null&&ne.length)&&(N.value=pe.children[0].id));break;case"ArrowLeft":F.preventDefault(),pe&&(E.value.has(pe.id)&&pe.children_count>0?H(pe.id):pe.parent_id&&(N.value=pe.parent_id));break;case"Enter":case" ":F.preventDefault(),pe&&M(pe);break;case"Home":F.preventDefault(),_.value.length>0&&(N.value=_.value[0].id);break;case"End":F.preventDefault(),_.value.length>0&&(N.value=_.value[_.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 M(F){T.value=F.id,i("update:modelValue",F.id),i("album-selected",F)}function $(F){o.draggable&&y(F)}function X(F){var pe;if(!o.draggable)return;const P=(pe=D.value)==null?void 0:pe.draggedAlbumId;P&&(A(F),C(P,F))}function W(){o.draggable&&k()}async function te(F){o.draggable&&(A(F),await B())}function ge(F){o.draggable&&(F.preventDefault(),A(null))}async function Ne(F){o.draggable&&(F.preventDefault(),A(null),await B())}function ee(){S()}return n({focusedId:N}),(F,P)=>(e.openBlock(),e.createElementBlock("div",{class:"album-tree","data-testid":"album-tree",tabindex:"0",role:"tree","aria-label":"Album tree",onKeydown:z,onDragover:ge,onDrop:Ne,onDragend:ee},[e.unref(u)?(e.openBlock(),e.createElementBlock("div",t4,[e.createVNode(e.unref(I.IonSpinner),{name:"crescent"})])):e.unref(m)?(e.openBlock(),e.createElementBlock("div",n4,[e.createElementVNode("p",null,e.toDisplayString(e.unref(m)),1)])):e.unref(d).length?(e.openBlock(),e.createElementBlock("div",a4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,pe=>(e.openBlock(),e.createBlock(e4,{key:pe.id,album:pe,depth:0,"selected-id":T.value,"expanded-ids":E.value,"focused-id":N.value,draggable:r.value,"drag-state":r.value?e.unref(D):null,"show-media-count":s.value,compact:c.value,onSelect:M,onToggleExpand:H,onDragStart:$,onDragOver:X,onDragLeave:W,onDrop:te},null,8,["album","selected-id","expanded-ids","focused-id","draggable","drag-state","show-media-count","compact"]))),128))])):(e.openBlock(),e.createElementBlock("div",o4,[P[0]||(P[0]=e.createElementVNode("p",null,"No albums yet",-1)),e.renderSlot(F.$slots,"empty-action",{},void 0,!0)]))],32))}}),Cc=Be(i4,[["__scopeId","data-v-ae3dea7a"]]),r4=300,s4=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,p=>{i.value=p??null});const l=e.computed(()=>r.value!==null);function d(p){const v=Date.now();if(c.value===p.id&&v-s.value<r4){o("confirm",p);return}s.value=v,c.value=p.id,i.value=p.id,r.value=p}function u(){r.value&&o("confirm",r.value)}function m(){o("close")}function f(){o("close")}return(p,v)=>(e.openBlock(),e.createBlock(e.unref(I.IonModal),{"is-open":p.isOpen,class:"album-browser-modal",onDidDismiss:f},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.title),1)]),_:1}),e.createVNode(e.unref(I.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{"data-testid":"cancel-button",onClick:m},{default:e.withCtx(()=>[...v[1]||(v[1]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(I.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(I.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{fill:"clear",onClick:m},{default:e.withCtx(()=>[...v[2]||(v[2]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(I.IonButton),{"data-testid":"confirm-button",fill:"solid",color:"primary",disabled:!l.value,onClick:u},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.confirmText),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"]))}}),Nc=Be(s4,[["__scopeId","data-v-21676ec1"]]),l4={class:"ion-padding-start text-sm"},c4={class:"ion-padding-start text-sm"},d4={key:1},u4={key:1,class:"album-manager-inline rounded-lg border border-gray-200 bg-white p-4"},m4={class:"flex items-center justify-between gap-3 pb-3"},p4={class:"text-base font-semibold text-gray-900"},f4={class:"ion-padding-start text-sm"},h4={class:"ion-padding-start text-sm"},v4={class:"flex justify-between pt-2"},g4={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),m=e.ref(!1),f=e.ref(null),p=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 z=l.value.name.trim().length>0,H=l.value.name.length<=to,M=l.value.description.length<=no;return z&&H&&M&&!p.value}),N=e.computed(()=>{var z;return((z=u.value)==null?void 0:z.name)??"None (Root)"}),w=e.computed(()=>f.value?f.value.children_count===0&&f.value.media_count===0:!1),h=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 x()});async function x(){if(t.albumId)try{const z=await i.fetchAlbum(t.albumId);f.value=z,l.value={name:z.name,description:z.description??"",parent_id:z.parent_id},z.parent_id&&(u.value={id:z.parent_id,name:"Parent Album"})}catch(z){o("error",z)}}function D(){d.value.name=!0}function C(){d.value.description=!0}function y(){m.value=!0}function S(z){u.value={id:z.id,name:z.name},l.value.parent_id=z.id,m.value=!1}function A(){m.value=!1}function k(){o("close")}function B(){o("close")}async function R(){if(d.value.name=!0,d.value.description=!0,!(!T.value||p.value)){p.value=!0;try{const z={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,z);o("updated",H)}else{const H=await i.createAlbum(z);o("created",H)}o("close")}catch(z){o("error",z)}finally{p.value=!1}}}function U(){w.value&&(v.value=!0)}async function _(z){var M;if((((M=z.detail)==null?void 0:M.role)??"")!=="confirm"){v.value=!1;return}if(t.albumId){p.value=!0;try{await i.deleteAlbum(t.albumId),o("deleted",t.albumId),o("close")}catch($){o("error",$)}finally{p.value=!1,v.value=!1}}}return(z,H)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[z.mode==="modal"?(e.openBlock(),e.createBlock(e.unref(I.IonModal),{key:0,"is-open":z.isOpen,class:"album-manager-modal",onDidDismiss:B},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1}),e.createVNode(e.unref(I.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:k},{default:e.withCtx(()=>[...H[4]||(H[4]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(I.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(I.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[5]||(H[5]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(I.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":H[0]||(H[0]=M=>l.value.name=M),"data-testid":"name-input",maxlength:to,onIonBlur:D},null,8,["modelValue"])]),_:1}),g.value?(e.openBlock(),e.createBlock(e.unref(I.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(I.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[6]||(H[6]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(I.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":H[1]||(H[1]=M=>l.value.description=M),"data-testid":"description-input",maxlength:no,onIonBlur:C},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref(I.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",c4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonItem),{button:"","data-testid":"parent-selector",onClick:y},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...H[7]||(H[7]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(I.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(N.value),1)]),_:1})]),_:1})],32)]),_:1}),e.createVNode(e.unref(I.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButtons),{slot:"start"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",disabled:!w.value,title:w.value?void 0:h.value,onClick:U},{default:e.withCtx(()=>[...H[8]||(H[8]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(I.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!T.value,onClick:R},{default:e.withCtx(()=>[p.value?(e.openBlock(),e.createBlock(e.unref(I.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",d4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"])):(e.openBlock(),e.createElementBlock("div",u4,[e.createElementVNode("div",m4,[e.createElementVNode("h2",p4,e.toDisplayString(s.value),1),e.createVNode(e.unref(I.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:k},{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(I.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[10]||(H[10]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(I.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":H[2]||(H[2]=M=>l.value.name=M),"data-testid":"name-input",maxlength:to,onIonBlur:D},null,8,["modelValue"])]),_:1}),g.value?(e.openBlock(),e.createBlock(e.unref(I.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",f4,e.toDisplayString(g.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...H[11]||(H[11]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(I.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":H[3]||(H[3]=M=>l.value.description=M),"data-testid":"description-input",maxlength:no,onIonBlur:C},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref(I.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(I.IonItem),{button:"","data-testid":"parent-selector",onClick:y},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonLabel),null,{default:e.withCtx(()=>[...H[12]||(H[12]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(I.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(N.value),1)]),_:1})]),_:1}),e.createElementVNode("div",v4,[e.createElementVNode("div",null,[r.value?(e.openBlock(),e.createBlock(e.unref(I.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",fill:"outline",disabled:!w.value,title:w.value?void 0:h.value,onClick:U},{default:e.withCtx(()=>[...H[13]||(H[13]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),e.createVNode(e.unref(I.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!T.value,onClick:R},{default:e.withCtx(()=>[p.value?(e.openBlock(),e.createBlock(e.unref(I.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",g4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])])],32)])),e.createVNode(Nc,{"is-open":m.value,"selected-album-id":l.value.parent_id,title:"Select Parent Album",onClose:A,onConfirm:S},null,8,["is-open","selected-album-id"]),e.createVNode(e.unref(I.IonAlert),{"is-open":v.value,header:"Delete Album?",message:h.value,buttons:[{text:"Cancel",role:"cancel"},{text:"Delete",role:"confirm",cssClass:"alert-button-danger"}],onDidDismiss:_},null,8,["is-open","message"])],64))}}),w4=Be(y4,[["__scopeId","data-v-22083f3a"]]),b4={class:"album-media-grid"},k4={class:"aspect-square"},x4={key:1,"data-testid":"empty-state",class:"flex flex-col items-center justify-center py-12 gap-4"},E4={class:"text-gray-500"},V4=["data-media-id","draggable","onDragstart","onDragover","onDrop","onMouseenter"],S4={key:0,"data-testid":"drop-indicator",class:"absolute inset-0 border-2 border-primary rounded-lg pointer-events-none z-30"},C4={key:1,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-grab"},N4={class:"aspect-square relative"},_4=["src","alt"],T4={key:0,class:"absolute inset-0 bg-black/50 flex items-center justify-center gap-2 transition-opacity"},M4=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),m=e.computed(()=>!u.value&&r.value.length===0),f=e.computed(()=>{const B=t.columns;return["grid","gap-4",`grid-cols-${B.mobile??2}`,`sm:grid-cols-${B.sm??3}`,`md:grid-cols-${B.md??4}`,`lg:grid-cols-${B.lg??5}`,`xl:grid-cols-${B.xl??6}`]}),p=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 B=await i.fetchAlbumMedia(t.albumId);r.value=B}catch{r.value=[]}finally{s.value=!1}}function g(B){return t.selectedItems.includes(B)}function E(B){o("toggle-select",B);const R=g(B.uuid)?t.selectedItems.filter(U=>U!==B.uuid):[...t.selectedItems,B.uuid];o("selection-change",R)}function T(B){if(B.conversions&&typeof B.conversions=="object"){const R=B.conversions.thumb;if(typeof R=="string")return R}return B.original_url}function N(B){c.value=B}function w(){c.value=null}function h(B){o("preview",B)}function x(B){o("edit",B)}function D(B){o("detach",B.uuid)}function C(){o("add")}function y(B,R){t.reorderable&&(l.value=R,B.dataTransfer&&(B.dataTransfer.effectAllowed="move",B.dataTransfer.setData("text/plain",String(R))))}function S(B,R){!t.reorderable||l.value===null||(B.preventDefault(),d.value=R)}function A(B,R){if(!t.reorderable||l.value===null)return;B.preventDefault();const U=l.value;if(U!==R){const _=[...r.value],[z]=_.splice(U,1);_.splice(R,0,z),r.value=_;const H=_.map(M=>M.uuid);o("reorder",H),i.reorderAlbumMedia(t.albumId,H).catch(()=>{v()})}l.value=null,d.value=null}function k(){l.value=null,d.value=null}return(B,R)=>(e.openBlock(),e.createElementBlock("div",b4,[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(p.value,U=>(e.openBlock(),e.createBlock(e.unref(I.IonCard),{key:U,class:"m-0"},{default:e.withCtx(()=>[e.createElementVNode("div",k4,[e.createVNode(e.unref(I.IonSkeletonText),{animated:"",class:"w-full h-full skeleton"})])]),_:1}))),128))],2)):m.value?(e.openBlock(),e.createElementBlock("div",x4,[e.createVNode(e.unref(I.IonIcon),{name:"images-outline",class:"text-6xl text-gray-400"}),e.createElementVNode("p",E4,e.toDisplayString(B.emptyText),1),e.createVNode(e.unref(I.IonButton),{"data-testid":"add-media-btn",onClick:C},{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,(U,_)=>(e.openBlock(),e.createElementBlock("div",{key:U.uuid,"data-media-id":U.uuid,class:e.normalizeClass(["media-item relative group",{"opacity-50":l.value===_,"ring-2 ring-primary":d.value===_&&l.value!==_}]),draggable:B.reorderable,onDragstart:z=>y(z,_),onDragover:z=>S(z,_),onDrop:z=>A(z,_),onDragend:k,onMouseenter:z=>N(U.uuid),onMouseleave:w},[d.value===_&&l.value!==_&&B.reorderable?(e.openBlock(),e.createElementBlock("div",S4)):e.createCommentVNode("",!0),B.reorderable?(e.openBlock(),e.createElementBlock("div",C4,[e.createVNode(e.unref(I.IonIcon),{name:"reorder-three-outline",class:"text-white drop-shadow-md"})])):e.createCommentVNode("",!0),B.selectionMode?(e.openBlock(),e.createBlock(e.unref(I.IonCheckbox),{key:2,"data-testid":"media-checkbox",checked:g(U.uuid),class:"absolute top-2 left-2 z-20",onIonChange:z=>E(U)},null,8,["checked","onIonChange"])):e.createCommentVNode("",!0),e.createVNode(e.unref(I.IonCard),{class:"m-0 overflow-hidden"},{default:e.withCtx(()=>[e.createElementVNode("div",N4,[e.createElementVNode("img",{src:T(U),alt:U.file_name,class:"w-full h-full object-cover"},null,8,_4),B.showActions&&c.value===U.uuid?(e.openBlock(),e.createElementBlock("div",T4,[e.createVNode(e.unref(I.IonButton),{"data-testid":"action-preview",fill:"clear",size:"small",color:"light",onClick:z=>h(U)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{slot:"icon-only",name:"eye-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(I.IonButton),{"data-testid":"action-edit",fill:"clear",size:"small",color:"light",onClick:z=>x(U)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{slot:"icon-only",name:"create-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(I.IonButton),{"data-testid":"action-detach",fill:"clear",size:"small",color:"danger",onClick:z=>D(U)},{default:e.withCtx(()=>[e.createVNode(e.unref(I.IonIcon),{slot:"icon-only",name:"close-circle-outline"})]),_:1},8,["onClick"])])):e.createCommentVNode("",!0)])]),_:2},1024)],42,V4))),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:C},[e.createVNode(e.unref(I.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))]))}}),B4=Be(M4,[["__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 N=T;o.value=N.image??null,s.value=N.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},m=async T=>{try{return t.value=!0,i.value=T,a.onSave&&await a.onSave(T),u(),T}catch(N){const w=N;throw c.value=w,a.onError&&a.onError(w),w}finally{t.value=!1}},f=()=>{a.onCancel&&a.onCancel(),u()},p=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:m,handleCancel:f,handleError:p,clearError:v,getEditedImage:g}}let Si=null;function F4(a){return Si||(Si=xr(a)),Si}function I4(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),$n(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),$n(o)}}}let ra=null;function R4(){return ra||(ra=Vr()),ra}function $4(){ra=null}const D4={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={...D4,...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(),m=Ci(u);return i!=null&&i.onProgress&&i.onProgress(100),{media:m,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 U4(){return sa||(sa=Sr()),sa}function A4(){sa=null}function _c(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 Nr(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 m=await o(u);d.set(u,m)})),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 O4(){return`upload-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function L4(a){if(a.type.startsWith("image/"))return URL.createObjectURL(a)}function Fc(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),m=e.ref(new Set),f=o?{rules:o}:{},{validateFile:p}=Nr(f);async function v(){if(m.value.size>=t)return;const k=Array.from(u.value.entries()).find(([U,_])=>_.status==="pending"&&!m.value.has(U));if(!k){Array.from(u.value.values()).every(_=>_.status==="completed"||_.status==="error")&&u.value.size>0&&(d==null||d());return}const[B,R]=k;await g(B,R)}async function g(k,B){m.value.add(k),B.status="uploading",B.abortController=new AbortController,u.value.set(k,{...B}),r==null||r(B);try{const R={onProgress:_=>{B.progress=_,u.value.set(k,{...B}),s==null||s(B)},signal:B.abortController.signal};i&&(R.collection=i);const U=await n.upload(B.file,R);B.status="completed",B.progress=100,B.media=U.media,u.value.set(k,{...B}),c==null||c(B,U.media)}catch(R){R.name==="AbortError"?u.value.delete(k):(B.status="error",B.error=R.message,u.value.set(k,{...B}),l==null||l(B,R))}finally{m.value.delete(k),delete B.abortController,v()}}async function E(k){var U;const B=Array.from(k),R=[];for(const _ of B){const z=await p(_),H=O4(),M=L4(_),$={id:H,file:_,progress:0,status:z.valid?"pending":"error"};!z.valid&&((U=z.errors[0])!=null&&U.message)&&($.error=z.errors[0].message),M&&($.previewUrl=M),u.value.set(H,$);const X={media:null,clientId:H,name:_.name,order:0,upload:$,errors:z.errors};R.push(X)}for(let _=0;_<t;_++)v();return R}function T(k){const B=u.value.get(k);B&&(B.abortController&&B.abortController.abort(),B.previewUrl&&URL.revokeObjectURL(B.previewUrl),u.value.delete(k),m.value.delete(k),v())}async function N(k){const B=u.value.get(k);!B||B.status!=="error"||(B.status="pending",B.progress=0,delete B.error,u.value.set(k,{...B}),v())}function w(){for(const[k,B]of u.value.entries())(B.status==="completed"||B.status==="error")&&(B.previewUrl&&URL.revokeObjectURL(B.previewUrl),u.value.delete(k))}function h(){for(const k of u.value.values())k.abortController&&k.abortController.abort(),k.previewUrl&&URL.revokeObjectURL(k.previewUrl);u.value.clear(),m.value.clear()}function x(k){return u.value.get(k)}const D=e.computed(()=>m.value.size>0),C=e.computed(()=>m.value.size),y=e.computed(()=>Array.from(u.value.values()).filter(k=>k.status==="pending").length),S=e.computed(()=>u.value.size===0?!0:Array.from(u.value.values()).every(k=>k.status==="completed"||k.status==="error")),A=e.computed(()=>Array.from(u.value.values()));return{uploads:u,isUploading:D,activeCount:C,pendingCount:y,isComplete:S,addFiles:E,cancelUpload:T,retryUpload:N,clearCompleted:w,clearAll:h,getUpload:x,uploadsArray:A}}function Ic(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(N,w,h){n&&("dataTransfer"in N&&N.dataTransfer&&(N.dataTransfer.effectAllowed="move",N.dataTransfer.setData("text/plain",String(h))),d=N.target,d&&d.classList.add(r),c.value={isDragging:!0,dragIndex:h,dropIndex:h,draggedItem:w},l.value=!0,o==null||o(w,h))}function m(N,w){var h;if(!(!n||!c.value.isDragging)&&(N.preventDefault(),c.value.dropIndex!==w)){const x=document.querySelector(`.${s}`);x==null||x.classList.remove(s);const D=(h=N.target)==null?void 0:h.closest("[data-index]");D==null||D.classList.add(s),c.value.dropIndex=w}}function f(){if(!c.value.isDragging)return;const{dragIndex:N,dropIndex:w,draggedItem:h}=c.value;d&&d.classList.remove(r);const x=document.querySelector(`.${s}`);x==null||x.classList.remove(s),N!==null&&w!==null&&N!==w&&h&&(t==null||t({fromIndex:N,toIndex:w,item:h})),v(),i==null||i()}function p(){d&&d.classList.remove(r);const N=document.querySelector(`.${s}`);N==null||N.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(N,w,h){const x=[...N],[D]=x.splice(w,1);return x.splice(h,0,D),x.map((C,y)=>({...C,order:y}))}function E(N,w){return{draggable:n,"data-index":w,onDragstart:h=>u(h,N,w),onDragover:h=>m(h,w),onDragend:()=>f(),onDrop:h=>{h.preventDefault(),f()}}}function T(N){N.key==="Escape"&&c.value.isDragging&&p()}return e.onMounted(()=>{document.addEventListener("keydown",T)}),e.onUnmounted(()=>{document.removeEventListener("keydown",T),p()}),{dragState:c,isDragging:l,startDrag:u,handleDragOver:m,endDrag:f,cancelDrag:p,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:m="mediables",adapter:f,maxConcurrentUploads:p=3,onChange:v,onUpload:g,onUploadComplete:E,onUploadError:T,onRemove:N,onReorder:w,onError:h,onReadyToSubmitChange:x}=a,D={maxItems:r,maxFileSize:s,acceptedMimeTypes:c,...u},C=f||_c(m),y=e.ref([]),S=e.ref(!1),A=e.ref([]);function k(oe){if(oe.length===0)return[];const le=oe[0];return"media"in le&&"clientId"in le?oe:Yi(oe)}y.value=k(n);const{acceptString:B,canAddFiles:R}=Nr({rules:D}),U=Fc({adapter:C,maxConcurrent:p,rules:D,collection:i,onUploadStart:oe=>{g==null||g(oe)},onUploadComplete:(oe,le)=>{const Ee=y.value.findIndex(Se=>Se.clientId===oe.id);Ee!==-1&&(y.value[Ee]={...y.value[Ee],media:le,name:le.name||le.file_name,upload:{...oe,status:"completed"}}),E==null||E(le)},onUploadError:(oe,le)=>{const Ee=y.value.findIndex(Se=>Se.clientId===oe.id);Ee!==-1&&(y.value[Ee]={...y.value[Ee],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:_,getDragProps:z,reorderItems:H}=Ic({enabled:l&&!d,onReorder:oe=>{y.value=H(y.value,oe.fromIndex,oe.toIndex),w==null||w(y.value),v==null||v(y.value)}}),M=e.computed(()=>U.isUploading.value),$=e.computed(()=>!U.isUploading.value&&U.pendingCount.value===0),X=e.computed(()=>r?y.value.length>=r:!1),W=e.computed(()=>Er(y.value)),te=e.computed(()=>y.value.length),ge=e.computed(()=>r?Math.max(0,r-y.value.length):1/0);e.watch($,oe=>{x==null||x(oe)});function Ne(oe){y.value=k(oe),v==null||v(y.value)}async function ee(oe){if(d)return;const le=Array.from(oe);if(!R(le.length,y.value.length)){const He={field:"count",message:`Maximum ${r} files allowed`,code:"MAX_ITEMS"};A.value=[He],h==null||h([He]);return}const Ee=await U.addFiles(le),Se=y.value.length,rt=Ee.map((He,pt)=>({...He,order:Se+pt}));y.value=[...y.value,...rt],v==null||v(y.value)}function F(oe){d||(oe.upload&&(oe.upload.status==="uploading"||oe.upload.status==="pending")&&U.cancelUpload(oe.clientId),y.value=y.value.filter(le=>le.clientId!==oe.clientId),y.value=y.value.map((le,Ee)=>({...le,order:Ee})),N==null||N(oe),v==null||v(y.value))}function P(oe){const le=y.value.find(Ee=>Ee.clientId===oe);le&&F(le)}function pe(){d||(U.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 Y(oe,le){if(d)return;const Ee=y.value.findIndex(Se=>Se.clientId===oe);Ee!==-1&&(y.value[Ee]={...y.value[Ee],...le},v==null||v(y.value))}function Me(oe){U.cancelUpload(oe),P(oe)}async function ce(oe){await U.retryUpload(oe)}async function se(){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(Ee=>Ee.media&&!Ee.markedForRemoval).map(Ee=>Ee.media.uuid);S.value=!0;try{await C.attachMany(le,oe),await C.reorder(oe,le)}finally{S.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};S.value=!0;try{const le=await C.fetchModelMedia(oe);y.value=Yi(le),v==null||v(y.value)}finally{S.value=!1}}return e.onMounted(()=>{t&&o&&n.length===0&&ke().catch(console.error)}),e.onUnmounted(()=>{U.clearAll()}),{items:y,setItems:Ne,addFiles:ee,removeItem:F,removeItemById:P,clearAll:pe,reorderItems:ne,updateItem:Y,cancelUpload:Me,retryUpload:ce,save:se,load:ke,isLoading:S,isUploading:M,isReadyToSubmit:$,isAtMaxItems:X,errors:A,dragState:_,getDragProps:z,adapter:C,formValues:W,acceptString:B,count:te,remainingSlots:ge}}const z4=["aria-disabled"],P4=["accept","multiple","disabled"],j4={class:"media-dropzone__content"},W4={class:"media-dropzone__title"},Z4={class:"media-dropzone__subtitle"},X4=["disabled"],H4={key:0,class:"media-dropzone__helper"},G4=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 m(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 p(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:m},[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",accept:g.accept,multiple:g.multiple,disabled:g.disabled,class:"media-dropzone__input",onChange:p},null,40,P4),e.createElementVNode("div",j4,[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",W4,[e.renderSlot(g.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(g.title),1)],!0)]),e.createElementVNode("p",Z4,[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,X4),c.value?(e.openBlock(),e.createElementBlock("p",H4,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)])],42,z4))}}),_r=Be(G4,[["__scopeId","data-v-b1366c1e"]]),J4=["data-index"],Y4={key:0,class:"media-item__drag-handle","aria-label":"Drag to reorder",role:"button",tabindex:"0"},K4={class:"media-item__thumbnail"},q4=["src","alt"],Q4={key:1,class:"media-item__file-icon"},e3={key:2,class:"media-item__progress-overlay"},t3={class:"media-item__progress-text"},n3={key:3,class:"media-item__processing-overlay"},o3={key:4,class:"media-item__error-overlay"},a3={class:"media-item__info"},i3=["title"],r3={key:0,class:"media-item__size"},s3={key:1,class:"media-item__error-message"},l3={class:"media-item__actions"},c3=["disabled"],d3=["disabled"],u3=["disabled"],m3=["disabled"],p3=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,h,x;return((w=t.item.upload)==null?void 0:w.status)==="uploading"||((h=t.item.upload)==null?void 0:h.status)==="pending"||((x=t.item.upload)==null?void 0:x.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}),m=e.computed(()=>{var w;return t.item.name||((w=t.item.media)==null?void 0:w.file_name)||"Unknown file"}),f=e.computed(()=>{var C,y;const w=((C=t.item.media)==null?void 0:C.size)||((y=t.item.upload)==null?void 0:y.file.size);if(!w)return"";const h=1024,x=["Bytes","KB","MB","GB"],D=Math.floor(Math.log(w)/Math.log(h));return parseFloat((w/Math.pow(h,D)).toFixed(2))+" "+x[D]}),p=e.computed(()=>{var h,x;const w=((h=t.item.media)==null?void 0:h.mime_type)||((x=t.item.upload)==null?void 0:x.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 N(){t.disabled||o("cancel",t.item)}return(w,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(v.value),"data-index":w.index,onMouseenter:h[0]||(h[0]=x=>i.value=!0),onMouseleave:h[1]||(h[1]=x=>i.value=!1)},[w.sortable&&!w.disabled?(e.openBlock(),e.createElementBlock("div",Y4,[...h[2]||(h[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",K4,[r.value&&p.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:r.value,alt:m.value,class:"media-item__image"},null,8,q4)):(e.openBlock(),e.createElementBlock("div",Q4,[...h[3]||(h[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",e3,[e.createElementVNode("div",{class:"media-item__progress-bar",style:e.normalizeStyle({width:`${u.value}%`})},null,4),e.createElementVNode("span",t3,e.toDisplayString(u.value)+"%",1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",n3,[...h[4]||(h[4]=[e.createElementVNode("div",{class:"media-item__spinner","aria-label":"Processing"},null,-1)])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",o3,[...h[5]||(h[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",a3,[e.createElementVNode("span",{class:"media-item__name",title:m.value},e.toDisplayString(m.value),9,i3),f.value?(e.openBlock(),e.createElementBlock("span",r3,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("span",s3,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:N},[...h[6]||(h[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,c3)):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},[...h[7]||(h[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,d3)):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},[...h[8]||(h[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,u3)):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},[...h[9]||(h[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,m3)):e.createCommentVNode("",!0)])],42,J4))}}),Tr=Be(p3,[["__scopeId","data-v-ff81c9ec"]]),f3=["aria-label"],h3=["draggable","data-index","onDragstart","onDragover","onDragend","onDrop"],v3={key:0,class:"media-collection__footer"},g3={class:"media-collection__count"},y3={key:0},w3={key:0,class:"media-collection__uploading"},b3=["name","value"],k3=["name","value"],x3=["name","value"],E3=["name","value"],V3={key:3,class:"media-collection__errors",role:"alert","aria-live":"polite"},S3=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:M=>{o("update:modelValue",M),o("change",M)},onUpload:M=>{o("upload",M)},onUploadComplete:M=>{o("upload-complete",M)},onUploadError:M=>{o("upload-error",M)},onRemove:M=>{o("remove",M)},onReorder:M=>{o("reorder",M)},onError:M=>{o("validation-error",M)},onReadyToSubmitChange:M=>{o("is-ready-to-submit-change",M)}},{items:r,setItems:s,addFiles:c,removeItem:l,reorderItems:d,cancelUpload:u,retryUpload:m,isLoading:f,isUploading:p,isAtMaxItems:v,errors:g,dragState:E,getDragProps:T,adapter:N,formValues:w,acceptString:h,count:x,remainingSlots:D}=Za(i);e.provide("mediaAdapter",N),e.provide("mediaCollection",{items:r,addFiles:c,removeItem:l,reorderItems:d}),e.watch(()=>t.modelValue,M=>{M!==r.value&&s(M)},{deep:!0});const C=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 S(M){c(M)}function A(M){l(M)}function k(M){m(M.clientId)}function B(M){u(M.clientId)}function R(M){}function U(M,$,X){if(!t.sortable||t.disabled)return;const W=T($,X);W.onDragstart&&W.onDragstart(M)}function _(M,$){if(!t.sortable||t.disabled)return;M.preventDefault();const X=r.value[$],W=T(X,$);W.onDragover&&W.onDragover(M)}function z(M,$){const X=T(M,$);X.onDragend&&X.onDragend()}function H(M,$){M.preventDefault();const X=r.value[$],W=T(X,$);W.onDrop&&W.onDrop(M)}return(M,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(y.value)},[e.renderSlot(M.$slots,"dropzone",{addFiles:e.unref(c)},()=>[C.value?(e.openBlock(),e.createBlock(_r,{key:0,accept:e.unref(h),multiple:M.maxItems!==1,disabled:M.disabled,"max-file-size":M.maxFileSize,"max-items":e.unref(D),onFiles:S},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(x)} media items`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r),(X,W)=>e.renderSlot(M.$slots,"item",{key:X.clientId,item:X,index:W,remove:()=>A(X)},()=>[e.createElementVNode("div",{class:e.normalizeClass(["media-collection__item-wrapper",{"media-collection__item-wrapper--drag-over":e.unref(E).dropIndex===W}]),draggable:M.sortable&&!M.disabled,"data-index":W,onDragstart:te=>U(te,X,W),onDragover:te=>_(te,W),onDragend:te=>z(X,W),onDrop:te=>H(te,W)},[e.createVNode(Tr,{item:X,adapter:e.unref(N),disabled:M.disabled,sortable:M.sortable,"show-remove":!M.readonly,"show-edit":!1,index:W,onRemove:A,onRetry:k,onCancel:B,onEdit:R},null,8,["item","adapter","disabled","sortable","show-remove","index"])],42,h3)],!0)),128))],8,f3)):C.value?e.createCommentVNode("",!0):e.renderSlot(M.$slots,"empty",{key:1},()=>[$[0]||($[0]=e.createElementVNode("div",{class:"media-collection__empty"},[e.createElementVNode("p",null,"No files uploaded")],-1))],!0),e.renderSlot(M.$slots,"footer",{count:e.unref(x),isUploading:e.unref(p)},()=>[e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",v3,[e.createElementVNode("span",g3,[e.createTextVNode(e.toDisplayString(e.unref(x))+" "+e.toDisplayString(e.unref(x)===1?"file":"files")+" ",1),M.maxItems?(e.openBlock(),e.createElementBlock("span",y3," / "+e.toDisplayString(M.maxItems)+" max",1)):e.createCommentVNode("",!0)]),e.unref(p)?(e.openBlock(),e.createElementBlock("span",w3," Uploading... ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],!0),M.generateFormFields?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,W)=>(e.openBlock(),e.createElementBlock("input",{key:`${M.name}-${X.uuid}`,type:"hidden",name:`${M.name}[${W}][uuid]`,value:X.uuid},null,8,b3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,W)=>(e.openBlock(),e.createElementBlock("input",{key:`${M.name}-${X.uuid}-name`,type:"hidden",name:`${M.name}[${W}][name]`,value:X.name},null,8,k3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,W)=>(e.openBlock(),e.createElementBlock("input",{key:`${M.name}-${X.uuid}-order`,type:"hidden",name:`${M.name}[${W}][order]`,value:X.order},null,8,x3))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(X,W)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`${M.name}-${X.uuid}-props`},[X.custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${M.name}[${W}][custom_properties]`,value:JSON.stringify(X.custom_properties)},null,8,E3)):e.createCommentVNode("",!0)],64))),128))],64)):e.createCommentVNode("",!0),e.unref(g).length>0?(e.openBlock(),e.createElementBlock("div",V3,[(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))}}),C3=Be(S3,[["__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:C=>{t==null||t(C[0]||null)},onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d},p=Za(f),v=e.computed(()=>p.items.value[0]||null),g=e.computed(()=>v.value!==null),E=e.computed(()=>p.formValues.value[0]||null);function T(C){C===null?p.clearAll():p.setItems([C])}async function N(C){const y=v.value;y&&p.removeItem(y),await p.addFiles([C])}function w(){v.value&&p.removeItem(v.value)}async function h(C){const y=v.value;y&&p.removeItem(y),await p.addFiles([C]);const S=p.items.value[0];S&&(o==null||o(y,S))}function x(){var C;(C=v.value)!=null&&C.upload&&p.cancelUpload(v.value.clientId)}async function D(){var C,y;((y=(C=v.value)==null?void 0:C.upload)==null?void 0:y.status)==="error"&&await p.retryUpload(v.value.clientId)}return{item:v,setItem:T,addFile:N,removeItem:w,replaceItem:h,cancelUpload:x,retryUpload:D,save:p.save,load:p.load,isLoading:p.isLoading,isUploading:p.isUploading,isReadyToSubmit:p.isReadyToSubmit,hasItem:g,errors:p.errors,adapter:p.adapter,formValue:E,acceptString:p.acceptString}}const N3=["accept","disabled"],_3={class:"media-attachment__preview"},T3=["name","value"],M3=["name","value"],B3=["name","value"],F3=["name","value"],I3={key:4,class:"media-attachment__errors",role:"alert","aria-live":"polite"},R3=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:k=>{o("update:modelValue",k),o("change",k)},onUpload:k=>{o("upload",k)},onUploadComplete:k=>{o("upload-complete",k)},onUploadError:k=>{o("upload-error",k)},onRemove:k=>{o("remove",k)},onReplace:(k,B)=>{o("replace",B)},onError:k=>{o("validation-error",k)},onReadyToSubmitChange:k=>{o("is-ready-to-submit-change",k)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:f,isLoading:p,hasItem:v,errors:g,adapter:E,formValue:T,acceptString:N}=Mr(r);e.provide("mediaAdapter",E),e.watch(()=>t.modelValue,k=>{k!==s.value&&c(k)},{deep:!0});const w=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!v.value),h=e.computed(()=>({"media-attachment":!0,"media-attachment--disabled":t.disabled,"media-attachment--readonly":t.readonly,"media-attachment--loading":p.value,"media-attachment--has-item":v.value}));function x(k){k.length>0&&l(k[0])}function D(){var k;(k=i.value)==null||k.click()}function C(k){const B=k.target,R=B.files;R&&R.length>0&&u(R[0]),B.value=""}function y(k){d()}function S(k){f()}function A(k){m()}return(k,B)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(h.value)},[e.createElementVNode("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:e.unref(N),disabled:k.disabled,class:"media-attachment__hidden-input",onChange:C},null,40,N3),w.value?e.renderSlot(k.$slots,"dropzone",{key:0,addFile:e.unref(l)},()=>[e.createVNode(_r,{accept:e.unref(N),multiple:!1,disabled:k.disabled,"max-file-size":k.maxFileSize,onFiles:x},null,8,["accept","disabled","max-file-size"])],!0):e.unref(v)&&e.unref(s)?e.renderSlot(k.$slots,"preview",{key:1,item:e.unref(s),remove:e.unref(d),replace:D},()=>[e.createElementVNode("div",_3,[e.createVNode(Tr,{item:e.unref(s),adapter:e.unref(E),disabled:k.disabled,sortable:!1,"show-remove":!k.readonly,"show-edit":!1,onRemove:y,onRetry:S,onCancel:A},null,8,["item","adapter","disabled","show-remove"]),k.showReplaceButton&&!k.readonly&&!k.disabled&&e.unref(s).media?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-attachment__replace-button",onClick:D},[...B[0]||(B[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(k.$slots,"empty",{key:2},()=>[B[1]||(B[1]=e.createElementVNode("div",{class:"media-attachment__empty"},[e.createElementVNode("p",null,"No file selected")],-1))],!0),k.generateFormFields&&e.unref(T)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("input",{type:"hidden",name:`${k.name}[uuid]`,value:e.unref(T).uuid},null,8,T3),e.createElementVNode("input",{type:"hidden",name:`${k.name}[name]`,value:e.unref(T).name},null,8,M3),e.createElementVNode("input",{type:"hidden",name:`${k.name}[order]`,value:e.unref(T).order},null,8,B3),e.unref(T).custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${k.name}[custom_properties]`,value:JSON.stringify(e.unref(T).custom_properties)},null,8,F3)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.unref(g).length>0?(e.openBlock(),e.createElementBlock("div",I3,[(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))}}),$3=Be(R3,[["__scopeId","data-v-26911174"]]),Rc={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"}},D3=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:k=>{i("update:modelValue",k),i("change",k)},onUpload:k=>{i("upload",k)},onUploadComplete:k=>{i("upload-complete",k)},onUploadError:k=>{i("upload-error",k)},onRemove:k=>{i("remove",k)},onReorder:k=>{i("reorder",k)},onError:k=>{i("validation-error",k)},onReadyToSubmitChange:k=>{i("is-ready-to-submit-change",k)}},{items:s,setItems:c,addFiles:l,removeItem:d,reorderItems:u,updateItem:m,cancelUpload:f,retryUpload:p,isLoading:v,isUploading:g,isReadyToSubmit:E,isAtMaxItems:T,errors:N,dragState:w,getDragProps:h,adapter:x,formValues:D,acceptString:C}=Za(r);e.provide("mediaAdapter",x),e.provide("mediaCollection",{items:s,addFiles:l,removeItem:d,reorderItems:u}),e.watch(()=>o.modelValue,k=>{k!==s.value&&c(k)},{deep:!0});const y=e.computed(()=>({...Rc,...o.labels})),S=e.computed(()=>({accept:C.value,multiple:o.maxItems!==1,disabled:o.disabled||o.readonly||T.value})),A=e.computed(()=>({items:s.value,isLoading:v.value,isUploading:g.value,isReadyToSubmit:E.value,isAtMaxItems:T.value,errors:N.value,addFiles:l,removeItem:d,reorderItems:u,clearAll:()=>{s.value.forEach(k=>d(k))},cancelUpload:f,retryUpload:p,labels:y.value,dropzoneProps:S.value}));return n({items:s,addFiles:l,removeItem:d,reorderItems:u,updateItem:m,cancelUpload:f,retryUpload:p,isLoading:v,isUploading:g,isReadyToSubmit:E,isAtMaxItems:T,errors:N,dragState:w,getDragProps:h,adapter:x,formValues:D,acceptString:C}),(k,B)=>e.renderSlot(k.$slots,"default",e.normalizeProps(e.guardReactiveProps(A.value)))}}),U3=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,S)=>{i("replace",S)},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:m,retryUpload:f,isLoading:p,isUploading:v,isReadyToSubmit:g,hasItem:E,errors:T,adapter:N,formValue:w,acceptString:h}=Mr(r);e.provide("mediaAdapter",N),e.watch(()=>o.modelValue,y=>{y!==s.value&&c(y)},{deep:!0});const x=e.computed(()=>({...Rc,...o.labels})),D=e.computed(()=>({accept:h.value,multiple:!1,disabled:o.disabled||o.readonly||E.value})),C=e.computed(()=>({item:s.value,hasItem:E.value,isLoading:p.value,isUploading:v.value,isReadyToSubmit:g.value,errors:T.value,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:f,labels:x.value,dropzoneProps:D.value}));return n({item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:f,isLoading:p,isUploading:v,isReadyToSubmit:g,hasItem:E,errors:T,adapter:N,formValue:w,acceptString:h}),(y,S)=>e.renderSlot(y.$slots,"default",e.normalizeProps(e.guardReactiveProps(C.value)))}}),A3=["name","value"],O3=["name","value"],L3=["name","value"],z3=["name","value"],P3=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,A3),e.createElementVNode("input",{type:"hidden",name:s(u,"name"),value:d.name},null,8,O3),e.createElementVNode("input",{type:"hidden",name:s(u,"order"),value:d.order},null,8,L3),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,z3)):e.createCommentVNode("",!0)],64))),128))}});exports.AlbumBrowser=Nc;exports.AlbumManager=w4;exports.AlbumMediaGrid=B4;exports.AlbumTree=Cc;exports.ArrayBufferTarget=ar;exports.ImageEditor=rl;exports.ImageEditorModal=sl;exports.LiveStreamManager=XE;exports.ManagedMediaGallery=lu;exports.MediaAttachment=$3;exports.MediaCollection=C3;exports.MediaCollectionDropzone=_r;exports.MediaCollectionItem=Tr;exports.MediaWorkspace=au;exports.ModelMediaManager=op;exports.Muxer=Fl;exports.VideoEditor=Ji;exports.VideoEditorDialog=Tb;exports.VideoEditorSimple=Qb;exports.VideoExportPanel=Fk;exports.VideoJobClient=kr;exports.VideoPlayer=Ec;exports.VideoTimeline=E2;exports.VideoToolsPanel=mk;exports.VideoUploader=wx;exports._sfc_main=D3;exports._sfc_main$1=U3;exports._sfc_main$2=P3;exports.applyTemporaryMediaStoreConfig=al;exports.configureMediaStore=$n;exports.createAdapter=_c;exports.createEmptyEditorState=Wd;exports.createImageEditor=I4;exports.createMediablesAdapter=Vr;exports.createSpatieAdapter=Sr;exports.deserializeEditorState=jd;exports.formatFileSize=wa;exports.fromMediaArray=Yi;exports.getFileExtension=Tc;exports.getImageDimensions=Mc;exports.getMediablesAdapter=R4;exports.getSpatieAdapter=U4;exports.isImageFile=Cr;exports.normalizeEditorState=Ki;exports.normalizeRecipeForServerRender=db;exports.recipeHasServerRenderableEdits=cb;exports.recipeHasUnsupportedServerEdits=xc;exports.resetMediablesAdapter=$4;exports.resetSpatieAdapter=A4;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=F4;exports.useImageEditorModal=xr;exports.useMediaAttachment=Mr;exports.useMediaCollection=Za;exports.useMediaDragSort=Ic;exports.useMediaStore=xt;exports.useMediaUploadQueue=Fc;exports.useMediaValidation=Nr;exports.validateFile=Bc;
342
+ //# sourceMappingURL=index-CeRnmg4f.cjs.map