@codingfactory/mediables-vue 2.3.4 → 2.3.6

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 yd=Object.defineProperty;var wd=(a,n,t)=>n in a?yd(a,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[n]=t;var A=(a,n,t)=>wd(a,typeof n!="symbol"?n+"":n,t);const va=require("pinia"),e=require("vue"),Le=require("pixi.js"),at=require("./editor-DhRuADQT.cjs"),F=require("@ionic/vue"),bd=require("pixi-filters");function kd(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 He=kd(Le);let Et={apiBaseUrl:"/api/v1",isAdmin:!1};function Fn(a){Et={...Et,...a}}function zs(){return{...Et}}function Ps(a){Et={...a}}function Ws(a){const n=zs();return Fn(a),()=>{Ps(n)}}const xd=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()},kt=va.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),p=e.ref(new Map),h=e.ref(new Set),g=e.ref(new Map),w=e.ref({}),E=5*60*1e3,M=e.computed(()=>{if(Et.apiScope)return Et.apiScope;if(Et.isAdmin)return"admin"}),S=e.computed(()=>M.value==="admin");function y(){return Et.httpClient||xd}function f(ee){const ue=Et.apiBaseUrl||"/api/v1",ge=M.value?`/${M.value}`:"";return`${ue}${ge}${ee}`}function k(ee,ue){return`${M.value??"default"}-${ee}-${JSON.stringify(ue)}`}function R(ee){return Date.now()-ee<E}function N(){g.value.clear(),w.value={}}function v(ee){if(!ee||!ee.data)return;const ue={};ee.data.forEach(ge=>{const xe=`${ge.file_name}-${ge.collection_name||"default"}`,ne=ue[xe];(!ne||Object.keys(ge.generated_conversions||{}).length>Object.keys(ne.generated_conversions||{}).length)&&(ue[xe]=ge)}),a.value=Object.values(ue),ee.meta&&(i.value=ee.meta.current_page,r.value=Math.ceil(ee.meta.total/ee.meta.per_page))}async function C(ee=1,ue={}){const ge=k(ee,ue),xe=g.value.get(ge);if(xe&&R(xe.timestamp)){const ne=xe.data;return v(ne),ne}t.value=!0,o.value=null;try{const ne=new URLSearchParams;ne.append("page",ee.toString()),ne.append("per_page",s.value.toString()),S.value&&ne.append("linked","1");for(const Ye in ue)if(Object.prototype.hasOwnProperty.call(ue,Ye)){const it=ue[Ye];it!=null&&it!==""&&ne.append(Ye,String(it))}const he=await y()(f(`/media?${ne}`));return g.value.set(ge,{data:he,timestamp:Date.now()}),v(he),he}catch(ne){throw o.value=ne instanceof Error?ne.message:"Failed to fetch media",a.value=[],new Error(o.value)}finally{t.value=!1}}async function U(ee,ue){t.value=!0,o.value=null;const ge=`${ee.name}-${Date.now()}`,xe={file:ee,progress:0,status:"uploading"};m.value.set(ge,xe);try{const ne=new FormData;ne.append("file",ee),ne.append("collection",ue.collection),ue.ownerUuid&&(ne.append("owner_uuid",ue.ownerUuid),ne.append("owner_type",ue.ownerType||"")),ue.usageUuid&&(ne.append("usage_uuid",ue.usageUuid),ne.append("usage_type",ue.usageType||""),ne.append("usage_purpose",ue.usagePurpose||"")),ue.customProperties&&ne.append("custom_properties",JSON.stringify(ue.customProperties));const he=await y()(f("/media"),{method:"POST",body:ne});return xe.status="completed",xe.progress=100,xe.media=he==null?void 0:he.data,i.value===1&&(he!=null&&he.data)&&(a.value=[he.data,...a.value]),N(),(he==null?void 0:he.data)||null}catch(ne){throw xe.status="error",xe.error=ne instanceof Error?ne.message:"Upload failed",o.value=xe.error,new Error(o.value)}finally{t.value=!1,setTimeout(()=>{m.value.delete(ge)},5e3)}}async function x(ee){t.value=!0,o.value=null;const ue=a.value.findIndex(xe=>xe.uuid===ee);let ge;ue!==-1&&(ge=a.value.splice(ue,1)[0]);try{return await y()(f(`/media/${ee}`),{method:"DELETE"}),h.value.delete(ee),N(),!0}catch(xe){throw ge&&ue!==-1&&a.value.splice(ue,0,ge),o.value=xe instanceof Error?xe.message:"Failed to delete media",new Error(o.value)}finally{t.value=!1}}async function T(ee,ue){t.value=!0,o.value=null;try{const xe=await y()(f(`/media/${ee}`),{method:"PATCH",body:ue,data:ue});if(xe!=null&&xe.data){const ne=a.value.findIndex(ke=>ke.uuid===ee);return ne!==-1&&(a.value[ne]={...a.value[ne],...xe.data}),N(),xe.data}return null}catch(ge){throw o.value=ge instanceof Error?ge.message:"Failed to update media",new Error(o.value)}finally{t.value=!1}}async function I(){t.value=!0,o.value=null;try{const ue=await y()(f("/media/collections"));return n.value=(ue==null?void 0:ue.data)||[],n.value}catch(ee){throw o.value=ee instanceof Error?ee.message:"Failed to fetch collections",n.value=[],new Error(o.value)}finally{t.value=!1}}async function O(ee,ue,ge="images",xe){d.value=!0,u.value=null;try{const ne=new URLSearchParams;ne.append("collection",ge),xe&&ne.append("search",xe);const he=await y()(f(`/media/model/${ee}/${ue}?${ne}`));return he!=null&&he.data?(l.value=he.data,he.data):[]}catch(ne){throw u.value=ne instanceof Error?ne.message:"Failed to fetch model media",l.value=[],new Error(u.value)}finally{d.value=!1}}async function $(ee,ue,ge,xe="images"){d.value=!0,u.value=null;const ne=[...l.value];try{const he=await y()(f(`/media/model/${ee}/${ue}/attach`),{method:"POST",body:{media_uuids:ge,collection:xe}});return await O(ee,ue,xe),(he==null?void 0:he.data)||[]}catch(ke){throw l.value=ne,u.value=ke instanceof Error?ke.message:"Failed to attach media",new Error(u.value)}finally{d.value=!1}}async function j(ee,ue,ge,xe="images"){d.value=!0,u.value=null;const ne=[...l.value];l.value=l.value.filter(ke=>ke.uuid!==ge);try{return await y()(f(`/media/model/${ee}/${ue}/detach`),{method:"POST",body:{media_uuid:ge,collection:xe}}),!0}catch(ke){throw l.value=ne,u.value=ke instanceof Error?ke.message:"Failed to detach media",new Error(u.value)}finally{d.value=!1}}async function P(ee,ue,ge,xe="images"){d.value=!0,u.value=null;const ne=[...l.value],ke=new Map(l.value.map(he=>[he.uuid,he]));l.value=ge.map(he=>ke.get(he)).filter(he=>he!==void 0);try{return await y()(f(`/media/model/${ee}/${ue}/reorder`),{method:"POST",body:{media_uuids:ge,collection:xe}}),!0}catch(he){throw l.value=ne,u.value=he instanceof Error?he.message:"Failed to reorder media",new Error(u.value)}finally{d.value=!1}}async function _(ee,ue,ge={}){const xe=y(),ne=Et.apiBaseUrl||"/api/v1",ke={image_data:ue.imageData,filters:ue.metadata.filters,crop_data:ue.metadata.cropRect,save_as_new:!0,as_variant:ge.asVariant===!0};return ge.name!==void 0&&(ke.name=ge.name),(await xe(`${ne}/editor/${ee}/save`,{method:"POST",body:ke})).media}function L(ee,ue,ge){c.value=ge!==void 0?{type:ee,uuid:ue,collection:ge}:{type:ee,uuid:ue},w.value[`${ee}-${ue}`]={timestamp:Date.now()}}function G(){c.value={type:null,uuid:null},l.value=[],u.value=null}async function X(){if(!c.value.type||!c.value.uuid)return;const ee=await O(c.value.type,c.value.uuid,c.value.collection||"images");l.value=ee||[]}function ce(){a.value.forEach(ee=>h.value.add(ee.uuid))}function Te(){h.value.clear()}function Re(ee){h.value.has(ee)?h.value.delete(ee):h.value.add(ee)}function ie(ee){return h.value.has(ee)}function B(){return Array.from(m.value.values()).some(ee=>ee.status==="uploading")}function z(ee){return m.value.get(ee)||p.value.get(ee)}function de(){return[...Array.from(m.value.values()),...Array.from(p.value.values())]}async function oe(){const ee=Array.from(h.value);let ue=0;for(const ge of ee)try{await x(ge),ue++}catch{}return Te(),ue}function K(ee,ue){var ge;return ue&&((ge=ee.conversion_urls)!=null&&ge[ue])?ee.conversion_urls[ue]||"":ee.original_url||ee.url||""}return{items:a,collections:n,loading:t,error:o,currentPage:i,totalPages:r,itemsPerPage:s,isAdmin:S,modelContext:c,modelMedia:l,isLoadingModelMedia:d,modelMediaError:u,selectedItems:h,uploadProgress:m,uploadQueue:p,cachedResponses:w,fetchMedia:C,uploadFile:U,deleteMedia:x,updateMedia:T,clearCache:N,fetchCollections:I,fetchModelMedia:O,attachMedia:$,detachMedia:j,reorderMedia:P,saveEditedImage:_,setModelContext:L,clearModelContext:G,refreshModelMedia:X,selectAllItems:ce,clearSelection:Te,toggleSelection:Re,isSelected:ie,deleteSelectedItems:oe,hasActiveUploads:B,getUploadProgress:z,getAllUploadProgress:de,getMediaUrl:K}}),js=()=>((Et.apiScope!=="admin"||Et.isAdmin!==!0)&&Fn({...Et,apiScope:"admin",isAdmin:!0}),kt());function Ed(a,n){try{let t=at.getFilter(a);if(t||(at.registerCorePixiFilters(),t=at.getFilter(a)),!t){try{const r=at.getAllFilters()}catch{}return null}const o={...t.defaultParams,...n};return t.createFilter(o)}catch{return null}}const Vd=e.defineComponent({__name:"ImageEditor",props:{initialImage:{},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(){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.getState(),p=m.crop,h=m.activeFilters,g=m.filterValues,w=r._renderer.sprite,E={width:Math.round((w==null?void 0:w.width)??0),height:Math.round((w==null?void 0:w.height)??0)},M={imageData:u,dimensions:E,metadata:{hasCrop:(p==null?void 0:p.rect)!=null,cropRect:(p==null?void 0:p.rect)??null,filters:h?Array.from(h):[],filterValues:g??{},aspectRatio:(p==null?void 0:p.aspect)??"free",dimensions:E}};o("save",M)}function l(){o("cancel")}function d(){if(!i.value||r)return;window.PIXI=He,at.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 at.VanillaImageEditor(i.value,u),r.setFilterRegistry({getAllFilters:at.getAllFilters,getFilter:at.getFilter,getFiltersByCategory:at.getFiltersByCategory}),r.save=function(){c()},r.on("cancel",l),t.initialImage&&r.loadImage(t.initialImage)}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)}),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))}}),Ne=(a,n)=>{const t=a.__vccOpts||a;for(const[o,i]of n)t[o]=i;return t},Zs=Ne(Vd,[["__scopeId","data-v-dd5088f5"]]),Sd={class:"editor-modal-panel"},Cd={class:"editor-fill"},Nd=e.defineComponent({__name:"ImageEditorModal",props:{modelValue:{type:Boolean,default:!1},initialImage:{},acceptedFormats:{default:"image/jpeg,image/png,image/webp,image/gif"},maxFileSize:{default:10},onSave:{},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(null),c=e.ref(!1),l=e.ref(null),d=S=>new Promise((y,f)=>{const k=new FileReader;k.onload=R=>{var v;const N=(v=R.target)==null?void 0:v.result;typeof N=="string"?y(N):f(new Error("Failed to read file"))},k.onerror=()=>f(new Error("Failed to read file")),k.readAsDataURL(S)}),u=S=>{o("error",S)},m=async()=>{if(t.initialImage instanceof File)try{const S=await d(t.initialImage);s.value=S}catch(S){u(S)}else typeof t.initialImage=="string"&&(s.value=t.initialImage)},p=()=>{e.nextTick(()=>{if(i.value){const S=i.value.querySelector("button:not([disabled]), [href], input:not([disabled])");S&&S.focus()}})};e.watch(()=>t.modelValue,S=>{r.value=S,S&&(l.value=document.activeElement,t.initialImage&&m(),p())},{immediate:!0}),e.watch(()=>t.initialImage,S=>{S&&r.value&&m()});const h=async S=>{try{c.value=!0,t.onSave&&await t.onSave(S),o("save",S)}catch(y){u(y)}finally{c.value=!1}},g=()=>{o("cancel"),E()},w=()=>{c.value||E()},E=()=>{r.value=!1,o("update:modelValue",!1),l.value&&l.value instanceof HTMLElement&&(l.value.focus(),l.value=null),setTimeout(()=>{s.value=null},300)},M=S=>{if(S.key==="Escape"&&r.value&&!c.value){E();return}if(S.key==="Tab"&&r.value&&i.value){const y=i.value.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])');if(y.length===0)return;const f=y[0],k=y[y.length-1];S.shiftKey&&document.activeElement===f?(S.preventDefault(),k.focus()):!S.shiftKey&&document.activeElement===k&&(S.preventDefault(),f.focus())}};return e.onMounted(()=>{document.addEventListener("keydown",M)}),e.onBeforeUnmount(()=>{document.removeEventListener("keydown",M)}),t.modelValue&&t.initialImage&&m(),(S,y)=>(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(w,["escape"])},[e.createElementVNode("div",{class:"editor-modal-backdrop",onClick:w}),e.createElementVNode("div",Sd,[e.createElementVNode("div",Cd,[e.createVNode(Zs,{"initial-image":s.value??S.initialImage,theme:S.theme,"crop-shape":S.cropShape,preset:S.preset,"primary-color":S.primaryColor,"secondary-color":S.secondaryColor,"save-button-color":S.saveButtonColor,"download-button-color":S.downloadButtonColor,onSave:h,onCancel:g,onError:u},null,8,["initial-image","theme","crop-shape","preset","primary-color","secondary-color","save-button-color","download-button-color"])])])],544)):e.createCommentVNode("",!0)]))}}),Xs=Ne(Nd,[["__scopeId","data-v-e19beb15"]]),_d={class:"media-workspace"},Td={class:"media-workspace-toolbar"},Md={class:"media-workspace-label"},Bd=["value"],Fd={class:"media-workspace-grid"},Id=["onClick"],Rd=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=kt(),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(p=>p.id===r.value));let l=null;function d(){l&&(l(),l=null),t.apiScope&&(l=Ws({apiScope:t.apiScope,isAdmin:t.apiScope==="admin"}))}async function u(){var h;const p={};(h=c.value)!=null&&h.collection&&(p.collection=c.value.collection),await i.fetchMedia(1,p),o("update:media",[...i.items])}return e.watch(()=>t.initialScopeId,p=>{p&&p!==r.value&&(r.value=p)}),e.watch(()=>t.subScopes,p=>{if(p.length===0){r.value="";return}p.some(h=>h.id===r.value)||(r.value=p[0].id)},{deep:!0}),e.watch(()=>t.apiScope,()=>{d(),u()}),e.watch(r,p=>{p&&(o("scope-change",p),u())}),e.onMounted(()=>{d(),u()}),e.onUnmounted(()=>{l&&(l(),l=null)}),(p,h)=>(e.openBlock(),e.createElementBlock("div",_d,[e.createElementVNode("div",Td,[e.createElementVNode("label",Md,[h[2]||(h[2]=e.createElementVNode("span",{class:"media-workspace-label-text"},"Scope",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[0]||(h[0]=g=>r.value=g),"data-testid":"scope-select",class:"media-workspace-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,g=>(e.openBlock(),e.createElementBlock("option",{key:g.id,value:g.id},e.toDisplayString(g.label),9,Bd))),128))],512),[[e.vModelSelect,r.value]])]),e.createElementVNode("button",{type:"button",class:"media-workspace-upload","data-testid":"upload-button",onClick:h[1]||(h[1]=g=>o("upload"))}," Upload ")]),e.createElementVNode("div",Fd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i).items,g=>(e.openBlock(),e.createElementBlock("button",{key:g.uuid,type:"button",class:"media-workspace-item","data-testid":"media-item",onClick:w=>o("preview",g)},e.toDisplayString(g.file_name),9,Id))),128))])]))}}),$d=Ne(Rd,[["__scopeId","data-v-895f26fe"]]),Dd={class:"managed-media-gallery"},Ud={class:"gallery-grid"},Od=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",Dd,[e.createElementVNode("div",Ud,[e.renderSlot(n.$slots,"default",{},void 0,!0)])]))}}),Ld=Ne(Od,[["__scopeId","data-v-a60fdcd7"]]),Ad="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>",Ai="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>",zd="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>",zi="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>",Pd="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>",Wd="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>",eo="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>",jd="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>",Hs="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>",Gs="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>",jr="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>",Zd="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>",Xd="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>",Zr="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>",In="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>",Xr="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>",Hd="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>",an="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>",Gd="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>",Gn="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>",Jd="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>",Yd="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>",Hr="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>",Js="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>",po="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>",Kd="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>",qd="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>",Qd="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>",to="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>",Gr="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>",ti="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>",tu="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>",ni="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>",nu="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>",ou="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>",au="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>",iu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-32 272a16 16 0 01-32 0V192a16 16 0 0132 0zm96 0a16 16 0 01-32 0V192a16 16 0 0132 0z'/></svg>",Ys="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>",Ks="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>",ru="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>",su="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>",lu="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>",cu="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>",qs="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>",du="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>",uu="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>",Qs="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>",mu="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>",pu="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>",Un="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>",fu="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>",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' d='M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Jr="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>",Pi="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>",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='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>",oi="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>",on="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>",Jn="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>",Yr="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>",gu="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>",el="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>",yu="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>",tl="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>",wu="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>",bu="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>",ku="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>",xu="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>",Eu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-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>",Vu="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>",Su="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>",Do="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 Kr=()=>{};function Cu(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 Nu(a,n={}){let t,o,i=Kr;const r=l=>{clearTimeout(l),i(),i=Kr};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,p)=>{i=n.rejectOnCancel?p: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 _u(a,n=200,t={}){return Cu(Nu(n,t),a)}const Yn=new Map;function Tu(a){const n=e.getCurrentScope();function t(c){var l;const d=Yn.get(a)||new Set;d.add(c),Yn.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=Yn.get(a);l&&(l.delete(c),l.size||r())}function r(){Yn.delete(a)}function s(c,l){var d;(d=Yn.get(a))==null||d.forEach(u=>u(c,l))}return{on:t,once:o,off:i,emit:s,reset:r}}function Mu(){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 Bu(a){const n=e.ref(new Set),t=e.ref(null),o=e.ref(-1),i=Tu("media-selection"),r=Mu(),s=e.computed(()=>a.value.filter(k=>n.value.has(k.uuid))),c=e.computed(()=>n.value.size);e.watch(n,k=>{i.emit({type:"selection:changed",count:k.size,selectedIds:Array.from(k)})},{deep:!0});const l=e.computed(()=>a.value.length>0&&a.value.every(k=>n.value.has(k.uuid))),d=e.computed(()=>a.value.some(k=>n.value.has(k.uuid)));function u(k){return n.value.has(k)}function m(k){n.value.has(k)?(n.value.delete(k),t.value===k&&(t.value=null,o.value=-1)):(n.value.add(k),t.value=k,o.value=a.value.findIndex(R=>R.uuid===k),n.value.size===1&&r.selection())}function p(k){n.value.add(k),t.value=k,o.value=a.value.findIndex(R=>R.uuid===k)}function h(k){n.value.delete(k),t.value===k&&(t.value=null,o.value=-1)}function g(){a.value.forEach(k=>n.value.add(k.uuid))}function w(){n.value.clear(),t.value=null,o.value=-1}function E(){l.value?w():g()}function M(k,R){const N=a.value.findIndex(v=>v.uuid===k);if(N!==-1)if(R!=null&&R.shiftKey&&o.value!==-1){const v=Math.min(o.value,N),C=Math.max(o.value,N);for(let U=v;U<=C;U++)n.value.add(a.value[U].uuid)}else m(k)}function S(){if(a.value.length===0)return;let k=o.value+1;k>=a.value.length&&(k=0),w(),p(a.value[k].uuid)}function y(){if(a.value.length===0)return;let k=o.value-1;k<0&&(k=a.value.length-1),w(),p(a.value[k].uuid)}function f(k){switch(k.key){case"ArrowDown":k.preventDefault(),S();break;case"ArrowUp":k.preventDefault(),y();break;case"a":(k.ctrlKey||k.metaKey)&&(k.preventDefault(),g());break;case"Escape":k.preventDefault(),w();break;case" ":t.value&&(k.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:p,deselect:h,selectAll:g,clear:w,toggleAll:E,rangeSelect:M,selectNext:S,selectPrevious:y,handleKeydown:f,selectionBus:i}}const Fu={class:"flex items-center justify-between w-full px-4"},Iu={class:"p-4"},Ru={key:0,class:"mb-4 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg"},$u={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},Du=["value"],Uu={class:"flex gap-2 mt-4"},Ou={class:"flex justify-end mb-4"},Lu={key:1,class:"flex justify-center items-center h-64"},Au={key:2,class:"flex flex-col items-center justify-center h-64 text-center"},zu={class:"text-sm text-theme-secondary"},Pu={key:0},Wu={class:"mb-4"},ju={class:"mb-4"},Zu={class:"flex gap-2"},Xu={class:"flex items-center justify-between px-4 py-2"},Hu={class:"text-sm text-theme-secondary"},Gu={key:0},Ju={key:0},Yu={key:1},Ku={class:"flex gap-2"},qu=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),p=e.ref({}),h=e.ref(["images","documents","videos"]),g=e.ref(1),w=e.ref(!0),E=e.ref(!1),M=js(),S=Bu(l);function y(B){var ge;const z=B.conversion_urls||{},de=B.proxy_url||B.original_url||B.url||"",oe=z.thumb||z.preview||B.preview_url||B.thumbnail_url||de,K=B.custom_properties||{},ee=K.width,ue=K.height;return{...B,uuid:B.uuid,name:B.name||B.file_name,file_name:B.file_name,filename:B.file_name,mime_type:B.mime_type,size:B.size,collection_name:B.collection_name||"images",disk:B.disk,original_url:de,url:de,thumbnail_url:oe,conversions:B.conversions||{},conversion_urls:z,generated_conversions:B.generated_conversions||{},custom_properties:K,caption:B.caption||null,alt_text:B.alt_text||null,created_at:B.created_at,updated_at:B.updated_at,is_image:((ge=B.mime_type)==null?void 0:ge.startsWith("image/"))||!1,...typeof ee=="number"?{width:ee}:{},...typeof ue=="number"?{height:ue}:{},...B.formatted_size!==void 0?{formatted_size:B.formatted_size}:{}}}e.watch(()=>t.selectedItems,B=>{u.value=new Set(B),S.clear(),B.forEach(z=>S.select(z))});const f=e.computed(()=>{var z;let B=l.value;return(z=p.value.types)!=null&&z.length&&(B=B.filter(de=>{var K,ee;const oe=(K=de.mime_type)==null?void 0:K.split("/")[0];return(ee=p.value.types)==null?void 0:ee.includes(oe)})),(p.value.sizeMin!==void 0||p.value.sizeMax!==void 0)&&(B=B.filter(de=>{const oe=de.size/1048576;return!(p.value.sizeMin!==void 0&&oe<p.value.sizeMin||p.value.sizeMax!==void 0&&oe>p.value.sizeMax)})),B}),k=e.computed(()=>{var z;let B=0;return p.value.search&&B++,p.value.collection&&B++,(p.value.dateFrom||p.value.dateTo)&&B++,(z=p.value.types)!=null&&z.length&&(B+=p.value.types.length),(p.value.sizeMin!==void 0||p.value.sizeMax!==void 0)&&B++,B}),R=e.computed(()=>{const B=S.selectedCount.value;return B===0?"Select Media":`Select ${t.selectionMode==="multiple"?`${B} ${B===1?"Item":"Items"}`:"Item"}`}),N=e.computed(()=>{const B=S.selectedCount.value;return!!(B===0||t.selectionMode==="single"&&B>1||t.maxSelection&&B>t.maxSelection)}),v=e.computed(()=>{switch(i.value){case"recent":return"Recent Uploads";case"model":return"Model Media";case"library":return"Media Library";default:return"Media Browser"}});async function C(B=!0){B?(c.value=!0,l.value=[],g.value=1,w.value=!0):E.value=!0;try{const z={collection:p.value.collection||t.collection,per_page:24};switch((s.value||p.value.search)&&(z.search=s.value||p.value.search||""),p.value.dateFrom&&(z.from_date=p.value.dateFrom),p.value.dateTo&&(z.to_date=p.value.dateTo),i.value){case"recent":await M.fetchMedia(g.value,z),B?l.value=M.items.map(de=>y(de)):l.value=[...l.value,...M.items.map(de=>y(de))],w.value=M.currentPage<M.totalPages;break;case"model":if(t.modelType&&t.modelId){const de=await M.fetchModelMedia(t.modelType,t.modelId,z.collection,z.search);l.value=de?de.map(oe=>y(oe)):[],w.value=!1}break;case"library":await M.fetchMedia(g.value,z),B?l.value=M.items.map(de=>y(de)):l.value=[...l.value,...M.items.map(de=>y(de))],w.value=M.currentPage<M.totalPages;break}}catch{}finally{c.value=!1,E.value=!1}}async function U(B){if(!w.value||E.value){B!=null&&B.target&&B.target.complete();return}g.value++,await C(!1),B!=null&&B.target&&(B.target.complete(),w.value||(B.target.disabled=!0))}function x(B){return B==="recent"||B==="model"||B==="library"}function T(B){i.value=B,C()}function I(B){typeof B=="string"&&x(B)&&T(B)}async function O(B){t.selectionMode==="single"?(S.clear(),S.select(B.uuid)):(S.toggle(B.uuid),t.maxSelection&&S.selectedCount.value>t.maxSelection&&(S.deselect(B.uuid),await(await F.toastController.create({message:`Maximum ${t.maxSelection} items can be selected`,duration:2e3,color:"warning"})).present()))}function $(){o("confirm",S.selectedItems.value)}function j(){o("close")}function P(B){}const _=e.ref(null),L=e.ref(!1);function G(B){_.value=B,L.value=!0}function X(B){const z=l.value.findIndex(oe=>oe.uuid===B.uuid);z!==-1&&(l.value[z]=B);const de={};B.alt_text!==void 0&&(de.alt_text=B.alt_text),B.caption!==void 0&&(de.caption=B.caption),B.custom_properties!==void 0&&(de.custom_properties=B.custom_properties),M.updateMedia(B.uuid,de)}function ce(){C()}function Te(){p.value={},s.value="",C()}const Re=_u(()=>{C(!0)},300);e.watch(s,()=>{t.isOpen&&Re()});async function ie(B){try{await(await F.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 M.deleteMedia(B),await C()}}]})).present()}catch{}}return e.watch(()=>t.isOpen,B=>{B&&C()}),e.onMounted(()=>{t.selectedItems.length>0&&t.selectedItems.forEach(B=>S.select(B))}),(B,z)=>{const de=e.resolveComponent("AdminMediaGrid"),oe=e.resolveComponent("AdminMediaListItem");return e.openBlock(),e.createBlock(e.unref(F.IonModal),{"is-open":B.isOpen,onDidDismiss:j,"backdrop-dismiss":!1,class:"media-browser-modal"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(F.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{onClick:j},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(F.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value),1)]),_:1})]),_:1}),e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",Fu,[e.createVNode(e.unref(F.IonSegment),{value:i.value,onIonChange:z[0]||(z[0]=K=>I(K.detail.value)),class:"max-w-xs"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonSegmentButton),{value:"recent"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[15]||(z[15]=[e.createTextVNode("Recent",-1)])]),_:1})]),_:1}),t.modelType&&t.modelId?(e.openBlock(),e.createBlock(e.unref(F.IonSegmentButton),{key:0,value:"model"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[16]||(z[16]=[e.createTextVNode("Model",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonSegmentButton),{value:"library"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[17]||(z[17]=[e.createTextVNode("Library",-1)])]),_:1})]),_:1})]),_:1},8,["value"]),e.createVNode(e.unref(F.IonButton),{fill:"clear",size:"small",onClick:z[1]||(z[1]=K=>m.value=!m.value),class:"relative"},{"icon-only":e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"filter-outline"})]),default:e.withCtx(()=>[k.value>0?(e.openBlock(),e.createBlock(e.unref(F.IonBadge),{key:0,color:"primary",class:"absolute -top-1 -right-1 min-w-[20px] h-5 rounded-full flex items-center justify-center text-xs"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.value),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})])]),_:1})]),_:1}),e.createVNode(e.unref(F.IonContent),null,{default:e.withCtx(()=>[e.createElementVNode("div",Iu,[m.value?(e.openBlock(),e.createElementBlock("div",Ru,[e.createElementVNode("div",$u,[e.createElementVNode("div",null,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[18]||(z[18]=[e.createTextVNode("Collection",-1)])]),_:1}),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":z[2]||(z[2]=K=>p.value.collection=K),class:"w-full p-2 border rounded"},[z[19]||(z[19]=e.createElementVNode("option",{value:""},"All Collections",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,K=>(e.openBlock(),e.createElementBlock("option",{key:K,value:K},e.toDisplayString(K),9,Du))),128))],512),[[e.vModelSelect,p.value.collection]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[20]||(z[20]=[e.createTextVNode("From Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[3]||(z[3]=K=>p.value.dateFrom=K),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,p.value.dateFrom]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[21]||(z[21]=[e.createTextVNode("To Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[4]||(z[4]=K=>p.value.dateTo=K),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,p.value.dateTo]])])]),e.createElementVNode("div",Uu,[e.createVNode(e.unref(F.IonButton),{size:"small",onClick:ce},{default:e.withCtx(()=>[...z[22]||(z[22]=[e.createTextVNode("Apply",-1)])]),_:1}),e.createVNode(e.unref(F.IonButton),{size:"small",fill:"clear",onClick:Te},{default:e.withCtx(()=>[...z[23]||(z[23]=[e.createTextVNode("Clear",-1)])]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonSearchbar),{modelValue:s.value,"onUpdate:modelValue":z[5]||(z[5]=K=>s.value=K),placeholder:"Search media...",debounce:300,class:"mb-4"},null,8,["modelValue"]),e.createElementVNode("div",Ou,[e.createVNode(e.unref(F.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{fill:r.value==="grid"?"solid":"clear",size:"small",onClick:z[6]||(z[6]=K=>r.value="grid")},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"grid-outline"})]),_:1},8,["fill"]),e.createVNode(e.unref(F.IonButton),{fill:r.value==="list"?"solid":"clear",size:"small",onClick:z[7]||(z[7]=K=>r.value="list")},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"list-outline"})]),_:1},8,["fill"])]),_:1})]),c.value?(e.openBlock(),e.createElementBlock("div",Lu,[e.createVNode(e.unref(F.IonSpinner),{name:"crescent"})])):f.value.length===0?(e.openBlock(),e.createElementBlock("div",Au,[e.createVNode(e.unref(F.IonIcon),{name:"images-outline",class:"text-6xl text-theme-secondary mb-4"}),z[24]||(z[24]=e.createElementVNode("h3",{class:"text-lg font-medium text-theme mb-2"}," No Media Found ",-1)),e.createElementVNode("p",zu,e.toDisplayString(s.value?"Try adjusting your search":"No media items available"),1)])):r.value==="grid"?(e.openBlock(),e.createBlock(de,{key:3,"media-items":f.value,"selected-items":e.unref(S).selectedItems.value,"is-loading":!1,"selection-mode":!0,columns:{mobile:2,sm:3,md:4,lg:5,xl:6},onToggleSelect:O,onPreview:P,onEdit:G,onDelete:ie},null,8,["media-items","selected-items"])):(e.openBlock(),e.createBlock(e.unref(F.IonList),{key:4,lines:"none",class:"rounded-lg overflow-hidden"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(K,ee)=>(e.openBlock(),e.createBlock(oe,{key:K.uuid,media:K,selected:e.unref(S).isSelected(K.uuid),"selection-mode":!0,index:ee,onToggleSelect:O,onPreview:P,onEdit:G,onDelete:ie},null,8,["media","selected","index"]))),128))]),_:1})),!c.value&&f.value.length>0&&i.value!=="model"?(e.openBlock(),e.createBlock(e.unref(F.IonInfiniteScroll),{key:5,threshold:"100px",onIonInfinite:z[8]||(z[8]=K=>U(K))},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonInfiniteScrollContent),{"loading-spinner":"crescent","loading-text":"Loading more media..."})]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(e.unref(F.IonModal),{"is-open":L.value,onDidDismiss:z[14]||(z[14]=K=>L.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(F.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{onClick:z[9]||(z[9]=K=>L.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(F.IonTitle),null,{default:e.withCtx(()=>[...z[25]||(z[25]=[e.createTextVNode("Edit Media Info",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(F.IonContent),{class:"p-4"},{default:e.withCtx(()=>[_.value?(e.openBlock(),e.createElementBlock("div",Pu,[e.createElementVNode("div",Wu,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[26]||(z[26]=[e.createTextVNode("Caption",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[10]||(z[10]=K=>_.value.caption=K),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter caption..."},null,512),[[e.vModelText,_.value.caption]])]),e.createElementVNode("div",ju,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[27]||(z[27]=[e.createTextVNode("Alt Text",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[11]||(z[11]=K=>_.value.alt_text=K),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter alt text..."},null,512),[[e.vModelText,_.value.alt_text]])]),e.createElementVNode("div",Zu,[e.createVNode(e.unref(F.IonButton),{onClick:z[12]||(z[12]=K=>X(_.value))},{default:e.withCtx(()=>[...z[28]||(z[28]=[e.createTextVNode("Save",-1)])]),_:1}),e.createVNode(e.unref(F.IonButton),{fill:"clear",onClick:z[13]||(z[13]=K=>L.value=!1)},{default:e.withCtx(()=>[...z[29]||(z[29]=[e.createTextVNode("Cancel",-1)])]),_:1})])])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["is-open"]),e.createVNode(e.unref(F.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",Xu,[e.createElementVNode("div",Hu,[e.unref(S).selectedCount.value>0?(e.openBlock(),e.createElementBlock("span",Gu,[e.createTextVNode(e.toDisplayString(e.unref(S).selectedCount.value)+" selected ",1),t.maxSelection?(e.openBlock(),e.createElementBlock("span",Ju," / "+e.toDisplayString(t.maxSelection)+" max ",1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("span",Yu," Select "+e.toDisplayString(t.selectionMode==="multiple"?"items":"an item"),1))]),e.createElementVNode("div",Ku,[e.createVNode(e.unref(F.IonButton),{fill:"clear",onClick:j},{default:e.withCtx(()=>[...z[30]||(z[30]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(F.IonButton),{disabled:N.value,onClick:$},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(R.value),1)]),_:1},8,["disabled"])])])]),_:1})]),_:1})]),_:1},8,["is-open"])}}}),Qu=Ne(qu,[["__scopeId","data-v-9a8c0954"]]),em={key:1,class:"flex flex-col items-center justify-center py-16"},tm=["draggable","onDragstart","onDragover","onDrop"],nm={key:0,class:"absolute top-2 left-2 z-20"},om=["checked","onChange"],am={key:2,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-move"},im=["data-media-id"],rm={key:0,class:"w-full h-full flex items-center justify-center"},sm=["src","alt","onError","onLoad"],lm={key:2,class:"w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-700"},cm={class:"text-center"},dm={class:"text-4xl text-gray-400 mb-2"},um={class:"text-sm font-medium text-gray-500"},mm={class:"absolute inset-0 bg-black/70 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2"},pm=["onClick"],fm=["onClick"],hm=["onClick"],vm={class:"p-3"},gm={class:"text-sm font-medium truncate mb-1"},ym={class:"text-xs text-gray-600 dark:text-gray-400"},wm={key:0},bm={key:0,class:"text-xs text-gray-500 dark:text-gray-500 mt-1 truncate"},km=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=N=>t.selectedItems.some(v=>v.uuid===N.uuid),d=e.computed(()=>{const N=t.columns,v=["grid","gap-4"];switch(N.mobile){case 1:v.push("grid-cols-1");break;case 2:v.push("grid-cols-2");break;case 3:v.push("grid-cols-3");break;case 4:v.push("grid-cols-4");break;default:v.push("grid-cols-2");break}switch(N.sm){case 1:v.push("sm:grid-cols-1");break;case 2:v.push("sm:grid-cols-2");break;case 3:v.push("sm:grid-cols-3");break;case 4:v.push("sm:grid-cols-4");break;case 5:v.push("sm:grid-cols-5");break;default:v.push("sm:grid-cols-3");break}switch(N.md){case 2:v.push("md:grid-cols-2");break;case 3:v.push("md:grid-cols-3");break;case 4:v.push("md:grid-cols-4");break;case 5:v.push("md:grid-cols-5");break;case 6:v.push("md:grid-cols-6");break;default:v.push("md:grid-cols-4");break}switch(N.lg){case 3:v.push("lg:grid-cols-3");break;case 4:v.push("lg:grid-cols-4");break;case 5:v.push("lg:grid-cols-5");break;case 6:v.push("lg:grid-cols-6");break;case 7:v.push("lg:grid-cols-7");break;default:v.push("lg:grid-cols-5");break}switch(N.xl){case 4:v.push("xl:grid-cols-4");break;case 5:v.push("xl:grid-cols-5");break;case 6:v.push("xl:grid-cols-6");break;case 7:v.push("xl:grid-cols-7");break;case 8:v.push("xl:grid-cols-8");break;default:v.push("xl:grid-cols-6");break}return v.join(" ")});function u(N,v,C){t.reorderable&&(i.value=v,N.dataTransfer&&(N.dataTransfer.effectAllowed="move",N.dataTransfer.setData("text/html","")))}function m(N,v){t.reorderable&&(N.preventDefault(),r.value=v)}function p(){r.value=null}function h(N,v){if(!t.reorderable||!i.value)return;N.preventDefault();const C=[...t.mediaItems],U=C.findIndex(x=>{var T;return x.uuid===((T=i.value)==null?void 0:T.uuid)});if(U!==-1&&U!==v&&i.value){const[x]=C.splice(U,1);C.splice(v,0,x),o("reorder",C)}i.value=null,r.value=null}function g(N){return N<1024?N+" B":N<1024*1024?(N/1024).toFixed(1)+" KB":(N/(1024*1024)).toFixed(1)+" MB"}function w(N){var C;return N.thumbnail_url||((C=N.conversion_urls)==null?void 0:C.thumb)||N.original_url||N.url||""}function E(N){var U,x,T;const v=((U=N.mime_type)==null?void 0:U.startsWith("image/"))||!1,C=!!(N.thumbnail_url||(x=N.conversion_urls)!=null&&x.thumb||(T=N.conversion_urls)!=null&&T.preview||N.original_url||N.url);return v&&C}function M(N){var v;return((v=N.split(".").pop())==null?void 0:v.toUpperCase())||""}function S(N){var C;const v=((C=N.mime_type)==null?void 0:C.toLowerCase())||"";return v.startsWith("image/")?"image":v.startsWith("video/")?"videocam":v.startsWith("audio/")?"musical-notes":v.includes("pdf")?"document-text":v.includes("zip")||v.includes("rar")?"archive":v.includes("sheet")||v.includes("excel")?"grid":v.includes("document")||v.includes("word")?"document-text":"document"}e.onMounted(()=>{typeof window<"u"&&"IntersectionObserver"in window&&(c.value=new IntersectionObserver(N=>{N.forEach(v=>{var C;if(v.isIntersecting){const U=v.target.getAttribute("data-media-id");U&&(s.value.add(U),(C=c.value)==null||C.unobserve(v.target))}})},{rootMargin:"50px"}))}),e.onUnmounted(()=>{c.value&&c.value.disconnect()});function y(N){return!0}function f(){c.value&&e.nextTick(()=>{document.querySelectorAll("[data-media-id]").forEach(v=>{var U;const C=v.getAttribute("data-media-id");C&&!s.value.has(C)&&((U=c.value)==null||U.observe(v))})})}e.watch(()=>t.mediaItems,()=>{s.value.clear(),f()},{immediate:!0,deep:!0});function k(N,v){const C=N.target;delete C.dataset.fallbackIndex}function R(N,v){const C=N.target,U=C.closest("[data-media-id]"),x=[v.original_url,v.url,v.thumbnail_url,"preview_url"in v?v.preview_url:void 0].filter(T=>T&&T.trim()!==""&&T!==C.src);if(x.length>0&&C.dataset.fallbackIndex){const T=parseInt(C.dataset.fallbackIndex);if(T<x.length){C.dataset.fallbackIndex=(T+1).toString(),C.src=x[T]||"";return}}else if(x.length>0){C.dataset.fallbackIndex="1",C.src=x[0]||"";return}if(C.style.display="none",U&&!U.querySelector(".media-fallback-icon")){const I=document.createElement("div");I.className="media-fallback-icon w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-800",I.innerHTML=`
1
+ "use strict";var yd=Object.defineProperty;var wd=(a,n,t)=>n in a?yd(a,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[n]=t;var A=(a,n,t)=>wd(a,typeof n!="symbol"?n+"":n,t);const va=require("pinia"),e=require("vue"),Le=require("pixi.js"),at=require("./editor-D_dX1XkE.cjs"),F=require("@ionic/vue"),bd=require("pixi-filters");function kd(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 He=kd(Le);let Et={apiBaseUrl:"/api/v1",isAdmin:!1};function Fn(a){Et={...Et,...a}}function zs(){return{...Et}}function Ps(a){Et={...a}}function Ws(a){const n=zs();return Fn(a),()=>{Ps(n)}}const xd=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()},kt=va.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),p=e.ref(new Map),h=e.ref(new Set),g=e.ref(new Map),w=e.ref({}),E=5*60*1e3,M=e.computed(()=>{if(Et.apiScope)return Et.apiScope;if(Et.isAdmin)return"admin"}),S=e.computed(()=>M.value==="admin");function y(){return Et.httpClient||xd}function f(ee){const ue=Et.apiBaseUrl||"/api/v1",ge=M.value?`/${M.value}`:"";return`${ue}${ge}${ee}`}function k(ee,ue){return`${M.value??"default"}-${ee}-${JSON.stringify(ue)}`}function R(ee){return Date.now()-ee<E}function N(){g.value.clear(),w.value={}}function v(ee){if(!ee||!ee.data)return;const ue={};ee.data.forEach(ge=>{const xe=`${ge.file_name}-${ge.collection_name||"default"}`,ne=ue[xe];(!ne||Object.keys(ge.generated_conversions||{}).length>Object.keys(ne.generated_conversions||{}).length)&&(ue[xe]=ge)}),a.value=Object.values(ue),ee.meta&&(i.value=ee.meta.current_page,r.value=Math.ceil(ee.meta.total/ee.meta.per_page))}async function C(ee=1,ue={}){const ge=k(ee,ue),xe=g.value.get(ge);if(xe&&R(xe.timestamp)){const ne=xe.data;return v(ne),ne}t.value=!0,o.value=null;try{const ne=new URLSearchParams;ne.append("page",ee.toString()),ne.append("per_page",s.value.toString()),S.value&&ne.append("linked","1");for(const Ye in ue)if(Object.prototype.hasOwnProperty.call(ue,Ye)){const it=ue[Ye];it!=null&&it!==""&&ne.append(Ye,String(it))}const he=await y()(f(`/media?${ne}`));return g.value.set(ge,{data:he,timestamp:Date.now()}),v(he),he}catch(ne){throw o.value=ne instanceof Error?ne.message:"Failed to fetch media",a.value=[],new Error(o.value)}finally{t.value=!1}}async function U(ee,ue){t.value=!0,o.value=null;const ge=`${ee.name}-${Date.now()}`,xe={file:ee,progress:0,status:"uploading"};m.value.set(ge,xe);try{const ne=new FormData;ne.append("file",ee),ne.append("collection",ue.collection),ue.ownerUuid&&(ne.append("owner_uuid",ue.ownerUuid),ne.append("owner_type",ue.ownerType||"")),ue.usageUuid&&(ne.append("usage_uuid",ue.usageUuid),ne.append("usage_type",ue.usageType||""),ne.append("usage_purpose",ue.usagePurpose||"")),ue.customProperties&&ne.append("custom_properties",JSON.stringify(ue.customProperties));const he=await y()(f("/media"),{method:"POST",body:ne});return xe.status="completed",xe.progress=100,xe.media=he==null?void 0:he.data,i.value===1&&(he!=null&&he.data)&&(a.value=[he.data,...a.value]),N(),(he==null?void 0:he.data)||null}catch(ne){throw xe.status="error",xe.error=ne instanceof Error?ne.message:"Upload failed",o.value=xe.error,new Error(o.value)}finally{t.value=!1,setTimeout(()=>{m.value.delete(ge)},5e3)}}async function x(ee){t.value=!0,o.value=null;const ue=a.value.findIndex(xe=>xe.uuid===ee);let ge;ue!==-1&&(ge=a.value.splice(ue,1)[0]);try{return await y()(f(`/media/${ee}`),{method:"DELETE"}),h.value.delete(ee),N(),!0}catch(xe){throw ge&&ue!==-1&&a.value.splice(ue,0,ge),o.value=xe instanceof Error?xe.message:"Failed to delete media",new Error(o.value)}finally{t.value=!1}}async function T(ee,ue){t.value=!0,o.value=null;try{const xe=await y()(f(`/media/${ee}`),{method:"PATCH",body:ue,data:ue});if(xe!=null&&xe.data){const ne=a.value.findIndex(ke=>ke.uuid===ee);return ne!==-1&&(a.value[ne]={...a.value[ne],...xe.data}),N(),xe.data}return null}catch(ge){throw o.value=ge instanceof Error?ge.message:"Failed to update media",new Error(o.value)}finally{t.value=!1}}async function I(){t.value=!0,o.value=null;try{const ue=await y()(f("/media/collections"));return n.value=(ue==null?void 0:ue.data)||[],n.value}catch(ee){throw o.value=ee instanceof Error?ee.message:"Failed to fetch collections",n.value=[],new Error(o.value)}finally{t.value=!1}}async function O(ee,ue,ge="images",xe){d.value=!0,u.value=null;try{const ne=new URLSearchParams;ne.append("collection",ge),xe&&ne.append("search",xe);const he=await y()(f(`/media/model/${ee}/${ue}?${ne}`));return he!=null&&he.data?(l.value=he.data,he.data):[]}catch(ne){throw u.value=ne instanceof Error?ne.message:"Failed to fetch model media",l.value=[],new Error(u.value)}finally{d.value=!1}}async function $(ee,ue,ge,xe="images"){d.value=!0,u.value=null;const ne=[...l.value];try{const he=await y()(f(`/media/model/${ee}/${ue}/attach`),{method:"POST",body:{media_uuids:ge,collection:xe}});return await O(ee,ue,xe),(he==null?void 0:he.data)||[]}catch(ke){throw l.value=ne,u.value=ke instanceof Error?ke.message:"Failed to attach media",new Error(u.value)}finally{d.value=!1}}async function j(ee,ue,ge,xe="images"){d.value=!0,u.value=null;const ne=[...l.value];l.value=l.value.filter(ke=>ke.uuid!==ge);try{return await y()(f(`/media/model/${ee}/${ue}/detach`),{method:"POST",body:{media_uuid:ge,collection:xe}}),!0}catch(ke){throw l.value=ne,u.value=ke instanceof Error?ke.message:"Failed to detach media",new Error(u.value)}finally{d.value=!1}}async function P(ee,ue,ge,xe="images"){d.value=!0,u.value=null;const ne=[...l.value],ke=new Map(l.value.map(he=>[he.uuid,he]));l.value=ge.map(he=>ke.get(he)).filter(he=>he!==void 0);try{return await y()(f(`/media/model/${ee}/${ue}/reorder`),{method:"POST",body:{media_uuids:ge,collection:xe}}),!0}catch(he){throw l.value=ne,u.value=he instanceof Error?he.message:"Failed to reorder media",new Error(u.value)}finally{d.value=!1}}async function _(ee,ue,ge={}){const xe=y(),ne=Et.apiBaseUrl||"/api/v1",ke={image_data:ue.imageData,filters:ue.metadata.filters,crop_data:ue.metadata.cropRect,save_as_new:!0,as_variant:ge.asVariant===!0};return ge.name!==void 0&&(ke.name=ge.name),(await xe(`${ne}/editor/${ee}/save`,{method:"POST",body:ke})).media}function L(ee,ue,ge){c.value=ge!==void 0?{type:ee,uuid:ue,collection:ge}:{type:ee,uuid:ue},w.value[`${ee}-${ue}`]={timestamp:Date.now()}}function G(){c.value={type:null,uuid:null},l.value=[],u.value=null}async function X(){if(!c.value.type||!c.value.uuid)return;const ee=await O(c.value.type,c.value.uuid,c.value.collection||"images");l.value=ee||[]}function ce(){a.value.forEach(ee=>h.value.add(ee.uuid))}function Te(){h.value.clear()}function Re(ee){h.value.has(ee)?h.value.delete(ee):h.value.add(ee)}function ie(ee){return h.value.has(ee)}function B(){return Array.from(m.value.values()).some(ee=>ee.status==="uploading")}function z(ee){return m.value.get(ee)||p.value.get(ee)}function de(){return[...Array.from(m.value.values()),...Array.from(p.value.values())]}async function oe(){const ee=Array.from(h.value);let ue=0;for(const ge of ee)try{await x(ge),ue++}catch{}return Te(),ue}function K(ee,ue){var ge;return ue&&((ge=ee.conversion_urls)!=null&&ge[ue])?ee.conversion_urls[ue]||"":ee.original_url||ee.url||""}return{items:a,collections:n,loading:t,error:o,currentPage:i,totalPages:r,itemsPerPage:s,isAdmin:S,modelContext:c,modelMedia:l,isLoadingModelMedia:d,modelMediaError:u,selectedItems:h,uploadProgress:m,uploadQueue:p,cachedResponses:w,fetchMedia:C,uploadFile:U,deleteMedia:x,updateMedia:T,clearCache:N,fetchCollections:I,fetchModelMedia:O,attachMedia:$,detachMedia:j,reorderMedia:P,saveEditedImage:_,setModelContext:L,clearModelContext:G,refreshModelMedia:X,selectAllItems:ce,clearSelection:Te,toggleSelection:Re,isSelected:ie,deleteSelectedItems:oe,hasActiveUploads:B,getUploadProgress:z,getAllUploadProgress:de,getMediaUrl:K}}),js=()=>((Et.apiScope!=="admin"||Et.isAdmin!==!0)&&Fn({...Et,apiScope:"admin",isAdmin:!0}),kt());function Ed(a,n){try{let t=at.getFilter(a);if(t||(at.registerCorePixiFilters(),t=at.getFilter(a)),!t){try{const r=at.getAllFilters()}catch{}return null}const o={...t.defaultParams,...n};return t.createFilter(o)}catch{return null}}const Vd=e.defineComponent({__name:"ImageEditor",props:{initialImage:{},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(){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.getState(),p=m.crop,h=m.activeFilters,g=m.filterValues,w=r._renderer.sprite,E={width:Math.round((w==null?void 0:w.width)??0),height:Math.round((w==null?void 0:w.height)??0)},M={imageData:u,dimensions:E,metadata:{hasCrop:(p==null?void 0:p.rect)!=null,cropRect:(p==null?void 0:p.rect)??null,filters:h?Array.from(h):[],filterValues:g??{},aspectRatio:(p==null?void 0:p.aspect)??"free",dimensions:E}};o("save",M)}function l(){o("cancel")}function d(){if(!i.value||r)return;window.PIXI=He,at.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 at.VanillaImageEditor(i.value,u),r.setFilterRegistry({getAllFilters:at.getAllFilters,getFilter:at.getFilter,getFiltersByCategory:at.getFiltersByCategory}),r.save=function(){c()},r.on("cancel",l),t.initialImage&&r.loadImage(t.initialImage)}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)}),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))}}),Ne=(a,n)=>{const t=a.__vccOpts||a;for(const[o,i]of n)t[o]=i;return t},Zs=Ne(Vd,[["__scopeId","data-v-dd5088f5"]]),Sd={class:"editor-modal-panel"},Cd={class:"editor-fill"},Nd=e.defineComponent({__name:"ImageEditorModal",props:{modelValue:{type:Boolean,default:!1},initialImage:{},acceptedFormats:{default:"image/jpeg,image/png,image/webp,image/gif"},maxFileSize:{default:10},onSave:{},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(null),c=e.ref(!1),l=e.ref(null),d=S=>new Promise((y,f)=>{const k=new FileReader;k.onload=R=>{var v;const N=(v=R.target)==null?void 0:v.result;typeof N=="string"?y(N):f(new Error("Failed to read file"))},k.onerror=()=>f(new Error("Failed to read file")),k.readAsDataURL(S)}),u=S=>{o("error",S)},m=async()=>{if(t.initialImage instanceof File)try{const S=await d(t.initialImage);s.value=S}catch(S){u(S)}else typeof t.initialImage=="string"&&(s.value=t.initialImage)},p=()=>{e.nextTick(()=>{if(i.value){const S=i.value.querySelector("button:not([disabled]), [href], input:not([disabled])");S&&S.focus()}})};e.watch(()=>t.modelValue,S=>{r.value=S,S&&(l.value=document.activeElement,t.initialImage&&m(),p())},{immediate:!0}),e.watch(()=>t.initialImage,S=>{S&&r.value&&m()});const h=async S=>{try{c.value=!0,t.onSave&&await t.onSave(S),o("save",S)}catch(y){u(y)}finally{c.value=!1}},g=()=>{o("cancel"),E()},w=()=>{c.value||E()},E=()=>{r.value=!1,o("update:modelValue",!1),l.value&&l.value instanceof HTMLElement&&(l.value.focus(),l.value=null),setTimeout(()=>{s.value=null},300)},M=S=>{if(S.key==="Escape"&&r.value&&!c.value){E();return}if(S.key==="Tab"&&r.value&&i.value){const y=i.value.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])');if(y.length===0)return;const f=y[0],k=y[y.length-1];S.shiftKey&&document.activeElement===f?(S.preventDefault(),k.focus()):!S.shiftKey&&document.activeElement===k&&(S.preventDefault(),f.focus())}};return e.onMounted(()=>{document.addEventListener("keydown",M)}),e.onBeforeUnmount(()=>{document.removeEventListener("keydown",M)}),t.modelValue&&t.initialImage&&m(),(S,y)=>(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(w,["escape"])},[e.createElementVNode("div",{class:"editor-modal-backdrop",onClick:w}),e.createElementVNode("div",Sd,[e.createElementVNode("div",Cd,[e.createVNode(Zs,{"initial-image":s.value??S.initialImage,theme:S.theme,"crop-shape":S.cropShape,preset:S.preset,"primary-color":S.primaryColor,"secondary-color":S.secondaryColor,"save-button-color":S.saveButtonColor,"download-button-color":S.downloadButtonColor,onSave:h,onCancel:g,onError:u},null,8,["initial-image","theme","crop-shape","preset","primary-color","secondary-color","save-button-color","download-button-color"])])])],544)):e.createCommentVNode("",!0)]))}}),Xs=Ne(Nd,[["__scopeId","data-v-e19beb15"]]),_d={class:"media-workspace"},Td={class:"media-workspace-toolbar"},Md={class:"media-workspace-label"},Bd=["value"],Fd={class:"media-workspace-grid"},Id=["onClick"],Rd=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=kt(),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(p=>p.id===r.value));let l=null;function d(){l&&(l(),l=null),t.apiScope&&(l=Ws({apiScope:t.apiScope,isAdmin:t.apiScope==="admin"}))}async function u(){var h;const p={};(h=c.value)!=null&&h.collection&&(p.collection=c.value.collection),await i.fetchMedia(1,p),o("update:media",[...i.items])}return e.watch(()=>t.initialScopeId,p=>{p&&p!==r.value&&(r.value=p)}),e.watch(()=>t.subScopes,p=>{if(p.length===0){r.value="";return}p.some(h=>h.id===r.value)||(r.value=p[0].id)},{deep:!0}),e.watch(()=>t.apiScope,()=>{d(),u()}),e.watch(r,p=>{p&&(o("scope-change",p),u())}),e.onMounted(()=>{d(),u()}),e.onUnmounted(()=>{l&&(l(),l=null)}),(p,h)=>(e.openBlock(),e.createElementBlock("div",_d,[e.createElementVNode("div",Td,[e.createElementVNode("label",Md,[h[2]||(h[2]=e.createElementVNode("span",{class:"media-workspace-label-text"},"Scope",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[0]||(h[0]=g=>r.value=g),"data-testid":"scope-select",class:"media-workspace-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,g=>(e.openBlock(),e.createElementBlock("option",{key:g.id,value:g.id},e.toDisplayString(g.label),9,Bd))),128))],512),[[e.vModelSelect,r.value]])]),e.createElementVNode("button",{type:"button",class:"media-workspace-upload","data-testid":"upload-button",onClick:h[1]||(h[1]=g=>o("upload"))}," Upload ")]),e.createElementVNode("div",Fd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i).items,g=>(e.openBlock(),e.createElementBlock("button",{key:g.uuid,type:"button",class:"media-workspace-item","data-testid":"media-item",onClick:w=>o("preview",g)},e.toDisplayString(g.file_name),9,Id))),128))])]))}}),$d=Ne(Rd,[["__scopeId","data-v-895f26fe"]]),Dd={class:"managed-media-gallery"},Ud={class:"gallery-grid"},Od=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",Dd,[e.createElementVNode("div",Ud,[e.renderSlot(n.$slots,"default",{},void 0,!0)])]))}}),Ld=Ne(Od,[["__scopeId","data-v-a60fdcd7"]]),Ad="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>",Ai="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>",zd="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>",zi="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>",Pd="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>",Wd="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>",eo="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>",jd="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>",Hs="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>",Gs="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>",jr="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>",Zd="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>",Xd="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>",Zr="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>",In="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>",Xr="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>",Hd="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>",an="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>",Gd="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>",Gn="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>",Jd="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>",Yd="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>",Hr="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>",Js="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>",po="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>",Kd="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>",qd="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>",Qd="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>",to="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>",Gr="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>",ti="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>",tu="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>",ni="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>",nu="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>",ou="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>",au="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>",iu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-32 272a16 16 0 01-32 0V192a16 16 0 0132 0zm96 0a16 16 0 01-32 0V192a16 16 0 0132 0z'/></svg>",Ys="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>",Ks="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>",ru="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>",su="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>",lu="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>",cu="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>",qs="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>",du="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>",uu="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>",Qs="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>",mu="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>",pu="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>",Un="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>",fu="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>",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' d='M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Jr="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>",Pi="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>",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='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>",oi="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>",on="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>",Jn="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>",Yr="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>",gu="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>",el="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>",yu="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>",tl="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>",wu="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>",bu="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>",ku="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>",xu="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>",Eu="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-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>",Vu="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>",Su="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>",Do="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 Kr=()=>{};function Cu(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 Nu(a,n={}){let t,o,i=Kr;const r=l=>{clearTimeout(l),i(),i=Kr};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,p)=>{i=n.rejectOnCancel?p: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 _u(a,n=200,t={}){return Cu(Nu(n,t),a)}const Yn=new Map;function Tu(a){const n=e.getCurrentScope();function t(c){var l;const d=Yn.get(a)||new Set;d.add(c),Yn.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=Yn.get(a);l&&(l.delete(c),l.size||r())}function r(){Yn.delete(a)}function s(c,l){var d;(d=Yn.get(a))==null||d.forEach(u=>u(c,l))}return{on:t,once:o,off:i,emit:s,reset:r}}function Mu(){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 Bu(a){const n=e.ref(new Set),t=e.ref(null),o=e.ref(-1),i=Tu("media-selection"),r=Mu(),s=e.computed(()=>a.value.filter(k=>n.value.has(k.uuid))),c=e.computed(()=>n.value.size);e.watch(n,k=>{i.emit({type:"selection:changed",count:k.size,selectedIds:Array.from(k)})},{deep:!0});const l=e.computed(()=>a.value.length>0&&a.value.every(k=>n.value.has(k.uuid))),d=e.computed(()=>a.value.some(k=>n.value.has(k.uuid)));function u(k){return n.value.has(k)}function m(k){n.value.has(k)?(n.value.delete(k),t.value===k&&(t.value=null,o.value=-1)):(n.value.add(k),t.value=k,o.value=a.value.findIndex(R=>R.uuid===k),n.value.size===1&&r.selection())}function p(k){n.value.add(k),t.value=k,o.value=a.value.findIndex(R=>R.uuid===k)}function h(k){n.value.delete(k),t.value===k&&(t.value=null,o.value=-1)}function g(){a.value.forEach(k=>n.value.add(k.uuid))}function w(){n.value.clear(),t.value=null,o.value=-1}function E(){l.value?w():g()}function M(k,R){const N=a.value.findIndex(v=>v.uuid===k);if(N!==-1)if(R!=null&&R.shiftKey&&o.value!==-1){const v=Math.min(o.value,N),C=Math.max(o.value,N);for(let U=v;U<=C;U++)n.value.add(a.value[U].uuid)}else m(k)}function S(){if(a.value.length===0)return;let k=o.value+1;k>=a.value.length&&(k=0),w(),p(a.value[k].uuid)}function y(){if(a.value.length===0)return;let k=o.value-1;k<0&&(k=a.value.length-1),w(),p(a.value[k].uuid)}function f(k){switch(k.key){case"ArrowDown":k.preventDefault(),S();break;case"ArrowUp":k.preventDefault(),y();break;case"a":(k.ctrlKey||k.metaKey)&&(k.preventDefault(),g());break;case"Escape":k.preventDefault(),w();break;case" ":t.value&&(k.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:p,deselect:h,selectAll:g,clear:w,toggleAll:E,rangeSelect:M,selectNext:S,selectPrevious:y,handleKeydown:f,selectionBus:i}}const Fu={class:"flex items-center justify-between w-full px-4"},Iu={class:"p-4"},Ru={key:0,class:"mb-4 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg"},$u={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},Du=["value"],Uu={class:"flex gap-2 mt-4"},Ou={class:"flex justify-end mb-4"},Lu={key:1,class:"flex justify-center items-center h-64"},Au={key:2,class:"flex flex-col items-center justify-center h-64 text-center"},zu={class:"text-sm text-theme-secondary"},Pu={key:0},Wu={class:"mb-4"},ju={class:"mb-4"},Zu={class:"flex gap-2"},Xu={class:"flex items-center justify-between px-4 py-2"},Hu={class:"text-sm text-theme-secondary"},Gu={key:0},Ju={key:0},Yu={key:1},Ku={class:"flex gap-2"},qu=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),p=e.ref({}),h=e.ref(["images","documents","videos"]),g=e.ref(1),w=e.ref(!0),E=e.ref(!1),M=js(),S=Bu(l);function y(B){var ge;const z=B.conversion_urls||{},de=B.proxy_url||B.original_url||B.url||"",oe=z.thumb||z.preview||B.preview_url||B.thumbnail_url||de,K=B.custom_properties||{},ee=K.width,ue=K.height;return{...B,uuid:B.uuid,name:B.name||B.file_name,file_name:B.file_name,filename:B.file_name,mime_type:B.mime_type,size:B.size,collection_name:B.collection_name||"images",disk:B.disk,original_url:de,url:de,thumbnail_url:oe,conversions:B.conversions||{},conversion_urls:z,generated_conversions:B.generated_conversions||{},custom_properties:K,caption:B.caption||null,alt_text:B.alt_text||null,created_at:B.created_at,updated_at:B.updated_at,is_image:((ge=B.mime_type)==null?void 0:ge.startsWith("image/"))||!1,...typeof ee=="number"?{width:ee}:{},...typeof ue=="number"?{height:ue}:{},...B.formatted_size!==void 0?{formatted_size:B.formatted_size}:{}}}e.watch(()=>t.selectedItems,B=>{u.value=new Set(B),S.clear(),B.forEach(z=>S.select(z))});const f=e.computed(()=>{var z;let B=l.value;return(z=p.value.types)!=null&&z.length&&(B=B.filter(de=>{var K,ee;const oe=(K=de.mime_type)==null?void 0:K.split("/")[0];return(ee=p.value.types)==null?void 0:ee.includes(oe)})),(p.value.sizeMin!==void 0||p.value.sizeMax!==void 0)&&(B=B.filter(de=>{const oe=de.size/1048576;return!(p.value.sizeMin!==void 0&&oe<p.value.sizeMin||p.value.sizeMax!==void 0&&oe>p.value.sizeMax)})),B}),k=e.computed(()=>{var z;let B=0;return p.value.search&&B++,p.value.collection&&B++,(p.value.dateFrom||p.value.dateTo)&&B++,(z=p.value.types)!=null&&z.length&&(B+=p.value.types.length),(p.value.sizeMin!==void 0||p.value.sizeMax!==void 0)&&B++,B}),R=e.computed(()=>{const B=S.selectedCount.value;return B===0?"Select Media":`Select ${t.selectionMode==="multiple"?`${B} ${B===1?"Item":"Items"}`:"Item"}`}),N=e.computed(()=>{const B=S.selectedCount.value;return!!(B===0||t.selectionMode==="single"&&B>1||t.maxSelection&&B>t.maxSelection)}),v=e.computed(()=>{switch(i.value){case"recent":return"Recent Uploads";case"model":return"Model Media";case"library":return"Media Library";default:return"Media Browser"}});async function C(B=!0){B?(c.value=!0,l.value=[],g.value=1,w.value=!0):E.value=!0;try{const z={collection:p.value.collection||t.collection,per_page:24};switch((s.value||p.value.search)&&(z.search=s.value||p.value.search||""),p.value.dateFrom&&(z.from_date=p.value.dateFrom),p.value.dateTo&&(z.to_date=p.value.dateTo),i.value){case"recent":await M.fetchMedia(g.value,z),B?l.value=M.items.map(de=>y(de)):l.value=[...l.value,...M.items.map(de=>y(de))],w.value=M.currentPage<M.totalPages;break;case"model":if(t.modelType&&t.modelId){const de=await M.fetchModelMedia(t.modelType,t.modelId,z.collection,z.search);l.value=de?de.map(oe=>y(oe)):[],w.value=!1}break;case"library":await M.fetchMedia(g.value,z),B?l.value=M.items.map(de=>y(de)):l.value=[...l.value,...M.items.map(de=>y(de))],w.value=M.currentPage<M.totalPages;break}}catch{}finally{c.value=!1,E.value=!1}}async function U(B){if(!w.value||E.value){B!=null&&B.target&&B.target.complete();return}g.value++,await C(!1),B!=null&&B.target&&(B.target.complete(),w.value||(B.target.disabled=!0))}function x(B){return B==="recent"||B==="model"||B==="library"}function T(B){i.value=B,C()}function I(B){typeof B=="string"&&x(B)&&T(B)}async function O(B){t.selectionMode==="single"?(S.clear(),S.select(B.uuid)):(S.toggle(B.uuid),t.maxSelection&&S.selectedCount.value>t.maxSelection&&(S.deselect(B.uuid),await(await F.toastController.create({message:`Maximum ${t.maxSelection} items can be selected`,duration:2e3,color:"warning"})).present()))}function $(){o("confirm",S.selectedItems.value)}function j(){o("close")}function P(B){}const _=e.ref(null),L=e.ref(!1);function G(B){_.value=B,L.value=!0}function X(B){const z=l.value.findIndex(oe=>oe.uuid===B.uuid);z!==-1&&(l.value[z]=B);const de={};B.alt_text!==void 0&&(de.alt_text=B.alt_text),B.caption!==void 0&&(de.caption=B.caption),B.custom_properties!==void 0&&(de.custom_properties=B.custom_properties),M.updateMedia(B.uuid,de)}function ce(){C()}function Te(){p.value={},s.value="",C()}const Re=_u(()=>{C(!0)},300);e.watch(s,()=>{t.isOpen&&Re()});async function ie(B){try{await(await F.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 M.deleteMedia(B),await C()}}]})).present()}catch{}}return e.watch(()=>t.isOpen,B=>{B&&C()}),e.onMounted(()=>{t.selectedItems.length>0&&t.selectedItems.forEach(B=>S.select(B))}),(B,z)=>{const de=e.resolveComponent("AdminMediaGrid"),oe=e.resolveComponent("AdminMediaListItem");return e.openBlock(),e.createBlock(e.unref(F.IonModal),{"is-open":B.isOpen,onDidDismiss:j,"backdrop-dismiss":!1,class:"media-browser-modal"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(F.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{onClick:j},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(F.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value),1)]),_:1})]),_:1}),e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",Fu,[e.createVNode(e.unref(F.IonSegment),{value:i.value,onIonChange:z[0]||(z[0]=K=>I(K.detail.value)),class:"max-w-xs"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonSegmentButton),{value:"recent"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[15]||(z[15]=[e.createTextVNode("Recent",-1)])]),_:1})]),_:1}),t.modelType&&t.modelId?(e.openBlock(),e.createBlock(e.unref(F.IonSegmentButton),{key:0,value:"model"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[16]||(z[16]=[e.createTextVNode("Model",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonSegmentButton),{value:"library"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[17]||(z[17]=[e.createTextVNode("Library",-1)])]),_:1})]),_:1})]),_:1},8,["value"]),e.createVNode(e.unref(F.IonButton),{fill:"clear",size:"small",onClick:z[1]||(z[1]=K=>m.value=!m.value),class:"relative"},{"icon-only":e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"filter-outline"})]),default:e.withCtx(()=>[k.value>0?(e.openBlock(),e.createBlock(e.unref(F.IonBadge),{key:0,color:"primary",class:"absolute -top-1 -right-1 min-w-[20px] h-5 rounded-full flex items-center justify-center text-xs"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.value),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})])]),_:1})]),_:1}),e.createVNode(e.unref(F.IonContent),null,{default:e.withCtx(()=>[e.createElementVNode("div",Iu,[m.value?(e.openBlock(),e.createElementBlock("div",Ru,[e.createElementVNode("div",$u,[e.createElementVNode("div",null,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[18]||(z[18]=[e.createTextVNode("Collection",-1)])]),_:1}),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":z[2]||(z[2]=K=>p.value.collection=K),class:"w-full p-2 border rounded"},[z[19]||(z[19]=e.createElementVNode("option",{value:""},"All Collections",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,K=>(e.openBlock(),e.createElementBlock("option",{key:K,value:K},e.toDisplayString(K),9,Du))),128))],512),[[e.vModelSelect,p.value.collection]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[20]||(z[20]=[e.createTextVNode("From Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[3]||(z[3]=K=>p.value.dateFrom=K),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,p.value.dateFrom]])]),e.createElementVNode("div",null,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[21]||(z[21]=[e.createTextVNode("To Date",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[4]||(z[4]=K=>p.value.dateTo=K),type:"date",class:"w-full p-2 border rounded"},null,512),[[e.vModelText,p.value.dateTo]])])]),e.createElementVNode("div",Uu,[e.createVNode(e.unref(F.IonButton),{size:"small",onClick:ce},{default:e.withCtx(()=>[...z[22]||(z[22]=[e.createTextVNode("Apply",-1)])]),_:1}),e.createVNode(e.unref(F.IonButton),{size:"small",fill:"clear",onClick:Te},{default:e.withCtx(()=>[...z[23]||(z[23]=[e.createTextVNode("Clear",-1)])]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonSearchbar),{modelValue:s.value,"onUpdate:modelValue":z[5]||(z[5]=K=>s.value=K),placeholder:"Search media...",debounce:300,class:"mb-4"},null,8,["modelValue"]),e.createElementVNode("div",Ou,[e.createVNode(e.unref(F.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{fill:r.value==="grid"?"solid":"clear",size:"small",onClick:z[6]||(z[6]=K=>r.value="grid")},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"grid-outline"})]),_:1},8,["fill"]),e.createVNode(e.unref(F.IonButton),{fill:r.value==="list"?"solid":"clear",size:"small",onClick:z[7]||(z[7]=K=>r.value="list")},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"list-outline"})]),_:1},8,["fill"])]),_:1})]),c.value?(e.openBlock(),e.createElementBlock("div",Lu,[e.createVNode(e.unref(F.IonSpinner),{name:"crescent"})])):f.value.length===0?(e.openBlock(),e.createElementBlock("div",Au,[e.createVNode(e.unref(F.IonIcon),{name:"images-outline",class:"text-6xl text-theme-secondary mb-4"}),z[24]||(z[24]=e.createElementVNode("h3",{class:"text-lg font-medium text-theme mb-2"}," No Media Found ",-1)),e.createElementVNode("p",zu,e.toDisplayString(s.value?"Try adjusting your search":"No media items available"),1)])):r.value==="grid"?(e.openBlock(),e.createBlock(de,{key:3,"media-items":f.value,"selected-items":e.unref(S).selectedItems.value,"is-loading":!1,"selection-mode":!0,columns:{mobile:2,sm:3,md:4,lg:5,xl:6},onToggleSelect:O,onPreview:P,onEdit:G,onDelete:ie},null,8,["media-items","selected-items"])):(e.openBlock(),e.createBlock(e.unref(F.IonList),{key:4,lines:"none",class:"rounded-lg overflow-hidden"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(K,ee)=>(e.openBlock(),e.createBlock(oe,{key:K.uuid,media:K,selected:e.unref(S).isSelected(K.uuid),"selection-mode":!0,index:ee,onToggleSelect:O,onPreview:P,onEdit:G,onDelete:ie},null,8,["media","selected","index"]))),128))]),_:1})),!c.value&&f.value.length>0&&i.value!=="model"?(e.openBlock(),e.createBlock(e.unref(F.IonInfiniteScroll),{key:5,threshold:"100px",onIonInfinite:z[8]||(z[8]=K=>U(K))},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonInfiniteScrollContent),{"loading-spinner":"crescent","loading-text":"Loading more media..."})]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(e.unref(F.IonModal),{"is-open":L.value,onDidDismiss:z[14]||(z[14]=K=>L.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{end:e.withCtx(()=>[e.createVNode(e.unref(F.IonButtons),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{onClick:z[9]||(z[9]=K=>L.value=!1)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{name:"close-outline"})]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(F.IonTitle),null,{default:e.withCtx(()=>[...z[25]||(z[25]=[e.createTextVNode("Edit Media Info",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(F.IonContent),{class:"p-4"},{default:e.withCtx(()=>[_.value?(e.openBlock(),e.createElementBlock("div",Pu,[e.createElementVNode("div",Wu,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[26]||(z[26]=[e.createTextVNode("Caption",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[10]||(z[10]=K=>_.value.caption=K),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter caption..."},null,512),[[e.vModelText,_.value.caption]])]),e.createElementVNode("div",ju,[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...z[27]||(z[27]=[e.createTextVNode("Alt Text",-1)])]),_:1}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[11]||(z[11]=K=>_.value.alt_text=K),type:"text",class:"w-full p-2 border rounded mt-1",placeholder:"Enter alt text..."},null,512),[[e.vModelText,_.value.alt_text]])]),e.createElementVNode("div",Zu,[e.createVNode(e.unref(F.IonButton),{onClick:z[12]||(z[12]=K=>X(_.value))},{default:e.withCtx(()=>[...z[28]||(z[28]=[e.createTextVNode("Save",-1)])]),_:1}),e.createVNode(e.unref(F.IonButton),{fill:"clear",onClick:z[13]||(z[13]=K=>L.value=!1)},{default:e.withCtx(()=>[...z[29]||(z[29]=[e.createTextVNode("Cancel",-1)])]),_:1})])])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["is-open"]),e.createVNode(e.unref(F.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createElementVNode("div",Xu,[e.createElementVNode("div",Hu,[e.unref(S).selectedCount.value>0?(e.openBlock(),e.createElementBlock("span",Gu,[e.createTextVNode(e.toDisplayString(e.unref(S).selectedCount.value)+" selected ",1),t.maxSelection?(e.openBlock(),e.createElementBlock("span",Ju," / "+e.toDisplayString(t.maxSelection)+" max ",1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("span",Yu," Select "+e.toDisplayString(t.selectionMode==="multiple"?"items":"an item"),1))]),e.createElementVNode("div",Ku,[e.createVNode(e.unref(F.IonButton),{fill:"clear",onClick:j},{default:e.withCtx(()=>[...z[30]||(z[30]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(F.IonButton),{disabled:N.value,onClick:$},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(R.value),1)]),_:1},8,["disabled"])])])]),_:1})]),_:1})]),_:1},8,["is-open"])}}}),Qu=Ne(qu,[["__scopeId","data-v-9a8c0954"]]),em={key:1,class:"flex flex-col items-center justify-center py-16"},tm=["draggable","onDragstart","onDragover","onDrop"],nm={key:0,class:"absolute top-2 left-2 z-20"},om=["checked","onChange"],am={key:2,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-move"},im=["data-media-id"],rm={key:0,class:"w-full h-full flex items-center justify-center"},sm=["src","alt","onError","onLoad"],lm={key:2,class:"w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-700"},cm={class:"text-center"},dm={class:"text-4xl text-gray-400 mb-2"},um={class:"text-sm font-medium text-gray-500"},mm={class:"absolute inset-0 bg-black/70 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2"},pm=["onClick"],fm=["onClick"],hm=["onClick"],vm={class:"p-3"},gm={class:"text-sm font-medium truncate mb-1"},ym={class:"text-xs text-gray-600 dark:text-gray-400"},wm={key:0},bm={key:0,class:"text-xs text-gray-500 dark:text-gray-500 mt-1 truncate"},km=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=N=>t.selectedItems.some(v=>v.uuid===N.uuid),d=e.computed(()=>{const N=t.columns,v=["grid","gap-4"];switch(N.mobile){case 1:v.push("grid-cols-1");break;case 2:v.push("grid-cols-2");break;case 3:v.push("grid-cols-3");break;case 4:v.push("grid-cols-4");break;default:v.push("grid-cols-2");break}switch(N.sm){case 1:v.push("sm:grid-cols-1");break;case 2:v.push("sm:grid-cols-2");break;case 3:v.push("sm:grid-cols-3");break;case 4:v.push("sm:grid-cols-4");break;case 5:v.push("sm:grid-cols-5");break;default:v.push("sm:grid-cols-3");break}switch(N.md){case 2:v.push("md:grid-cols-2");break;case 3:v.push("md:grid-cols-3");break;case 4:v.push("md:grid-cols-4");break;case 5:v.push("md:grid-cols-5");break;case 6:v.push("md:grid-cols-6");break;default:v.push("md:grid-cols-4");break}switch(N.lg){case 3:v.push("lg:grid-cols-3");break;case 4:v.push("lg:grid-cols-4");break;case 5:v.push("lg:grid-cols-5");break;case 6:v.push("lg:grid-cols-6");break;case 7:v.push("lg:grid-cols-7");break;default:v.push("lg:grid-cols-5");break}switch(N.xl){case 4:v.push("xl:grid-cols-4");break;case 5:v.push("xl:grid-cols-5");break;case 6:v.push("xl:grid-cols-6");break;case 7:v.push("xl:grid-cols-7");break;case 8:v.push("xl:grid-cols-8");break;default:v.push("xl:grid-cols-6");break}return v.join(" ")});function u(N,v,C){t.reorderable&&(i.value=v,N.dataTransfer&&(N.dataTransfer.effectAllowed="move",N.dataTransfer.setData("text/html","")))}function m(N,v){t.reorderable&&(N.preventDefault(),r.value=v)}function p(){r.value=null}function h(N,v){if(!t.reorderable||!i.value)return;N.preventDefault();const C=[...t.mediaItems],U=C.findIndex(x=>{var T;return x.uuid===((T=i.value)==null?void 0:T.uuid)});if(U!==-1&&U!==v&&i.value){const[x]=C.splice(U,1);C.splice(v,0,x),o("reorder",C)}i.value=null,r.value=null}function g(N){return N<1024?N+" B":N<1024*1024?(N/1024).toFixed(1)+" KB":(N/(1024*1024)).toFixed(1)+" MB"}function w(N){var C;return N.thumbnail_url||((C=N.conversion_urls)==null?void 0:C.thumb)||N.original_url||N.url||""}function E(N){var U,x,T;const v=((U=N.mime_type)==null?void 0:U.startsWith("image/"))||!1,C=!!(N.thumbnail_url||(x=N.conversion_urls)!=null&&x.thumb||(T=N.conversion_urls)!=null&&T.preview||N.original_url||N.url);return v&&C}function M(N){var v;return((v=N.split(".").pop())==null?void 0:v.toUpperCase())||""}function S(N){var C;const v=((C=N.mime_type)==null?void 0:C.toLowerCase())||"";return v.startsWith("image/")?"image":v.startsWith("video/")?"videocam":v.startsWith("audio/")?"musical-notes":v.includes("pdf")?"document-text":v.includes("zip")||v.includes("rar")?"archive":v.includes("sheet")||v.includes("excel")?"grid":v.includes("document")||v.includes("word")?"document-text":"document"}e.onMounted(()=>{typeof window<"u"&&"IntersectionObserver"in window&&(c.value=new IntersectionObserver(N=>{N.forEach(v=>{var C;if(v.isIntersecting){const U=v.target.getAttribute("data-media-id");U&&(s.value.add(U),(C=c.value)==null||C.unobserve(v.target))}})},{rootMargin:"50px"}))}),e.onUnmounted(()=>{c.value&&c.value.disconnect()});function y(N){return!0}function f(){c.value&&e.nextTick(()=>{document.querySelectorAll("[data-media-id]").forEach(v=>{var U;const C=v.getAttribute("data-media-id");C&&!s.value.has(C)&&((U=c.value)==null||U.observe(v))})})}e.watch(()=>t.mediaItems,()=>{s.value.clear(),f()},{immediate:!0,deep:!0});function k(N,v){const C=N.target;delete C.dataset.fallbackIndex}function R(N,v){const C=N.target,U=C.closest("[data-media-id]"),x=[v.original_url,v.url,v.thumbnail_url,"preview_url"in v?v.preview_url:void 0].filter(T=>T&&T.trim()!==""&&T!==C.src);if(x.length>0&&C.dataset.fallbackIndex){const T=parseInt(C.dataset.fallbackIndex);if(T<x.length){C.dataset.fallbackIndex=(T+1).toString(),C.src=x[T]||"";return}}else if(x.length>0){C.dataset.fallbackIndex="1",C.src=x[0]||"";return}if(C.style.display="none",U&&!U.querySelector(".media-fallback-icon")){const I=document.createElement("div");I.className="media-fallback-icon w-full h-full flex items-center justify-center bg-gray-100 dark:bg-gray-800",I.innerHTML=`
2
2
  <div class="text-center">
3
3
  <div class="text-4xl text-gray-400 mb-2">${S(v)}</div>
4
4
  <p class="text-sm font-medium text-gray-500">${M(v.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[Cs]=this[Cs]={accessors:{}}).accessors,i=this.prototype;function r(s){const c=Kn(s);o[c]||(yy(i,s),o[c]=!0)}return J.isArray(n)?n.forEach(r):r(n),this}};gt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);J.reduceDescriptors(gt.prototype,({value:a},n)=>{let t=n[0].toUpperCase()+n.slice(1);return{get:()=>a,set(o){this[t]=o}}});J.freezeMethods(gt);function mi(a,n){const t=this||_o,o=n||t,i=gt.from(o.headers);let r=o.data;return J.forEach(a,function(c){r=c.call(t,r,i.normalize(),n?n.status:void 0)}),i.normalize(),r}function Kl(a){return!!(a&&a.__CANCEL__)}function Wn(a,n,t){_e.call(this,a??"canceled",_e.ERR_CANCELED,n,t),this.name="CanceledError"}J.inherits(Wn,_e,{__CANCEL__:!0});function ql(a,n,t){const o=t.config.validateStatus;!t.status||!o||o(t.status)?a(t):n(new _e("Request failed with status code "+t.status,[_e.ERR_BAD_REQUEST,_e.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 by(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,p=0;for(;m!==i;)p+=t[m++],m=m%a;if(i=(i+1)%a,i===r&&(r=(r+1)%a),d-s<n)return;const h=u&&d-u;return h?Math.round(p*1e3/h):void 0}}function ky(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 pa=(a,n,t=3)=>{let o=0;const i=by(50,250);return ky(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)},Ns=(a,n)=>{const t=a!=null;return[o=>n[0]({lengthComputable:t,total:a,loaded:o}),n[1]]},_s=a=>(...n)=>J.asap(()=>a(...n)),xy=ct.hasStandardBrowserEnv?((a,n)=>t=>(t=new URL(t,ct.origin),a.protocol===t.protocol&&a.host===t.host&&(n||a.port===t.port)))(new URL(ct.origin),ct.navigator&&/(msie|trident)/i.test(ct.navigator.userAgent)):()=>!0,Ey=ct.hasStandardBrowserEnv?{write(a,n,t,o,i,r){const s=[a+"="+encodeURIComponent(n)];J.isNumber(t)&&s.push("expires="+new Date(t).toGMTString()),J.isString(o)&&s.push("path="+o),J.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 Vy(a){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(a)}function Sy(a,n){return n?a.replace(/\/?\/$/,"")+"/"+n.replace(/^\/+/,""):a}function Ql(a,n,t){let o=!Vy(n);return a&&(o||t==!1)?Sy(a,n):n}const Ts=a=>a instanceof gt?{...a}:a;function wn(a,n){n=n||{};const t={};function o(d,u,m,p){return J.isPlainObject(d)&&J.isPlainObject(u)?J.merge.call({caseless:p},d,u):J.isPlainObject(u)?J.merge({},u):J.isArray(u)?u.slice():u}function i(d,u,m,p){if(J.isUndefined(u)){if(!J.isUndefined(d))return o(void 0,d,m,p)}else return o(d,u,m,p)}function r(d,u){if(!J.isUndefined(u))return o(void 0,u)}function s(d,u){if(J.isUndefined(u)){if(!J.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(Ts(d),Ts(u),m,!0)};return J.forEach(Object.keys({...a,...n}),function(u){const m=l[u]||i,p=m(a[u],n[u],u);J.isUndefined(p)&&m!==c||(t[u]=p)}),t}const ec=a=>{const n=wn({},a);let{data:t,withXSRFToken:o,xsrfHeaderName:i,xsrfCookieName:r,headers:s,auth:c}=n;n.headers=s=gt.from(s),n.url=Gl(Ql(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(J.isFormData(t)){if(ct.hasStandardBrowserEnv||ct.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(ct.hasStandardBrowserEnv&&(o&&J.isFunction(o)&&(o=o(n)),o||o!==!1&&xy(n.url))){const d=i&&r&&Ey.read(r);d&&s.set(i,d)}return n},Cy=typeof XMLHttpRequest<"u",Ny=Cy&&function(a){return new Promise(function(t,o){const i=ec(a);let r=i.data;const s=gt.from(i.headers).normalize();let{responseType:c,onUploadProgress:l,onDownloadProgress:d}=i,u,m,p,h,g;function w(){h&&h(),g&&g(),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 M(){if(!E)return;const y=gt.from("getAllResponseHeaders"in E&&E.getAllResponseHeaders()),k={data:!c||c==="text"||c==="json"?E.responseText:E.response,status:E.status,statusText:E.statusText,headers:y,config:a,request:E};ql(function(N){t(N),w()},function(N){o(N),w()},k),E=null}"onloadend"in E?E.onloadend=M:E.onreadystatechange=function(){!E||E.readyState!==4||E.status===0&&!(E.responseURL&&E.responseURL.indexOf("file:")===0)||setTimeout(M)},E.onabort=function(){E&&(o(new _e("Request aborted",_e.ECONNABORTED,a,E)),E=null)},E.onerror=function(){o(new _e("Network Error",_e.ERR_NETWORK,a,E)),E=null},E.ontimeout=function(){let f=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const k=i.transitional||Jl;i.timeoutErrorMessage&&(f=i.timeoutErrorMessage),o(new _e(f,k.clarifyTimeoutError?_e.ETIMEDOUT:_e.ECONNABORTED,a,E)),E=null},r===void 0&&s.setContentType(null),"setRequestHeader"in E&&J.forEach(s.toJSON(),function(f,k){E.setRequestHeader(k,f)}),J.isUndefined(i.withCredentials)||(E.withCredentials=!!i.withCredentials),c&&c!=="json"&&(E.responseType=i.responseType),d&&([p,g]=pa(d,!0),E.addEventListener("progress",p)),l&&E.upload&&([m,h]=pa(l),E.upload.addEventListener("progress",m),E.upload.addEventListener("loadend",h)),(i.cancelToken||i.signal)&&(u=y=>{E&&(o(!y||y.type?new Wn(null,a,E):y),E.abort(),E=null)},i.cancelToken&&i.cancelToken.subscribe(u),i.signal&&(i.signal.aborted?u():i.signal.addEventListener("abort",u)));const S=wy(i.url);if(S&&ct.protocols.indexOf(S)===-1){o(new _e("Unsupported protocol "+S+":",_e.ERR_BAD_REQUEST,a));return}E.send(r||null)})},_y=(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 _e?u:new Wn(u instanceof Error?u.message:u))}};let s=n&&setTimeout(()=>{s=null,r(new _e(`timeout ${n} of ms exceeded`,_e.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=()=>J.asap(c),l}},Ty=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},My=async function*(a,n){for await(const t of By(a))yield*Ty(t,n)},By=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()}},Ms=(a,n,t,o)=>{const i=My(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 p=r+=m;t(p)}l.enqueue(new Uint8Array(u))}catch(d){throw c(d),d}},cancel(l){return c(l),i.return()}},{highWaterMark:2})},Ua=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",tc=Ua&&typeof ReadableStream=="function",Fy=Ua&&(typeof TextEncoder=="function"?(a=>n=>a.encode(n))(new TextEncoder):async a=>new Uint8Array(await new Response(a).arrayBuffer())),nc=(a,...n)=>{try{return!!a(...n)}catch{return!1}},Iy=tc&&nc(()=>{let a=!1;const n=new Request(ct.origin,{body:new ReadableStream,method:"POST",get duplex(){return a=!0,"half"}}).headers.has("Content-Type");return a&&!n}),Bs=64*1024,$i=tc&&nc(()=>J.isReadableStream(new Response("").body)),fa={stream:$i&&(a=>a.body)};Ua&&(a=>{["text","arrayBuffer","blob","formData","stream"].forEach(n=>{!fa[n]&&(fa[n]=J.isFunction(a[n])?t=>t[n]():(t,o)=>{throw new _e(`Response type '${n}' is not supported`,_e.ERR_NOT_SUPPORT,o)})})})(new Response);const Ry=async a=>{if(a==null)return 0;if(J.isBlob(a))return a.size;if(J.isSpecCompliantForm(a))return(await new Request(ct.origin,{method:"POST",body:a}).arrayBuffer()).byteLength;if(J.isArrayBufferView(a)||J.isArrayBuffer(a))return a.byteLength;if(J.isURLSearchParams(a)&&(a=a+""),J.isString(a))return(await Fy(a)).byteLength},$y=async(a,n)=>{const t=J.toFiniteNumber(a.getContentLength());return t??Ry(n)},Dy=Ua&&(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:p}=ec(a);d=d?(d+"").toLowerCase():"text";let h=_y([i,r&&r.toAbortSignal()],s),g;const w=h&&h.unsubscribe&&(()=>{h.unsubscribe()});let E;try{if(l&&Iy&&t!=="get"&&t!=="head"&&(E=await $y(u,o))!==0){let k=new Request(n,{method:"POST",body:o,duplex:"half"}),R;if(J.isFormData(o)&&(R=k.headers.get("content-type"))&&u.setContentType(R),k.body){const[N,v]=Ns(E,pa(_s(l)));o=Ms(k.body,Bs,N,v)}}J.isString(m)||(m=m?"include":"omit");const M="credentials"in Request.prototype;g=new Request(n,{...p,signal:h,method:t.toUpperCase(),headers:u.normalize().toJSON(),body:o,duplex:"half",credentials:M?m:void 0});let S=await fetch(g,p);const y=$i&&(d==="stream"||d==="response");if($i&&(c||y&&w)){const k={};["status","statusText","headers"].forEach(C=>{k[C]=S[C]});const R=J.toFiniteNumber(S.headers.get("content-length")),[N,v]=c&&Ns(R,pa(_s(c),!0))||[];S=new Response(Ms(S.body,Bs,N,()=>{v&&v(),w&&w()}),k)}d=d||"text";let f=await fa[J.findKey(fa,d)||"text"](S,a);return!y&&w&&w(),await new Promise((k,R)=>{ql(k,R,{data:f,headers:gt.from(S.headers),status:S.status,statusText:S.statusText,config:a,request:g})})}catch(M){throw w&&w(),M&&M.name==="TypeError"&&/Load failed|fetch/i.test(M.message)?Object.assign(new _e("Network Error",_e.ERR_NETWORK,a,g),{cause:M.cause||M}):_e.from(M,M&&M.code,a,g)}}),Di={http:Kg,xhr:Ny,fetch:Dy};J.forEach(Di,(a,n)=>{if(a){try{Object.defineProperty(a,"name",{value:n})}catch{}Object.defineProperty(a,"adapterName",{value:n})}});const Fs=a=>`- ${a}`,Uy=a=>J.isFunction(a)||a===null||a===!1,oc={getAdapter:a=>{a=J.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,!Uy(t)&&(o=Di[(s=String(t)).toLowerCase()],o===void 0))throw new _e(`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(Fs).join(`
340
340
  `):" "+Fs(r[0]):"as no adapter specified";throw new _e("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return o},adapters:Di};function pi(a){if(a.cancelToken&&a.cancelToken.throwIfRequested(),a.signal&&a.signal.aborted)throw new Wn(null,a)}function Is(a){return pi(a),a.headers=gt.from(a.headers),a.data=mi.call(a,a.transformRequest),["post","put","patch"].indexOf(a.method)!==-1&&a.headers.setContentType("application/x-www-form-urlencoded",!1),oc.getAdapter(a.adapter||_o.adapter)(a).then(function(o){return pi(a),o.data=mi.call(a,a.transformResponse,o),o.headers=gt.from(o.headers),o},function(o){return Kl(o)||(pi(a),o&&o.response&&(o.response.data=mi.call(a,a.transformResponse,o.response),o.response.headers=gt.from(o.response.headers))),Promise.reject(o)})}const ac="1.11.0",Oa={};["object","boolean","number","function","string","symbol"].forEach((a,n)=>{Oa[a]=function(o){return typeof o===a||"a"+(n<1?"n ":" ")+a}});const Rs={};Oa.transitional=function(n,t,o){function i(r,s){return"[Axios v"+ac+"] Transitional option '"+r+"'"+s+(o?". "+o:"")}return(r,s,c)=>{if(n===!1)throw new _e(i(s," has been removed"+(t?" in "+t:"")),_e.ERR_DEPRECATED);return t&&!Rs[s]&&(Rs[s]=!0),n?n(r,s,c):!0}};Oa.spelling=function(n){return(t,o)=>!0};function Oy(a,n,t){if(typeof a!="object")throw new _e("options must be an object",_e.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 _e("option "+r+" must be "+l,_e.ERR_BAD_OPTION_VALUE);continue}if(t!==!0)throw new _e("Unknown option "+r,_e.ERR_BAD_OPTION)}}const ta={assertOptions:Oy,validators:Oa},Ot=ta.validators;let gn=class{constructor(n){this.defaults=n||{},this.interceptors={request:new Ss,response:new Ss}}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=wn(this.defaults,t);const{transitional:o,paramsSerializer:i,headers:r}=t;o!==void 0&&ta.assertOptions(o,{silentJSONParsing:Ot.transitional(Ot.boolean),forcedJSONParsing:Ot.transitional(Ot.boolean),clarifyTimeoutError:Ot.transitional(Ot.boolean)},!1),i!=null&&(J.isFunction(i)?t.paramsSerializer={serialize:i}:ta.assertOptions(i,{encode:Ot.function,serialize:Ot.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ta.assertOptions(t,{baseUrl:Ot.spelling("baseURL"),withXsrfToken:Ot.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=r&&J.merge(r.common,r[t.method]);r&&J.forEach(["delete","get","head","post","put","patch","common"],g=>{delete r[g]}),t.headers=gt.concat(s,r);const c=[];let l=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(t)===!1||(l=l&&w.synchronous,c.unshift(w.fulfilled,w.rejected))});const d=[];this.interceptors.response.forEach(function(w){d.push(w.fulfilled,w.rejected)});let u,m=0,p;if(!l){const g=[Is.bind(this),void 0];for(g.unshift(...c),g.push(...d),p=g.length,u=Promise.resolve(t);m<p;)u=u.then(g[m++],g[m++]);return u}p=c.length;let h=t;for(m=0;m<p;){const g=c[m++],w=c[m++];try{h=g(h)}catch(E){w.call(this,E);break}}try{u=Is.call(this,h)}catch(g){return Promise.reject(g)}for(m=0,p=d.length;m<p;)u=u.then(d[m++],d[m++]);return u}getUri(n){n=wn(this.defaults,n);const t=Ql(n.baseURL,n.url,n.allowAbsoluteUrls);return Gl(t,n.params,n.paramsSerializer)}};J.forEach(["delete","get","head","options"],function(n){gn.prototype[n]=function(t,o){return this.request(wn(o||{},{method:n,url:t,data:(o||{}).data}))}});J.forEach(["post","put","patch"],function(n){function t(o){return function(r,s,c){return this.request(wn(c||{},{method:n,headers:o?{"Content-Type":"multipart/form-data"}:{},url:r,data:s}))}}gn.prototype[n]=t(),gn.prototype[n+"Form"]=t(!0)});let Ly=class ic{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 Wn(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 ic(function(i){n=i}),cancel:n}}};function Ay(a){return function(t){return a.apply(null,t)}}function zy(a){return J.isObject(a)&&a.isAxiosError===!0}const Ui={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(Ui).forEach(([a,n])=>{Ui[n]=a});function rc(a){const n=new gn(a),t=Dl(gn.prototype.request,n);return J.extend(t,gn.prototype,n,{allOwnKeys:!0}),J.extend(t,n,null,{allOwnKeys:!0}),t.create=function(i){return rc(wn(a,i))},t}const Ze=rc(_o);Ze.Axios=gn;Ze.CanceledError=Wn;Ze.CancelToken=Ly;Ze.isCancel=Kl;Ze.VERSION=ac;Ze.toFormData=Da;Ze.AxiosError=_e;Ze.Cancel=Ze.CanceledError;Ze.all=function(n){return Promise.all(n)};Ze.spread=Ay;Ze.isAxiosError=zy;Ze.mergeConfig=wn;Ze.AxiosHeaders=gt;Ze.formToJSON=a=>Yl(J.isHTMLForm(a)?new FormData(a):a);Ze.getAdapter=oc.getAdapter;Ze.HttpStatusCode=Ui;Ze.default=Ze;const{Axios:r3,AxiosError:s3,CanceledError:l3,isCancel:c3,CancelToken:d3,VERSION:u3,all:m3,Cancel:p3,isAxiosError:f3,spread:h3,toFormData:v3,AxiosHeaders:g3,HttpStatusCode:y3,formToJSON:w3,getAdapter:b3,mergeConfig:k3}=Ze;class cr{constructor(n="/api/v1"){this.eventSource=null,this.progressCallbacks=new Map,this.api=Ze.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 cr;const Py={key:0,class:"mobile-layout"},Wy={class:"mobile-toolbar"},jy={class:"mobile-toolbar-left"},Zy=["aria-label"],Xy={class:"mobile-toolbar-right"},Hy=["disabled"],Gy=["disabled"],Jy={class:"preview-section"},Yy={key:0,class:"mobile-export-overlay"},Ky={class:"mobile-export-progress"},qy={class:"mobile-export-bar"},Qy={class:"mobile-timeline-zoom"},ew={key:1,class:"desktop-layout"},tw={class:"desktop-main-row"},nw={class:"preview-panel"},ow={class:"fit-toggle"},aw={class:"editor-content"},iw={class:"editor-tabs"},rw={class:"tab-header"},sw=["onClick"],lw={class:"tab-content-area"},cw={class:"filter-controls"},dw={class:"text-controls"},uw={class:"transition-controls"},mw={class:"audio-controls"},pw={class:"adjustments-controls"},fw={key:1,class:"no-filter-selected"},hw={class:"export-controls"},vw={key:0,"data-testid":"video-export-status-completed"},gw={key:1,"data-testid":"video-export-status-message",class:"export-status-message"},yw={class:"desktop-timeline-row"},ww={class:"timeline-zoom"},bw=["value"],kw={class:"zoom-readout"},xw={key:0,class:"dev-editor-controls","data-testid":"video-editor-dev-controls"},Ew={class:"dev-editor-row"},Vw={class:"dev-editor-field"},Sw={class:"dev-editor-field"},Cw=["disabled"],Nw=["disabled"],_w=["disabled"],Tw={class:"dev-editor-row"},Mw={class:"dev-editor-field dev-editor-field--wide"},Bw=["value"],Fw=["disabled"],Iw=["disabled"],Rw=["disabled"],$w=["disabled"],Dw=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),p=e.computed(()=>m.value==="filters"||E.value),h=e.computed(()=>m.value!=="filters"&&!E.value),g=e.ref(null),w=e.ref(null),E=e.ref(!1),M=e.computed(()=>c.value?g.value:w.value);function S(b){return b==="contain"||b==="cover"||b==="none"}function y(b){if(!(b!=null&&b.metadata))return null;const V=b.metadata.fit_mode;return S(V)?V:null}const f=e.shallowRef(null),k=e.ref(null),R=e.ref(y(o.initialRecipe)??"contain"),N=e.ref(null),v=e.ref(null),C=e.ref(null),U=e.ref(!1),x=new Map,T=e.ref([]),I=e.ref([]),O=e.ref([]),$=e.ref([]),j=e.ref(1),P=()=>{c.value=window.innerWidth<768},_=[{id:"filters",label:"Filters",icon:an},{id:"adjustments",label:"Adjust",icon:ou},{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:po}],L=[{id:"filters",label:"Filters"},{id:"adjustments",label:"Adjustments"},{id:"text",label:"Text"},{id:"transitions",label:"Transitions"},{id:"audio",label:"Audio"},{id:"export",label:"Export"}],G=e.computed(()=>_.filter(b=>u.value[b.id])),X=e.computed(()=>L.filter(b=>u.value[b.id])),ce=e.computed(()=>{var b,V;return((b=X.value[0])==null?void 0:b.id)??((V=G.value[0])==null?void 0:V.id)??"filters"});e.watch(u,b=>{b[l.value]||(l.value=ce.value),b[d.value]||(d.value=ce.value)},{immediate:!0,deep:!0}),e.watch(ce,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=ce.value),d.value==="export"&&(d.value=ce.value))},{immediate:!0,deep:!0});const Te=e.computed(()=>typeof window>"u"?!1:window.__MEDIABLES_EDITOR_DEV__===!0),{currentFrame:Re,playheadPosition:ie,timelineClips:B,totalDuration:z,hasChanges:de,isPlaying:oe,selectedClip:K,zoomLevel:ee,playbackSpeed:ue,handleTrim:ge,handleSplit:xe,handleClipSelect:ne,splitAtPlayhead:ke,deleteSelectedClip:he,duplicateSelectedClip:Ye,setZoomLevel:it,moveClip:pt,setFilters:me,setTextOverlays:W,setAudioTracks:Y,saveDraft:te,clearHasChanges:ae,resetChanges:pe,generateRecipe:we,zoomIn:Be,zoomOut:Ue,fitToWindow:H,togglePlayback:re,setPlaying:be,seekTo:Se,frameForward:Ae,frameBackward:wt,skipToStart:dt,skipToEnd:St,setPlaybackSpeed:Xe,updateSourceDuration:Zt}=Q1(s.value,o.initialRecipe,o.media),{videoCompatibleFilters:Pa,activeFilters:Ke,selectedFilter:yr,previewFilter:To,previewFilterEffect:wr,applyFilter:br,updateFilterParams:wc,removeFilter:bc,clearAllFilters:kr,setActiveFilters:kc}=cg();function jn(b){var Z,q;const V=((Z=K.value)==null?void 0:Z.id)??((q=B.value[0])==null?void 0:q.id);V&&(U.value=!0,typeof b=="object"&&b.id?br(b.id):typeof b=="string"&&br(b),me(Ke.value),f.value?f.value.setClipFilters(V,Ke.value):x.set(V,[...Ke.value]),ne(V),U.value=!1,Rt())}function xc(){var V,Z;const b=((V=K.value)==null?void 0:V.id)??((Z=B.value[0])==null?void 0:Z.id);b&&ne(b)}function xr(b){const V=Ke.value.find(Z=>Z.filterId===b);V&&bc(V.id)}const Zn=e.computed(()=>Pa.value.map(V=>{var q;const Z=[];if(V.controls&&V.controls.length>0)for(const se of V.controls){const Q=se.type;if(Q==="button"||Q==="text"||Q==="range")continue;const le={id:se.property||se.id,label:se.label||se.id,type:Q,default:se.default??(Q==="toggle"?!1:Q==="color"?"#ffffff":0)};Q==="slider"&&(le.min=se.min??0,le.max=se.max??1,le.step=se.step??.01),Q==="select"&&se.options&&(le.options=se.options),Z.push(le)}else if(V.paramRanges){const se=Object.entries(V.paramRanges);for(const[Q,le]of se){const Ie=Q.replace(/[-_]/g," ").replace(/\b\w/g,$t=>$t.toUpperCase()),ut=(q=V.defaultParams)==null?void 0:q[Q],Gt=(le.min+le.max)/2;Z.push({id:Q,label:Ie,min:le.min,max:le.max,step:le.step??.01,default:typeof ut=="number"?ut:Gt})}}return{id:V.id,name:V.name,category:V.category,params:Z}})),En=e.ref("0.00"),Vn=e.ref("0.00"),qt=e.ref("");e.watch(Zn,b=>{if(b.length===0){qt.value="";return}b.some(Z=>Z.id===qt.value)||(qt.value=b[0].id)},{immediate:!0});const Qe=e.ref(!1),We=e.ref(0),Xt=e.ref(!1),Pe=e.ref(null),Tt=e.ref(null);let Mo=null,Ct=!1,Ht=null;const Wa=e.computed(()=>{const b=new Map;return Ke.value.forEach(V=>b.set(V.filterId,V)),b}),Ec=e.computed(()=>{var b,V;return Re.value?Re.value:((b=o.media)==null?void 0:b.thumbnail_url)||((V=o.media)==null?void 0:V.url)}),It=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,Z)=>{var se,Q;const q=It.value;Z(()=>{q&&q.startsWith("blob:")&&URL.revokeObjectURL(q)}),(se=o.media)!=null&&se.file?It.value=URL.createObjectURL(o.media.file):(Q=o.media)!=null&&Q.url?It.value=o.media.url:It.value=""},{immediate:!0}),e.onUnmounted(()=>{It.value&&It.value.startsWith("blob:")&&URL.revokeObjectURL(It.value)});const ja=e.computed(()=>It.value),Er=e.computed(()=>{if(!o.media)return null;const{file:b,...V}=o.media;return{...V,url:It.value}}),Vr=e.computed(()=>{var V;const b=(V=o.media)==null?void 0:V.url;return!!(b&&/^https?:/i.test(b))}),Sr=e.computed(()=>Ke.value),Cr=e.computed(()=>ie.value),Vc=e.computed(()=>!!K.value&&ie.value>0),Sc=e.computed(()=>!!K.value&&B.value.length>1),Za=e.ref(0),Qt=e.computed(()=>{try{const b=z.value??z;return b&&typeof b=="number"&&b>0?b:Za.value}catch{return Za.value}}),Sn=e.ref(),Xa=e.ref(),Bo=e.ref(0),Fo=e.ref(!1);let ft=null;e.watch(Qt,b=>{var Z;if(Fo.value||!b||b<=0)return;const V=Bo.value||((Z=Sn.value)==null?void 0:Z.clientWidth)||0;V>0&&(Fo.value=!0,H(V))}),e.watch(Bo,b=>{if(Fo.value||!b||b<=0)return;Qt.value>0&&(Fo.value=!0,H(b))});function Cn(b){return Number.isFinite(b)?b.toFixed(2):"0.00"}function Nr(b){const V=Number(b);return Number.isFinite(V)?V:null}function Cc(b){b&&(En.value=Cn(b.sourceIn),Vn.value=Cn(b.sourceOut))}e.watch(()=>{var b,V,Z;return[(b=K.value)==null?void 0:b.id,(V=K.value)==null?void 0:V.sourceIn,(Z=K.value)==null?void 0:Z.sourceOut]},()=>{Cc(K.value)},{immediate:!0});function _r(b){const V=K.value;if(!V)return;const Z=1/30,q=V.sourceMinIn??0,se=V.sourceMaxOut??Qt.value,Q=V.sourceIn+(ie.value-V.timelineStart);if(b==="start"){const Ie=Math.max(q,Math.min(Q,V.sourceOut-Z));En.value=Cn(Ie);return}const le=Math.max(V.sourceIn+Z,Math.min(Q,se));Vn.value=Cn(le)}function Nc(){const b=K.value;if(!b)return;const V=Nr(En.value),Z=Nr(Vn.value);if(V===null||Z===null)return;const q=1/30,se=b.sourceMinIn??0,Q=b.sourceMaxOut??Qt.value,le=Math.max(se,Math.min(V,Q-q)),Ie=Math.max(le+q,Math.min(Z,Q));ge(b.id,"start",le),ge(b.id,"end",Ie),En.value=Cn(le),Vn.value=Cn(Ie),K.value&&Se(K.value.timelineStart)}function _c(){qt.value.trim()!==""&&jn(qt.value)}function Tc(){var b;kr(),me(Ke.value),(b=K.value)!=null&&b.id&&(f.value?f.value.setClipFilters(K.value.id,Ke.value):x.set(K.value.id,[...Ke.value])),Rt()}function Tr(b,V,Z){var se,Q;const q=Ke.value.find(le=>le.filterId===b);q?(q.params={...q.params,[V]:Z},me(Ke.value),f.value&&((se=K.value)!=null&&se.id)?f.value.setClipFilters(K.value.id,Ke.value):(Q=K.value)!=null&&Q.id&&x.set(K.value.id,[...Ke.value]),Rt(),xc()):To.value&&To.value.filterId===b&&(To.value.params={...To.value.params||{},[V]:Z})}function Mr(b){Se(b)}function Br(b){be(b)}function Io(b){!Number.isFinite(b)||b<=0||(Za.value=b,Zt(b))}function Mc(){var V;const b=Bo.value||((V=Sn.value)==null?void 0:V.clientWidth)||800;H(b)}function Bc(b){const V=b.target,Z=Number(V.value);it(Z)}function Fr(b){const V=Math.min(600,Math.max(10,ee.value+b));it(V)}function Ir(b){var V;f.value=b,(V=f.value)!=null&&V.composition&&(N.value=new dg(f.value.composition),v.value=new ma(f.value.composition),C.value=new ug(f.value.composition));try{x.size&&(x.forEach((Z,q)=>{f.value.setClipFilters(q,Z)}),x.clear(),f.value.composition.computeFrame())}catch{}}function Fc(b){b!=null&&b.id&&wr(b.id)}function Ic(b){wc(b),Rt()}async function Rc(b){if(!N.value)return;const V=await N.value.addTextOverlay(b);T.value.push({id:V,...b})}async function $c(b,V){if(!N.value)return;await N.value.updateTextOverlay(b,V);const Z=T.value.findIndex(q=>q.id===b);Z!==-1&&(T.value[Z]={...T.value[Z],...V})}async function Dc(b){N.value&&(await N.value.removeTextOverlay(b),T.value=T.value.filter(V=>V.id!==b))}async function Uc(b){if(!v.value||$.value.length<2)return;const[V,Z]=$.value,q=await v.value.applyTransition(V,Z,b);I.value.push({id:q,...b,name:b.type})}function Oc(b){if(!v.value)return;const V=I.value[b];V&&(v.value.removeTransition(V.id),I.value.splice(b,1))}function Lc(b){}async function Ac(b){if(!C.value)return;const V=await C.value.addAudioTrack(b);O.value.push({id:V,...b})}async function zc(b,V){if(!C.value)return;const Z=O.value.findIndex(q=>q.id===b);Z!==-1&&(O.value[Z]={...O.value[Z],...V})}async function Pc(b){C.value&&(await C.value.removeAudioTrack(b),O.value=O.value.filter(V=>V.id!==b))}async function Wc(b,V){if(!C.value)return;await C.value.updateVolume(b,V);const Z=O.value.find(q=>q.id===b);Z&&(Z.volume=V)}async function jc(b,V){if(!C.value)return;await C.value.muteTrack(b,V);const Z=O.value.find(q=>q.id===b);Z&&(Z.muted=V)}function Zc(b){C.value&&(C.value.setMasterVolume(b),j.value=b)}function Xc(b){i("thumbnail-selected",b)}function en(){Mo!==null&&(clearInterval(Mo),Mo=null)}function Hc(b,V){return V?{...b,output:{...b.output,format:V.format,quality:V.quality}}:b}function Xn(b){var V;return b.metadata||(b.metadata={created_at:new Date().toISOString(),editor_version:"2.0.0"}),b.metadata.fit_mode=R.value,(V=o.media)!=null&&V.url&&/^https?:/i.test(o.media.url)?b.metadata.source_url=o.media.url:delete b.metadata.source_url,b}function je(b,V,Z){return Math.min(Z,Math.max(V,b))}function Ha(b,V){if(typeof b=="number"&&Number.isFinite(b))return b;if(typeof b=="string"){const Z=Number(b);if(Number.isFinite(Z))return Z}return V}function rt(b,V,Z){for(const q of V)if(q in b)return Ha(b[q],Z);return Z}function Gc(b){const V=typeof b.params=="object"&&b.params!==null?b.params:{};switch(b.filterId.trim().toLowerCase()){case"brightness":return[{type:"brightness",value:je(rt(V,["value","brightness"],0),-1,1)}];case"contrast":return[{type:"contrast",value:je(rt(V,["value","contrast"],1),.1,3)}];case"saturation":return[{type:"saturation",value:je(rt(V,["value","saturation"],1),0,3)}];case"blur":case"gaussian-blur":case"kawase-blur":case"radial-blur":return[{type:"blur",value:je(rt(V,["value","blur","radius"],0),0,25)}];case"sharpen":return[{type:"sharpen",value:je(rt(V,["value","amount"],1),0,5)}];case"sepia":return[{type:"sepia",value:1}];case"grayscale":return[{type:"grayscale",value:1}];case"adjustment":{const q=je(rt(V,["brightness"],1)-1,-1,1),se=je(rt(V,["contrast"],1),.1,3),Q=je(rt(V,["saturation"],1),0,3);return[{type:"brightness",value:q},{type:"contrast",value:se},{type:"saturation",value:Q}]}default:return[]}}function Jc(b){const V=b.timeline[0],Z=Array.isArray(V==null?void 0:V.filters)?V.filters:[],q=[];for(const Q of Z)if(q.push(...Gc(Q)),q.length>=12)break;const se={...b,filters:q.slice(0,12)};if(b.timeline.length===1&&V){const Q=Math.max(0,Ha(V.sourceIn,0)),le=Ha(V.sourceOut,Q);le>Q&&(se.trim={start:Q,end:le})}return se}function Yc(b){return{"360p":[640,360],"480p":[854,480],"720p":[1280,720],"1080p":[1920,1080],"1440p":[2560,1440],"2160p":[3840,2160]}[b??""]??[1920,1080]}function Kc(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 Z=V.value;if(typeof Z=="number"&&Number.isFinite(Z)&&Z>0)return Z}return null}async function Rr(b,V,Z){var Gt,$t,Dt,Ut;const q=b.timeline[0],se=q?Math.max(0,q.sourceIn):0,Q=q?q.sourceOut:void 0,[le,Ie]=Yc((V==null?void 0:V.quality)??((Gt=b.output)==null?void 0:Gt.quality)),ut=(($t=b.output)==null?void 0:$t.fps)||30;be(!1),E.value=!0,await e.nextTick();try{const et=[200,500,1e3];let st=!1;for(const ei of et){await new Promise(gd=>setTimeout(gd,ei));const $o=M.value;if(!(!$o||typeof $o.captureFrameAt!="function")&&typeof $o.ensureReadyForCapture=="function"&&(st=await $o.ensureReadyForCapture(),st))break}const bt=M.value;if(!bt||typeof bt.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:Ro,isWebCodecsSupported:Hn}=await Promise.resolve().then(()=>require("./PixiFrameExporter-BRm0MI7V.cjs"));if(!Hn())throw new Error("WebCodecs is not supported in this browser. Export requires Chrome 94+ or equivalent.");Ht=new AbortController;const Nn={width:le,height:Ie,fps:ut,trimStart:se,signal:Ht.signal};Q!==void 0&&(Nn.trimEnd=Q),Z&&(Nn.onProgress=Z);const Wr=It.value;Wr!==""&&(Nn.sourceUrl=Wr);const md=typeof bt.duration=="number"&&bt.duration>0?bt.duration:((Dt=b.source)==null?void 0:Dt.duration)??Q??0,pd=await Ro({captureFrameAt:ei=>bt.captureFrameAt(ei),duration:{value:md}},Nn),Qa=new File([pd],`edited-video-${Date.now()}.mp4`,{type:"video/mp4"}),fd=Kc(bt),hd=((Ut=b.source)==null?void 0:Ut.duration)??0,vd=Math.max(0,(Q??fd??hd)-se);return{file:Qa,recipe:b,meta:{duration:vd,width:le,height:Ie,format:"mp4",sizeBytes:Qa.size,size_bytes:Qa.size}}}finally{E.value=!1,Ht=null}}async function qc(b,V){var Ut;en(),Ct=!1,Ht=null,Tt.value=null,Pe.value=null,Xt.value=!1,We.value=0;const Z=Xn(b??we()),q=zr(Z),se=Array.isArray(q.filters)&&q.filters.length>0,Q=Ya(q);if(!(de.value||se||Q))return ae(),i("video-exported",null),null;const Ie=q.timeline[0],ut=Ie?Math.max(0,Ie.sourceIn):0,$t=((Ie==null?void 0:Ie.sourceOut)??((Ut=q.source)==null?void 0:Ut.duration)??Qt.value)-ut,Dt=o.serverRenderEndpoint!=null&&o.clientExportThreshold>0&&$t>o.clientExportThreshold;if(Dt){Qe.value=!0;try{return await Qc(q),null}catch(et){const st=et instanceof Error?et.message:"Server render failed";throw Pe.value=st,i("server-render-failed",st),et}finally{Qe.value=!1}}if(o.maxDuration>0&&$t>o.maxDuration&&!Dt){const et=`This video is too long for in-browser export (${Math.round($t)}s). Server rendering is not available. Try a shorter clip.`;return Pe.value=et,i("video-exported",null),null}Qe.value=!0;try{const et=await Rr(q,V,st=>{Ct||(We.value=st)});return Ct?(Pe.value="Export canceled.",We.value=0,i("video-exported",null),null):(ae(),i("recipe-generated",q),i("video-exported",et),We.value=100,Xt.value=!0,et)}catch(et){if(Ct)return Pe.value="Export canceled.",We.value=0,i("video-exported",null),null;const st=et instanceof Error?et.message:"Local WebGL export failed.";throw Pe.value=st,new Error(`Video export failed: ${st}`)}finally{Qe.value=!1}}async function Qc(b){const V=new cr(o.serverRenderEndpoint??"/api/v1");Pe.value="Starting server render...",We.value=0;const Z=await V.createRenderJob({source_media_uuid:s.value,recipe:b});Tt.value=Z.id,i("server-render-started",Z.id),i("export-started",Z.id),Pe.value="Rendering on server...";const q=await V.pollRenderJob(Z.id,(Q,le)=>{We.value=Q,le==="processing"&&(Pe.value=`Server rendering: ${Q}%`)},3e3,(o.maxDuration>0?o.maxDuration*3:1800)*1e3);We.value=100,Xt.value=!0,Pe.value="Server render complete!",ae(),i("recipe-generated",b);const se={id:q.id};typeof q.output_media_id=="string"&&q.output_media_id!==""&&(se.output_media_id=q.output_media_id),i("server-render-completed",se)}async function $r(){if(!Qe.value)return;Ct=!0,E.value=!1,Ht&&(Ht.abort(),Ht=null),en();const b=Tt.value;if(b)try{const V=await fetch(`/api/v1/video/jobs/${b}`,{method:"DELETE"});if(!V.ok)throw new Error(`Cancel failed: ${V.status} ${V.statusText}`)}catch(V){const Z=V instanceof Error?V.message:"Failed to cancel export";Pe.value=Z,Qe.value=!1,Tt.value=null;return}Qe.value=!1,We.value=0,Xt.value=!1,Tt.value=null,Pe.value="Export canceled."}async function Dr(b){en(),Ct=!1,Ht=null,Tt.value=null,Pe.value=null,Xt.value=!1,Qe.value=!0,We.value=0;try{const V=Xn(Hc(we(),b));i("recipe-generated",V);const Z=s.value.startsWith("temp-"),q=V.timeline[0],se=Array.isArray(q==null?void 0:q.filters)?q.filters:[],Q=!0,le=typeof window<"u"&&window.MEDIABLES_ALLOW_SERVER_EXPORT_FALLBACK===1||typeof localStorage<"u"&&localStorage.getItem("mediables.export.allowServerFallback")==="1";if(Q)try{const bt=await Rr(V,b,Nn=>{Ct||(We.value=Nn)});if(Ct){Pe.value="Export canceled.",Qe.value=!1,We.value=0;return}i("video-exported",bt);const Ro=URL.createObjectURL(bt.file),Hn=document.createElement("a");Hn.href=Ro,Hn.download=`edited-video-${Date.now()}.mp4`,Hn.click(),setTimeout(()=>URL.revokeObjectURL(Ro),100),Qe.value=!1,We.value=100,Xt.value=!0;return}catch(bt){if(Ct){Pe.value="Export canceled.",Qe.value=!1,We.value=0;return}if(Z||!le)throw bt;We.value=0,Pe.value="Local filter export failed, falling back to server render."}const Ie={"360p":"low","480p":"low","720p":"medium","1080p":"high","1440p":"ultra","2160p":"ultra"},ut=(b==null?void 0:b.quality)??V.output.quality,Gt=Ie[ut]??"high",$t={...Jc(V),export:{format:(b==null?void 0:b.format)??V.output.format,quality:Gt,resolution:ut,framerate:V.output.fps}},Dt=await fetch("/api/v1/video/jobs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source_media_id:s.value,recipe:$t})});if(!Dt.ok)throw new Error(`Export failed: ${Dt.status} ${Dt.statusText}`);const Ut=await Dt.json(),et=(Ut==null?void 0:Ut.data)??Ut,st=typeof(et==null?void 0:et.id)=="string"?et.id:null;if(!st)throw new Error("Export failed: missing job id");Tt.value=st,i("export-started",st),dd(st)}catch(V){if(E.value=!1,Ht=null,Ct){Pe.value="Export canceled.",Qe.value=!1,We.value=0,Tt.value=null;return}try{const Z=Xn(we()),q=new Blob([JSON.stringify(Z,null,2)],{type:"application/json"}),se=URL.createObjectURL(q),Q=document.createElement("a");Q.href=se,Q.download=`video-recipe-${Date.now()}.json`,Q.click(),setTimeout(()=>URL.revokeObjectURL(se),100)}finally{Qe.value=!1,We.value=0,Tt.value=null,Pe.value=V instanceof Error?V.message:"Export failed"}}}const Ga=async b=>{await new Promise(V=>{window.setTimeout(V,b)})},Ja=b=>{if(!b||b.width<=0||b.height<=0)return null;try{return b.toDataURL("image/jpeg",.85)}catch{return null}},ed=b=>{if(!b||typeof b!="object")return null;const Z=b.pixiCanvas;if(Z&&typeof Z=="object"&&"value"in Z){const q=Z.value;return q instanceof HTMLCanvasElement?q:null}return Z instanceof HTMLCanvasElement?Z:null},td=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 Z=V.value;if(typeof Z=="number"&&Number.isFinite(Z))return Z}return null},nd=b=>{if(!b||typeof b!="object")return null;const Z=b.videoElement;if(Z&&typeof Z=="object"&&"value"in Z){const q=Z.value;return q instanceof HTMLVideoElement?q:null}return Z instanceof HTMLVideoElement?Z:null},Ur=b=>typeof b.params=="object"&&b.params!==null?b.params:{},od=b=>{const V=[];for(const Z of b){const q=Ur(Z),se=Z.filterId.trim().toLowerCase();if(se==="brightness"){const le=(je(rt(q,["value","brightness"],0),-1,1)+1)*100;V.push(`brightness(${le.toFixed(2)}%)`);continue}if(se==="contrast"){const Q=je(rt(q,["value","contrast"],1),.1,4);V.push(`contrast(${(Q*100).toFixed(2)}%)`);continue}if(se==="saturation"||se==="saturate"){const Q=je(rt(q,["value","saturation"],1),0,4);V.push(`saturate(${(Q*100).toFixed(2)}%)`);continue}if(se==="grayscale"){V.push("grayscale(100%)");continue}if(se==="sepia"){V.push("sepia(100%)");continue}if(se==="blur"||se==="gaussian-blur"||se==="kawase-blur"){const Q=je(rt(q,["value","blur","radius"],0),0,30);Q>.01&&V.push(`blur(${Q.toFixed(2)}px)`);continue}if(se==="adjustment"){const Q=rt(q,["brightness"],1),le=rt(q,["contrast"],1),Ie=rt(q,["saturation"],1);Math.abs(Q-1)>.01&&V.push(`brightness(${(je(Q,0,5)*100).toFixed(2)}%)`),Math.abs(le-1)>.01&&V.push(`contrast(${(je(le,.1,5)*100).toFixed(2)}%)`),Math.abs(Ie-1)>.01&&V.push(`saturate(${(je(Ie,0,5)*100).toFixed(2)}%)`);continue}if(se==="cinematic"){V.push("contrast(120%) brightness(95%) saturate(85%)");continue}if(se==="dramatic"){V.push("contrast(140%) brightness(90%) saturate(110%) sepia(10%)");continue}if(se==="dreamy"){V.push("blur(0.5px) brightness(105%) saturate(90%) contrast(95%)");continue}}return V.join(" ")},ad=b=>{const V=b.find(se=>se.filterId.trim().toLowerCase()==="noise");if(!V)return 0;const Z=Ur(V),q=rt(Z,["noise","value","amount","intensity"],.2);return q<=1?je(q,0,1):je(q/100,0,1)},id=(b,V,Z,q)=>{if(q<=0)return;const se=b.getImageData(0,0,V,Z),Q=255*q;for(let le=0;le<se.data.length;le+=4){const Ie=(Math.random()*2-1)*Q;se.data[le]=je(se.data[le]+Ie,0,255),se.data[le+1]=je(se.data[le+1]+Ie,0,255),se.data[le+2]=je(se.data[le+2]+Ie,0,255)}b.putImageData(se,0,0)},Or=async b=>{b.readyState>=2&&b.videoWidth>0&&b.videoHeight>0||await new Promise(V=>{let Z=!1,q=0;const se=()=>{Z||(Z=!0,b.removeEventListener("loadedmetadata",Q),b.removeEventListener("loadeddata",Q),b.removeEventListener("canplay",Q),window.clearTimeout(q),V())},Q=()=>{se()};b.addEventListener("loadedmetadata",Q),b.addEventListener("loadeddata",Q),b.addEventListener("canplay",Q),q=window.setTimeout(()=>se(),800),b.play().catch(()=>{})})},rd=async(b,V)=>{await new Promise(Z=>{let q=!1,se=0;const Q=()=>{q||(q=!0,b.removeEventListener("seeked",le),window.clearTimeout(se),Z())},le=()=>{Q()};if(Math.abs(b.currentTime-V)<.016){requestAnimationFrame(()=>Q());return}b.addEventListener("seeked",le),se=window.setTimeout(()=>Q(),700),b.currentTime=V})},Lr=async(b,V)=>{await Or(b);const Z=Math.floor(b.videoWidth),q=Math.floor(b.videoHeight);if(Z<=0||q<=0)return null;const se=Number.isFinite(b.duration)&&b.duration>0?b.duration:0,Q=se>0?je(V,0,se):0;await rd(b,Q);const le=document.createElement("canvas");le.width=Z,le.height=q;const Ie=le.getContext("2d");if(!Ie)return null;const ut=od(Ke.value);ut!==""&&(Ie.filter=ut);try{Ie.drawImage(b,0,0,Z,q)}catch{return null}const Gt=ad(Ke.value);return id(Ie,Z,q,Gt),Ja(le)},sd=async(b,V)=>{const Z=document.createElement("video");Z.src=b,Z.muted=!0,Z.playsInline=!0,Z.preload="auto",b.startsWith("blob:")||(Z.crossOrigin="anonymous");try{return await Or(Z),await Lr(Z,V)}catch{return null}finally{Z.pause(),Z.removeAttribute("src"),Z.load()}},ld=async b=>{const V=M.value,Z=Ja(ed(V));if(Z)return Z;if(V!=null&&V.captureFrameAt)for(let Q=0;Q<4;Q+=1){const le=td(V);if(le!==null&&le<=0&&Q<2){await Ga(80);continue}const Ie=await Promise.race([V.captureFrameAt(b),Ga(450).then(()=>null)]),ut=Ja(Ie);if(ut)return ut;await Ga(80)}const q=nd(V);if(q){const Q=await Lr(q,b);if(Q)return Q}const se=ja.value.trim();if(se!==""){const Q=await sd(se,b);if(Q)return Q}return null},Ar=b=>b.map(V=>({...V,params:V.params&&typeof V.params=="object"?{...V.params}:V.params}));function zr(b){const V=Ar(Ke.value);if(!Ya(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 Ya=b=>Array.isArray(b.timeline)?b.timeline.some(V=>Array.isArray(V.filters)&&V.filters.length>0):!1,cd=b=>{if(!b||typeof b!="object")return null;const V=b.posterFrame;if(typeof V!="string")return null;const Z=V.trim();return Z!==""?Z:null};async function Ka(){const b=Xn(zr(te())),V=Ar(Ke.value),Z=Ya(b)||V.length>0,q=cd(o.initialRecipe);if(Z){const se=ie.value>0?ie.value:.1;try{const Q=await ld(se);Q?b.posterFrame=Q:q&&(b.posterFrame=q)}catch{q&&(b.posterFrame=q)}}else delete b.posterFrame;return ae(),i("draft-saved",b),b}function Pr(){pe()&&(kr(),Rt())}async function dd(b){en(),Mo=window.setInterval(async()=>{var V,Z;try{if(Ct){en();return}const q=await fetch(`/api/v1/video/jobs/${b}`);if(!q.ok)throw new Error(`Status poll failed: ${q.status} ${q.statusText}`);const se=await q.json(),Q=(se==null?void 0:se.data)??se,le=Number((Q==null?void 0:Q.progress)??0);if(We.value=Number.isFinite(le)?le:0,Q.status==="completed"||Q.status==="failed"||Q.status==="cancelled")if(en(),Qe.value=!1,Tt.value=null,Q.status==="completed"){const Ie=((V=Q==null?void 0:Q.output_media)==null?void 0:V.url)??(Q==null?void 0:Q.output_url);We.value=100,Xt.value=!0,Pe.value=null}else{const Ie=!!((Z=Q==null?void 0:Q.meta)!=null&&Z.is_cancelled)||Q.status==="cancelled"||typeof(Q==null?void 0:Q.error_message)=="string"&&/cancel/i.test(Q.error_message);Pe.value=Ie?"Export canceled.":typeof(Q==null?void 0:Q.error_message)=="string"&&Q.error_message.trim()!==""?Q.error_message:"Export failed"}}catch(q){en(),Qe.value=!1,Tt.value=null,Pe.value=q instanceof Error?q.message:"Failed to check export progress"}},2e3)}function qa(){const b=Xn(we());try{const V=b.timeline??[]}catch{}k.value=b}let sn=null;function Rt(){sn&&clearTimeout(sn),sn=setTimeout(()=>{qa(),sn=null},200)}e.watch(()=>B.value,Rt,{deep:!0}),e.watch(()=>K.value,b=>{if(U.value||!b)return;const V=(b==null?void 0:b.filters)??[];kc(V)},{immediate:!0}),e.watch(()=>Ke.value,b=>{me(b),Rt()},{deep:!0}),e.watch(()=>T.value,b=>{W(b),Rt()},{deep:!0}),e.watch(()=>O.value,b=>{const V=b.map(Z=>({...Z,source:typeof Z.source=="string"?Z.source:void 0}));Y(V),Rt()},{deep:!0}),e.watch(()=>ie.value,Rt),n({saveDraft:Ka,exportForUpload:qc}),qa(),e.onUnmounted(()=>{en(),Ct=!0,sn&&(clearTimeout(sn),sn=null),f.value&&(f.value.destroy(),f.value=null),N.value=null,v.value=null,C.value=null});function ud(){ft||!Xa.value||(ft=new G1({filters:Zn.value,callbacks:{onApplyFilter:b=>{jn(b.id)},onRemoveFilter:b=>{xr(b)},onUpdateParam:(b,V,Z)=>{Tr(b,V,Z)},onPreviewFilter:b=>{wr(b.id)}}}),ft.mount(Xa.value),ft.setActiveFilters(Wa.value))}e.watch(Wa,b=>{ft==null||ft.setActiveFilters(b)},{deep:!0}),e.watch(Zn,b=>{ft==null||ft.setFilters(b)});let tn=null;return e.onMounted(()=>{window.addEventListener("resize",P);const b=()=>{!Sn.value||tn||(tn=new ResizeObserver(V=>{V[0]&&(Bo.value=Math.round(V[0].contentRect.width))}),tn.observe(Sn.value))};b(),tn||e.nextTick(b),o.media&&qa(),c.value&&e.nextTick(()=>{ud()}),e.nextTick(()=>{const V=document.querySelector(".video-editor");V&&V.getBoundingClientRect();const Z=document.querySelector(".mobile-layout");Z&&Z.getBoundingClientRect()})}),e.onUnmounted(()=>{window.removeEventListener("resize",P),tn==null||tn.disconnect(),tn=null,ft==null||ft.destroy(),ft=null}),(b,V)=>{var Z,q,se,Q;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-editor",{mobile:c.value}])},[c.value?(e.openBlock(),e.createElementBlock("div",Py,[e.createElementVNode("div",Wy,[e.createElementVNode("div",jy,[e.createElementVNode("button",{class:e.normalizeClass(["mobile-toolbar-btn",{active:e.unref(oe)}]),onClick:V[0]||(V[0]=(...le)=>e.unref(re)&&e.unref(re)(...le)),"aria-label":e.unref(oe)?"Pause":"Play","data-testid":"btn-mobile-play"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(oe)?e.unref(Ks):e.unref(Qs)},null,8,["icon"])],10,Zy),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:Pr,"aria-label":"Reset all changes","data-testid":"btn-mobile-reset"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Un)},null,8,["icon"])])]),e.createElementVNode("div",Xy,[e.createElementVNode("button",{class:"mobile-toolbar-btn mobile-toolbar-save",onClick:Ka,"aria-label":"Save","data-testid":"btn-mobile-save",disabled:!e.unref(de)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Pi)},null,8,["icon"]),V[14]||(V[14]=e.createElementVNode("span",null,"Save",-1))],8,Hy),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[1]||(V[1]=le=>Dr()),"aria-label":"Export","data-testid":"btn-mobile-export",disabled:Qe.value||!e.unref(de)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(po)},null,8,["icon"])],8,Gy),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[2]||(V[2]=le=>i("close")),"aria-label":"Close","data-testid":"btn-mobile-close"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(In)},null,8,["icon"])])])]),e.createElementVNode("div",Jy,[e.withDirectives(e.createVNode(qr,{ref_key:"pixiPreviewMobileRef",ref:g,"aria-hidden":!p.value,class:"preview-host-child",source:ja.value,filters:Sr.value,playhead:Cr.value,"is-playing":e.unref(oe),"fit-mode":R.value,active:p.value,onPlayPause:e.unref(re),onDurationChange:Io},null,8,["aria-hidden","source","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,p.value]]),e.withDirectives(e.createVNode(gs,{"aria-hidden":!h.value,class:"preview-host-child","media-uuid":s.value,recipe:k.value,media:Er.value,"enable-engine":h.value&&Vr.value,"fit-mode":R.value,onTimeUpdate:Mr,onPlayStateChange:Br,onDurationChange:Io,onEngineReady:Ir},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,h.value]]),Qe.value?(e.openBlock(),e.createElementBlock("div",Yy,[e.createElementVNode("div",Ky,[e.createElementVNode("span",null,"Exporting "+e.toDisplayString(We.value)+"%",1),e.createElementVNode("div",qy,[e.createElementVNode("div",{class:"mobile-export-bar-fill",style:e.normalizeStyle({width:We.value+"%"})},null,4)]),e.createElementVNode("button",{class:"mobile-export-cancel",onClick:$r},"Cancel")])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:Sn,class:"timeline-section"},[e.createElementVNode("div",Qy,[e.createElementVNode("button",{class:"mobile-zoom-btn",onClick:V[3]||(V[3]=le=>Fr(-20)),"aria-label":"Zoom out timeline","data-testid":"btn-timeline-zoom-out"},[...V[15]||(V[15]=[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)])]),e.createElementVNode("button",{class:"mobile-zoom-btn",onClick:V[4]||(V[4]=le=>Fr(20)),"aria-label":"Zoom in timeline","data-testid":"btn-timeline-zoom-in"},[...V[16]||(V[16]=[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)])])]),e.createVNode(ys,{playhead:e.unref(ie),clips:e.unref(B),"selected-clip-id":((Z=e.unref(K))==null?void 0:Z.id)??((q=e.unref(B)[0])==null?void 0:q.id)??null,duration:Qt.value,"zoom-level":e.unref(ee),sensitivity:.25,"is-mobile":!0,"onUpdate:playhead":e.unref(Se),onTrim:e.unref(ge),onSplit:e.unref(xe),onClipSelect:e.unref(ne),onClipMove:e.unref(pt)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"])],512),e.createElementVNode("div",{ref_key:"mobileControlsRef",ref:Xa,class:"controls-section mobile-controls"},null,512)])):(e.openBlock(),e.createElementBlock("div",ew,[e.createElementVNode("div",tw,[e.createElementVNode("div",nw,[e.createElementVNode("div",ow,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[5]||(V[5]=le=>R.value=le),"aria-label":"Fit mode","data-testid":"select-video-fit-mode"},[...V[17]||(V[17]=[e.createElementVNode("option",{value:"contain"},"Contain",-1),e.createElementVNode("option",{value:"cover"},"Cover",-1),e.createElementVNode("option",{value:"none"},"None",-1)])],512),[[e.vModelSelect,R.value]])])]),e.withDirectives(e.createVNode(qr,{ref_key:"pixiPreviewDesktopRef",ref:w,"aria-hidden":!p.value,class:"preview-host-child",source:ja.value,filters:Sr.value,playhead:Cr.value,"is-playing":e.unref(oe),"fit-mode":R.value,active:p.value,onPlayPause:e.unref(re),onDurationChange:Io},null,8,["aria-hidden","source","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,p.value]]),e.withDirectives(e.createVNode(gs,{"aria-hidden":!h.value,class:"preview-host-child","media-uuid":s.value,recipe:k.value,media:Er.value,"enable-engine":h.value&&Vr.value,"fit-mode":R.value,onTimeUpdate:Mr,onPlayStateChange:Br,onDurationChange:Io,onEngineReady:Ir},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,h.value]]),b.showThumbnailPicker?(e.openBlock(),e.createBlock(xv,{key:0,"media-uuid":s.value,duration:Qt.value,onSelect:Xc},null,8,["media-uuid","duration"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",aw,[e.createElementVNode("div",iw,[e.createElementVNode("div",rw,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value,le=>(e.openBlock(),e.createElementBlock("button",{key:le.id,class:e.normalizeClass(["tab-btn",{active:d.value===le.id}]),onClick:Ie=>d.value=le.id},e.toDisplayString(le.label),11,sw))),128))]),e.createElementVNode("div",lw,[e.withDirectives(e.createElementVNode("div",cw,[e.createVNode(I0,{filters:Zn.value,"active-filters":Wa.value,"thumbnail-url":Ec.value,onApplyFilter:jn,onRemoveFilter:xr,onUpdateParam:Tr,onPreviewFilter:Fc},null,8,["filters","active-filters","thumbnail-url"])],512),[[e.vShow,d.value==="filters"]]),e.withDirectives(e.createElementVNode("div",dw,[e.createVNode(Wv,{overlays:T.value,onAddOverlay:Rc,onUpdateOverlay:$c,onRemoveOverlay:Dc},null,8,["overlays"])],512),[[e.vShow,d.value==="text"]]),e.withDirectives(e.createElementVNode("div",uw,[e.createVNode(u1,{"selected-clips":$.value,"applied-transitions":I.value,onApplyTransition:Uc,onRemoveTransition:Oc,onPreviewTransition:Lc},null,8,["selected-clips","applied-transitions"])],512),[[e.vShow,d.value==="transitions"]]),e.withDirectives(e.createElementVNode("div",mw,[e.createVNode(X1,{"audio-layers":O.value,"master-volume":j.value,onAddTrack:Ac,onUpdateTrack:zc,onRemoveTrack:Pc,onUpdateVolume:Wc,onToggleMute:jc,onUpdateMasterVolume:Zc},null,8,["audio-layers","master-volume"])],512),[[e.vShow,d.value==="audio"]]),e.withDirectives(e.createElementVNode("div",pw,[e.unref(yr)?(e.openBlock(),e.createBlock(X0,{key:0,filter:e.unref(yr),"current-frame":e.unref(Re),onUpdateParams:Ic},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",fw,[...V[18]||(V[18]=[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",hw,[e.createVNode(sv,{"can-export":e.unref(de),"is-exporting":Qe.value,"export-progress":We.value,onExport:Dr,onCancelExport:$r,onSaveDraft:Ka,onReset:Pr},null,8,["can-export","is-exporting","export-progress"]),Xt.value?(e.openBlock(),e.createElementBlock("div",vw," Export complete ")):e.createCommentVNode("",!0),Pe.value&&!Xt.value?(e.openBlock(),e.createElementBlock("div",gw,e.toDisplayString(Pe.value),1)):e.createCommentVNode("",!0)],512),[[e.vShow,d.value==="export"]])])])])]),e.createElementVNode("div",yw,[e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:Sn,class:"timeline-container"},[e.createElementVNode("div",ww,[e.createElementVNode("label",null,[V[19]||(V[19]=e.createTextVNode(" Zoom ",-1)),e.createElementVNode("input",{type:"range",min:"10",max:"600",value:e.unref(ee),onInput:V[6]||(V[6]=le=>Bc(le))},null,40,bw)]),e.createElementVNode("span",kw,e.toDisplayString(Math.round(e.unref(ee)))+" px/s",1)]),e.createVNode(ys,{playhead:e.unref(ie),clips:e.unref(B),"selected-clip-id":((se=e.unref(K))==null?void 0:se.id)??((Q=e.unref(B)[0])==null?void 0:Q.id)??null,duration:Qt.value,"zoom-level":e.unref(ee),sensitivity:.25,"onUpdate:playhead":e.unref(Se),onTrim:e.unref(ge),onSplit:e.unref(xe),onClipSelect:e.unref(ne),onClipMove:e.unref(pt)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"]),e.createVNode(Gh,{"selected-clip":e.unref(K),"can-split":Vc.value,"can-delete":Sc.value,"is-playing":e.unref(oe),"zoom-level":e.unref(ee),"playback-speed":e.unref(ue),onSplit:e.unref(ke),onDelete:e.unref(he),onDuplicate:e.unref(Ye),onZoomIn:e.unref(Be),onZoomOut:e.unref(Ue),onZoomChange:e.unref(it),onFitToWindow:Mc,onPlayPause:e.unref(re),onFrameForward:e.unref(Ae),onFrameBackward:e.unref(wt),onSkipToStart:e.unref(dt),onSkipToEnd:e.unref(St),onSpeedChange:e.unref(Xe)},null,8,["selected-clip","can-split","can-delete","is-playing","zoom-level","playback-speed","onSplit","onDelete","onDuplicate","onZoomIn","onZoomOut","onZoomChange","onPlayPause","onFrameForward","onFrameBackward","onSkipToStart","onSkipToEnd","onSpeedChange"]),Te.value?(e.openBlock(),e.createElementBlock("div",xw,[e.createElementVNode("div",Ew,[e.createElementVNode("label",Vw,[V[20]||(V[20]=e.createElementVNode("span",null,"Trim start (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[7]||(V[7]=le=>En.value=le),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-start"},null,512),[[e.vModelText,En.value]])]),e.createElementVNode("label",Sw,[V[21]||(V[21]=e.createElementVNode("span",null,"Trim end (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[8]||(V[8]=le=>Vn.value=le),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-end"},null,512),[[e.vModelText,Vn.value]])]),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-start-playhead",disabled:!e.unref(K),onClick:V[9]||(V[9]=le=>_r("start"))}," Start = Playhead ",8,Cw),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-end-playhead",disabled:!e.unref(K),onClick:V[10]||(V[10]=le=>_r("end"))}," End = Playhead ",8,Nw),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-trim",disabled:!e.unref(K),onClick:Nc}," Apply Trim ",8,_w)]),e.createElementVNode("div",Tw,[e.createElementVNode("label",Mw,[V[22]||(V[22]=e.createElementVNode("span",null,"Quick filter",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[11]||(V[11]=le=>qt.value=le),"data-testid":"video-dev-filter-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Zn.value,le=>(e.openBlock(),e.createElementBlock("option",{key:le.id,value:le.id},e.toDisplayString(le.name),9,Bw))),128))],512),[[e.vModelSelect,qt.value]])]),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-filter",disabled:!e.unref(K)||qt.value==="",onClick:_c}," Apply Filter ",8,Fw),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-clear-filters",disabled:e.unref(Ke).length===0,onClick:Tc}," Clear Filters ",8,Iw),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(K),onClick:V[12]||(V[12]=le=>jn("noise"))}," QA: Noise ",8,Rw),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(K),onClick:V[13]||(V[13]=le=>jn("grayscale"))}," QA: Grayscale ",8,$w)])])):e.createCommentVNode("",!0)],512)])]))],2)}}}),Oi=Ne(Dw,[["__scopeId","data-v-5d8a0dc1"]]),Uw={key:0,class:"ve-fullscreen"},Ow=["aria-label"],Lw={class:"ve-header"},Aw={class:"ve-title"},zw={class:"ve-body"},Pw={class:"ve-footer"},Ww=e.defineComponent({__name:"VideoEditorDialog",props:{open:{type:Boolean},mediaUuid:{},initialRecipe:{},media:{},showThumbnailPicker:{type:Boolean,default:!1},title:{default:"Edit Video"}},emits:["update:open","close","recipe-generated","export-started","draft-saved","thumbnail-selected"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(typeof window<"u"?window.innerWidth<768:!1);function r(){i.value=window.innerWidth<768}e.onMounted(()=>window.addEventListener("resize",r)),e.onUnmounted(()=>window.removeEventListener("resize",r));const s=e.computed(()=>t.open??!0),c=e.computed(()=>{var d;return t.mediaUuid||((d=t.media)==null?void 0:d.id)||`temp-${Date.now()}`});function l(){o("close"),o("update:open",!1)}return(d,u)=>s.value&&i.value?(e.openBlock(),e.createElementBlock("div",Uw,[e.createVNode(Oi,e.mergeProps({"media-uuid":c.value},{...d.initialRecipe?{initialRecipe:d.initialRecipe}:{},...d.media?{media:d.media}:{}},{"show-thumbnail-picker":d.showThumbnailPicker??!1,onRecipeGenerated:u[0]||(u[0]=m=>d.$emit("recipe-generated",m)),onExportStarted:u[1]||(u[1]=m=>d.$emit("export-started",m)),onDraftSaved:u[2]||(u[2]=m=>d.$emit("draft-saved",m)),onThumbnailSelected:u[3]||(u[3]=m=>d.$emit("thumbnail-selected",m))}),null,16,["media-uuid","show-thumbnail-picker"])])):s.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"ve-overlay",onClick:e.withModifiers(l,["self"])},[e.createElementVNode("div",{class:"ve-dialog",role:"dialog","aria-label":d.title,"aria-modal":"true"},[e.createElementVNode("header",Lw,[e.createElementVNode("h2",Aw,e.toDisplayString(d.title),1),e.createElementVNode("button",{class:"ve-close",onClick:l,"aria-label":"Close"}," ✕ ")]),e.createElementVNode("section",zw,[e.createVNode(Oi,e.mergeProps({"media-uuid":c.value},{...d.initialRecipe?{initialRecipe:d.initialRecipe}:{},...d.media?{media:d.media}:{}},{"show-thumbnail-picker":d.showThumbnailPicker??!1,onRecipeGenerated:u[4]||(u[4]=m=>d.$emit("recipe-generated",m)),onExportStarted:u[5]||(u[5]=m=>d.$emit("export-started",m)),onDraftSaved:u[6]||(u[6]=m=>d.$emit("draft-saved",m)),onThumbnailSelected:u[7]||(u[7]=m=>d.$emit("thumbnail-selected",m))}),null,16,["media-uuid","show-thumbnail-picker"])]),e.createElementVNode("footer",Pw,[e.renderSlot(d.$slots,"footer",{},()=>[e.createElementVNode("button",{class:"ve-btn",onClick:l},"Cancel")],!0)])],8,Ow)])):e.createCommentVNode("",!0)}}),jw=Ne(Ww,[["__scopeId","data-v-b948d9bc"]]),Zw={class:"video-editor-modal"},Xw={class:"video-preview-container"},Hw=["src"],Gw={class:"video-overlay-controls"},Jw=["aria-label"],Yw={class:"time-display"},Kw={class:"timeline-container"},qw={class:"clip-name"},Qw={class:"timeline-time-labels"},eb={class:"tool-tabs"},tb=["onClick"],nb={class:"tool-panel"},ob={key:0,class:"trim-panel"},ab={class:"trim-controls"},ib={key:1,class:"filters-panel"},rb={class:"filter-grid"},sb=["onClick"],lb={key:2,class:"text-panel"},cb={key:3,class:"transitions-panel"},db={class:"transition-grid"},ub=["onClick"],mb={class:"action-buttons"},pb=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),p=e.ref(null),h=e.ref("trim"),g=e.ref(null),w=e.ref(""),E=[{id:"trim",label:"Trim",icon:Js},{id:"filters",label:"Filters",icon:Hd},{id:"text",label:"Text",icon:el},{id:"transitions",label:"Transitions",icon:tu}],M=[{id:"none",name:"None"},{id:"grayscale",name:"Grayscale"},{id:"sepia",name:"Sepia"},{id:"blur",name:"Blur"},{id:"brightness",name:"Brightness"},{id:"contrast",name:"Contrast"}],S=[{id:"fade",name:"Fade"},{id:"slide",name:"Slide"},{id:"zoom",name:"Zoom"},{id:"wipe",name:"Wipe"}],y=e.ref();e.onMounted(()=>{var _,L;(_=t.media)!=null&&_.url?r.value=t.media.url:(L=t.media)!=null&&L.file&&(r.value=URL.createObjectURL(t.media.file))}),e.onUnmounted(()=>{var _;(_=t.media)!=null&&_.file&&r.value&&URL.revokeObjectURL(r.value)});function f(){i.value&&(l.value=i.value.duration,m.value=l.value)}function k(){i.value&&(c.value=i.value.currentTime)}function R(){s.value=!1}function N(){i.value&&(s.value?(i.value.pause(),s.value=!1):(i.value.play(),s.value=!0))}function v(_){if(!_||isNaN(_))return"00:00";const L=Math.floor(_/60),G=Math.floor(_%60);return`${L.toString().padStart(2,"0")}:${G.toString().padStart(2,"0")}`}function C(_){if(!i.value||!y.value)return;const L=y.value.getBoundingClientRect(),ce=(_.clientX-L.left)/L.width*l.value;i.value.currentTime=Math.max(0,Math.min(ce,l.value))}function U(){u.value=c.value}function x(){m.value=c.value}function T(){u.value=0,m.value=l.value}function I(_){p.value=_;const L=X=>{if(!p.value||!y.value)return;const ce=y.value.getBoundingClientRect(),ie=(X.clientX-ce.left)/ce.width*l.value;p.value==="start"?u.value=Math.max(0,Math.min(ie,m.value-1)):m.value=Math.max(u.value+1,Math.min(ie,l.value))},G=()=>{p.value=null,document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",G)};document.addEventListener("mousemove",L),document.addEventListener("mouseup",G)}function O(_){if(g.value=_,!i.value)return;const L={none:"none",grayscale:"grayscale(100%)",sepia:"sepia(100%)",blur:"blur(5px)",brightness:"brightness(150%)",contrast:"contrast(150%)"};i.value.style.filter=L[_]||"none"}function $(){}function j(_){}function P(){const _={timeline:[{id:d.value,url:r.value,startTime:0,endTime:l.value,sourceIn:u.value,sourceOut:m.value,track:0}],filters:g.value?[{type:g.value}]:[],textOverlays:w.value?[{content:w.value}]:[],duration:m.value-u.value};o("save",_)}return(_,L)=>(e.openBlock(),e.createElementBlock("div",Zw,[e.createElementVNode("div",Xw,[e.createElementVNode("video",{ref_key:"videoElement",ref:i,class:"video-preview",src:r.value,onLoadedmetadata:f,onTimeupdate:k,onEnded:R,controls:""},null,40,Hw),e.createElementVNode("div",Gw,[e.createElementVNode("button",{class:"play-pause-btn",onClick:N,"aria-label":s.value?"Pause":"Play"},[e.createVNode(e.unref(F.IonIcon),{icon:s.value?e.unref(iu):e.unref(cu)},null,8,["icon"])],8,Jw),e.createElementVNode("div",Yw,e.toDisplayString(v(c.value))+" / "+e.toDisplayString(v(l.value)),1)])]),e.createElementVNode("div",Kw,[e.createElementVNode("div",{class:"timeline-track",onClick:C,ref_key:"timelineTrack",ref:y},[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",qw,e.toDisplayString(d.value),1)],4),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:`${c.value/l.value*100}%`})},null,4),h.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"trim-handle trim-start",style:e.normalizeStyle({left:`${u.value/l.value*100}%`}),onMousedown:L[0]||(L[0]=G=>I("start"))},null,36)):e.createCommentVNode("",!0),h.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"trim-handle trim-end",style:e.normalizeStyle({left:`${m.value/l.value*100}%`}),onMousedown:L[1]||(L[1]=G=>I("end"))},null,36)):e.createCommentVNode("",!0)],512),e.createElementVNode("div",Qw,[e.createElementVNode("span",null,e.toDisplayString(v(0)),1),e.createElementVNode("span",null,e.toDisplayString(v(l.value)),1)])]),e.createElementVNode("div",eb,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,G=>e.createElementVNode("button",{key:G.id,class:e.normalizeClass(["tool-tab",{active:h.value===G.id}]),onClick:X=>h.value=G.id},[e.createVNode(e.unref(F.IonIcon),{icon:G.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(G.label),1)],10,tb)),64))]),e.createElementVNode("div",nb,[h.value==="trim"?(e.openBlock(),e.createElementBlock("div",ob,[L[7]||(L[7]=e.createElementVNode("h3",null,"Trim Video",-1)),L[8]||(L[8]=e.createElementVNode("p",null,"Click and drag on the timeline to set trim points",-1)),e.createElementVNode("div",ab,[e.createElementVNode("button",{class:"btn-trim",onClick:U},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Hr)},null,8,["icon"]),L[4]||(L[4]=e.createTextVNode(" Set Start ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:x},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Hr)},null,8,["icon"]),L[5]||(L[5]=e.createTextVNode(" Set End ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:T},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(In)},null,8,["icon"]),L[6]||(L[6]=e.createTextVNode(" Clear ",-1))])])])):h.value==="filters"?(e.openBlock(),e.createElementBlock("div",ib,[L[9]||(L[9]=e.createElementVNode("h3",null,"Filters",-1)),e.createElementVNode("div",rb,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(M,G=>e.createElementVNode("button",{key:G.id,class:e.normalizeClass(["filter-option",{active:g.value===G.id}]),onClick:X=>O(G.id)},e.toDisplayString(G.name),11,sb)),64))])])):h.value==="text"?(e.openBlock(),e.createElementBlock("div",lb,[L[10]||(L[10]=e.createElementVNode("h3",null,"Text Overlay",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":L[2]||(L[2]=G=>w.value=G),type:"text",placeholder:"Enter text...",class:"text-input"},null,512),[[e.vModelText,w.value]]),e.createElementVNode("button",{class:"btn-add-text",onClick:$},"Add Text")])):h.value==="transitions"?(e.openBlock(),e.createElementBlock("div",cb,[L[11]||(L[11]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",db,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(S,G=>e.createElementVNode("button",{key:G.id,class:"transition-option",onClick:X=>(G.id,void 0)},e.toDisplayString(G.name),9,ub)),64))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",mb,[e.createElementVNode("button",{class:"btn-cancel",onClick:L[3]||(L[3]=G=>_.$emit("cancel"))},"CANCEL"),e.createElementVNode("button",{class:"btn-save",onClick:P},"SAVE")])]))}}),fb=Ne(pb,[["__scopeId","data-v-b933f33b"]]),hb={class:"time-label"},vb=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",hb,e.toDisplayString(l.label),1),e.createElementVNode("div",{class:e.normalizeClass(["time-tick",{major:l.major}])},null,2)],4))),128))],4))}}),gb=Ne(vb,[["__scopeId","data-v-0ef9c910"]]),yb=["data-track-index"],wb={class:"track-header"},bb={class:"track-label"},kb={class:"track-controls"},xb=["data-testid","aria-label"],Eb=["data-testid","onMousedown","onClick"],Vb={class:"clip-content"},Sb={class:"clip-name"},Cb={key:0,class:"clip-thumbnail"},Nb=["src","alt"],_b=["onMousedown","aria-label"],Tb=["onMousedown","aria-label"],Mb=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 M=E.timelineEnd-E.timelineStart,S=E.timelineStart/t.duration*100,y=M/t.duration*100;return{left:`${S}%`,width:`${y}%`,backgroundColor:u(E)}}function u(E){const M=["#4A90E2","#7ED321","#F5A623","#BD10E0","#9013FE","#50E3C2","#B8E986","#F8E71C"],S=parseInt(E.id.replace(/\D/g,""))%M.length;return M[S]}function m(E){return E.label?E.label:E.url?(E.url.split("/").pop()||"Clip").split(".")[0]:`Clip ${E.id.slice(-4)}`}function p(E){i.value=E.id,o("clip-select",E.id)}function h(){r.value=!r.value}function g(E,M){if(c.value)return;s.value=!0;const S=M.clientX,y=E.timelineStart,f=R=>{if(!s.value)return;const N=R.clientX-S,v=parseFloat(l.value.width),C=N/(t.zoom*100)*(t.duration/v),U=Math.max(0,y+C);o("clip-move",E.id,U)},k=()=>{s.value=!1,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",k)};document.addEventListener("mousemove",f),document.addEventListener("mouseup",k)}function w(E,M,S){c.value=M;const y=S.clientX,f=E.sourceIn,k=E.sourceOut,R=v=>{if(!c.value)return;const C=v.clientX-y,U=parseFloat(l.value.width),x=C/(t.zoom*100)*(t.duration/U);if(c.value==="start"){const T=Math.max(0,f+x);o("clip-trim",E.id,T,k)}else{const T=Math.max(f+1,k+x);o("clip-trim",E.id,f,T)}},N=()=>{c.value=null,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",N)};document.addEventListener("mousemove",R),document.addEventListener("mouseup",N)}return(E,M)=>(e.openBlock(),e.createElementBlock("div",{class:"video-track","data-track-index":E.trackIndex},[e.createElementVNode("div",wb,[e.createElementVNode("span",bb,"Track "+e.toDisplayString(E.trackIndex+1),1),e.createElementVNode("div",kb,[E.clips.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"track-btn","data-testid":`btn-mute-track-${E.trackIndex}`,"aria-label":`${r.value?"Unmute":"Mute"} track ${E.trackIndex+1}`,onClick:h},[e.createVNode(e.unref(F.IonIcon),{icon:r.value?e.unref(Vu):e.unref(xu)},null,8,["icon"])],8,xb)):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,S=>(e.openBlock(),e.createElementBlock("div",{key:S.id,class:e.normalizeClass(["timeline-clip",{selected:S.id===i.value}]),style:e.normalizeStyle(d(S)),"data-testid":`clip-${S.id}`,onMousedown:y=>g(S,y),onClick:y=>p(S)},[e.createElementVNode("div",Vb,[e.createElementVNode("span",Sb,e.toDisplayString(m(S)),1),S.thumbnail?(e.openBlock(),e.createElementBlock("div",Cb,[e.createElementVNode("img",{src:S.thumbnail,alt:m(S)},null,8,Nb)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"trim-handle trim-start",onMousedown:e.withModifiers(y=>w(S,"start",y),["stop"]),"aria-label":`Trim start of ${m(S)}`},null,40,_b),e.createElementVNode("div",{class:"trim-handle trim-end",onMousedown:e.withModifiers(y=>w(S,"end",y),["stop"]),"aria-label":`Trim end of ${m(S)}`},null,40,Tb)],46,Eb))),128))],4)],8,yb))}}),Bb=Ne(Mb,[["__scopeId","data-v-48e480d2"]]),Fb={class:"video-timeline"},Ib={class:"timeline-tracks"},Rb=["aria-label","aria-valuenow","aria-valuemax"],$b={class:"timeline-controls"},Db={class:"zoom-level"},Ub=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 y=Math.max(0,...t.clips.map(f=>f.track||0));return Array(y+1).fill(null)}),d=e.computed(()=>`${t.currentTime/t.duration*100}%`);function u(y){return t.clips.filter(f=>(f.track||0)===y)}function m(y){const f=Math.floor(y/60),k=Math.floor(y%60);return`${f}:${k.toString().padStart(2,"0")}`}function p(y,f){o("clip-move",y,f)}function h(y,f,k){o("clip-trim",y,f,k)}function g(y){r.value=y}function w(){i.value=Math.min(i.value*1.2,5)}function E(){i.value=Math.max(i.value/1.2,.5)}function M(){s.value=!0;const y=k=>{if(!s.value||!c.value)return;const R=c.value.getBoundingClientRect(),C=Math.max(0,Math.min(k.clientX-R.left,R.width))/R.width*t.duration;o("seek",C)},f=()=>{s.value=!1,document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",f)};document.addEventListener("mousemove",y),document.addEventListener("mouseup",f)}function S(y){let f=t.currentTime;switch(y.key){case"ArrowLeft":f=Math.max(0,t.currentTime-1);break;case"ArrowRight":f=Math.min(t.duration,t.currentTime+1);break;case"Home":f=0;break;case"End":f=t.duration;break;default:return}y.preventDefault(),o("seek",f)}return e.onMounted(()=>{c.value=document.querySelector(".video-timeline")}),e.onUnmounted(()=>{}),(y,f)=>(e.openBlock(),e.createElementBlock("div",Fb,[e.createVNode(gb,{duration:y.duration,zoom:i.value},null,8,["duration","zoom"]),e.createElementVNode("div",Ib,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,R)=>(e.openBlock(),e.createBlock(Bb,{key:`track-${R}`,"data-testid":`track-${R}`,clips:u(R),"track-index":R,zoom:i.value,duration:y.duration,onClipMove:p,onClipTrim:h,onClipSelect:g},null,8,["data-testid","clips","track-index","zoom","duration"]))),128))]),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:d.value}),onMousedown:M,"data-testid":"playhead","aria-label":`Playhead at ${m(y.currentTime)}`,role:"slider","aria-valuenow":y.currentTime,"aria-valuemax":y.duration,tabindex:"0",onKeydown:S},null,44,Rb),e.createElementVNode("div",$b,[e.createElementVNode("button",{"data-testid":"btn-zoom-in","aria-label":"Zoom in",onClick:w},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Ai)},null,8,["icon"])]),e.createElementVNode("span",Db,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(F.IonIcon),{icon:e.unref(hu)},null,8,["icon"])])])]))}}),Ob=Ne(Ub,[["__scopeId","data-v-001df415"]]),Lb={class:"video-filters-panel"},Ab={class:"filter-controls"},zb=["for"],Pb={class:"filter-slider-group"},Wb=["id","onUpdate:modelValue","min","max","step","data-testid","aria-label","aria-valuenow","aria-valuemin","aria-valuemax","onInput"],jb={class:"filter-value"},Zb={class:"filter-actions"},Xb={key:0,class:"filter-presets"},Hb={class:"preset-list"},Gb=["data-testid","aria-label","onClick"],Jb=e.defineComponent({__name:"VideoFiltersPanel",emits:["filter-change"],setup(a,{emit:n}){const t=n,o=[{type:"brightness",label:"Brightness",min:0,max:200,step:1,default:100},{type:"contrast",label:"Contrast",min:0,max:200,step:1,default:100},{type:"saturation",label:"Saturation",min:0,max:200,step:1,default:100},{type:"hue",label:"Hue",min:-180,max:180,step:1,default:0},{type:"blur",label:"Blur",min:0,max:10,step:.5,default:0},{type:"sharpen",label:"Sharpen",min:0,max:10,step:.5,default:0},{type:"sepia",label:"Sepia",min:0,max:100,step:1,default:0},{type:"grayscale",label:"Grayscale",min:0,max:100,step:1,default:0}],i=e.reactive(o.reduce((p,h)=>(p[h.type]=h.default,p),{})),r=e.ref([{id:"vintage",name:"Vintage",values:{brightness:110,contrast:120,saturation:80,sepia:30}},{id:"noir",name:"Film Noir",values:{brightness:90,contrast:130,grayscale:100}},{id:"vibrant",name:"Vibrant",values:{brightness:110,contrast:110,saturation:140}},{id:"dreamy",name:"Dreamy",values:{brightness:120,blur:2,saturation:90}}]);function s(p,h){switch(p){case"brightness":case"contrast":case"saturation":case"sepia":case"grayscale":return`${h}%`;case"hue":return`${h}°`;case"blur":case"sharpen":return h.toFixed(1);default:return h.toString()}}function c(p){return["brightness","contrast","saturation","hue","blur","sharpen","sepia","grayscale"].includes(p)}function l(p){if(!c(p))return;const h={id:`filter-${p}`,filterId:p,params:{value:i[p]},intensity:1};t("filter-change",h)}function d(){o.forEach(p=>{i[p.type]=p.default,l(p.type)})}function u(){const p=prompt("Enter preset name:");if(!p)return;const h={id:`custom-${Date.now()}`,name:p,values:{...i}};r.value.push(h)}function m(p){Object.entries(p.values).forEach(([h,g])=>{i[h]=g,l(h)})}return(p,h)=>(e.openBlock(),e.createElementBlock("div",Lb,[h[3]||(h[3]=e.createElementVNode("h3",null,"Video Filters",-1)),e.createElementVNode("div",Ab,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,g=>e.createElementVNode("div",{key:g.type,class:"filter-control"},[e.createElementVNode("label",{for:`filter-${g.type}`},e.toDisplayString(g.label),9,zb),e.createElementVNode("div",Pb,[e.withDirectives(e.createElementVNode("input",{id:`filter-${g.type}`,"onUpdate:modelValue":w=>i[g.type]=w,type:"range",min:g.min,max:g.max,step:g.step,class:"filter-slider","data-testid":`filter-${g.type}`,"aria-label":`${g.label} filter`,"aria-valuenow":i[g.type],"aria-valuemin":g.min,"aria-valuemax":g.max,onInput:w=>l(g.type)},null,40,Wb),[[e.vModelText,i[g.type],void 0,{number:!0}]]),e.createElementVNode("span",jb,e.toDisplayString(s(g.type,i[g.type])),1)])])),64))]),e.createElementVNode("div",Zb,[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(F.IonIcon),{icon:e.unref(Un)},null,8,["icon"]),h[0]||(h[0]=e.createTextVNode(" Reset All Filters ",-1))]),e.createElementVNode("button",{class:"save-preset-btn","data-testid":"btn-save-preset","aria-label":"Save current filter settings as preset",onClick:u},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Pi)},null,8,["icon"]),h[1]||(h[1]=e.createTextVNode(" Save as Preset ",-1))])]),r.value.length>0?(e.openBlock(),e.createElementBlock("div",Xb,[h[2]||(h[2]=e.createElementVNode("h4",null,"Presets",-1)),e.createElementVNode("div",Hb,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,g=>(e.openBlock(),e.createElementBlock("button",{key:g.id,class:"preset-btn","data-testid":`preset-${g.id}`,"aria-label":`Apply ${g.name} preset`,onClick:w=>m(g)},e.toDisplayString(g.name),9,Gb))),128))])])):e.createCommentVNode("",!0)]))}}),Yb=Ne(Jb,[["__scopeId","data-v-5ad2ac63"]]),Kb={class:"video-text-panel"},qb={class:"text-input-group"},Qb={class:"text-options"},e2={class:"option-row"},t2={class:"option-row"},n2={class:"option-row"},o2={class:"option-row"},a2={class:"checkbox-label"},i2={class:"option-row"},r2={class:"text-overlay-list"},s2={key:0,class:"empty-state"},l2=["data-testid"],c2={class:"overlay-preview"},d2={class:"overlay-controls"},u2=["data-testid","aria-label","onClick"],m2=["data-testid","aria-label","onClick"],p2=["data-testid","aria-label","onClick"],f2=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",Kb,[u[17]||(u[17]=e.createElementVNode("h3",null,"Text Overlays",-1)),e.createElementVNode("div",qb,[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(F.IonIcon),{icon:e.unref(Ai)},null,8,["icon"]),u[7]||(u[7]=e.createTextVNode(" Add ",-1))])]),e.createElementVNode("div",Qb,[e.createElementVNode("div",e2,[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",t2,[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",n2,[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",o2,[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",a2,[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",i2,[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",r2,[u[16]||(u[16]=e.createElementVNode("h4",null,"Active Overlays",-1)),o.value.length===0?(e.openBlock(),e.createElementBlock("div",s2," No text overlays added yet ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(m,p)=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:"text-overlay-item","data-testid":`overlay-${p}`},[e.createElementVNode("div",c2,[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",d2,[e.createElementVNode("button",{class:"edit-btn","data-testid":`btn-edit-${p}`,"aria-label":`Edit overlay: ${m.text}`,onClick:h=>c(m)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Yd)},null,8,["icon"])],8,u2),e.createElementVNode("button",{class:"duplicate-btn","data-testid":`btn-duplicate-${p}`,"aria-label":`Duplicate overlay: ${m.text}`,onClick:h=>l(m)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Jd)},null,8,["icon"])],8,m2),e.createElementVNode("button",{class:"remove-btn","data-testid":`btn-remove-${p}`,"aria-label":`Remove overlay: ${m.text}`,onClick:h=>s(m.id)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(yu)},null,8,["icon"])],8,p2)])],8,l2))),128))])]))}}),h2=Ne(f2,[["__scopeId","data-v-4d240e1e"]]),v2={class:"video-tools-panel"},g2={class:"tool-tabs"},y2=["data-testid","aria-label","aria-selected","onClick"],w2={class:"tool-content"},b2={key:0,class:"trim-panel",role:"tabpanel","aria-label":"Trim controls"},k2={class:"trim-actions"},x2={key:3,class:"transitions-panel",role:"tabpanel","aria-label":"Transition controls"},E2={class:"transition-types"},V2=["data-testid","aria-label","onClick"],S2={class:"transition-preview"},C2=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:Js},{id:"filters",name:"Filters",icon:an},{id:"text",name:"Text",icon:el},{id:"transitions",name:"Transitions",icon:Yr}],t=[{id:"fade",name:"Fade",icon:oi},{id:"slide-left",name:"Slide Left",icon:Pd},{id:"slide-right",name:"Slide Right",icon:Wd},{id:"dissolve",name:"Dissolve",icon:oi},{id:"wipe",name:"Wipe",icon:Yr},{id:"zoom",name:"Zoom",icon:oi}];return(o,i)=>(e.openBlock(),e.createElementBlock("div",v2,[e.createElementVNode("div",g2,[(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(F.IonIcon),{icon:r.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(r.name),1)],10,y2)),64))]),e.createElementVNode("div",w2,[o.activeTool==="trim"?(e.openBlock(),e.createElementBlock("div",b2,[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",k2,[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(F.IonIcon),{icon:e.unref(Gr)},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(F.IonIcon),{icon:e.unref(Gr)},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(F.IonIcon),{icon:e.unref(In)},null,8,["icon"]),i[7]||(i[7]=e.createTextVNode(" Clear ",-1))])])])):e.createCommentVNode("",!0),o.activeTool==="filters"?(e.openBlock(),e.createBlock(Yb,{key:1,onFilterChange:i[3]||(i[3]=r=>o.$emit("filter-change",r))})):e.createCommentVNode("",!0),o.activeTool==="text"?(e.openBlock(),e.createBlock(h2,{key:2,onTextAdd:i[4]||(i[4]=r=>o.$emit("text-add",r))})):e.createCommentVNode("",!0),o.activeTool==="transitions"?(e.openBlock(),e.createElementBlock("div",x2,[i[10]||(i[10]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",E2,[(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",S2,[e.createVNode(e.unref(F.IonIcon),{icon:r.icon},null,8,["icon"])]),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],8,V2)),64))])])):e.createCommentVNode("",!0)])]))}}),N2=Ne(C2,[["__scopeId","data-v-fc135306"]]),_2={class:"video-export-panel"},T2={class:"export-presets"},M2=["value"],B2={key:0,class:"preset-details"},F2={class:"detail-row"},I2={class:"detail-row"},R2={class:"detail-row"},$2={class:"advanced-options"},D2={class:"options-content"},U2={class:"option-group"},O2={class:"option-group"},L2={class:"option-group"},A2=["disabled"],z2={key:1,class:"export-progress"},P2={class:"progress-message"},W2={class:"progress-bar"},j2=["aria-valuenow"],Z2={class:"progress-percentage"},X2=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",_2,[u[14]||(u[14]=e.createElementVNode("h3",null,"Export Video",-1)),e.createElementVNode("div",T2,[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,M2))),128))],512),[[e.vModelSelect,i.value]])]),s.value?(e.openBlock(),e.createElementBlock("div",B2,[e.createElementVNode("div",F2,[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",I2,[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",R2,[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",$2,[u[12]||(u[12]=e.createElementVNode("summary",null,"Advanced Options",-1)),e.createElementVNode("div",D2,[e.createElementVNode("div",U2,[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",O2,[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",L2,[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(F.IonSpinner),{key:0,name:"crescent"})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(po)},null,8,["icon"]),u[13]||(u[13]=e.createTextVNode(" Export Video ",-1))],64))],8,A2),d.isExporting?(e.openBlock(),e.createElementBlock("div",z2,[e.createElementVNode("div",P2,e.toDisplayString(c.value),1),e.createElementVNode("div",W2,[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,j2)]),e.createElementVNode("div",Z2,e.toDisplayString(d.exportProgress)+"% ",1)])):e.createCommentVNode("",!0)]))}}),H2=Ne(X2,[["__scopeId","data-v-5caf8fe6"]]),G2=["data-testid"],J2={class:"progress-header"},Y2={class:"file-info"},K2={class:"file-details"},q2={class:"file-name"},Q2={class:"file-meta"},ek={class:"file-size"},tk={key:0,class:"separator"},nk={key:1,class:"upload-speed"},ok={key:2,class:"separator"},ak={key:3,class:"time-remaining"},ik={class:"progress-actions"},rk={key:0,class:"status-icon completed","data-testid":"video-upload-status-completed"},sk={key:1,class:"status-icon error","data-testid":"video-upload-status-error"},lk={key:2,class:"status-icon processing","data-testid":"video-upload-status-processing",role:"status","aria-label":"Processing video"},ck=["aria-valuenow","aria-label"],dk={class:"progress-bar"},uk={class:"progress-percent"},mk={key:1,class:"error-message","data-testid":"video-upload-error"},pk={key:2,class:"thumbnail-preview","data-testid":"video-upload-thumbnail"},fk=["src","alt"],hk={key:0,class:"video-duration"},vk=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(()=>tl),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 p=n.upload.timeRemaining;if(p<60)return`${Math.round(p)}s`;const h=Math.floor(p/60);return h<60?`${h}m ${Math.round(p%60)}s`:`${Math.floor(h/60)}h ${h%60}m`}),c=e.computed(()=>{var p;return n.upload.status==="completed"&&((p=n.upload.media)!=null&&p.thumbnail_url)?n.upload.media.thumbnail_url:null}),l=e.computed(()=>{var p;return(p=n.upload.media)==null?void 0:p.duration});function d(p){if(p===0)return"0 B";const h=["B","KB","MB","GB","TB"],g=1024,w=Math.floor(Math.log(p)/Math.log(g));return`${(p/Math.pow(g,w)).toFixed(1)} ${h[w]}`}function u(p){if(p===0)return"0 B/s";const h=["B/s","KB/s","MB/s","GB/s"],g=1024,w=Math.floor(Math.log(p)/Math.log(g));return`${(p/Math.pow(g,w)).toFixed(1)} ${h[w]}`}function m(p){const h=Math.floor(p/3600),g=Math.floor(p%3600/60),w=Math.floor(p%60);return h>0?`${h}:${g.toString().padStart(2,"0")}:${w.toString().padStart(2,"0")}`:`${g}:${w.toString().padStart(2,"0")}`}return(p,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["upload-progress-item",t.value]),"data-testid":`video-upload-progress-${p.upload.id}`},[e.createElementVNode("div",J2,[e.createElementVNode("div",Y2,[e.createVNode(e.unref(F.IonIcon),{icon:o.value,class:"file-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("div",K2,[e.createElementVNode("h4",q2,e.toDisplayString(p.upload.filename),1),e.createElementVNode("p",Q2,[e.createElementVNode("span",ek,e.toDisplayString(d(p.upload.bytesTotal||0)),1),p.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",tk,"•")):e.createCommentVNode("",!0),p.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",nk,e.toDisplayString(u(p.upload.uploadSpeed||0)),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",ok,"•")):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",ak,e.toDisplayString(s.value)+" remaining ",1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",ik,[p.upload.status==="completed"?(e.openBlock(),e.createElementBlock("div",rk,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Hs)},null,8,["icon"])])):p.upload.status==="error"?(e.openBlock(),e.createElementBlock("div",sk,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(zd),"aria-hidden":"true"},null,8,["icon"])])):p.upload.status==="processing"?(e.openBlock(),e.createElementBlock("div",lk,[e.createVNode(e.unref(F.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),p.upload.status==="uploading"?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:3,fill:"clear",size:"small",onClick:h[0]||(h[0]=g=>p.$emit("cancel")),"data-testid":"btn-cancel-video-upload","aria-label":"Cancel upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(In),slot:"icon-only"},null,8,["icon"])]),_:1})):p.upload.status==="error"?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:4,fill:"clear",size:"small",onClick:h[1]||(h[1]=g=>p.$emit("retry")),"data-testid":"btn-retry-video-upload","aria-label":"Retry upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Un),slot:"icon-only"},null,8,["icon"])]),_:1})):p.upload.status==="completed"?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:5,fill:"clear",size:"small",onClick:h[2]||(h[2]=g=>p.$emit("remove")),"data-testid":"btn-remove-video-upload","aria-label":"Remove from list"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(In),slot:"icon-only"},null,8,["icon"])]),_:1})):e.createCommentVNode("",!0)])]),i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"progress-bar-container","data-testid":"video-upload-progress-bar",role:"progressbar","aria-valuenow":Math.round(r.value),"aria-valuemin":"0","aria-valuemax":"100","aria-label":p.upload.status==="processing"?"Processing progress":"Upload progress"},[e.createElementVNode("div",dk,[e.createElementVNode("div",{class:e.normalizeClass(["progress-fill",{indeterminate:p.upload.status==="processing"}]),style:e.normalizeStyle({width:r.value+"%"})},null,6)]),e.createElementVNode("span",uk,e.toDisplayString(Math.round(r.value))+"%",1)],8,ck)):e.createCommentVNode("",!0),p.upload.error?(e.openBlock(),e.createElementBlock("div",mk,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Su)},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(p.upload.error),1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",pk,[e.createElementVNode("img",{src:c.value,alt:p.upload.filename},null,8,fk),l.value?(e.openBlock(),e.createElementBlock("div",hk,e.toDisplayString(m(l.value)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,G2))}}),gk=Ne(vk,[["__scopeId","data-v-9eacbf91"]]),fi=4,yk=500,wk=new Set([408,425,429,500,502,503,504,520,521,522,523,524,525]);function La(a){return typeof a=="object"&&a!==null}function $s(a){return La(a)?typeof a.upload_url=="string"&&typeof a.upload_id=="string"&&typeof a.media_uuid=="string"&&typeof a.expires_at=="string":!1}function bk(a){if($s(a))return a;if(La(a)&&$s(a.data))return a.data;throw new Error("Invalid upload response from backend")}function Ds(a){return La(a)?typeof a.uuid=="string"&&typeof a.processing_status=="string":!1}function kk(a){if(Ds(a))return a;if(La(a)&&Ds(a.data))return a.data;throw new Error("Invalid media response from backend")}function zo(a){return a?{...a}:{}}function Us(a,n="PUT"){return typeof a.method=="string"&&a.method.trim()!==""?a.method.trim().toUpperCase():n}function xk(a){return a.resumable===!0?!0:/tusupload/i.test(a.upload_url)}function Ek(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 Vk(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} ${Ek(i)}`).join(",")}function Po(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 Sk(a,n){return a instanceof Error?a:new Error(n)}function Ck(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 Os(a){const n=Math.max(0,a-1),t=yk*Math.pow(2,n);return Math.min(5e3,t)}function Ls(a){return new Promise(n=>{window.setTimeout(n,a)})}async function As(a,n){for(let t=1;t<=fi;t+=1)try{const o=await n();if(o.ok||!wk.has(o.status)||t>=fi)return o;await Ls(Os(t))}catch(o){if(!Ck(o)||t>=fi)throw o;await Ls(Os(t))}throw new Error(`${a} failed after retry attempts`)}function Nk(a={}){const n=e.ref(new Map),t=e.ref(new Set),o=e.ref(null),i=new Map,r=new Map,s=e.computed(()=>t.value.size>0),c=e.computed(()=>Array.from(n.value.values())),l=e.computed(()=>{const x=Array.from(n.value.values());return x.length===0?0:x.reduce((I,O)=>I+O.progress,0)/x.length});function d(x){o.value=x}function u(){}async function m(x){var I;const T=x.filter(O=>p(O));if(T.length!==0&&((I=a.onFilesSelected)==null||I.call(a,T),a.autoUpload!==!1))for(const O of T)await h(O)}function p(x){return!(a.maxFileSize&&x.size>a.maxFileSize||a.allowedFormats&&a.allowedFormats.length>0&&!a.allowedFormats.includes(x.type))}async function h(x){var O,$,j;const T=U(x);if(n.value.has(T)){const P=n.value.get(T);if((P==null?void 0:P.status)==="uploading")return}const I={id:T,file:x,filename:x.name,progress:0,status:"pending",startedAt:new Date,bytesTotal:x.size,bytesUploaded:0};n.value.set(I.id,I),t.value.add(I.id);try{I.status="uploading",(O=a.onUploadStart)==null||O.call(a,I);const P=await g(x);a.resumable===!0||P.resumable===!0?await E(I,P):await w(I,P),I.status="processing",I.progress=100;const L=await k(P.media_uuid);I.status="completed",I.media=L,($=a.onUploadComplete)==null||$.call(a,L)}catch(P){if(I.status!=="cancelled"){const _=Sk(P,"Upload failed");I.status="error",I.error=_.message,(j=a.onUploadError)==null||j.call(a,_,I)}}finally{t.value.delete(I.id),i.delete(I.id),r.delete(I.id)}}async function g(x){if(!o.value)throw new Error("API client not configured");const T={collection:a.collection||"videos",filename:x.name,size:x.size,mime_type:x.type,...a.ownerUuid!==void 0?{ownerUuid:a.ownerUuid}:{},...a.ownerType!==void 0?{ownerType:a.ownerType}:{}},I=await o.value.post("/api/v1/video/upload",T);return bk(I)}async function w(x,T){const I=new XMLHttpRequest,O=Us(T),$=zo(T.headers);return new Promise((j,P)=>{I.upload.addEventListener("progress",_=>{var L;_.lengthComputable&&(Po(x,_.loaded),(L=a.onUploadProgress)==null||L.call(a,x))}),I.addEventListener("load",()=>{i.delete(x.id),I.status>=200&&I.status<300?j():P(new Error(`Upload failed with status ${I.status}`))}),I.addEventListener("error",()=>{i.delete(x.id),P(new Error("Upload failed"))}),I.addEventListener("abort",()=>{i.delete(x.id),P(new Error("Upload cancelled"))}),I.open(O,T.upload_url),Object.entries($).forEach(([_,L])=>{I.setRequestHeader(_,L)}),!Object.keys($).some(_=>_.toLowerCase()==="content-type")&&x.file.type&&I.setRequestHeader("Content-Type",x.file.type),i.set(x.id,I),I.send(x.file)})}async function E(x,T){var P;if(xk(T)){await M(x,T);return}const I=a.chunkSize||5*1024*1024,O=S(x.file,I),$=new AbortController;r.set(x.id,$);const j=await f(T.upload_id);j&&(O.forEach(_=>{_.end<=j.bytesUploaded&&(_.uploaded=!0)}),Po(x,j.bytesUploaded));for(const _ of O)_.uploaded||(await y(x,T,_,$),Po(x,_.end),(P=a.onUploadProgress)==null||P.call(a,x))}async function M(x,T){var G;const I=new AbortController;r.set(x.id,I);const O={...zo(T.headers),"Tus-Resumable":"1.0.0","Upload-Length":String(x.file.size),"Upload-Metadata":Vk(x,T)},$=await As("Resumable upload initialization",()=>fetch(T.upload_url,{method:"POST",headers:O,signal:I.signal}));if(!$.ok)throw new Error(`Failed to initialize resumable upload: ${$.status}`);const j=$.headers.get("Location");if(!j)throw new Error("Resumable upload endpoint did not return upload location");const P=new URL(j,T.upload_url).toString(),_=a.chunkSize||5*1024*1024;let L=0;for(;L<x.file.size;){const X=Math.min(L+_,x.file.size),ce=x.file.slice(L,X),Te={...zo(T.headers),"Tus-Resumable":"1.0.0","Upload-Offset":String(L),"Content-Type":"application/offset+octet-stream"},Re=await As("Resumable chunk upload",()=>fetch(P,{method:"PATCH",headers:Te,body:ce,signal:I.signal}));if(Re.status===409){const B=Number(Re.headers.get("Upload-Offset")??"-1");if(Number.isFinite(B)&&B>=0){L=B;continue}}if(!Re.ok)throw new Error(`Resumable chunk upload failed: ${Re.status}`);const ie=Number(Re.headers.get("Upload-Offset")??String(X));L=Number.isFinite(ie)&&ie>L?ie:X,Po(x,L),(G=a.onUploadProgress)==null||G.call(a,x)}}function S(x,T){const I=[];let O=0,$=0;for(;O<x.size;){const j=Math.min(O+T,x.size);I.push({start:O,end:j,blob:x.slice(O,j),index:$,uploaded:!1}),O=j,$++}return I}async function y(x,T,I,O){const $={...zo(T.headers),"Content-Range":`bytes ${I.start}-${I.end-1}/${x.file.size}`,"Content-Type":x.file.type||"application/octet-stream"},j=await fetch(T.upload_url,{method:Us(T),headers:$,body:I.blob,signal:O.signal});if(!j.ok)throw new Error(`Chunk upload failed: ${j.status}`);I.uploaded=!0}async function f(x){return null}async function k(x){if(!o.value)throw new Error("API client not configured");const T=60;let I=0;for(;I<T;){const O=await o.value.get(`/api/v1/video/${x}`),$=kk(O),j=String($.processing_status);if(j==="ready")return $;if(j==="failed"||j==="error")throw new Error("Video processing failed");await new Promise(P=>{window.setTimeout(P,5e3)}),I++}throw new Error("Video processing timeout")}function R(x){const T=n.value.get(x);if(!T)return;const I=i.get(x);I&&(I.abort(),i.delete(x));const O=r.get(x);O&&(O.abort(),r.delete(x)),T.status="cancelled",T.error="Upload cancelled",t.value.delete(x)}async function N(x){const T=n.value.get(x);T&&(T.status="pending",T.error="",T.progress=0,T.bytesUploaded=0,await h(T.file))}function v(x){n.value.delete(x),t.value.delete(x),i.delete(x),r.delete(x)}function C(){Array.from(n.value.entries()).forEach(([x,T])=>{T.status==="completed"&&n.value.delete(x)})}function U(x){return`${x.name}-${x.size}-${Date.now()}`}return{uploads:c,isUploading:s,totalProgress:l,openFilePicker:u,handleFileSelect:m,validateFile:p,startUpload:h,cancelUpload:R,retryUpload:N,removeUpload:v,clearCompleted:C,setApiClient:d}}const _k=["accept","multiple"],Tk={key:0,class:"upload-trigger","data-testid":"video-uploader-trigger"},Mk=["onKeydown"],Bk={key:1,class:"upload-list","data-testid":"video-upload-list"},Fk={class:"drag-content"},Ik=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:p}=Nk({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:f=>o("upload-start",f),onUploadProgress:f=>o("upload-progress",f),onUploadComplete:f=>o("upload-complete",f),onUploadError:(f,k)=>o("upload-error",f,k),onFilesSelected:f=>o("files-selected",f)});t.apiClient&&p(t.apiClient);const h=e.computed(()=>t.allowedFormats.join(",")),g=e.computed(()=>t.multiple||s.value.length===0);function w(){i.value&&i.value.click()}function E(f){const k=f.target,R=Array.from(k.files||[]);R.length>0&&(l(R),k.value="")}function M(f){var N;f.preventDefault(),r.value=!1;const R=Array.from(((N=f.dataTransfer)==null?void 0:N.files)||[]).filter(v=>v.type.startsWith("video/"));R.length>0&&l(R)}function S(f){var k;f.preventDefault(),(k=f.dataTransfer)!=null&&k.types.includes("Files")&&(r.value=!0)}function y(f){f.target.closest(".video-uploader")||(r.value=!1)}return e.onMounted(()=>{document.addEventListener("dragover",S),document.addEventListener("dragleave",y),document.addEventListener("drop",f=>f.preventDefault())}),e.onUnmounted(()=>{document.removeEventListener("dragover",S),document.removeEventListener("dragleave",y),document.removeEventListener("drop",f=>f.preventDefault())}),(f,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-uploader",{"is-uploading":e.unref(c)}]),"data-testid":"video-uploader"},[e.createElementVNode("input",{ref_key:"fileInputEl",ref:i,type:"file",accept:h.value,multiple:f.multiple,onChange:E,"data-testid":"video-uploader-input","aria-label":"Select video files to upload",hidden:""},null,40,_k),!e.unref(c)||g.value?(e.openBlock(),e.createElementBlock("div",Tk,[e.renderSlot(f.$slots,"trigger",{open:w},()=>[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:w,onKeydown:[e.withKeys(w,["enter"]),e.withKeys(e.withModifiers(w,["prevent"]),["space"])]},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(tl),class:"upload-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("h3",null,e.toDisplayString(f.label),1),e.createElementVNode("p",null,e.toDisplayString(f.description),1),e.createVNode(e.unref(F.IonButton),{size:"small","data-testid":"btn-select-video","aria-label":"Select video file"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Ai),slot:"start","aria-hidden":"true"},null,8,["icon"]),k[2]||(k[2]=e.createTextVNode(" Select Video ",-1))]),_:1})],40,Mk)],!0)])):e.createCommentVNode("",!0),e.unref(s).length>0?(e.openBlock(),e.createElementBlock("div",Bk,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),R=>(e.openBlock(),e.createBlock(gk,{key:R.id,upload:R,onCancel:N=>e.unref(d)(R.id),onRetry:N=>e.unref(u)(R.id),onRemove:N=>e.unref(m)(R.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:M,onDragover:k[0]||(k[0]=e.withModifiers(()=>{},["prevent"])),onDragleave:k[1]||(k[1]=R=>r.value=!1)},[e.createElementVNode("div",Fk,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(po),"aria-hidden":"true"},null,8,["icon"]),k[3]||(k[3]=e.createElementVNode("p",null,"Drop video files here",-1))])],32)):e.createCommentVNode("",!0)],2))}}),Rk=Ne(Ik,[["__scopeId","data-v-ea7587f7"]]),$k=["aria-valuenow","aria-valuemax","aria-label"],Dk={class:"progress-bar"},Uk={class:"time-display","data-testid":"video-time-display"},Ok={class:"current-time"},Lk={class:"duration"},Ak={class:"control-buttons"},zk={class:"controls-left"},Pk=["aria-label"],Wk={class:"controls-center"},jk={key:0,class:"volume-controls"},Zk=["aria-label"],Xk=["value"],Hk={class:"controls-right"},Gk={key:0,class:"quality-selector"},Jk=["aria-expanded"],Yk={class:"quality-label"},Kk={key:0,class:"quality-menu","data-testid":"video-quality-menu",role:"menu"},qk=["data-testid","aria-label","onClick"],Qk=["aria-label"],ex=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=F.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 f=0;f<t.buffered.length;f++){const k=t.buffered.start(f),R=t.buffered.end(f);if(t.currentTime>=k&&t.currentTime<=R)return{width:`${R/t.duration*100}%`}}return t.buffered.length>0?{width:`${t.buffered.end(0)/t.duration*100}%`}:{width:"0%"}}),p=e.computed(()=>t.muted||t.volume===0?Eu:t.volume<33?bu:t.volume<66?ku:wu);let h=null;function g(){i.value=!0,w()}function w(){h&&clearTimeout(h),t.playing&&!c&&(h=setTimeout(()=>{i.value=!1},3e3))}function E(f){if(!s.value||t.isLive)return;const k=s.value.getBoundingClientRect(),N=(f.clientX-k.left)/k.width*t.duration;o("seek",Math.max(0,Math.min(N,t.duration)))}function M(f){const k=f.target;o("setVolume",parseInt(k.value))}function S(f){o("selectQuality",f),r.value=!1}function y(f){if(!isFinite(f))return"0:00";const k=Math.floor(f/3600),R=Math.floor(f%3600/60),N=Math.floor(f%60);return k>0?`${k}:${R.toString().padStart(2,"0")}:${N.toString().padStart(2,"0")}`:`${R}:${N.toString().padStart(2,"0")}`}return e.onMounted(()=>{document.addEventListener("mousemove",g),w()}),e.onUnmounted(()=>{document.removeEventListener("mousemove",g),h&&clearTimeout(h)}),(f,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-controls",{"controls-visible":i.value}]),"data-testid":"video-controls"},[e.createElementVNode("div",{class:"progress-container","data-testid":"video-progress-bar",role:"slider","aria-valuenow":Math.round(f.currentTime),"aria-valuemin":"0","aria-valuemax":Math.round(f.duration),"aria-label":f.isLive?"Live stream":"Video progress",tabindex:"0",onClick:E},[e.createElementVNode("div",Dk,[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",Uk,[e.createElementVNode("span",Ok,e.toDisplayString(y(f.currentTime)),1),k[7]||(k[7]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",Lk,e.toDisplayString(f.isLive?"LIVE":y(f.duration)),1)])],8,$k),e.createElementVNode("div",Ak,[e.createElementVNode("div",zk,[e.createElementVNode("button",{class:"control-btn play-pause","data-testid":"btn-video-play-pause",onClick:k[0]||(k[0]=R=>f.$emit("play-pause")),"aria-label":f.playing?"Pause":"Play"},[e.createVNode(e.unref(F.IonIcon),{icon:f.playing?e.unref(au):e.unref(ru),"aria-hidden":"true"},null,8,["icon"])],8,Pk),f.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"control-btn skip-backward","data-testid":"btn-video-skip-backward",onClick:k[1]||(k[1]=R=>f.$emit("skip-backward")),"aria-label":"Skip backward 10 seconds"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(su),"aria-hidden":"true"},null,8,["icon"]),k[8]||(k[8]=e.createElementVNode("span",{class:"skip-label"},"10",-1))])),f.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn skip-forward","data-testid":"btn-video-skip-forward",onClick:k[2]||(k[2]=R=>f.$emit("skip-forward")),"aria-label":"Skip forward 10 seconds"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(du),"aria-hidden":"true"},null,8,["icon"]),k[9]||(k[9]=e.createElementVNode("span",{class:"skip-label"},"10",-1))]))]),e.createElementVNode("div",Wk,[e.unref(c)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",jk,[e.createElementVNode("button",{class:"control-btn mute-btn","data-testid":"btn-video-mute",onClick:k[3]||(k[3]=R=>f.$emit("toggleMute")),"aria-label":f.muted?"Unmute":"Mute"},[e.createVNode(e.unref(F.IonIcon),{icon:p.value,"aria-hidden":"true"},null,8,["icon"])],8,Zk),e.createElementVNode("input",{type:"range",class:"volume-slider","data-testid":"slider-video-volume",min:"0",max:"100",value:f.muted?0:f.volume,onInput:M,"aria-label":"Volume"},null,40,Xk)]))]),e.createElementVNode("div",Hk,[f.qualityLevels.length>1?(e.openBlock(),e.createElementBlock("div",Gk,[e.createElementVNode("button",{class:"control-btn quality-btn","data-testid":"btn-video-quality",onClick:k[4]||(k[4]=R=>r.value=!r.value),"aria-label":"Quality settings","aria-expanded":r.value},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(vu),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("span",Yk,e.toDisplayString(f.currentQuality),1)],8,Jk),r.value?(e.openBlock(),e.createElementBlock("div",Kk,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.qualityLevels,R=>(e.openBlock(),e.createElementBlock("button",{key:R.label,class:e.normalizeClass(["quality-option",{active:R.label===f.currentQuality}]),"data-testid":`btn-video-quality-${R.label}`,"aria-label":`Set quality to ${R.label}`,role:"menuitem",onClick:N=>S(R)},e.toDisplayString(R.label),11,qk))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!e.unref(c)&&l?(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn pip-btn","data-testid":"btn-video-pip",onClick:k[5]||(k[5]=R=>f.$emit("togglePiP")),"aria-label":"Picture in Picture"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(gu),"aria-hidden":"true"},null,8,["icon"])])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"control-btn fullscreen-btn","data-testid":"btn-video-fullscreen",onClick:k[6]||(k[6]=R=>f.$emit("toggleFullscreen")),"aria-label":f.fullscreen?"Exit fullscreen":"Enter fullscreen"},[e.createVNode(e.unref(F.IonIcon),{icon:f.fullscreen?e.unref(Gd):e.unref(Kd),"aria-hidden":"true"},null,8,["icon"])],8,Qk)])])],2))}}),tx=Ne(ex,[["__scopeId","data-v-2ae77c13"]]);function nx(a={}){var ce,Te,Re;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),p=e.ref(null),h=e.ref("idle"),g=e.ref(a.playbackUrl||((ce=a.media)==null?void 0:ce.playback_url)||((Te=a.media)==null?void 0:Te.url)||""),w=e.ref(null),E=e.ref(a.isLive||!1),M=e.ref(null),S=e.ref(null);function y(ie){S.value=ie}if((Re=a.media)!=null&&Re.token_expires_at){const ie=new Date(a.media.token_expires_at);w.value=Number.isNaN(ie.getTime())?null:ie}async function f(){var B;const ie=E.value?t.value:n.value;if(ie)try{await ie.play(),o.value=!0,h.value=E.value?"live":"playing",(B=a.onPlay)==null||B.call(a)}catch{p.value="Failed to play video",h.value="error"}}function k(){var B;const ie=E.value?t.value:n.value;ie&&(ie.pause(),o.value=!1,h.value="paused",(B=a.onPause)==null||B.call(a))}function R(){o.value?k():f()}function N(ie){const B=E.value?t.value:n.value;if(!B||E.value)return;const z=Number.isFinite(B.duration)?B.duration:ie;B.currentTime=Math.max(0,Math.min(ie,z)),i.value=B.currentTime}function v(ie=10){const B=n.value;!B||E.value||N(B.currentTime+ie)}function C(ie=10){const B=n.value;!B||E.value||N(B.currentTime-ie)}function U(){const ie=E.value?t.value:n.value;ie&&(ie.muted=!ie.muted,c.value=ie.muted)}function x(ie){const B=E.value?t.value:n.value;if(!B)return;const z=Math.max(0,Math.min(100,ie));B.volume=z/100,s.value=z,z>0&&B.muted&&(B.muted=!1,c.value=!1)}function T(ie){const B=n.value;!B||E.value||(B.playbackRate=ie,u.value=ie)}async function I(){const ie=document.querySelector(".video-player-container");if(ie)try{document.fullscreenElement?(await document.exitFullscreen(),l.value=!1):(await ie.requestFullscreen(),l.value=!0)}catch{}}async function O(){const ie=E.value?t.value:n.value;if(ie)try{document.pictureInPictureElement?await document.exitPictureInPicture():document.pictureInPictureEnabled&&await ie.requestPictureInPicture()}catch{}}async function $(){var B;p.value=null,h.value="loading",(B=a.media)!=null&&B.provider&&a.media.provider!=="local"&&await j();const ie=E.value?t.value:n.value;ie&&(ie.load(),await f())}async function j(){if(!(!S.value||!a.media))try{m.value=!0;const ie=await S.value.get(`/api/v1/video/${a.media.uuid}/playback`);g.value=ie.playback_url,w.value=new Date(ie.token_expires_at);const B=E.value?t.value:n.value;if(B&&B.src!==g.value){const z=!B.paused,de=B.currentTime;B.src=g.value,E.value||(B.currentTime=de),z&&await f()}}catch{p.value="Failed to refresh playback token",h.value="error"}finally{m.value=!1}}async function P(ie){if(t.value){if(t.value.canPlayType("application/vnd.apple.mpegurl")){t.value.src=ie;return}try{t.value.src=ie}catch{p.value="Live streaming not supported in this browser",h.value="error"}}}function _(){M.value&&(M.value.destroy(),M.value=null)}function L(){var B;const ie=E.value?t.value:n.value;ie&&(i.value=ie.currentTime,r.value=ie.duration,(B=a.onTimeUpdate)==null||B.call(a,ie.currentTime))}const G=e.computed(()=>{if(!d.value||d.value.length===0||!r.value)return 0;for(let ie=0;ie<d.value.length;ie++){const B=d.value.start(ie),z=d.value.end(ie);if(i.value>=B&&i.value<=z)return z/r.value*100}return 0});function X(){if(!w.value)return!1;const ie=new Date;return w.value.getTime()-ie.getTime()<5*60*1e3}return e.watch([n,t],([ie,B])=>{const z=E.value?B:ie;z&&(z.addEventListener("timeupdate",L),z.addEventListener("loadedmetadata",()=>{r.value=z.duration,h.value="ready"}),z.addEventListener("progress",()=>{d.value=z.buffered}),z.addEventListener("ended",()=>{var de;o.value=!1,h.value="ended",(de=a.onEnded)==null||de.call(a)}),z.addEventListener("error",de=>{var oe;h.value="error",(oe=a.onError)==null||oe.call(a,"Video playback error")}),z.volume=s.value/100,z.muted=c.value)}),e.onUnmounted(()=>{_();const ie=E.value?t.value:n.value;ie&&ie.removeEventListener("timeupdate",L)}),{videoEl:n,liveVideoEl:t,playing:o,currentTime:i,duration:r,volume:s,muted:c,isFullscreen:l,bufferedRanges:d,bufferedPercent:G,playbackRate:u,isLoading:m,error:p,status:h,currentPlaybackUrl:g,tokenExpiresAt:w,play:f,pause:k,togglePlayPause:R,seek:N,skipForward:v,skipBackward:C,toggleMute:U,setVolume:x,setPlaybackRate:T,toggleFullscreen:I,togglePiP:O,retry:$,refreshToken:j,setupLiveStream:P,setApiClient:y,shouldRefreshToken:X}}const ox=["src","poster","controls","autoplay","muted","loop","preload"],ax={key:1,ref:"livePlayerEl",class:"live-player"},ix=["controls","muted"],rx={key:0,class:"live-indicator","data-testid":"video-live-indicator","aria-label":"Live stream"},sx={key:2,class:"video-loading","data-testid":"video-loading",role:"status","aria-label":"Loading video"},lx={key:3,class:"video-error","data-testid":"video-error",role:"alert"},cx={key:5,class:"gesture-zones","data-testid":"video-gesture-zones"},dx=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:p,isLoading:h,error:g,status:w,currentPlaybackUrl:E,tokenExpiresAt:M,play:S,pause:y,seek:f,toggleMute:k,setVolume:R,toggleFullscreen:N,togglePlayPause:v,skipForward:C,skipBackward:U,retry:x,refreshToken:T,setApiClient:I,shouldRefreshToken:O,setupLiveStream:$}=nx({...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 j(){await T()}const P=e.computed(()=>{const oe=["video-player-container"];return t.className&&oe.push(t.className),m.value&&oe.push("fullscreen"),t.isLive&&oe.push("is-live"),s.value&&oe.push("is-playing"),h.value&&oe.push("is-loading"),oe}),_=e.computed(()=>{var oe,K;if(t.poster)return t.poster;if((oe=t.media)!=null&&oe.poster_url)return t.media.poster_url;if((K=t.media)!=null&&K.thumbnail_url)return t.media.thumbnail_url});function L(oe){const K=oe.target;o("loadedmetadata",{duration:K.duration,width:K.videoWidth,height:K.videoHeight})}function G(oe){const K=oe.target;c.value=K.currentTime,o("timeupdate",K.currentTime)}function X(){s.value=!0,o("play")}function ce(){s.value=!1,o("pause")}function Te(){s.value=!1,o("ended")}function Re(oe){const K=oe.target;let ee="Failed to load video";if(K.error)switch(K.error.code){case K.error.MEDIA_ERR_ABORTED:ee="Video playback aborted";break;case K.error.MEDIA_ERR_NETWORK:ee="Network error while loading video";break;case K.error.MEDIA_ERR_DECODE:ee="Video decoding error";break;case K.error.MEDIA_ERR_SRC_NOT_SUPPORTED:ee="Video format not supported";break}g.value=ee,o("error",ee)}function ie(oe){const K=oe.target;p.value=K.buffered,o("progress",K.buffered)}function B(){h.value=!0}function z(){h.value=!1}e.watch(()=>t.apiClient,oe=>{oe&&I(oe)},{immediate:!0}),e.watch(()=>t.playbackUrl,oe=>{typeof oe=="string"&&oe.length>0&&(E.value=oe)},{immediate:!0}),e.watch(()=>{var oe;return(oe=t.media)==null?void 0:oe.token_expires_at},oe=>{if(!oe){M.value=null;return}const K=new Date(oe);M.value=Number.isNaN(K.getTime())?null:K},{immediate:!0}),e.watch(()=>{var oe;return(oe=t.media)==null?void 0:oe.playback_url},async(oe,K)=>{if(t.playbackUrl||!oe||oe===K)return;const ee=i.value;if(!ee||t.isLive){E.value=oe;return}const ue=!ee.paused,ge=ee.currentTime;E.value=oe,await e.nextTick();try{ee.currentTime=ge}catch{}ue&&await S()},{immediate:!0});let de=null;return e.watch(()=>t.isLive,async oe=>{var ee;if(!oe)return;const K=t.playbackUrl||((ee=t.media)==null?void 0:ee.playback_url)||"";K&&await $(K)},{immediate:!0}),e.onMounted(()=>{var oe;(oe=t.media)!=null&&oe.provider&&t.media.provider!=="local"&&(de=setInterval(()=>{O()&&j()},3e4)),F.isPlatform("mobile")&&t.showCustomControls}),e.onUnmounted(()=>{de&&clearInterval(de)}),(oe,K)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-player-container",P.value]),"data-testid":"video-player"},[oe.isLive?(e.openBlock(),e.createElementBlock("div",ax,[e.createElementVNode("video",{ref_key:"liveVideoEl",ref:r,controls:oe.controls&&!oe.showCustomControls,autoplay:!0,muted:e.unref(u),onPlay:X,onPause:ce,onError:Re,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,ix),e.unref(w)==="live"?(e.openBlock(),e.createElementBlock("div",rx,[...K[3]||(K[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:_.value,controls:oe.controls&&!oe.showCustomControls,autoplay:oe.autoplay,muted:e.unref(u),loop:oe.loop,preload:oe.preload,onLoadedmetadata:L,onTimeupdate:G,onPlay:X,onPause:ce,onEnded:Te,onError:Re,onProgress:ie,onWaiting:B,onCanplay:z,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,ox)),e.unref(h)?(e.openBlock(),e.createElementBlock("div",sx,[e.createVNode(e.unref(F.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),e.unref(g)?(e.openBlock(),e.createElementBlock("div",lx,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(zi),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("p",null,e.toDisplayString(e.unref(g)),1),e.createVNode(e.unref(F.IonButton),{size:"small",onClick:e.unref(x),"data-testid":"btn-video-retry","aria-label":"Retry loading video"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Un),slot:"start","aria-hidden":"true"},null,8,["icon"]),K[4]||(K[4]=e.createTextVNode(" Retry ",-1))]),_:1},8,["onClick"])])):e.createCommentVNode("",!0),oe.showCustomControls&&!e.unref(g)?(e.openBlock(),e.createBlock(tx,{key:4,playing:e.unref(s),currentTime:e.unref(c),duration:e.unref(l),buffered:e.unref(p),volume:e.unref(d),muted:e.unref(u),fullscreen:e.unref(m),isLive:oe.isLive,onPlay:e.unref(S),onPause:e.unref(y),onSeek:e.unref(f),onToggleMute:e.unref(k),onSetVolume:e.unref(R),onToggleFullscreen:e.unref(N),class:"custom-controls"},null,8,["playing","currentTime","duration","buffered","volume","muted","fullscreen","isLive","onPlay","onPause","onSeek","onToggleMute","onSetVolume","onToggleFullscreen"])):e.createCommentVNode("",!0),oe.enableGestures&&!e.unref(g)?(e.openBlock(),e.createElementBlock("div",cx,[e.createElementVNode("div",{class:"gesture-left","data-testid":"video-gesture-skip-back","aria-label":"Double tap to skip backward",onDblclick:K[0]||(K[0]=(...ee)=>e.unref(U)&&e.unref(U)(...ee))},null,32),e.createElementVNode("div",{class:"gesture-center","data-testid":"video-gesture-play-pause","aria-label":"Tap to play or pause",onClick:K[1]||(K[1]=(...ee)=>e.unref(v)&&e.unref(v)(...ee))}),e.createElementVNode("div",{class:"gesture-right","data-testid":"video-gesture-skip-forward","aria-label":"Double tap to skip forward",onDblclick:K[2]||(K[2]=(...ee)=>e.unref(C)&&e.unref(C)(...ee))},null,32)])):e.createCommentVNode("",!0)],2))}}),sc=Ne(dx,[["__scopeId","data-v-b8db4951"]]),ux=va.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($,j){const P=a.value.get($);P&&a.value.set($,{...P,...j})}function m($){a.value.delete($)}function p($){return a.value.get($)}function h($){n.value.set($.id,$)}function g($,j){const P=n.value.get($);P&&n.value.set($,{...P,...j})}function w($,j){const P=n.value.get($);P&&n.value.set($,{...P,status:j.status,viewer_count:j.viewer_count,peak_viewers:j.peak_viewers})}function E($){n.value.delete($)}function M($){return n.value.get($)}function S($){return s.value.find(j=>j.media_uuid===$)}function y($){t.value.set($.id,$)}function f($,j){const P=t.value.get($);P&&t.value.set($,{...P,...j})}function k($){t.value.delete($)}function R($){return t.value.get($)}function N($){return Array.from(t.value.values()).filter(j=>j.media_uuid===$)}function v($){o.value=$}function C($){o.value&&(o.value={...o.value,...$})}function U(){o.value=null}function x($){i.value=$}function T(){a.value.clear(),n.value.clear(),t.value.clear(),o.value=null,i.value=!1}function I($){a.value.clear(),$.forEach(j=>{a.value.set(j.uuid,j)})}function O($){n.value.clear(),$.forEach(j=>{n.value.set(j.id,j)})}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:p,setLiveStream:h,updateLiveStream:g,updateLiveStreamStats:w,removeLiveStream:E,getLiveStream:M,getLiveStreamByMedia:S,addExportJob:y,updateExportJob:f,removeExportJob:k,getExportJob:R,getExportJobsByMedia:N,setEditorState:v,updateEditorState:C,clearEditorState:U,setProcessing:x,clearAll:T,loadVideos:I,loadLiveStreams:O}});let mn=null;function mx(a){mn=a}const Wo={post:async(a,n)=>{if(!mn)throw new Error("HTTP client not configured");return await mn(`/api/v1/video${a}`,{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}})},get:async a=>{if(!mn)throw new Error("HTTP client not configured");return await mn(`/api/v1/video${a}`)},delete:async a=>{if(!mn)throw new Error("HTTP client not configured");return await mn(`/api/v1/video${a}`,{method:"DELETE"})}};function jo(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 hi(a,n){return a instanceof Error&&a.message?a.message:n}function px(a){const n=ux(),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 p;const h=e.computed(()=>d.value?Math.floor((new Date().getTime()-d.value.getTime())/1e3):0),g=e.computed(()=>{var U;if(!((U=t.value)!=null&&U.playback_url))return null;const C=new URL(t.value.playback_url);return C.searchParams.set("live","true"),o.value&&C.searchParams.set("latency","low"),C.toString()}),w=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="live"}),E=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="idle"}),M=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="ended"});async function S(C={}){s.value=!0,l.value=null;try{const U=await Wo.post("/live",{title:r.value||C.title||"Live Stream",low_latency:C.low_latency??o.value,auto_record:C.auto_record??i.value,...C}),x=jo(U);return t.value=x,n.setLiveStream(x),R(),x}catch(U){throw l.value=hi(U,"Failed to create stream"),U instanceof Error?U:new Error(l.value)}finally{s.value=!1}}async function y(){if(!t.value)throw new Error("No active stream");c.value=!0,l.value=null;try{const C=await Wo.post(`/live/${t.value.id}/end`),U=jo(C,t.value);return t.value=U,n.setLiveStream(U),N(),U}catch(C){throw l.value=hi(C,"Failed to end stream"),C instanceof Error?C:new Error(l.value)}finally{c.value=!1}}async function f(){if(t.value)try{const C=await Wo.get(`/live/${t.value.id}`),U=jo(C,t.value);u.value=U.viewer_count,m.value=U.peak_viewers,t.value=U;const x={status:U.status,viewer_count:U.viewer_count,peak_viewers:U.peak_viewers};U.started_at&&(x.started_at=U.started_at),U.ended_at&&(x.ended_at=U.ended_at),n.updateLiveStreamStats(U.id,x),U.status==="live"&&!d.value&&U.started_at&&(d.value=new Date(U.started_at)),U.status==="ended"&&N()}catch{}}async function k(C){try{const U=await Wo.get(`/live/${C}`),x=jo(U,t.value);return{rtmp_url:x.rtmp_url,stream_key:x.stream_key,playback_url:x.playback_url||""}}catch(U){throw l.value=hi(U,"Failed to get stream credentials"),U instanceof Error?U:new Error(l.value)}}function R(C=5e3){N(),p=window.setInterval(()=>{f()},C)}function N(){p!==void 0&&(clearInterval(p),p=void 0)}async function v(){if(!a)return;const C=n.getLiveStreamByMedia(a);C&&(t.value=C,u.value=C.viewer_count,m.value=C.peak_viewers,C.status==="live"&&(R(),C.started_at&&(d.value=new Date(C.started_at))))}return a&&v(),e.onUnmounted(()=>{N()}),{stream:t,lowLatency:o,autoRecord:i,streamTitle:r,isCreating:s,isEnding:c,error:l,streamDuration:h,viewerCount:u,peakViewers:m,playbackUrl:g,isLive:w,isIdle:E,hasEnded:M,createStream:S,endStream:y,refreshStreamStatus:f,getStreamCredentials:k,startStatusPolling:R,stopStatusPolling:N}}const fx={class:"stream-status"},hx={class:"flex items-center justify-between"},vx={class:"flex items-center gap-3"},gx={key:0,class:"flex items-center"},yx={key:2,class:"text-sm text-gray-600"},wx={key:0,class:"flex items-center gap-2"},bx={class:"text-sm font-medium text-gray-700"},kx={key:0,class:"text-xs text-gray-500"},xx=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",fx,[e.createElementVNode("div",hx,[e.createElementVNode("div",vx,[r.status==="live"?(e.openBlock(),e.createElementBlock("div",gx,[...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",yx,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)]),r.viewers!==void 0?(e.openBlock(),e.createElementBlock("div",wx,[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",bx,e.toDisplayString(r.viewers)+" "+e.toDisplayString(r.viewers===1?"viewer":"viewers"),1),r.peakViewers>r.viewers?(e.openBlock(),e.createElementBlock("span",kx," (Peak: "+e.toDisplayString(r.peakViewers)+") ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),Ex=Ne(xx,[["__scopeId","data-v-1d09c19f"]]),Vx={class:"stream-credentials"},Sx={class:"space-y-3"},Cx={class:"credential-field"},Nx={class:"flex gap-2"},_x=["value"],Tx={class:"credential-field"},Mx={class:"flex gap-2"},Bx=["value","type"],Fx=["aria-label"],Ix={key:0,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Rx={key:1,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$x={key:0,class:"mt-2 text-sm text-green-600"},Dx=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",Vx,[u[8]||(u[8]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Stream Settings",-1)),e.createElementVNode("div",Sx,[e.createElementVNode("div",Cx,[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",Nx,[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,_x),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",Tx,[u[7]||(u[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 mb-1"},"Stream Key",-1)),e.createElementVNode("div",Mx,[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,Bx),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",Rx,[...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",Ix,[...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,Fx),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",$x,e.toDisplayString(r.value)+" copied to clipboard! ",1)):e.createCommentVNode("",!0)]),_:1})]))}}),Ux=Ne(Dx,[["__scopeId","data-v-306d92f6"]]),Ox={class:"live-stream-manager","data-testid":"live-stream-manager"},Lx={key:0,class:"stream-setup"},Ax={class:"space-y-4"},zx={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},Px={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},Wx=["disabled"],jx={key:0},Zx={key:1,class:"flex items-center justify-center"},Xx={key:1,class:"stream-active space-y-6"},Hx={key:1,class:"video-preview"},Gx={key:2,class:"analytics-panel"},Jx={class:"grid grid-cols-2 gap-4"},Yx={class:"bg-gray-50 p-3 rounded"},Kx={class:"text-2xl font-bold text-gray-900"},qx={class:"bg-gray-50 p-3 rounded"},Qx={class:"text-2xl font-bold text-gray-900"},e4={class:"stream-controls flex gap-3"},t4=["disabled"],n4={key:0},o4={key:1},a4={key:2,class:"mt-4 p-4 bg-red-50 border border-red-200 rounded-lg"},i4={class:"text-red-600 text-sm"},r4=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&&mx(t.httpClient);const{stream:i,lowLatency:r,autoRecord:s,streamTitle:c,isCreating:l,isEnding:d,error:u,createStream:m,endStream:p,streamDuration:h,playbackUrl:g,refreshStreamStatus:w}=px(t.mediaUuid),E=e.ref(!1);async function M(){var R;try{const N=await m({title:c.value,low_latency:r.value,auto_record:s.value});o("stream-created",N),(R=t.onStreamCreated)==null||R.call(t,N)}catch(N){o("error",N)}}async function S(){var R;try{const N=await p();o("stream-ended",N),(R=t.onStreamEnded)==null||R.call(t,N)}catch(N){o("error",N)}}function y(){i.value=null,c.value="",E.value=!1,u.value=null}async function f(R,N){try{await navigator.clipboard.writeText(R)}catch{}}let k;return e.onMounted(()=>{var R;((R=i.value)==null?void 0:R.status)==="live"&&(k=window.setInterval(()=>{w()},5e3))}),e.onUnmounted(()=>{k&&clearInterval(k)}),(R,N)=>(e.openBlock(),e.createElementBlock("div",Ox,[e.unref(i)?(e.openBlock(),e.createElementBlock("div",Xx,[e.createVNode(Ex,{status:e.unref(i).status,viewers:e.unref(i).viewer_count,duration:e.unref(h),"peak-viewers":e.unref(i).peak_viewers},null,8,["status","viewers","duration","peak-viewers"]),e.unref(i).status==="idle"?(e.openBlock(),e.createBlock(Ux,{key:0,"rtmp-url":e.unref(i).rtmp_url,"stream-key":e.unref(i).stream_key,onCopy:f},null,8,["rtmp-url","stream-key"])):e.createCommentVNode("",!0),e.unref(g)?(e.openBlock(),e.createElementBlock("div",Hx,[N[9]||(N[9]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-2"},"Live Preview",-1)),e.createVNode(sc,{"playback-url":e.unref(g),"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",Gx,[N[12]||(N[12]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Live Analytics",-1)),e.createElementVNode("div",Jx,[e.createElementVNode("div",Yx,[e.createElementVNode("div",Kx,e.toDisplayString(e.unref(i).viewer_count),1),N[10]||(N[10]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Current Viewers",-1))]),e.createElementVNode("div",qx,[e.createElementVNode("div",Qx,e.toDisplayString(e.unref(i).peak_viewers),1),N[11]||(N[11]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Peak Viewers",-1))])])])):e.createCommentVNode("",!0),e.createElementVNode("div",e4,[e.unref(i).status==="idle"?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:N[3]||(N[3]=v=>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:S,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",o4,"Ending...")):(e.openBlock(),e.createElementBlock("span",n4,"End Stream"))],8,t4)):e.createCommentVNode("",!0),e.unref(i).status==="ended"?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:y,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",Lx,[N[8]||(N[8]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Start Live Stream",-1)),e.createElementVNode("div",Ax,[e.createElementVNode("div",zx,[N[4]||(N[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":N[0]||(N[0]=v=>e.isRef(r)?r.value=v:null),type:"checkbox",class:"h-5 w-5 text-blue-600 rounded focus:ring-blue-500","aria-label":"Enable low latency mode"},null,512),[[e.vModelCheckbox,e.unref(r)]])]),e.createElementVNode("div",Px,[N[5]||(N[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":N[1]||(N[1]=v=>e.isRef(s)?s.value=v:null),type:"checkbox",class:"h-5 w-5 text-blue-600 rounded focus:ring-blue-500","aria-label":"Enable auto-recording"},null,512),[[e.vModelCheckbox,e.unref(s)]])]),e.createElementVNode("div",null,[N[6]||(N[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":N[2]||(N[2]=v=>e.isRef(c)?c.value=v:null),type:"text",class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",placeholder:"My Live Stream"},null,512),[[e.vModelText,e.unref(c)]])]),e.createElementVNode("button",{onClick:M,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",Zx,[...N[7]||(N[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",jx,"Create Stream"))],8,Wx)])])),e.unref(u)?(e.openBlock(),e.createElementBlock("div",a4,[e.createElementVNode("p",i4,e.toDisplayString(e.unref(u)),1)])):e.createCommentVNode("",!0)]))}}),s4=Ne(r4,[["__scopeId","data-v-26291f6f"]]),l4={class:"album-tree-node"},c4=["data-album-id","draggable","aria-selected","aria-expanded"],d4={key:1,class:"album-node__chevron-placeholder"},u4={key:2,"data-testid":"media-count",class:"album-node__count"},m4={key:0,class:"album-tree-node__children",role:"group"},p4=16,f4=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*p4}px`),d=e.computed(()=>{var y;return((y=t.dragState)==null?void 0:y.draggedAlbumId)===t.album.id}),u=e.computed(()=>{var y;return((y=t.dragState)==null?void 0:y.dropTargetId)===t.album.id}),m=e.computed(()=>{var y;return(y=t.dragState)!=null&&y.draggedAlbumId?t.dragState.draggedAlbumId===t.album.id:!1}),p=e.computed(()=>{const y=["album-node"];return r.value&&y.push("album-node--selected"),s.value&&y.push("album-node--focused"),t.compact&&y.push("album-node--compact"),d.value&&y.push("album-node--dragging"),u.value&&y.push("album-node--drop-target"),m.value&&y.push("album-node--invalid-drop"),y});function h(){o("select",t.album)}function g(y){y.stopPropagation(),o("toggle-expand",t.album.id)}function w(y){t.draggable&&(y.dataTransfer&&(y.dataTransfer.setData("text/plain",t.album.id),y.dataTransfer.effectAllowed="move"),o("drag-start",t.album.id))}function E(y){t.draggable&&(y.preventDefault(),y.dataTransfer&&(y.dataTransfer.dropEffect="move"),o("drag-over",t.album.id))}function M(){o("drag-leave",t.album.id)}function S(y){t.draggable&&(y.preventDefault(),o("drop",t.album.id))}return(y,f)=>{var R;const k=e.resolveComponent("AlbumTreeNode",!0);return e.openBlock(),e.createElementBlock("div",l4,[e.createElementVNode("div",{"data-testid":"album-node","data-album-id":y.album.id,class:e.normalizeClass(p.value),style:e.normalizeStyle({paddingLeft:l.value}),draggable:y.draggable,role:"treeitem","aria-selected":r.value,"aria-expanded":c.value?i.value:void 0,onDragstart:w,onDragover:E,onDragleave:M,onDrop:S},[c.value?(e.openBlock(),e.createElementBlock("button",{key:0,"data-testid":"expand-chevron",class:"album-node__chevron",type:"button","aria-label":"Toggle expand",onClick:g},[e.createVNode(e.unref(F.IonIcon),{icon:i.value?e.unref(Zd):e.unref(Xd)},null,8,["icon"])])):(e.openBlock(),e.createElementBlock("span",d4)),e.createVNode(e.unref(F.IonIcon),{icon:e.unref(eu),class:"album-node__icon"},null,8,["icon"]),e.createElementVNode("span",{"data-testid":"album-name",class:"album-node__name",onClick:h},e.toDisplayString(y.album.name),1),y.showMediaCount?(e.openBlock(),e.createElementBlock("span",u4,e.toDisplayString(y.album.media_count),1)):e.createCommentVNode("",!0)],46,c4),i.value&&((R=y.album.children)!=null&&R.length)?(e.openBlock(),e.createElementBlock("div",m4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.album.children,N=>(e.openBlock(),e.createBlock(k,{key:N.id,album:N,depth:y.depth+1,"selected-id":y.selectedId,"expanded-ids":y.expandedIds,"focused-id":y.focusedId,draggable:y.draggable,"show-media-count":y.showMediaCount,compact:y.compact,onSelect:f[0]||(f[0]=v=>o("select",v)),onToggleExpand:f[1]||(f[1]=v=>o("toggle-expand",v))},null,8,["album","depth","selected-id","expanded-ids","focused-id","draggable","show-media-count","compact"]))),128))])):e.createCommentVNode("",!0)])}}}),h4=Ne(f4,[["__scopeId","data-v-76be65a6"]]),Aa=va.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 f=new Map;return a.value.forEach(k=>f.set(k.id,k)),f}),s=e.computed(()=>a.value.filter(f=>f.parent_id===null));async function c(f){t.value=!0,o.value=null;try{const k=(f==null?void 0:f.parent_id)??null,R=k?`/api/v1/albums?parent_id=${k}`:"/api/v1/albums?parent_id=null",N=await fetch(R);if(!N.ok)throw new Error("Failed to fetch albums");((await N.json()).data||[]).forEach(U=>{const x=a.value.findIndex(T=>T.id===U.id);x>=0?a.value[x]=U:a.value.push(U)}),k!==null&&i.value.add(k)}catch(k){o.value=k instanceof Error?k.message:"Unknown error"}finally{t.value=!1}}async function l(f){t.value=!0,o.value=null;try{const k=await fetch(`/api/v1/albums/${f}`);if(!k.ok)throw new Error("Failed to fetch album");const N=(await k.json()).data,v=a.value.findIndex(C=>C.id===N.id);return v>=0?a.value[v]=N:a.value.push(N),N}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function d(f){t.value=!0,o.value=null;try{const k=await fetch(`/api/v1/albums/${f}/media`);if(!k.ok)throw new Error("Failed to fetch album media");const N=(await k.json()).data||[];return n.value.set(f,N),N}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function u(f,k){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${f}/media/reorder`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({media_ids:k})})).ok)throw new Error("Failed to reorder album media");const N=n.value.get(f)||[],v=k.map(C=>N.find(U=>U.uuid===C)).filter(C=>C!==void 0);n.value.set(f,v)}catch(R){throw o.value=R instanceof Error?R.message:"Unknown error",R}finally{t.value=!1}}async function m(f){t.value=!0,o.value=null;try{const k=await fetch("/api/v1/albums",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(f)});if(!k.ok)throw new Error("Failed to create album");const N=(await k.json()).data;return a.value.push(N),N}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function p(f,k){t.value=!0,o.value=null;try{const R=await fetch(`/api/v1/albums/${f}`,{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(k)});if(!R.ok)throw new Error("Failed to update album");const v=(await R.json()).data,C=a.value.findIndex(U=>U.id===v.id);return C>=0&&(a.value[C]=v),v}catch(R){throw o.value=R instanceof Error?R.message:"Unknown error",R}finally{t.value=!1}}async function h(f){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${f}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"})).ok)throw new Error("Failed to delete album");const R=a.value.findIndex(N=>N.id===f);R>=0&&a.value.splice(R,1),n.value.delete(f)}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}function g(f){return a.value.filter(k=>k.parent_id===f)}function w(f){return i.value.has(f)}function E(f){return n.value.get(f)||[]}async function M(f,k){const R=a.value.findIndex(v=>v.id===f);if(R<0)return;const N=a.value[R];a.value[R]={...N,parent_id:k};try{if(!(await fetch(`/api/v1/albums/${f}/move`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({parent_id:k})})).ok)throw new Error("Failed to move album")}catch(v){throw a.value[R]=N,o.value=v instanceof Error?v.message:"Unknown error",v instanceof Error?v:new Error("Failed to move album")}}function S(f){a.value=f}function y(){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:p,deleteAlbum:h,getChildrenOf:g,childrenLoaded:w,getAlbumMedia:E,moveAlbum:M,setAlbums:S,reset:y}});function lc(){const a=Aa(),{albums:n,albumsById:t,rootAlbums:o,loading:i,error:r}=va.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 cc(a){const{childrenByParentId:n,onMove:t}=a,o=e.ref({isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null});function i(m,p){if(m===p)return!0;const h=new Set,g=[m];for(;g.length>0;){const w=g.shift();if(!w||h.has(w))continue;h.add(w);const E=n.get(w)||[];for(const M of E){if(M===p)return!0;g.push(M)}}return!1}function r(m,p){return m===p?!1:p===null?!0:!i(m,p)}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:p}=o.value;if(!m){c();return}if(!r(m,p)){c();return}try{await t(m,p)}finally{c()}}return{dragState:o,isDescendant:i,canDropOn:r,startDrag:s,endDrag:c,setDropTarget:l,clearDropTarget:d,executeDrop:u}}const v4={key:0,"data-testid":"loading-spinner",class:"album-tree__loading"},g4={key:1,"data-testid":"error-state",class:"album-tree__error"},y4={key:2,"data-testid":"empty-state",class:"album-tree__empty"},w4={key:3,class:"album-tree__content",role:"group"},b4=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:p,getChildrenOf:h,childrenLoaded:g,moveAlbum:w}=lc(),E=e.shallowRef(new Set(o.expandedIds)),M=e.ref(o.modelValue??null),S=e.ref(null),y=new Map,f=new Map;function k(B){y.clear(),f.clear();for(const z of B){y.set(z.id,z);const de=z.parent_id??null,oe=f.get(de)??[];oe.push(z.id),f.set(de,oe)}}e.watch(l,B=>{k(B)},{immediate:!0});const{dragState:R,canDropOn:N,startDrag:v,endDrag:C,setDropTarget:U,clearDropTarget:x,executeDrop:T}=cc({childrenByParentId:f,onMove:async(B,z)=>{await w(B,z),i("album-moved",{albumId:B,newParentId:z})}});e.watch(()=>o.modelValue,B=>{M.value=B??null}),e.watch(()=>o.expandedIds,B=>{E.value=new Set(B)}),e.onMounted(async()=>{await p({parent_id:null})});const I=e.computed(()=>d.value.map(B=>O(B)));function O(B){if(!E.value.has(B.id))return B;const z=h(B.id);return{...B,children:z.map(de=>O(de))}}const $=e.computed(()=>{const B=[];function z(de){var oe;for(const K of de)B.push(K),E.value.has(K.id)&&((oe=K.children)!=null&&oe.length)&&z(K.children)}return z(I.value),B});function j(B){var oe;if(!$.value.length)return;const z=S.value?$.value.findIndex(K=>K.id===S.value):-1,de=z>=0?$.value[z]:null;switch(B.key){case"ArrowDown":B.preventDefault(),z<$.value.length-1?S.value=$.value[z+1].id:z===-1&&$.value.length>0&&(S.value=$.value[0].id);break;case"ArrowUp":B.preventDefault(),z>0&&(S.value=$.value[z-1].id);break;case"ArrowRight":B.preventDefault(),de&&(de.children_count>0&&!E.value.has(de.id)?P(de.id):E.value.has(de.id)&&((oe=de.children)!=null&&oe.length)&&(S.value=de.children[0].id));break;case"ArrowLeft":B.preventDefault(),de&&(E.value.has(de.id)&&de.children_count>0?P(de.id):de.parent_id&&(S.value=de.parent_id));break;case"Enter":case" ":B.preventDefault(),de&&_(de);break;case"Home":B.preventDefault(),$.value.length>0&&(S.value=$.value[0].id);break;case"End":B.preventDefault(),$.value.length>0&&(S.value=$.value[$.value.length-1].id);break}}async function P(B){E.value.has(B)?(E.value.delete(B),i("album-collapsed",B)):(g(B)||await p({parent_id:B}),E.value.add(B),i("album-expanded",B))}function _(B){M.value=B.id,i("update:modelValue",B.id),i("album-selected",B)}function L(B){o.draggable&&v(B)}function G(B){var de;if(!o.draggable)return;const z=(de=R.value)==null?void 0:de.draggedAlbumId;z&&(U(B),N(z,B))}function X(){o.draggable&&x()}async function ce(B){o.draggable&&(U(B),await T())}function Te(B){o.draggable&&(B.preventDefault(),U(null))}async function Re(B){o.draggable&&(B.preventDefault(),U(null),await T())}function ie(){C()}return n({focusedId:S}),(B,z)=>(e.openBlock(),e.createElementBlock("div",{class:"album-tree","data-testid":"album-tree",tabindex:"0",role:"tree","aria-label":"Album tree",onKeydown:j,onDragover:Te,onDrop:Re,onDragend:ie},[e.unref(u)?(e.openBlock(),e.createElementBlock("div",v4,[e.createVNode(e.unref(F.IonSpinner),{name:"crescent"})])):e.unref(m)?(e.openBlock(),e.createElementBlock("div",g4,[e.createElementVNode("p",null,e.toDisplayString(e.unref(m)),1)])):e.unref(d).length?(e.openBlock(),e.createElementBlock("div",w4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,de=>(e.openBlock(),e.createBlock(h4,{key:de.id,album:de,depth:0,"selected-id":M.value,"expanded-ids":E.value,"focused-id":S.value,draggable:r.value,"drag-state":r.value?e.unref(R):null,"show-media-count":s.value,compact:c.value,onSelect:_,onToggleExpand:P,onDragStart:L,onDragOver:G,onDragLeave:X,onDrop:ce},null,8,["album","selected-id","expanded-ids","focused-id","draggable","drag-state","show-media-count","compact"]))),128))])):(e.openBlock(),e.createElementBlock("div",y4,[z[0]||(z[0]=e.createElementVNode("p",null,"No albums yet",-1)),e.renderSlot(B.$slots,"empty-action",{},void 0,!0)]))],32))}}),dc=Ne(b4,[["__scopeId","data-v-ae3dea7a"]]),k4=300,x4=e.defineComponent({__name:"AlbumBrowser",props:{isOpen:{type:Boolean},selectedAlbumId:{default:null},title:{default:"Select Album"},confirmText:{default:"Select"}},emits:["close","confirm"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(t.selectedAlbumId??null),r=e.ref(null),s=e.ref(0),c=e.ref(null);e.watch(()=>t.selectedAlbumId,h=>{i.value=h??null});const l=e.computed(()=>r.value!==null);function d(h){const g=Date.now();if(c.value===h.id&&g-s.value<k4){o("confirm",h);return}s.value=g,c.value=h.id,i.value=h.id,r.value=h}function u(){r.value&&o("confirm",r.value)}function m(){o("close")}function p(){o("close")}return(h,g)=>(e.openBlock(),e.createBlock(e.unref(F.IonModal),{"is-open":h.isOpen,class:"album-browser-modal",onDidDismiss:p},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.title),1)]),_:1}),e.createVNode(e.unref(F.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{"data-testid":"cancel-button",onClick:m},{default:e.withCtx(()=>[...g[1]||(g[1]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(F.IonContent),{class:"album-browser-content"},{default:e.withCtx(()=>[e.createVNode(dc,{modelValue:i.value,"onUpdate:modelValue":g[0]||(g[0]=w=>i.value=w),draggable:!1,"show-media-count":!0,compact:!1,onAlbumSelected:d},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(F.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{fill:"clear",onClick:m},{default:e.withCtx(()=>[...g[2]||(g[2]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(F.IonButton),{"data-testid":"confirm-button",fill:"solid",color:"primary",disabled:!l.value,onClick:u},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.confirmText),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"]))}}),uc=Ne(x4,[["__scopeId","data-v-21676ec1"]]),E4={class:"ion-padding-start text-sm"},V4={class:"ion-padding-start text-sm"},S4={key:1},C4={key:1,class:"album-manager-inline rounded-lg border border-gray-200 bg-white p-4"},N4={class:"flex items-center justify-between gap-3 pb-3"},_4={class:"text-base font-semibold text-gray-900"},T4={class:"ion-padding-start text-sm"},M4={class:"ion-padding-start text-sm"},B4={class:"flex justify-between pt-2"},F4={key:1},qn=255,Qn=1e3,I4=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=Aa(),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),p=e.ref(null),h=e.ref(!1),g=e.ref(!1),w=e.computed(()=>d.value.name?l.value.name.trim()?l.value.name.length>qn?`Name must be ${qn} characters or less`:null:"Name is required":null),E=e.computed(()=>d.value.description&&l.value.description.length>Qn?`Description must be ${Qn} characters or less`:null),M=e.computed(()=>{const j=l.value.name.trim().length>0,P=l.value.name.length<=qn,_=l.value.description.length<=Qn;return j&&P&&_&&!h.value}),S=e.computed(()=>{var j;return((j=u.value)==null?void 0:j.name)??"None (Root)"}),y=e.computed(()=>p.value?p.value.children_count===0&&p.value.media_count===0:!1),f=e.computed(()=>p.value?p.value.children_count>0?"Cannot delete album with child albums. Move or delete children first.":p.value.media_count>0?"Cannot delete album with media. Remove media first.":`Are you sure you want to delete "${p.value.name}"? This action cannot be undone.`:"");e.onMounted(async()=>{t.albumId&&await k()});async function k(){if(t.albumId)try{const j=await i.fetchAlbum(t.albumId);p.value=j,l.value={name:j.name,description:j.description??"",parent_id:j.parent_id},j.parent_id&&(u.value={id:j.parent_id,name:"Parent Album"})}catch(j){o("error",j)}}function R(){d.value.name=!0}function N(){d.value.description=!0}function v(){m.value=!0}function C(j){u.value={id:j.id,name:j.name},l.value.parent_id=j.id,m.value=!1}function U(){m.value=!1}function x(){o("close")}function T(){o("close")}async function I(){if(d.value.name=!0,d.value.description=!0,!(!M.value||h.value)){h.value=!0;try{const j={name:l.value.name.trim(),description:l.value.description.trim(),parent_id:l.value.parent_id};if(r.value&&t.albumId){const P=await i.updateAlbum(t.albumId,j);o("updated",P)}else{const P=await i.createAlbum(j);o("created",P)}o("close")}catch(j){o("error",j)}finally{h.value=!1}}}function O(){y.value&&(g.value=!0)}async function $(j){var _;if((((_=j.detail)==null?void 0:_.role)??"")!=="confirm"){g.value=!1;return}if(t.albumId){h.value=!0;try{await i.deleteAlbum(t.albumId),o("deleted",t.albumId),o("close")}catch(L){o("error",L)}finally{h.value=!1,g.value=!1}}}return(j,P)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[j.mode==="modal"?(e.openBlock(),e.createBlock(e.unref(F.IonModal),{key:0,"is-open":j.isOpen,class:"album-manager-modal",onDidDismiss:T},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1}),e.createVNode(e.unref(F.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:x},{default:e.withCtx(()=>[...P[4]||(P[4]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(F.IonContent),{class:"album-manager-content"},{default:e.withCtx(()=>[e.createElementVNode("form",{"data-testid":"album-form",class:"p-4 space-y-3",onSubmit:e.withModifiers(I,["prevent"])},[e.createVNode(e.unref(F.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...P[5]||(P[5]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(F.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":P[0]||(P[0]=_=>l.value.name=_),"data-testid":"name-input",maxlength:qn,onIonBlur:R},null,8,["modelValue"])]),_:1}),w.value?(e.openBlock(),e.createBlock(e.unref(F.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",E4,e.toDisplayString(w.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...P[6]||(P[6]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(F.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":P[1]||(P[1]=_=>l.value.description=_),"data-testid":"description-input",maxlength:Qn,onIonBlur:N},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref(F.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",V4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonItem),{button:"","data-testid":"parent-selector",onClick:v},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...P[7]||(P[7]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(F.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.value),1)]),_:1})]),_:1})],32)]),_:1}),e.createVNode(e.unref(F.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButtons),{slot:"start"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",disabled:!y.value,title:y.value?void 0:f.value,onClick:O},{default:e.withCtx(()=>[...P[8]||(P[8]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(F.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!M.value,onClick:I},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createBlock(e.unref(F.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",S4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"])):(e.openBlock(),e.createElementBlock("div",C4,[e.createElementVNode("div",N4,[e.createElementVNode("h2",_4,e.toDisplayString(s.value),1),e.createVNode(e.unref(F.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:x},{default:e.withCtx(()=>[...P[9]||(P[9]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),e.createElementVNode("form",{"data-testid":"album-form",class:"space-y-3",onSubmit:e.withModifiers(I,["prevent"])},[e.createVNode(e.unref(F.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...P[10]||(P[10]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(F.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":P[2]||(P[2]=_=>l.value.name=_),"data-testid":"name-input",maxlength:qn,onIonBlur:R},null,8,["modelValue"])]),_:1}),w.value?(e.openBlock(),e.createBlock(e.unref(F.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",T4,e.toDisplayString(w.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...P[11]||(P[11]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(F.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":P[3]||(P[3]=_=>l.value.description=_),"data-testid":"description-input",maxlength:Qn,onIonBlur:N},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref(F.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",M4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonItem),{button:"","data-testid":"parent-selector",onClick:v},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...P[12]||(P[12]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(F.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.value),1)]),_:1})]),_:1}),e.createElementVNode("div",B4,[e.createElementVNode("div",null,[r.value?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",fill:"outline",disabled:!y.value,title:y.value?void 0:f.value,onClick:O},{default:e.withCtx(()=>[...P[13]||(P[13]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),e.createVNode(e.unref(F.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!M.value,onClick:I},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createBlock(e.unref(F.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",F4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])])],32)])),e.createVNode(uc,{"is-open":m.value,"selected-album-id":l.value.parent_id,title:"Select Parent Album",onClose:U,onConfirm:C},null,8,["is-open","selected-album-id"]),e.createVNode(e.unref(F.IonAlert),{"is-open":g.value,header:"Delete Album?",message:f.value,buttons:[{text:"Cancel",role:"cancel"},{text:"Delete",role:"confirm",cssClass:"alert-button-danger"}],onDidDismiss:$},null,8,["is-open","message"])],64))}}),R4=Ne(I4,[["__scopeId","data-v-22083f3a"]]),$4={class:"album-media-grid"},D4={class:"aspect-square"},U4={key:1,"data-testid":"empty-state",class:"flex flex-col items-center justify-center py-12 gap-4"},O4={class:"text-gray-500"},L4=["data-media-id","draggable","onDragstart","onDragover","onDrop","onMouseenter"],A4={key:0,"data-testid":"drop-indicator",class:"absolute inset-0 border-2 border-primary rounded-lg pointer-events-none z-30"},z4={key:1,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-grab"},P4={class:"aspect-square relative"},W4=["src","alt"],j4={key:0,class:"absolute inset-0 bg-black/50 flex items-center justify-center gap-2 transition-opacity"},Z4=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=Aa(),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),p=e.computed(()=>{const T=t.columns;return["grid","gap-4",`grid-cols-${T.mobile??2}`,`sm:grid-cols-${T.sm??3}`,`md:grid-cols-${T.md??4}`,`lg:grid-cols-${T.lg??5}`,`xl:grid-cols-${T.xl??6}`]}),h=e.computed(()=>(t.columns.md??4)*2);e.onMounted(async()=>{await g()}),e.watch(()=>t.albumId,async()=>{await g()});async function g(){s.value=!0;try{const T=await i.fetchAlbumMedia(t.albumId);r.value=T}catch{r.value=[]}finally{s.value=!1}}function w(T){return t.selectedItems.includes(T)}function E(T){o("toggle-select",T);const I=w(T.uuid)?t.selectedItems.filter(O=>O!==T.uuid):[...t.selectedItems,T.uuid];o("selection-change",I)}function M(T){if(T.conversions&&typeof T.conversions=="object"){const I=T.conversions.thumb;if(typeof I=="string")return I}return T.original_url}function S(T){c.value=T}function y(){c.value=null}function f(T){o("preview",T)}function k(T){o("edit",T)}function R(T){o("detach",T.uuid)}function N(){o("add")}function v(T,I){t.reorderable&&(l.value=I,T.dataTransfer&&(T.dataTransfer.effectAllowed="move",T.dataTransfer.setData("text/plain",String(I))))}function C(T,I){!t.reorderable||l.value===null||(T.preventDefault(),d.value=I)}function U(T,I){if(!t.reorderable||l.value===null)return;T.preventDefault();const O=l.value;if(O!==I){const $=[...r.value],[j]=$.splice(O,1);$.splice(I,0,j),r.value=$;const P=$.map(_=>_.uuid);o("reorder",P),i.reorderAlbumMedia(t.albumId,P).catch(()=>{g()})}l.value=null,d.value=null}function x(){l.value=null,d.value=null}return(T,I)=>(e.openBlock(),e.createElementBlock("div",$4,[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-testid":"loading-grid",class:e.normalizeClass(p.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,O=>(e.openBlock(),e.createBlock(e.unref(F.IonCard),{key:O,class:"m-0"},{default:e.withCtx(()=>[e.createElementVNode("div",D4,[e.createVNode(e.unref(F.IonSkeletonText),{animated:"",class:"w-full h-full skeleton"})])]),_:1}))),128))],2)):m.value?(e.openBlock(),e.createElementBlock("div",U4,[e.createVNode(e.unref(F.IonIcon),{name:"images-outline",class:"text-6xl text-gray-400"}),e.createElementVNode("p",O4,e.toDisplayString(T.emptyText),1),e.createVNode(e.unref(F.IonButton),{"data-testid":"add-media-btn",onClick:N},{default:e.withCtx(()=>[...I[0]||(I[0]=[e.createTextVNode(" Add Media ",-1)])]),_:1})])):(e.openBlock(),e.createElementBlock("div",{key:2,"data-testid":"media-grid",class:e.normalizeClass(p.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(O,$)=>(e.openBlock(),e.createElementBlock("div",{key:O.uuid,"data-media-id":O.uuid,class:e.normalizeClass(["media-item relative group",{"opacity-50":l.value===$,"ring-2 ring-primary":d.value===$&&l.value!==$}]),draggable:T.reorderable,onDragstart:j=>v(j,$),onDragover:j=>C(j,$),onDrop:j=>U(j,$),onDragend:x,onMouseenter:j=>S(O.uuid),onMouseleave:y},[d.value===$&&l.value!==$&&T.reorderable?(e.openBlock(),e.createElementBlock("div",A4)):e.createCommentVNode("",!0),T.reorderable?(e.openBlock(),e.createElementBlock("div",z4,[e.createVNode(e.unref(F.IonIcon),{name:"reorder-three-outline",class:"text-white drop-shadow-md"})])):e.createCommentVNode("",!0),T.selectionMode?(e.openBlock(),e.createBlock(e.unref(F.IonCheckbox),{key:2,"data-testid":"media-checkbox",checked:w(O.uuid),class:"absolute top-2 left-2 z-20",onIonChange:j=>E(O)},null,8,["checked","onIonChange"])):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonCard),{class:"m-0 overflow-hidden"},{default:e.withCtx(()=>[e.createElementVNode("div",P4,[e.createElementVNode("img",{src:M(O),alt:O.file_name,class:"w-full h-full object-cover"},null,8,W4),T.showActions&&c.value===O.uuid?(e.openBlock(),e.createElementBlock("div",j4,[e.createVNode(e.unref(F.IonButton),{"data-testid":"action-preview",fill:"clear",size:"small",color:"light",onClick:j=>f(O)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{slot:"icon-only",name:"eye-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(F.IonButton),{"data-testid":"action-edit",fill:"clear",size:"small",color:"light",onClick:j=>k(O)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{slot:"icon-only",name:"create-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(F.IonButton),{"data-testid":"action-detach",fill:"clear",size:"small",color:"danger",onClick:j=>R(O)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{slot:"icon-only",name:"close-circle-outline"})]),_:1},8,["onClick"])])):e.createCommentVNode("",!0)])]),_:2},1024)],42,L4))),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:N},[e.createVNode(e.unref(F.IonIcon),{name:"add-circle-outline",class:"text-4xl text-gray-400"}),I[1]||(I[1]=e.createElementVNode("span",{class:"text-sm text-gray-500"},"Add Media",-1))])],2))]))}}),X4=Ne(Z4,[["__scopeId","data-v-d84b796a"]]);function dr(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 Li(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 ur(a){if(a){const t={};a.apiBaseUrl!==void 0&&(t.apiBaseUrl=a.apiBaseUrl),a.isAdmin!==void 0&&(t.isAdmin=a.isAdmin),Fn(t)}return{name:"mediables",async upload(t,o){const r=await kt().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 kt().attachMedia(o.modelType,String(o.modelId),[t],o.collection||"images")},async attachMany(t,o){await kt().attachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async detach(t,o){await kt().detachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async reorder(t,o){await kt().reorderMedia(t.modelType,String(t.modelId),o,t.collection||"images")},async fetchModelMedia(t){return await kt().fetchModelMedia(t.modelType,String(t.modelId),t.collection||"images")},getUrl(t,o){return kt().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 kt().deleteMedia(t)},async update(t,o){const r=await kt().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),Fn(o)}}}let na=null;function H4(){return na||(na=ur()),na}function G4(){na=null}const J4={apiBaseUrl:"/media-library-pro"};function Zo(){var a;return typeof document>"u"?null:((a=document.querySelector('meta[name="csrf-token"]'))==null?void 0:a.getAttribute("content"))||null}function vi(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 mr(a){const n={...J4,...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||Zo();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 p=await d.json().catch(()=>({message:"Upload failed"}));throw new Error(p.message||`HTTP ${d.status}`)}const u=await d.json(),m=vi(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||Zo();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(vi)}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||Zo();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||Zo();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 vi(l)},configure(o){Object.assign(n,o)}}}let oa=null;function Y4(){return oa||(oa=mr()),oa}function K4(){oa=null}function mc(a,n){switch(a){case"mediables":return ur(n);case"spatie":return mr(n);default:throw new Error(`Unknown adapter: ${a}`)}}function ha(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 pc(a){var t;const n=a.split(".");return n.length>1?`.${(t=n.pop())==null?void 0:t.toLowerCase()}`:""}function pr(a){return a.type.startsWith("image/")}async function fc(a){return pr(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 hc(a,n){const t=[];if(n.maxFileSize&&a.size>n.maxFileSize&&t.push({field:"size",message:`File exceeds maximum size of ${ha(n.maxFileSize)}`,code:"MAX_FILE_SIZE"}),n.minFileSize&&a.size<n.minFileSize&&t.push({field:"size",message:`File is smaller than minimum size of ${ha(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=pc(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(pr(a)&&(n.maxDimensions||n.minDimensions)){const o=await fc(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 fr(a={}){const n=e.ref(a.rules||{});function t(l){n.value=l}async function o(l){return hc(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 q4(){return`upload-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function Q4(a){if(a.type.startsWith("image/"))return URL.createObjectURL(a)}function vc(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),p=o?{rules:o}:{},{validateFile:h}=fr(p);async function g(){if(m.value.size>=t)return;const x=Array.from(u.value.entries()).find(([O,$])=>$.status==="pending"&&!m.value.has(O));if(!x){Array.from(u.value.values()).every($=>$.status==="completed"||$.status==="error")&&u.value.size>0&&(d==null||d());return}const[T,I]=x;await w(T,I)}async function w(x,T){m.value.add(x),T.status="uploading",T.abortController=new AbortController,u.value.set(x,{...T}),r==null||r(T);try{const I={onProgress:$=>{T.progress=$,u.value.set(x,{...T}),s==null||s(T)},signal:T.abortController.signal};i&&(I.collection=i);const O=await n.upload(T.file,I);T.status="completed",T.progress=100,T.media=O.media,u.value.set(x,{...T}),c==null||c(T,O.media)}catch(I){I.name==="AbortError"?u.value.delete(x):(T.status="error",T.error=I.message,u.value.set(x,{...T}),l==null||l(T,I))}finally{m.value.delete(x),delete T.abortController,g()}}async function E(x){var O;const T=Array.from(x),I=[];for(const $ of T){const j=await h($),P=q4(),_=Q4($),L={id:P,file:$,progress:0,status:j.valid?"pending":"error"};!j.valid&&((O=j.errors[0])!=null&&O.message)&&(L.error=j.errors[0].message),_&&(L.previewUrl=_),u.value.set(P,L);const G={media:null,clientId:P,name:$.name,order:0,upload:L,errors:j.errors};I.push(G)}for(let $=0;$<t;$++)g();return I}function M(x){const T=u.value.get(x);T&&(T.abortController&&T.abortController.abort(),T.previewUrl&&URL.revokeObjectURL(T.previewUrl),u.value.delete(x),m.value.delete(x),g())}async function S(x){const T=u.value.get(x);!T||T.status!=="error"||(T.status="pending",T.progress=0,delete T.error,u.value.set(x,{...T}),g())}function y(){for(const[x,T]of u.value.entries())(T.status==="completed"||T.status==="error")&&(T.previewUrl&&URL.revokeObjectURL(T.previewUrl),u.value.delete(x))}function f(){for(const x of u.value.values())x.abortController&&x.abortController.abort(),x.previewUrl&&URL.revokeObjectURL(x.previewUrl);u.value.clear(),m.value.clear()}function k(x){return u.value.get(x)}const R=e.computed(()=>m.value.size>0),N=e.computed(()=>m.value.size),v=e.computed(()=>Array.from(u.value.values()).filter(x=>x.status==="pending").length),C=e.computed(()=>u.value.size===0?!0:Array.from(u.value.values()).every(x=>x.status==="completed"||x.status==="error")),U=e.computed(()=>Array.from(u.value.values()));return{uploads:u,isUploading:R,activeCount:N,pendingCount:v,isComplete:C,addFiles:E,cancelUpload:M,retryUpload:S,clearCompleted:y,clearAll:f,getUpload:k,uploadsArray:U}}function gc(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(S,y,f){n&&("dataTransfer"in S&&S.dataTransfer&&(S.dataTransfer.effectAllowed="move",S.dataTransfer.setData("text/plain",String(f))),d=S.target,d&&d.classList.add(r),c.value={isDragging:!0,dragIndex:f,dropIndex:f,draggedItem:y},l.value=!0,o==null||o(y,f))}function m(S,y){var f;if(!(!n||!c.value.isDragging)&&(S.preventDefault(),c.value.dropIndex!==y)){const k=document.querySelector(`.${s}`);k==null||k.classList.remove(s);const R=(f=S.target)==null?void 0:f.closest("[data-index]");R==null||R.classList.add(s),c.value.dropIndex=y}}function p(){if(!c.value.isDragging)return;const{dragIndex:S,dropIndex:y,draggedItem:f}=c.value;d&&d.classList.remove(r);const k=document.querySelector(`.${s}`);k==null||k.classList.remove(s),S!==null&&y!==null&&S!==y&&f&&(t==null||t({fromIndex:S,toIndex:y,item:f})),g(),i==null||i()}function h(){d&&d.classList.remove(r);const S=document.querySelector(`.${s}`);S==null||S.classList.remove(s),g(),i==null||i()}function g(){c.value={isDragging:!1,dragIndex:null,dropIndex:null,draggedItem:null},l.value=!1,d=null}function w(S,y,f){const k=[...S],[R]=k.splice(y,1);return k.splice(f,0,R),k.map((N,v)=>({...N,order:v}))}function E(S,y){return{draggable:n,"data-index":y,onDragstart:f=>u(f,S,y),onDragover:f=>m(f,y),onDragend:()=>p(),onDrop:f=>{f.preventDefault(),p()}}}function M(S){S.key==="Escape"&&c.value.isDragging&&h()}return e.onMounted(()=>{document.addEventListener("keydown",M)}),e.onUnmounted(()=>{document.removeEventListener("keydown",M),h()}),{dragState:c,isDragging:l,startDrag:u,handleDragOver:m,endDrag:p,cancelDrag:h,reorderItems:w,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:p,maxConcurrentUploads:h=3,onChange:g,onUpload:w,onUploadComplete:E,onUploadError:M,onRemove:S,onReorder:y,onError:f,onReadyToSubmitChange:k}=a,R={maxItems:r,maxFileSize:s,acceptedMimeTypes:c,...u},N=p||mc(m),v=e.ref([]),C=e.ref(!1),U=e.ref([]);function x(ne){if(ne.length===0)return[];const ke=ne[0];return"media"in ke&&"clientId"in ke?ne:Li(ne)}v.value=x(n);const{acceptString:T,canAddFiles:I}=fr({rules:R}),O=vc({adapter:N,maxConcurrent:h,rules:R,collection:i,onUploadStart:ne=>{w==null||w(ne)},onUploadComplete:(ne,ke)=>{const he=v.value.findIndex(Ye=>Ye.clientId===ne.id);he!==-1&&(v.value[he]={...v.value[he],media:ke,name:ke.name||ke.file_name,upload:{...ne,status:"completed"}}),E==null||E(ke)},onUploadError:(ne,ke)=>{const he=v.value.findIndex(Ye=>Ye.clientId===ne.id);he!==-1&&(v.value[he]={...v.value[he],upload:{...ne,status:"error",error:ke.message},errors:[{field:"upload",message:ke.message,code:"UPLOAD_ERROR"}]}),M==null||M({file:ne.file,message:ke.message})},onQueueComplete:()=>{g==null||g(v.value)}}),{dragState:$,getDragProps:j,reorderItems:P}=gc({enabled:l&&!d,onReorder:ne=>{v.value=P(v.value,ne.fromIndex,ne.toIndex),y==null||y(v.value),g==null||g(v.value)}}),_=e.computed(()=>O.isUploading.value),L=e.computed(()=>!O.isUploading.value&&O.pendingCount.value===0),G=e.computed(()=>r?v.value.length>=r:!1),X=e.computed(()=>dr(v.value)),ce=e.computed(()=>v.value.length),Te=e.computed(()=>r?Math.max(0,r-v.value.length):1/0);e.watch(L,ne=>{k==null||k(ne)});function Re(ne){v.value=x(ne),g==null||g(v.value)}async function ie(ne){if(d)return;const ke=Array.from(ne);if(!I(ke.length,v.value.length)){const pt={field:"count",message:`Maximum ${r} files allowed`,code:"MAX_ITEMS"};U.value=[pt],f==null||f([pt]);return}const he=await O.addFiles(ke),Ye=v.value.length,it=he.map((pt,me)=>({...pt,order:Ye+me}));v.value=[...v.value,...it],g==null||g(v.value)}function B(ne){d||(ne.upload&&(ne.upload.status==="uploading"||ne.upload.status==="pending")&&O.cancelUpload(ne.clientId),v.value=v.value.filter(ke=>ke.clientId!==ne.clientId),v.value=v.value.map((ke,he)=>({...ke,order:he})),S==null||S(ne),g==null||g(v.value))}function z(ne){const ke=v.value.find(he=>he.clientId===ne);ke&&B(ke)}function de(){d||(O.clearAll(),v.value=[],g==null||g(v.value))}function oe(ne,ke){d||!l||(v.value=P(v.value,ne,ke),y==null||y(v.value),g==null||g(v.value))}function K(ne,ke){if(d)return;const he=v.value.findIndex(Ye=>Ye.clientId===ne);he!==-1&&(v.value[he]={...v.value[he],...ke},g==null||g(v.value))}function ee(ne){O.cancelUpload(ne),z(ne)}async function ue(ne){await O.retryUpload(ne)}async function ge(){if(!t||!o)throw new Error("modelType and modelId are required for save()");const ne={modelType:t,modelId:o,collection:i},ke=v.value.filter(he=>he.media&&!he.markedForRemoval).map(he=>he.media.uuid);C.value=!0;try{await N.attachMany(ke,ne),await N.reorder(ne,ke)}finally{C.value=!1}}async function xe(){if(!t||!o)throw new Error("modelType and modelId are required for load()");const ne={modelType:t,modelId:o,collection:i};C.value=!0;try{const ke=await N.fetchModelMedia(ne);v.value=Li(ke),g==null||g(v.value)}finally{C.value=!1}}return e.onMounted(()=>{t&&o&&n.length===0&&xe().catch(console.error)}),e.onUnmounted(()=>{O.clearAll()}),{items:v,setItems:Re,addFiles:ie,removeItem:B,removeItemById:z,clearAll:de,reorderItems:oe,updateItem:K,cancelUpload:ee,retryUpload:ue,save:ge,load:xe,isLoading:C,isUploading:_,isReadyToSubmit:L,isAtMaxItems:G,errors:U,dragState:$,getDragProps:j,adapter:N,formValues:X,acceptString:T,count:ce,remainingSlots:Te}}const eE=["aria-disabled"],tE=["accept","multiple","disabled"],nE={class:"media-dropzone__content"},oE={class:"media-dropzone__title"},aE={class:"media-dropzone__subtitle"},iE=["disabled"],rE={key:0,class:"media-dropzone__helper"},sE=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 w=[];return t.maxFileSize&&w.push(`Max size: ${ha(t.maxFileSize)}`),t.maxItems&&t.maxItems>1&&w.push(`Max files: ${t.maxItems}`),w.join(" • ")});function l(w){w.preventDefault(),!t.disabled&&(i.value=!0)}function d(w){w.preventDefault(),i.value=!1}function u(w){w.preventDefault()}function m(w){var M;if(w.preventDefault(),i.value=!1,t.disabled)return;const E=(M=w.dataTransfer)==null?void 0:M.files;E&&E.length>0&&o("files",E)}function p(){var w;t.disabled||(w=r.value)==null||w.click()}function h(w){const E=w.target,M=E.files;M&&M.length>0&&o("files",M),E.value=""}function g(w){(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),p())}return(w,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(s.value),role:"button",tabindex:"0","aria-disabled":w.disabled,"aria-label":"Upload files",onClick:p,onKeydown:g,onDragenter:l,onDragleave:d,onDragover:u,onDrop:m},[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",accept:w.accept,multiple:w.multiple,disabled:w.disabled,class:"media-dropzone__input",onChange:h},null,40,tE),e.createElementVNode("div",nE,[e.renderSlot(w.$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",oE,[e.renderSlot(w.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(w.title),1)],!0)]),e.createElementVNode("p",aE,[e.renderSlot(w.$slots,"subtitle",{},()=>[e.createTextVNode(e.toDisplayString(w.subtitle),1)],!0)]),e.createElementVNode("button",{type:"button",class:"media-dropzone__button",disabled:w.disabled,onClick:e.withModifiers(p,["stop"])},[e.renderSlot(w.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(w.buttonText),1)],!0)],8,iE),c.value?(e.openBlock(),e.createElementBlock("p",rE,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)])],42,eE))}}),hr=Ne(sE,[["__scopeId","data-v-b1366c1e"]]),lE=["data-index"],cE={key:0,class:"media-item__drag-handle","aria-label":"Drag to reorder",role:"button",tabindex:"0"},dE={class:"media-item__thumbnail"},uE=["src","alt"],mE={key:1,class:"media-item__file-icon"},pE={key:2,class:"media-item__progress-overlay"},fE={class:"media-item__progress-text"},hE={key:3,class:"media-item__processing-overlay"},vE={key:4,class:"media-item__error-overlay"},gE={class:"media-item__info"},yE=["title"],wE={key:0,class:"media-item__size"},bE={key:1,class:"media-item__error-message"},kE={class:"media-item__actions"},xE=["disabled"],EE=["disabled"],VE=["disabled"],SE=["disabled"],CE=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 y;return(y=t.item.upload)!=null&&y.previewUrl?t.item.upload.previewUrl:t.item.media?t.adapter.getThumbnailUrl(t.item.media):null}),s=e.computed(()=>{var y,f,k;return((y=t.item.upload)==null?void 0:y.status)==="uploading"||((f=t.item.upload)==null?void 0:f.status)==="pending"||((k=t.item.upload)==null?void 0:k.status)==="queued"}),c=e.computed(()=>{var y;return((y=t.item.upload)==null?void 0:y.status)==="processing"}),l=e.computed(()=>{var y;return((y=t.item.upload)==null?void 0:y.status)==="error"||t.item.errors&&t.item.errors.length>0}),d=e.computed(()=>{var y;return(y=t.item.upload)!=null&&y.error?t.item.upload.error:t.item.errors&&t.item.errors.length>0?t.item.errors[0].message:null}),u=e.computed(()=>{var y;return((y=t.item.upload)==null?void 0:y.progress)||0}),m=e.computed(()=>{var y;return t.item.name||((y=t.item.media)==null?void 0:y.file_name)||"Unknown file"}),p=e.computed(()=>{var N,v;const y=((N=t.item.media)==null?void 0:N.size)||((v=t.item.upload)==null?void 0:v.file.size);if(!y)return"";const f=1024,k=["Bytes","KB","MB","GB"],R=Math.floor(Math.log(y)/Math.log(f));return parseFloat((y/Math.pow(f,R)).toFixed(2))+" "+k[R]}),h=e.computed(()=>{var f,k;const y=((f=t.item.media)==null?void 0:f.mime_type)||((k=t.item.upload)==null?void 0:k.file.type);return y==null?void 0:y.startsWith("image/")}),g=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 w(){t.disabled||o("remove",t.item)}function E(){t.disabled||o("edit",t.item)}function M(){t.disabled||o("retry",t.item)}function S(){t.disabled||o("cancel",t.item)}return(y,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(g.value),"data-index":y.index,onMouseenter:f[0]||(f[0]=k=>i.value=!0),onMouseleave:f[1]||(f[1]=k=>i.value=!1)},[y.sortable&&!y.disabled?(e.openBlock(),e.createElementBlock("div",cE,[...f[2]||(f[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",dE,[r.value&&h.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:r.value,alt:m.value,class:"media-item__image"},null,8,uE)):(e.openBlock(),e.createElementBlock("div",mE,[...f[3]||(f[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",pE,[e.createElementVNode("div",{class:"media-item__progress-bar",style:e.normalizeStyle({width:`${u.value}%`})},null,4),e.createElementVNode("span",fE,e.toDisplayString(u.value)+"%",1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",hE,[...f[4]||(f[4]=[e.createElementVNode("div",{class:"media-item__spinner","aria-label":"Processing"},null,-1)])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",vE,[...f[5]||(f[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",gE,[e.createElementVNode("span",{class:"media-item__name",title:m.value},e.toDisplayString(m.value),9,yE),p.value?(e.openBlock(),e.createElementBlock("span",wE,e.toDisplayString(p.value),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("span",bE,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",kE,[s.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-item__action media-item__action--cancel",disabled:y.disabled,"aria-label":"Cancel upload",onClick:S},[...f[6]||(f[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,xE)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"media-item__action media-item__action--retry",disabled:y.disabled,"aria-label":"Retry upload",onClick:M},[...f[7]||(f[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,EE)):e.createCommentVNode("",!0),y.showEdit&&y.item.media&&!s.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"media-item__action media-item__action--edit",disabled:y.disabled,"aria-label":"Edit",onClick:E},[...f[8]||(f[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,VE)):e.createCommentVNode("",!0),y.showRemove?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"media-item__action media-item__action--remove",disabled:y.disabled,"aria-label":"Remove",onClick:w},[...f[9]||(f[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,SE)):e.createCommentVNode("",!0)])],42,lE))}}),vr=Ne(CE,[["__scopeId","data-v-ff81c9ec"]]),NE=["aria-label"],_E=["draggable","data-index","onDragstart","onDragover","onDragend","onDrop"],TE={key:0,class:"media-collection__footer"},ME={class:"media-collection__count"},BE={key:0},FE={key:0,class:"media-collection__uploading"},IE=["name","value"],RE=["name","value"],$E=["name","value"],DE=["name","value"],UE={key:3,class:"media-collection__errors",role:"alert","aria-live":"polite"},OE=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:_=>{o("update:modelValue",_),o("change",_)},onUpload:_=>{o("upload",_)},onUploadComplete:_=>{o("upload-complete",_)},onUploadError:_=>{o("upload-error",_)},onRemove:_=>{o("remove",_)},onReorder:_=>{o("reorder",_)},onError:_=>{o("validation-error",_)},onReadyToSubmitChange:_=>{o("is-ready-to-submit-change",_)}},{items:r,setItems:s,addFiles:c,removeItem:l,reorderItems:d,cancelUpload:u,retryUpload:m,isLoading:p,isUploading:h,isAtMaxItems:g,errors:w,dragState:E,getDragProps:M,adapter:S,formValues:y,acceptString:f,count:k,remainingSlots:R}=za(i);e.provide("mediaAdapter",S),e.provide("mediaCollection",{items:r,addFiles:c,removeItem:l,reorderItems:d}),e.watch(()=>t.modelValue,_=>{_!==r.value&&s(_)},{deep:!0});const N=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!g.value),v=e.computed(()=>({"media-collection":!0,"media-collection--disabled":t.disabled,"media-collection--readonly":t.readonly,"media-collection--loading":p.value,"media-collection--has-items":r.value.length>0,"media-collection--dragging":E.value.isDragging}));function C(_){c(_)}function U(_){l(_)}function x(_){m(_.clientId)}function T(_){u(_.clientId)}function I(_){}function O(_,L,G){if(!t.sortable||t.disabled)return;const X=M(L,G);X.onDragstart&&X.onDragstart(_)}function $(_,L){if(!t.sortable||t.disabled)return;_.preventDefault();const G=r.value[L],X=M(G,L);X.onDragover&&X.onDragover(_)}function j(_,L){const G=M(_,L);G.onDragend&&G.onDragend()}function P(_,L){_.preventDefault();const G=r.value[L],X=M(G,L);X.onDrop&&X.onDrop(_)}return(_,L)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(v.value)},[e.renderSlot(_.$slots,"dropzone",{addFiles:e.unref(c)},()=>[N.value?(e.openBlock(),e.createBlock(hr,{key:0,accept:e.unref(f),multiple:_.maxItems!==1,disabled:_.disabled,"max-file-size":_.maxFileSize,"max-items":e.unref(R),onFiles:C},null,8,["accept","multiple","disabled","max-file-size","max-items"])):e.createCommentVNode("",!0)],!0),e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"media-collection__list",role:"list","aria-label":`${e.unref(k)} media items`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r),(G,X)=>e.renderSlot(_.$slots,"item",{key:G.clientId,item:G,index:X,remove:()=>U(G)},()=>[e.createElementVNode("div",{class:e.normalizeClass(["media-collection__item-wrapper",{"media-collection__item-wrapper--drag-over":e.unref(E).dropIndex===X}]),draggable:_.sortable&&!_.disabled,"data-index":X,onDragstart:ce=>O(ce,G,X),onDragover:ce=>$(ce,X),onDragend:ce=>j(G,X),onDrop:ce=>P(ce,X)},[e.createVNode(vr,{item:G,adapter:e.unref(S),disabled:_.disabled,sortable:_.sortable,"show-remove":!_.readonly,"show-edit":!1,index:X,onRemove:U,onRetry:x,onCancel:T,onEdit:I},null,8,["item","adapter","disabled","sortable","show-remove","index"])],42,_E)],!0)),128))],8,NE)):N.value?e.createCommentVNode("",!0):e.renderSlot(_.$slots,"empty",{key:1},()=>[L[0]||(L[0]=e.createElementVNode("div",{class:"media-collection__empty"},[e.createElementVNode("p",null,"No files uploaded")],-1))],!0),e.renderSlot(_.$slots,"footer",{count:e.unref(k),isUploading:e.unref(h)},()=>[e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",TE,[e.createElementVNode("span",ME,[e.createTextVNode(e.toDisplayString(e.unref(k))+" "+e.toDisplayString(e.unref(k)===1?"file":"files")+" ",1),_.maxItems?(e.openBlock(),e.createElementBlock("span",BE," / "+e.toDisplayString(_.maxItems)+" max",1)):e.createCommentVNode("",!0)]),e.unref(h)?(e.openBlock(),e.createElementBlock("span",FE," Uploading... ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],!0),_.generateFormFields?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(G,X)=>(e.openBlock(),e.createElementBlock("input",{key:`${_.name}-${G.uuid}`,type:"hidden",name:`${_.name}[${X}][uuid]`,value:G.uuid},null,8,IE))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(G,X)=>(e.openBlock(),e.createElementBlock("input",{key:`${_.name}-${G.uuid}-name`,type:"hidden",name:`${_.name}[${X}][name]`,value:G.name},null,8,RE))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(G,X)=>(e.openBlock(),e.createElementBlock("input",{key:`${_.name}-${G.uuid}-order`,type:"hidden",name:`${_.name}[${X}][order]`,value:G.order},null,8,$E))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(G,X)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`${_.name}-${G.uuid}-props`},[G.custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${_.name}[${X}][custom_properties]`,value:JSON.stringify(G.custom_properties)},null,8,DE)):e.createCommentVNode("",!0)],64))),128))],64)):e.createCommentVNode("",!0),e.unref(w).length>0?(e.openBlock(),e.createElementBlock("div",UE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),G=>(e.openBlock(),e.createElementBlock("p",{key:G.code||G.message,class:"media-collection__error"},e.toDisplayString(G.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),LE=Ne(OE,[["__scopeId","data-v-10a5bfff"]]);function gr(a={}){const{initialItem:n,onChange:t,onReplace:o,onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d,...u}=a,p={...u,initialItems:n?[n]:[],maxItems:1,sortable:!1,onChange:N=>{t==null||t(N[0]||null)},onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d},h=za(p),g=e.computed(()=>h.items.value[0]||null),w=e.computed(()=>g.value!==null),E=e.computed(()=>h.formValues.value[0]||null);function M(N){N===null?h.clearAll():h.setItems([N])}async function S(N){const v=g.value;v&&h.removeItem(v),await h.addFiles([N])}function y(){g.value&&h.removeItem(g.value)}async function f(N){const v=g.value;v&&h.removeItem(v),await h.addFiles([N]);const C=h.items.value[0];C&&(o==null||o(v,C))}function k(){var N;(N=g.value)!=null&&N.upload&&h.cancelUpload(g.value.clientId)}async function R(){var N,v;((v=(N=g.value)==null?void 0:N.upload)==null?void 0:v.status)==="error"&&await h.retryUpload(g.value.clientId)}return{item:g,setItem:M,addFile:S,removeItem:y,replaceItem:f,cancelUpload:k,retryUpload:R,save:h.save,load:h.load,isLoading:h.isLoading,isUploading:h.isUploading,isReadyToSubmit:h.isReadyToSubmit,hasItem:w,errors:h.errors,adapter:h.adapter,formValue:E,acceptString:h.acceptString}}const AE=["accept","disabled"],zE={class:"media-attachment__preview"},PE=["name","value"],WE=["name","value"],jE=["name","value"],ZE=["name","value"],XE={key:4,class:"media-attachment__errors",role:"alert","aria-live":"polite"},HE=e.defineComponent({__name:"MediaAttachment",props:{modelValue:{default:null},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxFileSize:{},acceptedMimeTypes:{},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0},showReplaceButton:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","replace","is-ready-to-submit-change","validation-error"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r={initialItem:t.modelValue,modelType:t.modelType,modelId:t.modelId,collection:t.collection,maxFileSize:t.maxFileSize,acceptedMimeTypes:t.acceptedMimeTypes,disabled:t.disabled,rules:t.rules,adapterType:t.adapter,onChange:x=>{o("update:modelValue",x),o("change",x)},onUpload:x=>{o("upload",x)},onUploadComplete:x=>{o("upload-complete",x)},onUploadError:x=>{o("upload-error",x)},onRemove:x=>{o("remove",x)},onReplace:(x,T)=>{o("replace",T)},onError:x=>{o("validation-error",x)},onReadyToSubmitChange:x=>{o("is-ready-to-submit-change",x)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:p,isLoading:h,hasItem:g,errors:w,adapter:E,formValue:M,acceptString:S}=gr(r);e.provide("mediaAdapter",E),e.watch(()=>t.modelValue,x=>{x!==s.value&&c(x)},{deep:!0});const y=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!g.value),f=e.computed(()=>({"media-attachment":!0,"media-attachment--disabled":t.disabled,"media-attachment--readonly":t.readonly,"media-attachment--loading":h.value,"media-attachment--has-item":g.value}));function k(x){x.length>0&&l(x[0])}function R(){var x;(x=i.value)==null||x.click()}function N(x){const T=x.target,I=T.files;I&&I.length>0&&u(I[0]),T.value=""}function v(x){d()}function C(x){p()}function U(x){m()}return(x,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(f.value)},[e.createElementVNode("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:e.unref(S),disabled:x.disabled,class:"media-attachment__hidden-input",onChange:N},null,40,AE),y.value?e.renderSlot(x.$slots,"dropzone",{key:0,addFile:e.unref(l)},()=>[e.createVNode(hr,{accept:e.unref(S),multiple:!1,disabled:x.disabled,"max-file-size":x.maxFileSize,onFiles:k},null,8,["accept","disabled","max-file-size"])],!0):e.unref(g)&&e.unref(s)?e.renderSlot(x.$slots,"preview",{key:1,item:e.unref(s),remove:e.unref(d),replace:R},()=>[e.createElementVNode("div",zE,[e.createVNode(vr,{item:e.unref(s),adapter:e.unref(E),disabled:x.disabled,sortable:!1,"show-remove":!x.readonly,"show-edit":!1,onRemove:v,onRetry:C,onCancel:U},null,8,["item","adapter","disabled","show-remove"]),x.showReplaceButton&&!x.readonly&&!x.disabled&&e.unref(s).media?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-attachment__replace-button",onClick:R},[...T[0]||(T[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.createElementVNode("polyline",{points:"17 8 12 3 7 8"}),e.createElementVNode("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1),e.createTextVNode(" Replace ",-1)])])):e.createCommentVNode("",!0)])],!0):e.renderSlot(x.$slots,"empty",{key:2},()=>[T[1]||(T[1]=e.createElementVNode("div",{class:"media-attachment__empty"},[e.createElementVNode("p",null,"No file selected")],-1))],!0),x.generateFormFields&&e.unref(M)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("input",{type:"hidden",name:`${x.name}[uuid]`,value:e.unref(M).uuid},null,8,PE),e.createElementVNode("input",{type:"hidden",name:`${x.name}[name]`,value:e.unref(M).name},null,8,WE),e.createElementVNode("input",{type:"hidden",name:`${x.name}[order]`,value:e.unref(M).order},null,8,jE),e.unref(M).custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${x.name}[custom_properties]`,value:JSON.stringify(e.unref(M).custom_properties)},null,8,ZE)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.unref(w).length>0?(e.openBlock(),e.createElementBlock("div",XE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),I=>(e.openBlock(),e.createElementBlock("p",{key:I.code||I.message,class:"media-attachment__error"},e.toDisplayString(I.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),GE=Ne(HE,[["__scopeId","data-v-26911174"]]),yc={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"}},JE=e.defineComponent({__name:"MediaCollectionProvider",props:{modelValue:{default:()=>[]},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxItems:{},maxFileSize:{},acceptedMimeTypes:{},sortable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","reorder","is-ready-to-submit-change","validation-error"],setup(a,{expose:n,emit:t}){const o=a,i=t,r={initialItems:o.modelValue,modelType:o.modelType,modelId:o.modelId,collection:o.collection,maxItems:o.maxItems,maxFileSize:o.maxFileSize,acceptedMimeTypes:o.acceptedMimeTypes,sortable:o.sortable,disabled:o.disabled,rules:o.rules,adapterType:o.adapter,onChange:x=>{i("update:modelValue",x),i("change",x)},onUpload:x=>{i("upload",x)},onUploadComplete:x=>{i("upload-complete",x)},onUploadError:x=>{i("upload-error",x)},onRemove:x=>{i("remove",x)},onReorder:x=>{i("reorder",x)},onError:x=>{i("validation-error",x)},onReadyToSubmitChange:x=>{i("is-ready-to-submit-change",x)}},{items:s,setItems:c,addFiles:l,removeItem:d,reorderItems:u,updateItem:m,cancelUpload:p,retryUpload:h,isLoading:g,isUploading:w,isReadyToSubmit:E,isAtMaxItems:M,errors:S,dragState:y,getDragProps:f,adapter:k,formValues:R,acceptString:N}=za(r);e.provide("mediaAdapter",k),e.provide("mediaCollection",{items:s,addFiles:l,removeItem:d,reorderItems:u}),e.watch(()=>o.modelValue,x=>{x!==s.value&&c(x)},{deep:!0});const v=e.computed(()=>({...yc,...o.labels})),C=e.computed(()=>({accept:N.value,multiple:o.maxItems!==1,disabled:o.disabled||o.readonly||M.value})),U=e.computed(()=>({items:s.value,isLoading:g.value,isUploading:w.value,isReadyToSubmit:E.value,isAtMaxItems:M.value,errors:S.value,addFiles:l,removeItem:d,reorderItems:u,clearAll:()=>{s.value.forEach(x=>d(x))},cancelUpload:p,retryUpload:h,labels:v.value,dropzoneProps:C.value}));return n({items:s,addFiles:l,removeItem:d,reorderItems:u,updateItem:m,cancelUpload:p,retryUpload:h,isLoading:g,isUploading:w,isReadyToSubmit:E,isAtMaxItems:M,errors:S,dragState:y,getDragProps:f,adapter:k,formValues:R,acceptString:N}),(x,T)=>e.renderSlot(x.$slots,"default",e.normalizeProps(e.guardReactiveProps(U.value)))}}),YE=e.defineComponent({__name:"MediaAttachmentProvider",props:{modelValue:{default:null},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxFileSize:{},acceptedMimeTypes:{},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0},showReplaceButton:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","replace","is-ready-to-submit-change","validation-error"],setup(a,{expose:n,emit:t}){const o=a,i=t,r={initialItem:o.modelValue,modelType:o.modelType,modelId:o.modelId,collection:o.collection,maxFileSize:o.maxFileSize,acceptedMimeTypes:o.acceptedMimeTypes,disabled:o.disabled,rules:o.rules,adapterType:o.adapter,onChange:v=>{i("update:modelValue",v),i("change",v)},onUpload:v=>{i("upload",v)},onUploadComplete:v=>{i("upload-complete",v)},onUploadError:v=>{i("upload-error",v)},onRemove:v=>{i("remove",v)},onReplace:(v,C)=>{i("replace",C)},onError:v=>{i("validation-error",v)},onReadyToSubmitChange:v=>{i("is-ready-to-submit-change",v)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:p,isLoading:h,isUploading:g,isReadyToSubmit:w,hasItem:E,errors:M,adapter:S,formValue:y,acceptString:f}=gr(r);e.provide("mediaAdapter",S),e.watch(()=>o.modelValue,v=>{v!==s.value&&c(v)},{deep:!0});const k=e.computed(()=>({...yc,...o.labels})),R=e.computed(()=>({accept:f.value,multiple:!1,disabled:o.disabled||o.readonly||E.value})),N=e.computed(()=>({item:s.value,hasItem:E.value,isLoading:h.value,isUploading:g.value,isReadyToSubmit:w.value,errors:M.value,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:p,labels:k.value,dropzoneProps:R.value}));return n({item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:p,isLoading:h,isUploading:g,isReadyToSubmit:w,hasItem:E,errors:M,adapter:S,formValue:y,acceptString:f}),(v,C)=>e.renderSlot(v.$slots,"default",e.normalizeProps(e.guardReactiveProps(N.value)))}}),KE=["name","value"],qE=["name","value"],QE=["name","value"],e3=["name","value"],t3=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(()=>dr(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,KE),e.createElementVNode("input",{type:"hidden",name:s(u,"name"),value:d.name},null,8,qE),e.createElementVNode("input",{type:"hidden",name:s(u,"order"),value:d.order},null,8,QE),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,e3)):e.createCommentVNode("",!0)],64))),128))}});exports.AlbumBrowser=uc;exports.AlbumManager=R4;exports.AlbumMediaGrid=X4;exports.AlbumTree=dc;exports.ArrayBufferTarget=Xi;exports.ImageEditor=Zs;exports.ImageEditorModal=Xs;exports.LiveStreamManager=s4;exports.ManagedMediaGallery=Ld;exports.MediaAttachment=GE;exports.MediaCollection=LE;exports.MediaCollectionDropzone=hr;exports.MediaCollectionItem=vr;exports.MediaWorkspace=$d;exports.ModelMediaManager=Rm;exports.Muxer=gl;exports.VideoEditor=Oi;exports.VideoEditorDialog=jw;exports.VideoEditorSimple=fb;exports.VideoExportPanel=H2;exports.VideoJobClient=cr;exports.VideoPlayer=sc;exports.VideoTimeline=Ob;exports.VideoToolsPanel=N2;exports.VideoUploader=Rk;exports._sfc_main=JE;exports._sfc_main$1=YE;exports._sfc_main$2=t3;exports.applyTemporaryMediaStoreConfig=Ws;exports.configureMediaStore=Fn;exports.createAdapter=mc;exports.createMediablesAdapter=ur;exports.createSpatieAdapter=mr;exports.formatFileSize=ha;exports.fromMediaArray=Li;exports.getFileExtension=pc;exports.getImageDimensions=fc;exports.getMediablesAdapter=H4;exports.getSpatieAdapter=Y4;exports.isImageFile=pr;exports.resetMediablesAdapter=G4;exports.resetSpatieAdapter=K4;exports.restoreMediaStoreConfig=Ps;exports.snapshotMediaStoreConfig=zs;exports.toFormValues=dr;exports.useAdminMediaStore=js;exports.useAlbumDragDrop=cc;exports.useAlbumStore=Aa;exports.useAlbums=lc;exports.useMediaAttachment=gr;exports.useMediaCollection=za;exports.useMediaDragSort=gc;exports.useMediaStore=kt;exports.useMediaUploadQueue=vc;exports.useMediaValidation=fr;exports.validateFile=hc;
342
- //# sourceMappingURL=index-BBpOpdLI.cjs.map
341
+ `+r):o.stack=r}catch{}}throw o}}_request(n,t){typeof n=="string"?(t=t||{},t.url=n):t=n||{},t=wn(this.defaults,t);const{transitional:o,paramsSerializer:i,headers:r}=t;o!==void 0&&ta.assertOptions(o,{silentJSONParsing:Ot.transitional(Ot.boolean),forcedJSONParsing:Ot.transitional(Ot.boolean),clarifyTimeoutError:Ot.transitional(Ot.boolean)},!1),i!=null&&(J.isFunction(i)?t.paramsSerializer={serialize:i}:ta.assertOptions(i,{encode:Ot.function,serialize:Ot.function},!0)),t.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ta.assertOptions(t,{baseUrl:Ot.spelling("baseURL"),withXsrfToken:Ot.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=r&&J.merge(r.common,r[t.method]);r&&J.forEach(["delete","get","head","post","put","patch","common"],g=>{delete r[g]}),t.headers=gt.concat(s,r);const c=[];let l=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(t)===!1||(l=l&&w.synchronous,c.unshift(w.fulfilled,w.rejected))});const d=[];this.interceptors.response.forEach(function(w){d.push(w.fulfilled,w.rejected)});let u,m=0,p;if(!l){const g=[Is.bind(this),void 0];for(g.unshift(...c),g.push(...d),p=g.length,u=Promise.resolve(t);m<p;)u=u.then(g[m++],g[m++]);return u}p=c.length;let h=t;for(m=0;m<p;){const g=c[m++],w=c[m++];try{h=g(h)}catch(E){w.call(this,E);break}}try{u=Is.call(this,h)}catch(g){return Promise.reject(g)}for(m=0,p=d.length;m<p;)u=u.then(d[m++],d[m++]);return u}getUri(n){n=wn(this.defaults,n);const t=Ql(n.baseURL,n.url,n.allowAbsoluteUrls);return Gl(t,n.params,n.paramsSerializer)}};J.forEach(["delete","get","head","options"],function(n){gn.prototype[n]=function(t,o){return this.request(wn(o||{},{method:n,url:t,data:(o||{}).data}))}});J.forEach(["post","put","patch"],function(n){function t(o){return function(r,s,c){return this.request(wn(c||{},{method:n,headers:o?{"Content-Type":"multipart/form-data"}:{},url:r,data:s}))}}gn.prototype[n]=t(),gn.prototype[n+"Form"]=t(!0)});let Ly=class ic{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 Wn(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 ic(function(i){n=i}),cancel:n}}};function Ay(a){return function(t){return a.apply(null,t)}}function zy(a){return J.isObject(a)&&a.isAxiosError===!0}const Ui={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(Ui).forEach(([a,n])=>{Ui[n]=a});function rc(a){const n=new gn(a),t=Dl(gn.prototype.request,n);return J.extend(t,gn.prototype,n,{allOwnKeys:!0}),J.extend(t,n,null,{allOwnKeys:!0}),t.create=function(i){return rc(wn(a,i))},t}const Ze=rc(_o);Ze.Axios=gn;Ze.CanceledError=Wn;Ze.CancelToken=Ly;Ze.isCancel=Kl;Ze.VERSION=ac;Ze.toFormData=Da;Ze.AxiosError=_e;Ze.Cancel=Ze.CanceledError;Ze.all=function(n){return Promise.all(n)};Ze.spread=Ay;Ze.isAxiosError=zy;Ze.mergeConfig=wn;Ze.AxiosHeaders=gt;Ze.formToJSON=a=>Yl(J.isHTMLForm(a)?new FormData(a):a);Ze.getAdapter=oc.getAdapter;Ze.HttpStatusCode=Ui;Ze.default=Ze;const{Axios:r3,AxiosError:s3,CanceledError:l3,isCancel:c3,CancelToken:d3,VERSION:u3,all:m3,Cancel:p3,isAxiosError:f3,spread:h3,toFormData:v3,AxiosHeaders:g3,HttpStatusCode:y3,formToJSON:w3,getAdapter:b3,mergeConfig:k3}=Ze;class cr{constructor(n="/api/v1"){this.eventSource=null,this.progressCallbacks=new Map,this.api=Ze.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 cr;const Py={key:0,class:"mobile-layout"},Wy={class:"mobile-toolbar"},jy={class:"mobile-toolbar-left"},Zy=["aria-label"],Xy={class:"mobile-toolbar-right"},Hy=["disabled"],Gy=["disabled"],Jy={class:"preview-section"},Yy={key:0,class:"mobile-export-overlay"},Ky={class:"mobile-export-progress"},qy={class:"mobile-export-bar"},Qy={class:"mobile-timeline-zoom"},ew={key:1,class:"desktop-layout"},tw={class:"desktop-main-row"},nw={class:"preview-panel"},ow={class:"fit-toggle"},aw={class:"editor-content"},iw={class:"editor-tabs"},rw={class:"tab-header"},sw=["onClick"],lw={class:"tab-content-area"},cw={class:"filter-controls"},dw={class:"text-controls"},uw={class:"transition-controls"},mw={class:"audio-controls"},pw={class:"adjustments-controls"},fw={key:1,class:"no-filter-selected"},hw={class:"export-controls"},vw={key:0,"data-testid":"video-export-status-completed"},gw={key:1,"data-testid":"video-export-status-message",class:"export-status-message"},yw={class:"desktop-timeline-row"},ww={class:"timeline-zoom"},bw=["value"],kw={class:"zoom-readout"},xw={key:0,class:"dev-editor-controls","data-testid":"video-editor-dev-controls"},Ew={class:"dev-editor-row"},Vw={class:"dev-editor-field"},Sw={class:"dev-editor-field"},Cw=["disabled"],Nw=["disabled"],_w=["disabled"],Tw={class:"dev-editor-row"},Mw={class:"dev-editor-field dev-editor-field--wide"},Bw=["value"],Fw=["disabled"],Iw=["disabled"],Rw=["disabled"],$w=["disabled"],Dw=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),p=e.computed(()=>m.value==="filters"||E.value),h=e.computed(()=>m.value!=="filters"&&!E.value),g=e.ref(null),w=e.ref(null),E=e.ref(!1),M=e.computed(()=>c.value?g.value:w.value);function S(b){return b==="contain"||b==="cover"||b==="none"}function y(b){if(!(b!=null&&b.metadata))return null;const V=b.metadata.fit_mode;return S(V)?V:null}const f=e.shallowRef(null),k=e.ref(null),R=e.ref(y(o.initialRecipe)??"contain"),N=e.ref(null),v=e.ref(null),C=e.ref(null),U=e.ref(!1),x=new Map,T=e.ref([]),I=e.ref([]),O=e.ref([]),$=e.ref([]),j=e.ref(1),P=()=>{c.value=window.innerWidth<768},_=[{id:"filters",label:"Filters",icon:an},{id:"adjustments",label:"Adjust",icon:ou},{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:po}],L=[{id:"filters",label:"Filters"},{id:"adjustments",label:"Adjustments"},{id:"text",label:"Text"},{id:"transitions",label:"Transitions"},{id:"audio",label:"Audio"},{id:"export",label:"Export"}],G=e.computed(()=>_.filter(b=>u.value[b.id])),X=e.computed(()=>L.filter(b=>u.value[b.id])),ce=e.computed(()=>{var b,V;return((b=X.value[0])==null?void 0:b.id)??((V=G.value[0])==null?void 0:V.id)??"filters"});e.watch(u,b=>{b[l.value]||(l.value=ce.value),b[d.value]||(d.value=ce.value)},{immediate:!0,deep:!0}),e.watch(ce,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=ce.value),d.value==="export"&&(d.value=ce.value))},{immediate:!0,deep:!0});const Te=e.computed(()=>typeof window>"u"?!1:window.__MEDIABLES_EDITOR_DEV__===!0),{currentFrame:Re,playheadPosition:ie,timelineClips:B,totalDuration:z,hasChanges:de,isPlaying:oe,selectedClip:K,zoomLevel:ee,playbackSpeed:ue,handleTrim:ge,handleSplit:xe,handleClipSelect:ne,splitAtPlayhead:ke,deleteSelectedClip:he,duplicateSelectedClip:Ye,setZoomLevel:it,moveClip:pt,setFilters:me,setTextOverlays:W,setAudioTracks:Y,saveDraft:te,clearHasChanges:ae,resetChanges:pe,generateRecipe:we,zoomIn:Be,zoomOut:Ue,fitToWindow:H,togglePlayback:re,setPlaying:be,seekTo:Se,frameForward:Ae,frameBackward:wt,skipToStart:dt,skipToEnd:St,setPlaybackSpeed:Xe,updateSourceDuration:Zt}=Q1(s.value,o.initialRecipe,o.media),{videoCompatibleFilters:Pa,activeFilters:Ke,selectedFilter:yr,previewFilter:To,previewFilterEffect:wr,applyFilter:br,updateFilterParams:wc,removeFilter:bc,clearAllFilters:kr,setActiveFilters:kc}=cg();function jn(b){var Z,q;const V=((Z=K.value)==null?void 0:Z.id)??((q=B.value[0])==null?void 0:q.id);V&&(U.value=!0,typeof b=="object"&&b.id?br(b.id):typeof b=="string"&&br(b),me(Ke.value),f.value?f.value.setClipFilters(V,Ke.value):x.set(V,[...Ke.value]),ne(V),U.value=!1,Rt())}function xc(){var V,Z;const b=((V=K.value)==null?void 0:V.id)??((Z=B.value[0])==null?void 0:Z.id);b&&ne(b)}function xr(b){const V=Ke.value.find(Z=>Z.filterId===b);V&&bc(V.id)}const Zn=e.computed(()=>Pa.value.map(V=>{var q;const Z=[];if(V.controls&&V.controls.length>0)for(const se of V.controls){const Q=se.type;if(Q==="button"||Q==="text"||Q==="range")continue;const le={id:se.property||se.id,label:se.label||se.id,type:Q,default:se.default??(Q==="toggle"?!1:Q==="color"?"#ffffff":0)};Q==="slider"&&(le.min=se.min??0,le.max=se.max??1,le.step=se.step??.01),Q==="select"&&se.options&&(le.options=se.options),Z.push(le)}else if(V.paramRanges){const se=Object.entries(V.paramRanges);for(const[Q,le]of se){const Ie=Q.replace(/[-_]/g," ").replace(/\b\w/g,$t=>$t.toUpperCase()),ut=(q=V.defaultParams)==null?void 0:q[Q],Gt=(le.min+le.max)/2;Z.push({id:Q,label:Ie,min:le.min,max:le.max,step:le.step??.01,default:typeof ut=="number"?ut:Gt})}}return{id:V.id,name:V.name,category:V.category,params:Z}})),En=e.ref("0.00"),Vn=e.ref("0.00"),qt=e.ref("");e.watch(Zn,b=>{if(b.length===0){qt.value="";return}b.some(Z=>Z.id===qt.value)||(qt.value=b[0].id)},{immediate:!0});const Qe=e.ref(!1),We=e.ref(0),Xt=e.ref(!1),Pe=e.ref(null),Tt=e.ref(null);let Mo=null,Ct=!1,Ht=null;const Wa=e.computed(()=>{const b=new Map;return Ke.value.forEach(V=>b.set(V.filterId,V)),b}),Ec=e.computed(()=>{var b,V;return Re.value?Re.value:((b=o.media)==null?void 0:b.thumbnail_url)||((V=o.media)==null?void 0:V.url)}),It=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,Z)=>{var se,Q;const q=It.value;Z(()=>{q&&q.startsWith("blob:")&&URL.revokeObjectURL(q)}),(se=o.media)!=null&&se.file?It.value=URL.createObjectURL(o.media.file):(Q=o.media)!=null&&Q.url?It.value=o.media.url:It.value=""},{immediate:!0}),e.onUnmounted(()=>{It.value&&It.value.startsWith("blob:")&&URL.revokeObjectURL(It.value)});const ja=e.computed(()=>It.value),Er=e.computed(()=>{if(!o.media)return null;const{file:b,...V}=o.media;return{...V,url:It.value}}),Vr=e.computed(()=>{var V;const b=(V=o.media)==null?void 0:V.url;return!!(b&&/^https?:/i.test(b))}),Sr=e.computed(()=>Ke.value),Cr=e.computed(()=>ie.value),Vc=e.computed(()=>!!K.value&&ie.value>0),Sc=e.computed(()=>!!K.value&&B.value.length>1),Za=e.ref(0),Qt=e.computed(()=>{try{const b=z.value??z;return b&&typeof b=="number"&&b>0?b:Za.value}catch{return Za.value}}),Sn=e.ref(),Xa=e.ref(),Bo=e.ref(0),Fo=e.ref(!1);let ft=null;e.watch(Qt,b=>{var Z;if(Fo.value||!b||b<=0)return;const V=Bo.value||((Z=Sn.value)==null?void 0:Z.clientWidth)||0;V>0&&(Fo.value=!0,H(V))}),e.watch(Bo,b=>{if(Fo.value||!b||b<=0)return;Qt.value>0&&(Fo.value=!0,H(b))});function Cn(b){return Number.isFinite(b)?b.toFixed(2):"0.00"}function Nr(b){const V=Number(b);return Number.isFinite(V)?V:null}function Cc(b){b&&(En.value=Cn(b.sourceIn),Vn.value=Cn(b.sourceOut))}e.watch(()=>{var b,V,Z;return[(b=K.value)==null?void 0:b.id,(V=K.value)==null?void 0:V.sourceIn,(Z=K.value)==null?void 0:Z.sourceOut]},()=>{Cc(K.value)},{immediate:!0});function _r(b){const V=K.value;if(!V)return;const Z=1/30,q=V.sourceMinIn??0,se=V.sourceMaxOut??Qt.value,Q=V.sourceIn+(ie.value-V.timelineStart);if(b==="start"){const Ie=Math.max(q,Math.min(Q,V.sourceOut-Z));En.value=Cn(Ie);return}const le=Math.max(V.sourceIn+Z,Math.min(Q,se));Vn.value=Cn(le)}function Nc(){const b=K.value;if(!b)return;const V=Nr(En.value),Z=Nr(Vn.value);if(V===null||Z===null)return;const q=1/30,se=b.sourceMinIn??0,Q=b.sourceMaxOut??Qt.value,le=Math.max(se,Math.min(V,Q-q)),Ie=Math.max(le+q,Math.min(Z,Q));ge(b.id,"start",le),ge(b.id,"end",Ie),En.value=Cn(le),Vn.value=Cn(Ie),K.value&&Se(K.value.timelineStart)}function _c(){qt.value.trim()!==""&&jn(qt.value)}function Tc(){var b;kr(),me(Ke.value),(b=K.value)!=null&&b.id&&(f.value?f.value.setClipFilters(K.value.id,Ke.value):x.set(K.value.id,[...Ke.value])),Rt()}function Tr(b,V,Z){var se,Q;const q=Ke.value.find(le=>le.filterId===b);q?(q.params={...q.params,[V]:Z},me(Ke.value),f.value&&((se=K.value)!=null&&se.id)?f.value.setClipFilters(K.value.id,Ke.value):(Q=K.value)!=null&&Q.id&&x.set(K.value.id,[...Ke.value]),Rt(),xc()):To.value&&To.value.filterId===b&&(To.value.params={...To.value.params||{},[V]:Z})}function Mr(b){Se(b)}function Br(b){be(b)}function Io(b){!Number.isFinite(b)||b<=0||(Za.value=b,Zt(b))}function Mc(){var V;const b=Bo.value||((V=Sn.value)==null?void 0:V.clientWidth)||800;H(b)}function Bc(b){const V=b.target,Z=Number(V.value);it(Z)}function Fr(b){const V=Math.min(600,Math.max(10,ee.value+b));it(V)}function Ir(b){var V;f.value=b,(V=f.value)!=null&&V.composition&&(N.value=new dg(f.value.composition),v.value=new ma(f.value.composition),C.value=new ug(f.value.composition));try{x.size&&(x.forEach((Z,q)=>{f.value.setClipFilters(q,Z)}),x.clear(),f.value.composition.computeFrame())}catch{}}function Fc(b){b!=null&&b.id&&wr(b.id)}function Ic(b){wc(b),Rt()}async function Rc(b){if(!N.value)return;const V=await N.value.addTextOverlay(b);T.value.push({id:V,...b})}async function $c(b,V){if(!N.value)return;await N.value.updateTextOverlay(b,V);const Z=T.value.findIndex(q=>q.id===b);Z!==-1&&(T.value[Z]={...T.value[Z],...V})}async function Dc(b){N.value&&(await N.value.removeTextOverlay(b),T.value=T.value.filter(V=>V.id!==b))}async function Uc(b){if(!v.value||$.value.length<2)return;const[V,Z]=$.value,q=await v.value.applyTransition(V,Z,b);I.value.push({id:q,...b,name:b.type})}function Oc(b){if(!v.value)return;const V=I.value[b];V&&(v.value.removeTransition(V.id),I.value.splice(b,1))}function Lc(b){}async function Ac(b){if(!C.value)return;const V=await C.value.addAudioTrack(b);O.value.push({id:V,...b})}async function zc(b,V){if(!C.value)return;const Z=O.value.findIndex(q=>q.id===b);Z!==-1&&(O.value[Z]={...O.value[Z],...V})}async function Pc(b){C.value&&(await C.value.removeAudioTrack(b),O.value=O.value.filter(V=>V.id!==b))}async function Wc(b,V){if(!C.value)return;await C.value.updateVolume(b,V);const Z=O.value.find(q=>q.id===b);Z&&(Z.volume=V)}async function jc(b,V){if(!C.value)return;await C.value.muteTrack(b,V);const Z=O.value.find(q=>q.id===b);Z&&(Z.muted=V)}function Zc(b){C.value&&(C.value.setMasterVolume(b),j.value=b)}function Xc(b){i("thumbnail-selected",b)}function en(){Mo!==null&&(clearInterval(Mo),Mo=null)}function Hc(b,V){return V?{...b,output:{...b.output,format:V.format,quality:V.quality}}:b}function Xn(b){var V;return b.metadata||(b.metadata={created_at:new Date().toISOString(),editor_version:"2.0.0"}),b.metadata.fit_mode=R.value,(V=o.media)!=null&&V.url&&/^https?:/i.test(o.media.url)?b.metadata.source_url=o.media.url:delete b.metadata.source_url,b}function je(b,V,Z){return Math.min(Z,Math.max(V,b))}function Ha(b,V){if(typeof b=="number"&&Number.isFinite(b))return b;if(typeof b=="string"){const Z=Number(b);if(Number.isFinite(Z))return Z}return V}function rt(b,V,Z){for(const q of V)if(q in b)return Ha(b[q],Z);return Z}function Gc(b){const V=typeof b.params=="object"&&b.params!==null?b.params:{};switch(b.filterId.trim().toLowerCase()){case"brightness":return[{type:"brightness",value:je(rt(V,["value","brightness"],0),-1,1)}];case"contrast":return[{type:"contrast",value:je(rt(V,["value","contrast"],1),.1,3)}];case"saturation":return[{type:"saturation",value:je(rt(V,["value","saturation"],1),0,3)}];case"blur":case"gaussian-blur":case"kawase-blur":case"radial-blur":return[{type:"blur",value:je(rt(V,["value","blur","radius"],0),0,25)}];case"sharpen":return[{type:"sharpen",value:je(rt(V,["value","amount"],1),0,5)}];case"sepia":return[{type:"sepia",value:1}];case"grayscale":return[{type:"grayscale",value:1}];case"adjustment":{const q=je(rt(V,["brightness"],1)-1,-1,1),se=je(rt(V,["contrast"],1),.1,3),Q=je(rt(V,["saturation"],1),0,3);return[{type:"brightness",value:q},{type:"contrast",value:se},{type:"saturation",value:Q}]}default:return[]}}function Jc(b){const V=b.timeline[0],Z=Array.isArray(V==null?void 0:V.filters)?V.filters:[],q=[];for(const Q of Z)if(q.push(...Gc(Q)),q.length>=12)break;const se={...b,filters:q.slice(0,12)};if(b.timeline.length===1&&V){const Q=Math.max(0,Ha(V.sourceIn,0)),le=Ha(V.sourceOut,Q);le>Q&&(se.trim={start:Q,end:le})}return se}function Yc(b){return{"360p":[640,360],"480p":[854,480],"720p":[1280,720],"1080p":[1920,1080],"1440p":[2560,1440],"2160p":[3840,2160]}[b??""]??[1920,1080]}function Kc(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 Z=V.value;if(typeof Z=="number"&&Number.isFinite(Z)&&Z>0)return Z}return null}async function Rr(b,V,Z){var Gt,$t,Dt,Ut;const q=b.timeline[0],se=q?Math.max(0,q.sourceIn):0,Q=q?q.sourceOut:void 0,[le,Ie]=Yc((V==null?void 0:V.quality)??((Gt=b.output)==null?void 0:Gt.quality)),ut=(($t=b.output)==null?void 0:$t.fps)||30;be(!1),E.value=!0,await e.nextTick();try{const et=[200,500,1e3];let st=!1;for(const ei of et){await new Promise(gd=>setTimeout(gd,ei));const $o=M.value;if(!(!$o||typeof $o.captureFrameAt!="function")&&typeof $o.ensureReadyForCapture=="function"&&(st=await $o.ensureReadyForCapture(),st))break}const bt=M.value;if(!bt||typeof bt.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:Ro,isWebCodecsSupported:Hn}=await Promise.resolve().then(()=>require("./PixiFrameExporter-DM4yaigy.cjs"));if(!Hn())throw new Error("WebCodecs is not supported in this browser. Export requires Chrome 94+ or equivalent.");Ht=new AbortController;const Nn={width:le,height:Ie,fps:ut,trimStart:se,signal:Ht.signal};Q!==void 0&&(Nn.trimEnd=Q),Z&&(Nn.onProgress=Z);const Wr=It.value;Wr!==""&&(Nn.sourceUrl=Wr);const md=typeof bt.duration=="number"&&bt.duration>0?bt.duration:((Dt=b.source)==null?void 0:Dt.duration)??Q??0,pd=await Ro({captureFrameAt:ei=>bt.captureFrameAt(ei),duration:{value:md}},Nn),Qa=new File([pd],`edited-video-${Date.now()}.mp4`,{type:"video/mp4"}),fd=Kc(bt),hd=((Ut=b.source)==null?void 0:Ut.duration)??0,vd=Math.max(0,(Q??fd??hd)-se);return{file:Qa,recipe:b,meta:{duration:vd,width:le,height:Ie,format:"mp4",sizeBytes:Qa.size,size_bytes:Qa.size}}}finally{E.value=!1,Ht=null}}async function qc(b,V){var Ut;en(),Ct=!1,Ht=null,Tt.value=null,Pe.value=null,Xt.value=!1,We.value=0;const Z=Xn(b??we()),q=zr(Z),se=Array.isArray(q.filters)&&q.filters.length>0,Q=Ya(q);if(!(de.value||se||Q))return ae(),i("video-exported",null),null;const Ie=q.timeline[0],ut=Ie?Math.max(0,Ie.sourceIn):0,$t=((Ie==null?void 0:Ie.sourceOut)??((Ut=q.source)==null?void 0:Ut.duration)??Qt.value)-ut,Dt=o.serverRenderEndpoint!=null&&o.clientExportThreshold>0&&$t>o.clientExportThreshold;if(Dt){Qe.value=!0;try{return await Qc(q),null}catch(et){const st=et instanceof Error?et.message:"Server render failed";throw Pe.value=st,i("server-render-failed",st),et}finally{Qe.value=!1}}if(o.maxDuration>0&&$t>o.maxDuration&&!Dt){const et=`This video is too long for in-browser export (${Math.round($t)}s). Server rendering is not available. Try a shorter clip.`;return Pe.value=et,i("video-exported",null),null}Qe.value=!0;try{const et=await Rr(q,V,st=>{Ct||(We.value=st)});return Ct?(Pe.value="Export canceled.",We.value=0,i("video-exported",null),null):(ae(),i("recipe-generated",q),i("video-exported",et),We.value=100,Xt.value=!0,et)}catch(et){if(Ct)return Pe.value="Export canceled.",We.value=0,i("video-exported",null),null;const st=et instanceof Error?et.message:"Local WebGL export failed.";throw Pe.value=st,new Error(`Video export failed: ${st}`)}finally{Qe.value=!1}}async function Qc(b){const V=new cr(o.serverRenderEndpoint??"/api/v1");Pe.value="Starting server render...",We.value=0;const Z=await V.createRenderJob({source_media_uuid:s.value,recipe:b});Tt.value=Z.id,i("server-render-started",Z.id),i("export-started",Z.id),Pe.value="Rendering on server...";const q=await V.pollRenderJob(Z.id,(Q,le)=>{We.value=Q,le==="processing"&&(Pe.value=`Server rendering: ${Q}%`)},3e3,(o.maxDuration>0?o.maxDuration*3:1800)*1e3);We.value=100,Xt.value=!0,Pe.value="Server render complete!",ae(),i("recipe-generated",b);const se={id:q.id};typeof q.output_media_id=="string"&&q.output_media_id!==""&&(se.output_media_id=q.output_media_id),i("server-render-completed",se)}async function $r(){if(!Qe.value)return;Ct=!0,E.value=!1,Ht&&(Ht.abort(),Ht=null),en();const b=Tt.value;if(b)try{const V=await fetch(`/api/v1/video/jobs/${b}`,{method:"DELETE"});if(!V.ok)throw new Error(`Cancel failed: ${V.status} ${V.statusText}`)}catch(V){const Z=V instanceof Error?V.message:"Failed to cancel export";Pe.value=Z,Qe.value=!1,Tt.value=null;return}Qe.value=!1,We.value=0,Xt.value=!1,Tt.value=null,Pe.value="Export canceled."}async function Dr(b){en(),Ct=!1,Ht=null,Tt.value=null,Pe.value=null,Xt.value=!1,Qe.value=!0,We.value=0;try{const V=Xn(Hc(we(),b));i("recipe-generated",V);const Z=s.value.startsWith("temp-"),q=V.timeline[0],se=Array.isArray(q==null?void 0:q.filters)?q.filters:[],Q=!0,le=typeof window<"u"&&window.MEDIABLES_ALLOW_SERVER_EXPORT_FALLBACK===1||typeof localStorage<"u"&&localStorage.getItem("mediables.export.allowServerFallback")==="1";if(Q)try{const bt=await Rr(V,b,Nn=>{Ct||(We.value=Nn)});if(Ct){Pe.value="Export canceled.",Qe.value=!1,We.value=0;return}i("video-exported",bt);const Ro=URL.createObjectURL(bt.file),Hn=document.createElement("a");Hn.href=Ro,Hn.download=`edited-video-${Date.now()}.mp4`,Hn.click(),setTimeout(()=>URL.revokeObjectURL(Ro),100),Qe.value=!1,We.value=100,Xt.value=!0;return}catch(bt){if(Ct){Pe.value="Export canceled.",Qe.value=!1,We.value=0;return}if(Z||!le)throw bt;We.value=0,Pe.value="Local filter export failed, falling back to server render."}const Ie={"360p":"low","480p":"low","720p":"medium","1080p":"high","1440p":"ultra","2160p":"ultra"},ut=(b==null?void 0:b.quality)??V.output.quality,Gt=Ie[ut]??"high",$t={...Jc(V),export:{format:(b==null?void 0:b.format)??V.output.format,quality:Gt,resolution:ut,framerate:V.output.fps}},Dt=await fetch("/api/v1/video/jobs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source_media_id:s.value,recipe:$t})});if(!Dt.ok)throw new Error(`Export failed: ${Dt.status} ${Dt.statusText}`);const Ut=await Dt.json(),et=(Ut==null?void 0:Ut.data)??Ut,st=typeof(et==null?void 0:et.id)=="string"?et.id:null;if(!st)throw new Error("Export failed: missing job id");Tt.value=st,i("export-started",st),dd(st)}catch(V){if(E.value=!1,Ht=null,Ct){Pe.value="Export canceled.",Qe.value=!1,We.value=0,Tt.value=null;return}try{const Z=Xn(we()),q=new Blob([JSON.stringify(Z,null,2)],{type:"application/json"}),se=URL.createObjectURL(q),Q=document.createElement("a");Q.href=se,Q.download=`video-recipe-${Date.now()}.json`,Q.click(),setTimeout(()=>URL.revokeObjectURL(se),100)}finally{Qe.value=!1,We.value=0,Tt.value=null,Pe.value=V instanceof Error?V.message:"Export failed"}}}const Ga=async b=>{await new Promise(V=>{window.setTimeout(V,b)})},Ja=b=>{if(!b||b.width<=0||b.height<=0)return null;try{return b.toDataURL("image/jpeg",.85)}catch{return null}},ed=b=>{if(!b||typeof b!="object")return null;const Z=b.pixiCanvas;if(Z&&typeof Z=="object"&&"value"in Z){const q=Z.value;return q instanceof HTMLCanvasElement?q:null}return Z instanceof HTMLCanvasElement?Z:null},td=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 Z=V.value;if(typeof Z=="number"&&Number.isFinite(Z))return Z}return null},nd=b=>{if(!b||typeof b!="object")return null;const Z=b.videoElement;if(Z&&typeof Z=="object"&&"value"in Z){const q=Z.value;return q instanceof HTMLVideoElement?q:null}return Z instanceof HTMLVideoElement?Z:null},Ur=b=>typeof b.params=="object"&&b.params!==null?b.params:{},od=b=>{const V=[];for(const Z of b){const q=Ur(Z),se=Z.filterId.trim().toLowerCase();if(se==="brightness"){const le=(je(rt(q,["value","brightness"],0),-1,1)+1)*100;V.push(`brightness(${le.toFixed(2)}%)`);continue}if(se==="contrast"){const Q=je(rt(q,["value","contrast"],1),.1,4);V.push(`contrast(${(Q*100).toFixed(2)}%)`);continue}if(se==="saturation"||se==="saturate"){const Q=je(rt(q,["value","saturation"],1),0,4);V.push(`saturate(${(Q*100).toFixed(2)}%)`);continue}if(se==="grayscale"){V.push("grayscale(100%)");continue}if(se==="sepia"){V.push("sepia(100%)");continue}if(se==="blur"||se==="gaussian-blur"||se==="kawase-blur"){const Q=je(rt(q,["value","blur","radius"],0),0,30);Q>.01&&V.push(`blur(${Q.toFixed(2)}px)`);continue}if(se==="adjustment"){const Q=rt(q,["brightness"],1),le=rt(q,["contrast"],1),Ie=rt(q,["saturation"],1);Math.abs(Q-1)>.01&&V.push(`brightness(${(je(Q,0,5)*100).toFixed(2)}%)`),Math.abs(le-1)>.01&&V.push(`contrast(${(je(le,.1,5)*100).toFixed(2)}%)`),Math.abs(Ie-1)>.01&&V.push(`saturate(${(je(Ie,0,5)*100).toFixed(2)}%)`);continue}if(se==="cinematic"){V.push("contrast(120%) brightness(95%) saturate(85%)");continue}if(se==="dramatic"){V.push("contrast(140%) brightness(90%) saturate(110%) sepia(10%)");continue}if(se==="dreamy"){V.push("blur(0.5px) brightness(105%) saturate(90%) contrast(95%)");continue}}return V.join(" ")},ad=b=>{const V=b.find(se=>se.filterId.trim().toLowerCase()==="noise");if(!V)return 0;const Z=Ur(V),q=rt(Z,["noise","value","amount","intensity"],.2);return q<=1?je(q,0,1):je(q/100,0,1)},id=(b,V,Z,q)=>{if(q<=0)return;const se=b.getImageData(0,0,V,Z),Q=255*q;for(let le=0;le<se.data.length;le+=4){const Ie=(Math.random()*2-1)*Q;se.data[le]=je(se.data[le]+Ie,0,255),se.data[le+1]=je(se.data[le+1]+Ie,0,255),se.data[le+2]=je(se.data[le+2]+Ie,0,255)}b.putImageData(se,0,0)},Or=async b=>{b.readyState>=2&&b.videoWidth>0&&b.videoHeight>0||await new Promise(V=>{let Z=!1,q=0;const se=()=>{Z||(Z=!0,b.removeEventListener("loadedmetadata",Q),b.removeEventListener("loadeddata",Q),b.removeEventListener("canplay",Q),window.clearTimeout(q),V())},Q=()=>{se()};b.addEventListener("loadedmetadata",Q),b.addEventListener("loadeddata",Q),b.addEventListener("canplay",Q),q=window.setTimeout(()=>se(),800),b.play().catch(()=>{})})},rd=async(b,V)=>{await new Promise(Z=>{let q=!1,se=0;const Q=()=>{q||(q=!0,b.removeEventListener("seeked",le),window.clearTimeout(se),Z())},le=()=>{Q()};if(Math.abs(b.currentTime-V)<.016){requestAnimationFrame(()=>Q());return}b.addEventListener("seeked",le),se=window.setTimeout(()=>Q(),700),b.currentTime=V})},Lr=async(b,V)=>{await Or(b);const Z=Math.floor(b.videoWidth),q=Math.floor(b.videoHeight);if(Z<=0||q<=0)return null;const se=Number.isFinite(b.duration)&&b.duration>0?b.duration:0,Q=se>0?je(V,0,se):0;await rd(b,Q);const le=document.createElement("canvas");le.width=Z,le.height=q;const Ie=le.getContext("2d");if(!Ie)return null;const ut=od(Ke.value);ut!==""&&(Ie.filter=ut);try{Ie.drawImage(b,0,0,Z,q)}catch{return null}const Gt=ad(Ke.value);return id(Ie,Z,q,Gt),Ja(le)},sd=async(b,V)=>{const Z=document.createElement("video");Z.src=b,Z.muted=!0,Z.playsInline=!0,Z.preload="auto",b.startsWith("blob:")||(Z.crossOrigin="anonymous");try{return await Or(Z),await Lr(Z,V)}catch{return null}finally{Z.pause(),Z.removeAttribute("src"),Z.load()}},ld=async b=>{const V=M.value,Z=Ja(ed(V));if(Z)return Z;if(V!=null&&V.captureFrameAt)for(let Q=0;Q<4;Q+=1){const le=td(V);if(le!==null&&le<=0&&Q<2){await Ga(80);continue}const Ie=await Promise.race([V.captureFrameAt(b),Ga(450).then(()=>null)]),ut=Ja(Ie);if(ut)return ut;await Ga(80)}const q=nd(V);if(q){const Q=await Lr(q,b);if(Q)return Q}const se=ja.value.trim();if(se!==""){const Q=await sd(se,b);if(Q)return Q}return null},Ar=b=>b.map(V=>({...V,params:V.params&&typeof V.params=="object"?{...V.params}:V.params}));function zr(b){const V=Ar(Ke.value);if(!Ya(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 Ya=b=>Array.isArray(b.timeline)?b.timeline.some(V=>Array.isArray(V.filters)&&V.filters.length>0):!1,cd=b=>{if(!b||typeof b!="object")return null;const V=b.posterFrame;if(typeof V!="string")return null;const Z=V.trim();return Z!==""?Z:null};async function Ka(){const b=Xn(zr(te())),V=Ar(Ke.value),Z=Ya(b)||V.length>0,q=cd(o.initialRecipe);if(Z){const se=ie.value>0?ie.value:.1;try{const Q=await ld(se);Q?b.posterFrame=Q:q&&(b.posterFrame=q)}catch{q&&(b.posterFrame=q)}}else delete b.posterFrame;return ae(),i("draft-saved",b),b}function Pr(){pe()&&(kr(),Rt())}async function dd(b){en(),Mo=window.setInterval(async()=>{var V,Z;try{if(Ct){en();return}const q=await fetch(`/api/v1/video/jobs/${b}`);if(!q.ok)throw new Error(`Status poll failed: ${q.status} ${q.statusText}`);const se=await q.json(),Q=(se==null?void 0:se.data)??se,le=Number((Q==null?void 0:Q.progress)??0);if(We.value=Number.isFinite(le)?le:0,Q.status==="completed"||Q.status==="failed"||Q.status==="cancelled")if(en(),Qe.value=!1,Tt.value=null,Q.status==="completed"){const Ie=((V=Q==null?void 0:Q.output_media)==null?void 0:V.url)??(Q==null?void 0:Q.output_url);We.value=100,Xt.value=!0,Pe.value=null}else{const Ie=!!((Z=Q==null?void 0:Q.meta)!=null&&Z.is_cancelled)||Q.status==="cancelled"||typeof(Q==null?void 0:Q.error_message)=="string"&&/cancel/i.test(Q.error_message);Pe.value=Ie?"Export canceled.":typeof(Q==null?void 0:Q.error_message)=="string"&&Q.error_message.trim()!==""?Q.error_message:"Export failed"}}catch(q){en(),Qe.value=!1,Tt.value=null,Pe.value=q instanceof Error?q.message:"Failed to check export progress"}},2e3)}function qa(){const b=Xn(we());try{const V=b.timeline??[]}catch{}k.value=b}let sn=null;function Rt(){sn&&clearTimeout(sn),sn=setTimeout(()=>{qa(),sn=null},200)}e.watch(()=>B.value,Rt,{deep:!0}),e.watch(()=>K.value,b=>{if(U.value||!b)return;const V=(b==null?void 0:b.filters)??[];kc(V)},{immediate:!0}),e.watch(()=>Ke.value,b=>{me(b),Rt()},{deep:!0}),e.watch(()=>T.value,b=>{W(b),Rt()},{deep:!0}),e.watch(()=>O.value,b=>{const V=b.map(Z=>({...Z,source:typeof Z.source=="string"?Z.source:void 0}));Y(V),Rt()},{deep:!0}),e.watch(()=>ie.value,Rt),n({saveDraft:Ka,exportForUpload:qc}),qa(),e.onUnmounted(()=>{en(),Ct=!0,sn&&(clearTimeout(sn),sn=null),f.value&&(f.value.destroy(),f.value=null),N.value=null,v.value=null,C.value=null});function ud(){ft||!Xa.value||(ft=new G1({filters:Zn.value,callbacks:{onApplyFilter:b=>{jn(b.id)},onRemoveFilter:b=>{xr(b)},onUpdateParam:(b,V,Z)=>{Tr(b,V,Z)},onPreviewFilter:b=>{wr(b.id)}}}),ft.mount(Xa.value),ft.setActiveFilters(Wa.value))}e.watch(Wa,b=>{ft==null||ft.setActiveFilters(b)},{deep:!0}),e.watch(Zn,b=>{ft==null||ft.setFilters(b)});let tn=null;return e.onMounted(()=>{window.addEventListener("resize",P);const b=()=>{!Sn.value||tn||(tn=new ResizeObserver(V=>{V[0]&&(Bo.value=Math.round(V[0].contentRect.width))}),tn.observe(Sn.value))};b(),tn||e.nextTick(b),o.media&&qa(),c.value&&e.nextTick(()=>{ud()}),e.nextTick(()=>{const V=document.querySelector(".video-editor");V&&V.getBoundingClientRect();const Z=document.querySelector(".mobile-layout");Z&&Z.getBoundingClientRect()})}),e.onUnmounted(()=>{window.removeEventListener("resize",P),tn==null||tn.disconnect(),tn=null,ft==null||ft.destroy(),ft=null}),(b,V)=>{var Z,q,se,Q;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-editor",{mobile:c.value}])},[c.value?(e.openBlock(),e.createElementBlock("div",Py,[e.createElementVNode("div",Wy,[e.createElementVNode("div",jy,[e.createElementVNode("button",{class:e.normalizeClass(["mobile-toolbar-btn",{active:e.unref(oe)}]),onClick:V[0]||(V[0]=(...le)=>e.unref(re)&&e.unref(re)(...le)),"aria-label":e.unref(oe)?"Pause":"Play","data-testid":"btn-mobile-play"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(oe)?e.unref(Ks):e.unref(Qs)},null,8,["icon"])],10,Zy),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:Pr,"aria-label":"Reset all changes","data-testid":"btn-mobile-reset"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Un)},null,8,["icon"])])]),e.createElementVNode("div",Xy,[e.createElementVNode("button",{class:"mobile-toolbar-btn mobile-toolbar-save",onClick:Ka,"aria-label":"Save","data-testid":"btn-mobile-save",disabled:!e.unref(de)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Pi)},null,8,["icon"]),V[14]||(V[14]=e.createElementVNode("span",null,"Save",-1))],8,Hy),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[1]||(V[1]=le=>Dr()),"aria-label":"Export","data-testid":"btn-mobile-export",disabled:Qe.value||!e.unref(de)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(po)},null,8,["icon"])],8,Gy),e.createElementVNode("button",{class:"mobile-toolbar-btn",onClick:V[2]||(V[2]=le=>i("close")),"aria-label":"Close","data-testid":"btn-mobile-close"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(In)},null,8,["icon"])])])]),e.createElementVNode("div",Jy,[e.withDirectives(e.createVNode(qr,{ref_key:"pixiPreviewMobileRef",ref:g,"aria-hidden":!p.value,class:"preview-host-child",source:ja.value,filters:Sr.value,playhead:Cr.value,"is-playing":e.unref(oe),"fit-mode":R.value,active:p.value,onPlayPause:e.unref(re),onDurationChange:Io},null,8,["aria-hidden","source","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,p.value]]),e.withDirectives(e.createVNode(gs,{"aria-hidden":!h.value,class:"preview-host-child","media-uuid":s.value,recipe:k.value,media:Er.value,"enable-engine":h.value&&Vr.value,"fit-mode":R.value,onTimeUpdate:Mr,onPlayStateChange:Br,onDurationChange:Io,onEngineReady:Ir},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,h.value]]),Qe.value?(e.openBlock(),e.createElementBlock("div",Yy,[e.createElementVNode("div",Ky,[e.createElementVNode("span",null,"Exporting "+e.toDisplayString(We.value)+"%",1),e.createElementVNode("div",qy,[e.createElementVNode("div",{class:"mobile-export-bar-fill",style:e.normalizeStyle({width:We.value+"%"})},null,4)]),e.createElementVNode("button",{class:"mobile-export-cancel",onClick:$r},"Cancel")])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:Sn,class:"timeline-section"},[e.createElementVNode("div",Qy,[e.createElementVNode("button",{class:"mobile-zoom-btn",onClick:V[3]||(V[3]=le=>Fr(-20)),"aria-label":"Zoom out timeline","data-testid":"btn-timeline-zoom-out"},[...V[15]||(V[15]=[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)])]),e.createElementVNode("button",{class:"mobile-zoom-btn",onClick:V[4]||(V[4]=le=>Fr(20)),"aria-label":"Zoom in timeline","data-testid":"btn-timeline-zoom-in"},[...V[16]||(V[16]=[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)])])]),e.createVNode(ys,{playhead:e.unref(ie),clips:e.unref(B),"selected-clip-id":((Z=e.unref(K))==null?void 0:Z.id)??((q=e.unref(B)[0])==null?void 0:q.id)??null,duration:Qt.value,"zoom-level":e.unref(ee),sensitivity:.25,"is-mobile":!0,"onUpdate:playhead":e.unref(Se),onTrim:e.unref(ge),onSplit:e.unref(xe),onClipSelect:e.unref(ne),onClipMove:e.unref(pt)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"])],512),e.createElementVNode("div",{ref_key:"mobileControlsRef",ref:Xa,class:"controls-section mobile-controls"},null,512)])):(e.openBlock(),e.createElementBlock("div",ew,[e.createElementVNode("div",tw,[e.createElementVNode("div",nw,[e.createElementVNode("div",ow,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[5]||(V[5]=le=>R.value=le),"aria-label":"Fit mode","data-testid":"select-video-fit-mode"},[...V[17]||(V[17]=[e.createElementVNode("option",{value:"contain"},"Contain",-1),e.createElementVNode("option",{value:"cover"},"Cover",-1),e.createElementVNode("option",{value:"none"},"None",-1)])],512),[[e.vModelSelect,R.value]])])]),e.withDirectives(e.createVNode(qr,{ref_key:"pixiPreviewDesktopRef",ref:w,"aria-hidden":!p.value,class:"preview-host-child",source:ja.value,filters:Sr.value,playhead:Cr.value,"is-playing":e.unref(oe),"fit-mode":R.value,active:p.value,onPlayPause:e.unref(re),onDurationChange:Io},null,8,["aria-hidden","source","filters","playhead","is-playing","fit-mode","active","onPlayPause"]),[[e.vShow,p.value]]),e.withDirectives(e.createVNode(gs,{"aria-hidden":!h.value,class:"preview-host-child","media-uuid":s.value,recipe:k.value,media:Er.value,"enable-engine":h.value&&Vr.value,"fit-mode":R.value,onTimeUpdate:Mr,onPlayStateChange:Br,onDurationChange:Io,onEngineReady:Ir},null,8,["aria-hidden","media-uuid","recipe","media","enable-engine","fit-mode"]),[[e.vShow,h.value]]),b.showThumbnailPicker?(e.openBlock(),e.createBlock(xv,{key:0,"media-uuid":s.value,duration:Qt.value,onSelect:Xc},null,8,["media-uuid","duration"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",aw,[e.createElementVNode("div",iw,[e.createElementVNode("div",rw,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value,le=>(e.openBlock(),e.createElementBlock("button",{key:le.id,class:e.normalizeClass(["tab-btn",{active:d.value===le.id}]),onClick:Ie=>d.value=le.id},e.toDisplayString(le.label),11,sw))),128))]),e.createElementVNode("div",lw,[e.withDirectives(e.createElementVNode("div",cw,[e.createVNode(I0,{filters:Zn.value,"active-filters":Wa.value,"thumbnail-url":Ec.value,onApplyFilter:jn,onRemoveFilter:xr,onUpdateParam:Tr,onPreviewFilter:Fc},null,8,["filters","active-filters","thumbnail-url"])],512),[[e.vShow,d.value==="filters"]]),e.withDirectives(e.createElementVNode("div",dw,[e.createVNode(Wv,{overlays:T.value,onAddOverlay:Rc,onUpdateOverlay:$c,onRemoveOverlay:Dc},null,8,["overlays"])],512),[[e.vShow,d.value==="text"]]),e.withDirectives(e.createElementVNode("div",uw,[e.createVNode(u1,{"selected-clips":$.value,"applied-transitions":I.value,onApplyTransition:Uc,onRemoveTransition:Oc,onPreviewTransition:Lc},null,8,["selected-clips","applied-transitions"])],512),[[e.vShow,d.value==="transitions"]]),e.withDirectives(e.createElementVNode("div",mw,[e.createVNode(X1,{"audio-layers":O.value,"master-volume":j.value,onAddTrack:Ac,onUpdateTrack:zc,onRemoveTrack:Pc,onUpdateVolume:Wc,onToggleMute:jc,onUpdateMasterVolume:Zc},null,8,["audio-layers","master-volume"])],512),[[e.vShow,d.value==="audio"]]),e.withDirectives(e.createElementVNode("div",pw,[e.unref(yr)?(e.openBlock(),e.createBlock(X0,{key:0,filter:e.unref(yr),"current-frame":e.unref(Re),onUpdateParams:Ic},null,8,["filter","current-frame"])):(e.openBlock(),e.createElementBlock("div",fw,[...V[18]||(V[18]=[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",hw,[e.createVNode(sv,{"can-export":e.unref(de),"is-exporting":Qe.value,"export-progress":We.value,onExport:Dr,onCancelExport:$r,onSaveDraft:Ka,onReset:Pr},null,8,["can-export","is-exporting","export-progress"]),Xt.value?(e.openBlock(),e.createElementBlock("div",vw," Export complete ")):e.createCommentVNode("",!0),Pe.value&&!Xt.value?(e.openBlock(),e.createElementBlock("div",gw,e.toDisplayString(Pe.value),1)):e.createCommentVNode("",!0)],512),[[e.vShow,d.value==="export"]])])])])]),e.createElementVNode("div",yw,[e.createElementVNode("div",{ref_key:"timelineContainerRef",ref:Sn,class:"timeline-container"},[e.createElementVNode("div",ww,[e.createElementVNode("label",null,[V[19]||(V[19]=e.createTextVNode(" Zoom ",-1)),e.createElementVNode("input",{type:"range",min:"10",max:"600",value:e.unref(ee),onInput:V[6]||(V[6]=le=>Bc(le))},null,40,bw)]),e.createElementVNode("span",kw,e.toDisplayString(Math.round(e.unref(ee)))+" px/s",1)]),e.createVNode(ys,{playhead:e.unref(ie),clips:e.unref(B),"selected-clip-id":((se=e.unref(K))==null?void 0:se.id)??((Q=e.unref(B)[0])==null?void 0:Q.id)??null,duration:Qt.value,"zoom-level":e.unref(ee),sensitivity:.25,"onUpdate:playhead":e.unref(Se),onTrim:e.unref(ge),onSplit:e.unref(xe),onClipSelect:e.unref(ne),onClipMove:e.unref(pt)},null,8,["playhead","clips","selected-clip-id","duration","zoom-level","onUpdate:playhead","onTrim","onSplit","onClipSelect","onClipMove"]),e.createVNode(Gh,{"selected-clip":e.unref(K),"can-split":Vc.value,"can-delete":Sc.value,"is-playing":e.unref(oe),"zoom-level":e.unref(ee),"playback-speed":e.unref(ue),onSplit:e.unref(ke),onDelete:e.unref(he),onDuplicate:e.unref(Ye),onZoomIn:e.unref(Be),onZoomOut:e.unref(Ue),onZoomChange:e.unref(it),onFitToWindow:Mc,onPlayPause:e.unref(re),onFrameForward:e.unref(Ae),onFrameBackward:e.unref(wt),onSkipToStart:e.unref(dt),onSkipToEnd:e.unref(St),onSpeedChange:e.unref(Xe)},null,8,["selected-clip","can-split","can-delete","is-playing","zoom-level","playback-speed","onSplit","onDelete","onDuplicate","onZoomIn","onZoomOut","onZoomChange","onPlayPause","onFrameForward","onFrameBackward","onSkipToStart","onSkipToEnd","onSpeedChange"]),Te.value?(e.openBlock(),e.createElementBlock("div",xw,[e.createElementVNode("div",Ew,[e.createElementVNode("label",Vw,[V[20]||(V[20]=e.createElementVNode("span",null,"Trim start (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[7]||(V[7]=le=>En.value=le),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-start"},null,512),[[e.vModelText,En.value]])]),e.createElementVNode("label",Sw,[V[21]||(V[21]=e.createElementVNode("span",null,"Trim end (s)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[8]||(V[8]=le=>Vn.value=le),type:"number",step:"0.01",min:"0",inputmode:"decimal","data-testid":"video-dev-trim-end"},null,512),[[e.vModelText,Vn.value]])]),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-start-playhead",disabled:!e.unref(K),onClick:V[9]||(V[9]=le=>_r("start"))}," Start = Playhead ",8,Cw),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-trim-end-playhead",disabled:!e.unref(K),onClick:V[10]||(V[10]=le=>_r("end"))}," End = Playhead ",8,Nw),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-trim",disabled:!e.unref(K),onClick:Nc}," Apply Trim ",8,_w)]),e.createElementVNode("div",Tw,[e.createElementVNode("label",Mw,[V[22]||(V[22]=e.createElementVNode("span",null,"Quick filter",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[11]||(V[11]=le=>qt.value=le),"data-testid":"video-dev-filter-select"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Zn.value,le=>(e.openBlock(),e.createElementBlock("option",{key:le.id,value:le.id},e.toDisplayString(le.name),9,Bw))),128))],512),[[e.vModelSelect,qt.value]])]),e.createElementVNode("button",{class:"dev-editor-button dev-editor-button--primary",type:"button","data-testid":"video-dev-apply-filter",disabled:!e.unref(K)||qt.value==="",onClick:_c}," Apply Filter ",8,Fw),e.createElementVNode("button",{class:"dev-editor-button",type:"button","data-testid":"video-dev-clear-filters",disabled:e.unref(Ke).length===0,onClick:Tc}," Clear Filters ",8,Iw),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(K),onClick:V[12]||(V[12]=le=>jn("noise"))}," QA: Noise ",8,Rw),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(K),onClick:V[13]||(V[13]=le=>jn("grayscale"))}," QA: Grayscale ",8,$w)])])):e.createCommentVNode("",!0)],512)])]))],2)}}}),Oi=Ne(Dw,[["__scopeId","data-v-5d8a0dc1"]]),Uw={key:0,class:"ve-fullscreen"},Ow=["aria-label"],Lw={class:"ve-header"},Aw={class:"ve-title"},zw={class:"ve-body"},Pw={class:"ve-footer"},Ww=e.defineComponent({__name:"VideoEditorDialog",props:{open:{type:Boolean},mediaUuid:{},initialRecipe:{},media:{},showThumbnailPicker:{type:Boolean,default:!1},title:{default:"Edit Video"}},emits:["update:open","close","recipe-generated","export-started","draft-saved","thumbnail-selected"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(typeof window<"u"?window.innerWidth<768:!1);function r(){i.value=window.innerWidth<768}e.onMounted(()=>window.addEventListener("resize",r)),e.onUnmounted(()=>window.removeEventListener("resize",r));const s=e.computed(()=>t.open??!0),c=e.computed(()=>{var d;return t.mediaUuid||((d=t.media)==null?void 0:d.id)||`temp-${Date.now()}`});function l(){o("close"),o("update:open",!1)}return(d,u)=>s.value&&i.value?(e.openBlock(),e.createElementBlock("div",Uw,[e.createVNode(Oi,e.mergeProps({"media-uuid":c.value},{...d.initialRecipe?{initialRecipe:d.initialRecipe}:{},...d.media?{media:d.media}:{}},{"show-thumbnail-picker":d.showThumbnailPicker??!1,onRecipeGenerated:u[0]||(u[0]=m=>d.$emit("recipe-generated",m)),onExportStarted:u[1]||(u[1]=m=>d.$emit("export-started",m)),onDraftSaved:u[2]||(u[2]=m=>d.$emit("draft-saved",m)),onThumbnailSelected:u[3]||(u[3]=m=>d.$emit("thumbnail-selected",m))}),null,16,["media-uuid","show-thumbnail-picker"])])):s.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"ve-overlay",onClick:e.withModifiers(l,["self"])},[e.createElementVNode("div",{class:"ve-dialog",role:"dialog","aria-label":d.title,"aria-modal":"true"},[e.createElementVNode("header",Lw,[e.createElementVNode("h2",Aw,e.toDisplayString(d.title),1),e.createElementVNode("button",{class:"ve-close",onClick:l,"aria-label":"Close"}," ✕ ")]),e.createElementVNode("section",zw,[e.createVNode(Oi,e.mergeProps({"media-uuid":c.value},{...d.initialRecipe?{initialRecipe:d.initialRecipe}:{},...d.media?{media:d.media}:{}},{"show-thumbnail-picker":d.showThumbnailPicker??!1,onRecipeGenerated:u[4]||(u[4]=m=>d.$emit("recipe-generated",m)),onExportStarted:u[5]||(u[5]=m=>d.$emit("export-started",m)),onDraftSaved:u[6]||(u[6]=m=>d.$emit("draft-saved",m)),onThumbnailSelected:u[7]||(u[7]=m=>d.$emit("thumbnail-selected",m))}),null,16,["media-uuid","show-thumbnail-picker"])]),e.createElementVNode("footer",Pw,[e.renderSlot(d.$slots,"footer",{},()=>[e.createElementVNode("button",{class:"ve-btn",onClick:l},"Cancel")],!0)])],8,Ow)])):e.createCommentVNode("",!0)}}),jw=Ne(Ww,[["__scopeId","data-v-b948d9bc"]]),Zw={class:"video-editor-modal"},Xw={class:"video-preview-container"},Hw=["src"],Gw={class:"video-overlay-controls"},Jw=["aria-label"],Yw={class:"time-display"},Kw={class:"timeline-container"},qw={class:"clip-name"},Qw={class:"timeline-time-labels"},eb={class:"tool-tabs"},tb=["onClick"],nb={class:"tool-panel"},ob={key:0,class:"trim-panel"},ab={class:"trim-controls"},ib={key:1,class:"filters-panel"},rb={class:"filter-grid"},sb=["onClick"],lb={key:2,class:"text-panel"},cb={key:3,class:"transitions-panel"},db={class:"transition-grid"},ub=["onClick"],mb={class:"action-buttons"},pb=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),p=e.ref(null),h=e.ref("trim"),g=e.ref(null),w=e.ref(""),E=[{id:"trim",label:"Trim",icon:Js},{id:"filters",label:"Filters",icon:Hd},{id:"text",label:"Text",icon:el},{id:"transitions",label:"Transitions",icon:tu}],M=[{id:"none",name:"None"},{id:"grayscale",name:"Grayscale"},{id:"sepia",name:"Sepia"},{id:"blur",name:"Blur"},{id:"brightness",name:"Brightness"},{id:"contrast",name:"Contrast"}],S=[{id:"fade",name:"Fade"},{id:"slide",name:"Slide"},{id:"zoom",name:"Zoom"},{id:"wipe",name:"Wipe"}],y=e.ref();e.onMounted(()=>{var _,L;(_=t.media)!=null&&_.url?r.value=t.media.url:(L=t.media)!=null&&L.file&&(r.value=URL.createObjectURL(t.media.file))}),e.onUnmounted(()=>{var _;(_=t.media)!=null&&_.file&&r.value&&URL.revokeObjectURL(r.value)});function f(){i.value&&(l.value=i.value.duration,m.value=l.value)}function k(){i.value&&(c.value=i.value.currentTime)}function R(){s.value=!1}function N(){i.value&&(s.value?(i.value.pause(),s.value=!1):(i.value.play(),s.value=!0))}function v(_){if(!_||isNaN(_))return"00:00";const L=Math.floor(_/60),G=Math.floor(_%60);return`${L.toString().padStart(2,"0")}:${G.toString().padStart(2,"0")}`}function C(_){if(!i.value||!y.value)return;const L=y.value.getBoundingClientRect(),ce=(_.clientX-L.left)/L.width*l.value;i.value.currentTime=Math.max(0,Math.min(ce,l.value))}function U(){u.value=c.value}function x(){m.value=c.value}function T(){u.value=0,m.value=l.value}function I(_){p.value=_;const L=X=>{if(!p.value||!y.value)return;const ce=y.value.getBoundingClientRect(),ie=(X.clientX-ce.left)/ce.width*l.value;p.value==="start"?u.value=Math.max(0,Math.min(ie,m.value-1)):m.value=Math.max(u.value+1,Math.min(ie,l.value))},G=()=>{p.value=null,document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",G)};document.addEventListener("mousemove",L),document.addEventListener("mouseup",G)}function O(_){if(g.value=_,!i.value)return;const L={none:"none",grayscale:"grayscale(100%)",sepia:"sepia(100%)",blur:"blur(5px)",brightness:"brightness(150%)",contrast:"contrast(150%)"};i.value.style.filter=L[_]||"none"}function $(){}function j(_){}function P(){const _={timeline:[{id:d.value,url:r.value,startTime:0,endTime:l.value,sourceIn:u.value,sourceOut:m.value,track:0}],filters:g.value?[{type:g.value}]:[],textOverlays:w.value?[{content:w.value}]:[],duration:m.value-u.value};o("save",_)}return(_,L)=>(e.openBlock(),e.createElementBlock("div",Zw,[e.createElementVNode("div",Xw,[e.createElementVNode("video",{ref_key:"videoElement",ref:i,class:"video-preview",src:r.value,onLoadedmetadata:f,onTimeupdate:k,onEnded:R,controls:""},null,40,Hw),e.createElementVNode("div",Gw,[e.createElementVNode("button",{class:"play-pause-btn",onClick:N,"aria-label":s.value?"Pause":"Play"},[e.createVNode(e.unref(F.IonIcon),{icon:s.value?e.unref(iu):e.unref(cu)},null,8,["icon"])],8,Jw),e.createElementVNode("div",Yw,e.toDisplayString(v(c.value))+" / "+e.toDisplayString(v(l.value)),1)])]),e.createElementVNode("div",Kw,[e.createElementVNode("div",{class:"timeline-track",onClick:C,ref_key:"timelineTrack",ref:y},[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",qw,e.toDisplayString(d.value),1)],4),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:`${c.value/l.value*100}%`})},null,4),h.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"trim-handle trim-start",style:e.normalizeStyle({left:`${u.value/l.value*100}%`}),onMousedown:L[0]||(L[0]=G=>I("start"))},null,36)):e.createCommentVNode("",!0),h.value==="trim"?(e.openBlock(),e.createElementBlock("div",{key:1,class:"trim-handle trim-end",style:e.normalizeStyle({left:`${m.value/l.value*100}%`}),onMousedown:L[1]||(L[1]=G=>I("end"))},null,36)):e.createCommentVNode("",!0)],512),e.createElementVNode("div",Qw,[e.createElementVNode("span",null,e.toDisplayString(v(0)),1),e.createElementVNode("span",null,e.toDisplayString(v(l.value)),1)])]),e.createElementVNode("div",eb,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,G=>e.createElementVNode("button",{key:G.id,class:e.normalizeClass(["tool-tab",{active:h.value===G.id}]),onClick:X=>h.value=G.id},[e.createVNode(e.unref(F.IonIcon),{icon:G.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(G.label),1)],10,tb)),64))]),e.createElementVNode("div",nb,[h.value==="trim"?(e.openBlock(),e.createElementBlock("div",ob,[L[7]||(L[7]=e.createElementVNode("h3",null,"Trim Video",-1)),L[8]||(L[8]=e.createElementVNode("p",null,"Click and drag on the timeline to set trim points",-1)),e.createElementVNode("div",ab,[e.createElementVNode("button",{class:"btn-trim",onClick:U},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Hr)},null,8,["icon"]),L[4]||(L[4]=e.createTextVNode(" Set Start ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:x},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Hr)},null,8,["icon"]),L[5]||(L[5]=e.createTextVNode(" Set End ",-1))]),e.createElementVNode("button",{class:"btn-trim",onClick:T},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(In)},null,8,["icon"]),L[6]||(L[6]=e.createTextVNode(" Clear ",-1))])])])):h.value==="filters"?(e.openBlock(),e.createElementBlock("div",ib,[L[9]||(L[9]=e.createElementVNode("h3",null,"Filters",-1)),e.createElementVNode("div",rb,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(M,G=>e.createElementVNode("button",{key:G.id,class:e.normalizeClass(["filter-option",{active:g.value===G.id}]),onClick:X=>O(G.id)},e.toDisplayString(G.name),11,sb)),64))])])):h.value==="text"?(e.openBlock(),e.createElementBlock("div",lb,[L[10]||(L[10]=e.createElementVNode("h3",null,"Text Overlay",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":L[2]||(L[2]=G=>w.value=G),type:"text",placeholder:"Enter text...",class:"text-input"},null,512),[[e.vModelText,w.value]]),e.createElementVNode("button",{class:"btn-add-text",onClick:$},"Add Text")])):h.value==="transitions"?(e.openBlock(),e.createElementBlock("div",cb,[L[11]||(L[11]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",db,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(S,G=>e.createElementVNode("button",{key:G.id,class:"transition-option",onClick:X=>(G.id,void 0)},e.toDisplayString(G.name),9,ub)),64))])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",mb,[e.createElementVNode("button",{class:"btn-cancel",onClick:L[3]||(L[3]=G=>_.$emit("cancel"))},"CANCEL"),e.createElementVNode("button",{class:"btn-save",onClick:P},"SAVE")])]))}}),fb=Ne(pb,[["__scopeId","data-v-b933f33b"]]),hb={class:"time-label"},vb=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",hb,e.toDisplayString(l.label),1),e.createElementVNode("div",{class:e.normalizeClass(["time-tick",{major:l.major}])},null,2)],4))),128))],4))}}),gb=Ne(vb,[["__scopeId","data-v-0ef9c910"]]),yb=["data-track-index"],wb={class:"track-header"},bb={class:"track-label"},kb={class:"track-controls"},xb=["data-testid","aria-label"],Eb=["data-testid","onMousedown","onClick"],Vb={class:"clip-content"},Sb={class:"clip-name"},Cb={key:0,class:"clip-thumbnail"},Nb=["src","alt"],_b=["onMousedown","aria-label"],Tb=["onMousedown","aria-label"],Mb=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 M=E.timelineEnd-E.timelineStart,S=E.timelineStart/t.duration*100,y=M/t.duration*100;return{left:`${S}%`,width:`${y}%`,backgroundColor:u(E)}}function u(E){const M=["#4A90E2","#7ED321","#F5A623","#BD10E0","#9013FE","#50E3C2","#B8E986","#F8E71C"],S=parseInt(E.id.replace(/\D/g,""))%M.length;return M[S]}function m(E){return E.label?E.label:E.url?(E.url.split("/").pop()||"Clip").split(".")[0]:`Clip ${E.id.slice(-4)}`}function p(E){i.value=E.id,o("clip-select",E.id)}function h(){r.value=!r.value}function g(E,M){if(c.value)return;s.value=!0;const S=M.clientX,y=E.timelineStart,f=R=>{if(!s.value)return;const N=R.clientX-S,v=parseFloat(l.value.width),C=N/(t.zoom*100)*(t.duration/v),U=Math.max(0,y+C);o("clip-move",E.id,U)},k=()=>{s.value=!1,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",k)};document.addEventListener("mousemove",f),document.addEventListener("mouseup",k)}function w(E,M,S){c.value=M;const y=S.clientX,f=E.sourceIn,k=E.sourceOut,R=v=>{if(!c.value)return;const C=v.clientX-y,U=parseFloat(l.value.width),x=C/(t.zoom*100)*(t.duration/U);if(c.value==="start"){const T=Math.max(0,f+x);o("clip-trim",E.id,T,k)}else{const T=Math.max(f+1,k+x);o("clip-trim",E.id,f,T)}},N=()=>{c.value=null,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",N)};document.addEventListener("mousemove",R),document.addEventListener("mouseup",N)}return(E,M)=>(e.openBlock(),e.createElementBlock("div",{class:"video-track","data-track-index":E.trackIndex},[e.createElementVNode("div",wb,[e.createElementVNode("span",bb,"Track "+e.toDisplayString(E.trackIndex+1),1),e.createElementVNode("div",kb,[E.clips.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"track-btn","data-testid":`btn-mute-track-${E.trackIndex}`,"aria-label":`${r.value?"Unmute":"Mute"} track ${E.trackIndex+1}`,onClick:h},[e.createVNode(e.unref(F.IonIcon),{icon:r.value?e.unref(Vu):e.unref(xu)},null,8,["icon"])],8,xb)):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,S=>(e.openBlock(),e.createElementBlock("div",{key:S.id,class:e.normalizeClass(["timeline-clip",{selected:S.id===i.value}]),style:e.normalizeStyle(d(S)),"data-testid":`clip-${S.id}`,onMousedown:y=>g(S,y),onClick:y=>p(S)},[e.createElementVNode("div",Vb,[e.createElementVNode("span",Sb,e.toDisplayString(m(S)),1),S.thumbnail?(e.openBlock(),e.createElementBlock("div",Cb,[e.createElementVNode("img",{src:S.thumbnail,alt:m(S)},null,8,Nb)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",{class:"trim-handle trim-start",onMousedown:e.withModifiers(y=>w(S,"start",y),["stop"]),"aria-label":`Trim start of ${m(S)}`},null,40,_b),e.createElementVNode("div",{class:"trim-handle trim-end",onMousedown:e.withModifiers(y=>w(S,"end",y),["stop"]),"aria-label":`Trim end of ${m(S)}`},null,40,Tb)],46,Eb))),128))],4)],8,yb))}}),Bb=Ne(Mb,[["__scopeId","data-v-48e480d2"]]),Fb={class:"video-timeline"},Ib={class:"timeline-tracks"},Rb=["aria-label","aria-valuenow","aria-valuemax"],$b={class:"timeline-controls"},Db={class:"zoom-level"},Ub=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 y=Math.max(0,...t.clips.map(f=>f.track||0));return Array(y+1).fill(null)}),d=e.computed(()=>`${t.currentTime/t.duration*100}%`);function u(y){return t.clips.filter(f=>(f.track||0)===y)}function m(y){const f=Math.floor(y/60),k=Math.floor(y%60);return`${f}:${k.toString().padStart(2,"0")}`}function p(y,f){o("clip-move",y,f)}function h(y,f,k){o("clip-trim",y,f,k)}function g(y){r.value=y}function w(){i.value=Math.min(i.value*1.2,5)}function E(){i.value=Math.max(i.value/1.2,.5)}function M(){s.value=!0;const y=k=>{if(!s.value||!c.value)return;const R=c.value.getBoundingClientRect(),C=Math.max(0,Math.min(k.clientX-R.left,R.width))/R.width*t.duration;o("seek",C)},f=()=>{s.value=!1,document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",f)};document.addEventListener("mousemove",y),document.addEventListener("mouseup",f)}function S(y){let f=t.currentTime;switch(y.key){case"ArrowLeft":f=Math.max(0,t.currentTime-1);break;case"ArrowRight":f=Math.min(t.duration,t.currentTime+1);break;case"Home":f=0;break;case"End":f=t.duration;break;default:return}y.preventDefault(),o("seek",f)}return e.onMounted(()=>{c.value=document.querySelector(".video-timeline")}),e.onUnmounted(()=>{}),(y,f)=>(e.openBlock(),e.createElementBlock("div",Fb,[e.createVNode(gb,{duration:y.duration,zoom:i.value},null,8,["duration","zoom"]),e.createElementVNode("div",Ib,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(k,R)=>(e.openBlock(),e.createBlock(Bb,{key:`track-${R}`,"data-testid":`track-${R}`,clips:u(R),"track-index":R,zoom:i.value,duration:y.duration,onClipMove:p,onClipTrim:h,onClipSelect:g},null,8,["data-testid","clips","track-index","zoom","duration"]))),128))]),e.createElementVNode("div",{class:"timeline-playhead",style:e.normalizeStyle({left:d.value}),onMousedown:M,"data-testid":"playhead","aria-label":`Playhead at ${m(y.currentTime)}`,role:"slider","aria-valuenow":y.currentTime,"aria-valuemax":y.duration,tabindex:"0",onKeydown:S},null,44,Rb),e.createElementVNode("div",$b,[e.createElementVNode("button",{"data-testid":"btn-zoom-in","aria-label":"Zoom in",onClick:w},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Ai)},null,8,["icon"])]),e.createElementVNode("span",Db,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(F.IonIcon),{icon:e.unref(hu)},null,8,["icon"])])])]))}}),Ob=Ne(Ub,[["__scopeId","data-v-001df415"]]),Lb={class:"video-filters-panel"},Ab={class:"filter-controls"},zb=["for"],Pb={class:"filter-slider-group"},Wb=["id","onUpdate:modelValue","min","max","step","data-testid","aria-label","aria-valuenow","aria-valuemin","aria-valuemax","onInput"],jb={class:"filter-value"},Zb={class:"filter-actions"},Xb={key:0,class:"filter-presets"},Hb={class:"preset-list"},Gb=["data-testid","aria-label","onClick"],Jb=e.defineComponent({__name:"VideoFiltersPanel",emits:["filter-change"],setup(a,{emit:n}){const t=n,o=[{type:"brightness",label:"Brightness",min:0,max:200,step:1,default:100},{type:"contrast",label:"Contrast",min:0,max:200,step:1,default:100},{type:"saturation",label:"Saturation",min:0,max:200,step:1,default:100},{type:"hue",label:"Hue",min:-180,max:180,step:1,default:0},{type:"blur",label:"Blur",min:0,max:10,step:.5,default:0},{type:"sharpen",label:"Sharpen",min:0,max:10,step:.5,default:0},{type:"sepia",label:"Sepia",min:0,max:100,step:1,default:0},{type:"grayscale",label:"Grayscale",min:0,max:100,step:1,default:0}],i=e.reactive(o.reduce((p,h)=>(p[h.type]=h.default,p),{})),r=e.ref([{id:"vintage",name:"Vintage",values:{brightness:110,contrast:120,saturation:80,sepia:30}},{id:"noir",name:"Film Noir",values:{brightness:90,contrast:130,grayscale:100}},{id:"vibrant",name:"Vibrant",values:{brightness:110,contrast:110,saturation:140}},{id:"dreamy",name:"Dreamy",values:{brightness:120,blur:2,saturation:90}}]);function s(p,h){switch(p){case"brightness":case"contrast":case"saturation":case"sepia":case"grayscale":return`${h}%`;case"hue":return`${h}°`;case"blur":case"sharpen":return h.toFixed(1);default:return h.toString()}}function c(p){return["brightness","contrast","saturation","hue","blur","sharpen","sepia","grayscale"].includes(p)}function l(p){if(!c(p))return;const h={id:`filter-${p}`,filterId:p,params:{value:i[p]},intensity:1};t("filter-change",h)}function d(){o.forEach(p=>{i[p.type]=p.default,l(p.type)})}function u(){const p=prompt("Enter preset name:");if(!p)return;const h={id:`custom-${Date.now()}`,name:p,values:{...i}};r.value.push(h)}function m(p){Object.entries(p.values).forEach(([h,g])=>{i[h]=g,l(h)})}return(p,h)=>(e.openBlock(),e.createElementBlock("div",Lb,[h[3]||(h[3]=e.createElementVNode("h3",null,"Video Filters",-1)),e.createElementVNode("div",Ab,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,g=>e.createElementVNode("div",{key:g.type,class:"filter-control"},[e.createElementVNode("label",{for:`filter-${g.type}`},e.toDisplayString(g.label),9,zb),e.createElementVNode("div",Pb,[e.withDirectives(e.createElementVNode("input",{id:`filter-${g.type}`,"onUpdate:modelValue":w=>i[g.type]=w,type:"range",min:g.min,max:g.max,step:g.step,class:"filter-slider","data-testid":`filter-${g.type}`,"aria-label":`${g.label} filter`,"aria-valuenow":i[g.type],"aria-valuemin":g.min,"aria-valuemax":g.max,onInput:w=>l(g.type)},null,40,Wb),[[e.vModelText,i[g.type],void 0,{number:!0}]]),e.createElementVNode("span",jb,e.toDisplayString(s(g.type,i[g.type])),1)])])),64))]),e.createElementVNode("div",Zb,[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(F.IonIcon),{icon:e.unref(Un)},null,8,["icon"]),h[0]||(h[0]=e.createTextVNode(" Reset All Filters ",-1))]),e.createElementVNode("button",{class:"save-preset-btn","data-testid":"btn-save-preset","aria-label":"Save current filter settings as preset",onClick:u},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Pi)},null,8,["icon"]),h[1]||(h[1]=e.createTextVNode(" Save as Preset ",-1))])]),r.value.length>0?(e.openBlock(),e.createElementBlock("div",Xb,[h[2]||(h[2]=e.createElementVNode("h4",null,"Presets",-1)),e.createElementVNode("div",Hb,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,g=>(e.openBlock(),e.createElementBlock("button",{key:g.id,class:"preset-btn","data-testid":`preset-${g.id}`,"aria-label":`Apply ${g.name} preset`,onClick:w=>m(g)},e.toDisplayString(g.name),9,Gb))),128))])])):e.createCommentVNode("",!0)]))}}),Yb=Ne(Jb,[["__scopeId","data-v-5ad2ac63"]]),Kb={class:"video-text-panel"},qb={class:"text-input-group"},Qb={class:"text-options"},e2={class:"option-row"},t2={class:"option-row"},n2={class:"option-row"},o2={class:"option-row"},a2={class:"checkbox-label"},i2={class:"option-row"},r2={class:"text-overlay-list"},s2={key:0,class:"empty-state"},l2=["data-testid"],c2={class:"overlay-preview"},d2={class:"overlay-controls"},u2=["data-testid","aria-label","onClick"],m2=["data-testid","aria-label","onClick"],p2=["data-testid","aria-label","onClick"],f2=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",Kb,[u[17]||(u[17]=e.createElementVNode("h3",null,"Text Overlays",-1)),e.createElementVNode("div",qb,[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(F.IonIcon),{icon:e.unref(Ai)},null,8,["icon"]),u[7]||(u[7]=e.createTextVNode(" Add ",-1))])]),e.createElementVNode("div",Qb,[e.createElementVNode("div",e2,[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",t2,[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",n2,[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",o2,[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",a2,[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",i2,[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",r2,[u[16]||(u[16]=e.createElementVNode("h4",null,"Active Overlays",-1)),o.value.length===0?(e.openBlock(),e.createElementBlock("div",s2," No text overlays added yet ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(m,p)=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:"text-overlay-item","data-testid":`overlay-${p}`},[e.createElementVNode("div",c2,[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",d2,[e.createElementVNode("button",{class:"edit-btn","data-testid":`btn-edit-${p}`,"aria-label":`Edit overlay: ${m.text}`,onClick:h=>c(m)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Yd)},null,8,["icon"])],8,u2),e.createElementVNode("button",{class:"duplicate-btn","data-testid":`btn-duplicate-${p}`,"aria-label":`Duplicate overlay: ${m.text}`,onClick:h=>l(m)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Jd)},null,8,["icon"])],8,m2),e.createElementVNode("button",{class:"remove-btn","data-testid":`btn-remove-${p}`,"aria-label":`Remove overlay: ${m.text}`,onClick:h=>s(m.id)},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(yu)},null,8,["icon"])],8,p2)])],8,l2))),128))])]))}}),h2=Ne(f2,[["__scopeId","data-v-4d240e1e"]]),v2={class:"video-tools-panel"},g2={class:"tool-tabs"},y2=["data-testid","aria-label","aria-selected","onClick"],w2={class:"tool-content"},b2={key:0,class:"trim-panel",role:"tabpanel","aria-label":"Trim controls"},k2={class:"trim-actions"},x2={key:3,class:"transitions-panel",role:"tabpanel","aria-label":"Transition controls"},E2={class:"transition-types"},V2=["data-testid","aria-label","onClick"],S2={class:"transition-preview"},C2=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:Js},{id:"filters",name:"Filters",icon:an},{id:"text",name:"Text",icon:el},{id:"transitions",name:"Transitions",icon:Yr}],t=[{id:"fade",name:"Fade",icon:oi},{id:"slide-left",name:"Slide Left",icon:Pd},{id:"slide-right",name:"Slide Right",icon:Wd},{id:"dissolve",name:"Dissolve",icon:oi},{id:"wipe",name:"Wipe",icon:Yr},{id:"zoom",name:"Zoom",icon:oi}];return(o,i)=>(e.openBlock(),e.createElementBlock("div",v2,[e.createElementVNode("div",g2,[(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(F.IonIcon),{icon:r.icon},null,8,["icon"]),e.createTextVNode(" "+e.toDisplayString(r.name),1)],10,y2)),64))]),e.createElementVNode("div",w2,[o.activeTool==="trim"?(e.openBlock(),e.createElementBlock("div",b2,[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",k2,[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(F.IonIcon),{icon:e.unref(Gr)},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(F.IonIcon),{icon:e.unref(Gr)},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(F.IonIcon),{icon:e.unref(In)},null,8,["icon"]),i[7]||(i[7]=e.createTextVNode(" Clear ",-1))])])])):e.createCommentVNode("",!0),o.activeTool==="filters"?(e.openBlock(),e.createBlock(Yb,{key:1,onFilterChange:i[3]||(i[3]=r=>o.$emit("filter-change",r))})):e.createCommentVNode("",!0),o.activeTool==="text"?(e.openBlock(),e.createBlock(h2,{key:2,onTextAdd:i[4]||(i[4]=r=>o.$emit("text-add",r))})):e.createCommentVNode("",!0),o.activeTool==="transitions"?(e.openBlock(),e.createElementBlock("div",x2,[i[10]||(i[10]=e.createElementVNode("h3",null,"Transitions",-1)),e.createElementVNode("div",E2,[(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",S2,[e.createVNode(e.unref(F.IonIcon),{icon:r.icon},null,8,["icon"])]),e.createElementVNode("span",null,e.toDisplayString(r.name),1)],8,V2)),64))])])):e.createCommentVNode("",!0)])]))}}),N2=Ne(C2,[["__scopeId","data-v-fc135306"]]),_2={class:"video-export-panel"},T2={class:"export-presets"},M2=["value"],B2={key:0,class:"preset-details"},F2={class:"detail-row"},I2={class:"detail-row"},R2={class:"detail-row"},$2={class:"advanced-options"},D2={class:"options-content"},U2={class:"option-group"},O2={class:"option-group"},L2={class:"option-group"},A2=["disabled"],z2={key:1,class:"export-progress"},P2={class:"progress-message"},W2={class:"progress-bar"},j2=["aria-valuenow"],Z2={class:"progress-percentage"},X2=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",_2,[u[14]||(u[14]=e.createElementVNode("h3",null,"Export Video",-1)),e.createElementVNode("div",T2,[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,M2))),128))],512),[[e.vModelSelect,i.value]])]),s.value?(e.openBlock(),e.createElementBlock("div",B2,[e.createElementVNode("div",F2,[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",I2,[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",R2,[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",$2,[u[12]||(u[12]=e.createElementVNode("summary",null,"Advanced Options",-1)),e.createElementVNode("div",D2,[e.createElementVNode("div",U2,[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",O2,[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",L2,[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(F.IonSpinner),{key:0,name:"crescent"})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(po)},null,8,["icon"]),u[13]||(u[13]=e.createTextVNode(" Export Video ",-1))],64))],8,A2),d.isExporting?(e.openBlock(),e.createElementBlock("div",z2,[e.createElementVNode("div",P2,e.toDisplayString(c.value),1),e.createElementVNode("div",W2,[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,j2)]),e.createElementVNode("div",Z2,e.toDisplayString(d.exportProgress)+"% ",1)])):e.createCommentVNode("",!0)]))}}),H2=Ne(X2,[["__scopeId","data-v-5caf8fe6"]]),G2=["data-testid"],J2={class:"progress-header"},Y2={class:"file-info"},K2={class:"file-details"},q2={class:"file-name"},Q2={class:"file-meta"},ek={class:"file-size"},tk={key:0,class:"separator"},nk={key:1,class:"upload-speed"},ok={key:2,class:"separator"},ak={key:3,class:"time-remaining"},ik={class:"progress-actions"},rk={key:0,class:"status-icon completed","data-testid":"video-upload-status-completed"},sk={key:1,class:"status-icon error","data-testid":"video-upload-status-error"},lk={key:2,class:"status-icon processing","data-testid":"video-upload-status-processing",role:"status","aria-label":"Processing video"},ck=["aria-valuenow","aria-label"],dk={class:"progress-bar"},uk={class:"progress-percent"},mk={key:1,class:"error-message","data-testid":"video-upload-error"},pk={key:2,class:"thumbnail-preview","data-testid":"video-upload-thumbnail"},fk=["src","alt"],hk={key:0,class:"video-duration"},vk=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(()=>tl),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 p=n.upload.timeRemaining;if(p<60)return`${Math.round(p)}s`;const h=Math.floor(p/60);return h<60?`${h}m ${Math.round(p%60)}s`:`${Math.floor(h/60)}h ${h%60}m`}),c=e.computed(()=>{var p;return n.upload.status==="completed"&&((p=n.upload.media)!=null&&p.thumbnail_url)?n.upload.media.thumbnail_url:null}),l=e.computed(()=>{var p;return(p=n.upload.media)==null?void 0:p.duration});function d(p){if(p===0)return"0 B";const h=["B","KB","MB","GB","TB"],g=1024,w=Math.floor(Math.log(p)/Math.log(g));return`${(p/Math.pow(g,w)).toFixed(1)} ${h[w]}`}function u(p){if(p===0)return"0 B/s";const h=["B/s","KB/s","MB/s","GB/s"],g=1024,w=Math.floor(Math.log(p)/Math.log(g));return`${(p/Math.pow(g,w)).toFixed(1)} ${h[w]}`}function m(p){const h=Math.floor(p/3600),g=Math.floor(p%3600/60),w=Math.floor(p%60);return h>0?`${h}:${g.toString().padStart(2,"0")}:${w.toString().padStart(2,"0")}`:`${g}:${w.toString().padStart(2,"0")}`}return(p,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["upload-progress-item",t.value]),"data-testid":`video-upload-progress-${p.upload.id}`},[e.createElementVNode("div",J2,[e.createElementVNode("div",Y2,[e.createVNode(e.unref(F.IonIcon),{icon:o.value,class:"file-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("div",K2,[e.createElementVNode("h4",q2,e.toDisplayString(p.upload.filename),1),e.createElementVNode("p",Q2,[e.createElementVNode("span",ek,e.toDisplayString(d(p.upload.bytesTotal||0)),1),p.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",tk,"•")):e.createCommentVNode("",!0),p.upload.status==="uploading"?(e.openBlock(),e.createElementBlock("span",nk,e.toDisplayString(u(p.upload.uploadSpeed||0)),1)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",ok,"•")):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("span",ak,e.toDisplayString(s.value)+" remaining ",1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",ik,[p.upload.status==="completed"?(e.openBlock(),e.createElementBlock("div",rk,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Hs)},null,8,["icon"])])):p.upload.status==="error"?(e.openBlock(),e.createElementBlock("div",sk,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(zd),"aria-hidden":"true"},null,8,["icon"])])):p.upload.status==="processing"?(e.openBlock(),e.createElementBlock("div",lk,[e.createVNode(e.unref(F.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),p.upload.status==="uploading"?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:3,fill:"clear",size:"small",onClick:h[0]||(h[0]=g=>p.$emit("cancel")),"data-testid":"btn-cancel-video-upload","aria-label":"Cancel upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(In),slot:"icon-only"},null,8,["icon"])]),_:1})):p.upload.status==="error"?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:4,fill:"clear",size:"small",onClick:h[1]||(h[1]=g=>p.$emit("retry")),"data-testid":"btn-retry-video-upload","aria-label":"Retry upload"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Un),slot:"icon-only"},null,8,["icon"])]),_:1})):p.upload.status==="completed"?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:5,fill:"clear",size:"small",onClick:h[2]||(h[2]=g=>p.$emit("remove")),"data-testid":"btn-remove-video-upload","aria-label":"Remove from list"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(In),slot:"icon-only"},null,8,["icon"])]),_:1})):e.createCommentVNode("",!0)])]),i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"progress-bar-container","data-testid":"video-upload-progress-bar",role:"progressbar","aria-valuenow":Math.round(r.value),"aria-valuemin":"0","aria-valuemax":"100","aria-label":p.upload.status==="processing"?"Processing progress":"Upload progress"},[e.createElementVNode("div",dk,[e.createElementVNode("div",{class:e.normalizeClass(["progress-fill",{indeterminate:p.upload.status==="processing"}]),style:e.normalizeStyle({width:r.value+"%"})},null,6)]),e.createElementVNode("span",uk,e.toDisplayString(Math.round(r.value))+"%",1)],8,ck)):e.createCommentVNode("",!0),p.upload.error?(e.openBlock(),e.createElementBlock("div",mk,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Su)},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(p.upload.error),1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",pk,[e.createElementVNode("img",{src:c.value,alt:p.upload.filename},null,8,fk),l.value?(e.openBlock(),e.createElementBlock("div",hk,e.toDisplayString(m(l.value)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,G2))}}),gk=Ne(vk,[["__scopeId","data-v-9eacbf91"]]),fi=4,yk=500,wk=new Set([408,425,429,500,502,503,504,520,521,522,523,524,525]);function La(a){return typeof a=="object"&&a!==null}function $s(a){return La(a)?typeof a.upload_url=="string"&&typeof a.upload_id=="string"&&typeof a.media_uuid=="string"&&typeof a.expires_at=="string":!1}function bk(a){if($s(a))return a;if(La(a)&&$s(a.data))return a.data;throw new Error("Invalid upload response from backend")}function Ds(a){return La(a)?typeof a.uuid=="string"&&typeof a.processing_status=="string":!1}function kk(a){if(Ds(a))return a;if(La(a)&&Ds(a.data))return a.data;throw new Error("Invalid media response from backend")}function zo(a){return a?{...a}:{}}function Us(a,n="PUT"){return typeof a.method=="string"&&a.method.trim()!==""?a.method.trim().toUpperCase():n}function xk(a){return a.resumable===!0?!0:/tusupload/i.test(a.upload_url)}function Ek(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 Vk(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} ${Ek(i)}`).join(",")}function Po(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 Sk(a,n){return a instanceof Error?a:new Error(n)}function Ck(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 Os(a){const n=Math.max(0,a-1),t=yk*Math.pow(2,n);return Math.min(5e3,t)}function Ls(a){return new Promise(n=>{window.setTimeout(n,a)})}async function As(a,n){for(let t=1;t<=fi;t+=1)try{const o=await n();if(o.ok||!wk.has(o.status)||t>=fi)return o;await Ls(Os(t))}catch(o){if(!Ck(o)||t>=fi)throw o;await Ls(Os(t))}throw new Error(`${a} failed after retry attempts`)}function Nk(a={}){const n=e.ref(new Map),t=e.ref(new Set),o=e.ref(null),i=new Map,r=new Map,s=e.computed(()=>t.value.size>0),c=e.computed(()=>Array.from(n.value.values())),l=e.computed(()=>{const x=Array.from(n.value.values());return x.length===0?0:x.reduce((I,O)=>I+O.progress,0)/x.length});function d(x){o.value=x}function u(){}async function m(x){var I;const T=x.filter(O=>p(O));if(T.length!==0&&((I=a.onFilesSelected)==null||I.call(a,T),a.autoUpload!==!1))for(const O of T)await h(O)}function p(x){return!(a.maxFileSize&&x.size>a.maxFileSize||a.allowedFormats&&a.allowedFormats.length>0&&!a.allowedFormats.includes(x.type))}async function h(x){var O,$,j;const T=U(x);if(n.value.has(T)){const P=n.value.get(T);if((P==null?void 0:P.status)==="uploading")return}const I={id:T,file:x,filename:x.name,progress:0,status:"pending",startedAt:new Date,bytesTotal:x.size,bytesUploaded:0};n.value.set(I.id,I),t.value.add(I.id);try{I.status="uploading",(O=a.onUploadStart)==null||O.call(a,I);const P=await g(x);a.resumable===!0||P.resumable===!0?await E(I,P):await w(I,P),I.status="processing",I.progress=100;const L=await k(P.media_uuid);I.status="completed",I.media=L,($=a.onUploadComplete)==null||$.call(a,L)}catch(P){if(I.status!=="cancelled"){const _=Sk(P,"Upload failed");I.status="error",I.error=_.message,(j=a.onUploadError)==null||j.call(a,_,I)}}finally{t.value.delete(I.id),i.delete(I.id),r.delete(I.id)}}async function g(x){if(!o.value)throw new Error("API client not configured");const T={collection:a.collection||"videos",filename:x.name,size:x.size,mime_type:x.type,...a.ownerUuid!==void 0?{ownerUuid:a.ownerUuid}:{},...a.ownerType!==void 0?{ownerType:a.ownerType}:{}},I=await o.value.post("/api/v1/video/upload",T);return bk(I)}async function w(x,T){const I=new XMLHttpRequest,O=Us(T),$=zo(T.headers);return new Promise((j,P)=>{I.upload.addEventListener("progress",_=>{var L;_.lengthComputable&&(Po(x,_.loaded),(L=a.onUploadProgress)==null||L.call(a,x))}),I.addEventListener("load",()=>{i.delete(x.id),I.status>=200&&I.status<300?j():P(new Error(`Upload failed with status ${I.status}`))}),I.addEventListener("error",()=>{i.delete(x.id),P(new Error("Upload failed"))}),I.addEventListener("abort",()=>{i.delete(x.id),P(new Error("Upload cancelled"))}),I.open(O,T.upload_url),Object.entries($).forEach(([_,L])=>{I.setRequestHeader(_,L)}),!Object.keys($).some(_=>_.toLowerCase()==="content-type")&&x.file.type&&I.setRequestHeader("Content-Type",x.file.type),i.set(x.id,I),I.send(x.file)})}async function E(x,T){var P;if(xk(T)){await M(x,T);return}const I=a.chunkSize||5*1024*1024,O=S(x.file,I),$=new AbortController;r.set(x.id,$);const j=await f(T.upload_id);j&&(O.forEach(_=>{_.end<=j.bytesUploaded&&(_.uploaded=!0)}),Po(x,j.bytesUploaded));for(const _ of O)_.uploaded||(await y(x,T,_,$),Po(x,_.end),(P=a.onUploadProgress)==null||P.call(a,x))}async function M(x,T){var G;const I=new AbortController;r.set(x.id,I);const O={...zo(T.headers),"Tus-Resumable":"1.0.0","Upload-Length":String(x.file.size),"Upload-Metadata":Vk(x,T)},$=await As("Resumable upload initialization",()=>fetch(T.upload_url,{method:"POST",headers:O,signal:I.signal}));if(!$.ok)throw new Error(`Failed to initialize resumable upload: ${$.status}`);const j=$.headers.get("Location");if(!j)throw new Error("Resumable upload endpoint did not return upload location");const P=new URL(j,T.upload_url).toString(),_=a.chunkSize||5*1024*1024;let L=0;for(;L<x.file.size;){const X=Math.min(L+_,x.file.size),ce=x.file.slice(L,X),Te={...zo(T.headers),"Tus-Resumable":"1.0.0","Upload-Offset":String(L),"Content-Type":"application/offset+octet-stream"},Re=await As("Resumable chunk upload",()=>fetch(P,{method:"PATCH",headers:Te,body:ce,signal:I.signal}));if(Re.status===409){const B=Number(Re.headers.get("Upload-Offset")??"-1");if(Number.isFinite(B)&&B>=0){L=B;continue}}if(!Re.ok)throw new Error(`Resumable chunk upload failed: ${Re.status}`);const ie=Number(Re.headers.get("Upload-Offset")??String(X));L=Number.isFinite(ie)&&ie>L?ie:X,Po(x,L),(G=a.onUploadProgress)==null||G.call(a,x)}}function S(x,T){const I=[];let O=0,$=0;for(;O<x.size;){const j=Math.min(O+T,x.size);I.push({start:O,end:j,blob:x.slice(O,j),index:$,uploaded:!1}),O=j,$++}return I}async function y(x,T,I,O){const $={...zo(T.headers),"Content-Range":`bytes ${I.start}-${I.end-1}/${x.file.size}`,"Content-Type":x.file.type||"application/octet-stream"},j=await fetch(T.upload_url,{method:Us(T),headers:$,body:I.blob,signal:O.signal});if(!j.ok)throw new Error(`Chunk upload failed: ${j.status}`);I.uploaded=!0}async function f(x){return null}async function k(x){if(!o.value)throw new Error("API client not configured");const T=60;let I=0;for(;I<T;){const O=await o.value.get(`/api/v1/video/${x}`),$=kk(O),j=String($.processing_status);if(j==="ready")return $;if(j==="failed"||j==="error")throw new Error("Video processing failed");await new Promise(P=>{window.setTimeout(P,5e3)}),I++}throw new Error("Video processing timeout")}function R(x){const T=n.value.get(x);if(!T)return;const I=i.get(x);I&&(I.abort(),i.delete(x));const O=r.get(x);O&&(O.abort(),r.delete(x)),T.status="cancelled",T.error="Upload cancelled",t.value.delete(x)}async function N(x){const T=n.value.get(x);T&&(T.status="pending",T.error="",T.progress=0,T.bytesUploaded=0,await h(T.file))}function v(x){n.value.delete(x),t.value.delete(x),i.delete(x),r.delete(x)}function C(){Array.from(n.value.entries()).forEach(([x,T])=>{T.status==="completed"&&n.value.delete(x)})}function U(x){return`${x.name}-${x.size}-${Date.now()}`}return{uploads:c,isUploading:s,totalProgress:l,openFilePicker:u,handleFileSelect:m,validateFile:p,startUpload:h,cancelUpload:R,retryUpload:N,removeUpload:v,clearCompleted:C,setApiClient:d}}const _k=["accept","multiple"],Tk={key:0,class:"upload-trigger","data-testid":"video-uploader-trigger"},Mk=["onKeydown"],Bk={key:1,class:"upload-list","data-testid":"video-upload-list"},Fk={class:"drag-content"},Ik=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:p}=Nk({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:f=>o("upload-start",f),onUploadProgress:f=>o("upload-progress",f),onUploadComplete:f=>o("upload-complete",f),onUploadError:(f,k)=>o("upload-error",f,k),onFilesSelected:f=>o("files-selected",f)});t.apiClient&&p(t.apiClient);const h=e.computed(()=>t.allowedFormats.join(",")),g=e.computed(()=>t.multiple||s.value.length===0);function w(){i.value&&i.value.click()}function E(f){const k=f.target,R=Array.from(k.files||[]);R.length>0&&(l(R),k.value="")}function M(f){var N;f.preventDefault(),r.value=!1;const R=Array.from(((N=f.dataTransfer)==null?void 0:N.files)||[]).filter(v=>v.type.startsWith("video/"));R.length>0&&l(R)}function S(f){var k;f.preventDefault(),(k=f.dataTransfer)!=null&&k.types.includes("Files")&&(r.value=!0)}function y(f){f.target.closest(".video-uploader")||(r.value=!1)}return e.onMounted(()=>{document.addEventListener("dragover",S),document.addEventListener("dragleave",y),document.addEventListener("drop",f=>f.preventDefault())}),e.onUnmounted(()=>{document.removeEventListener("dragover",S),document.removeEventListener("dragleave",y),document.removeEventListener("drop",f=>f.preventDefault())}),(f,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-uploader",{"is-uploading":e.unref(c)}]),"data-testid":"video-uploader"},[e.createElementVNode("input",{ref_key:"fileInputEl",ref:i,type:"file",accept:h.value,multiple:f.multiple,onChange:E,"data-testid":"video-uploader-input","aria-label":"Select video files to upload",hidden:""},null,40,_k),!e.unref(c)||g.value?(e.openBlock(),e.createElementBlock("div",Tk,[e.renderSlot(f.$slots,"trigger",{open:w},()=>[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:w,onKeydown:[e.withKeys(w,["enter"]),e.withKeys(e.withModifiers(w,["prevent"]),["space"])]},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(tl),class:"upload-icon","aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("h3",null,e.toDisplayString(f.label),1),e.createElementVNode("p",null,e.toDisplayString(f.description),1),e.createVNode(e.unref(F.IonButton),{size:"small","data-testid":"btn-select-video","aria-label":"Select video file"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Ai),slot:"start","aria-hidden":"true"},null,8,["icon"]),k[2]||(k[2]=e.createTextVNode(" Select Video ",-1))]),_:1})],40,Mk)],!0)])):e.createCommentVNode("",!0),e.unref(s).length>0?(e.openBlock(),e.createElementBlock("div",Bk,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),R=>(e.openBlock(),e.createBlock(gk,{key:R.id,upload:R,onCancel:N=>e.unref(d)(R.id),onRetry:N=>e.unref(u)(R.id),onRemove:N=>e.unref(m)(R.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:M,onDragover:k[0]||(k[0]=e.withModifiers(()=>{},["prevent"])),onDragleave:k[1]||(k[1]=R=>r.value=!1)},[e.createElementVNode("div",Fk,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(po),"aria-hidden":"true"},null,8,["icon"]),k[3]||(k[3]=e.createElementVNode("p",null,"Drop video files here",-1))])],32)):e.createCommentVNode("",!0)],2))}}),Rk=Ne(Ik,[["__scopeId","data-v-ea7587f7"]]),$k=["aria-valuenow","aria-valuemax","aria-label"],Dk={class:"progress-bar"},Uk={class:"time-display","data-testid":"video-time-display"},Ok={class:"current-time"},Lk={class:"duration"},Ak={class:"control-buttons"},zk={class:"controls-left"},Pk=["aria-label"],Wk={class:"controls-center"},jk={key:0,class:"volume-controls"},Zk=["aria-label"],Xk=["value"],Hk={class:"controls-right"},Gk={key:0,class:"quality-selector"},Jk=["aria-expanded"],Yk={class:"quality-label"},Kk={key:0,class:"quality-menu","data-testid":"video-quality-menu",role:"menu"},qk=["data-testid","aria-label","onClick"],Qk=["aria-label"],ex=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=F.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 f=0;f<t.buffered.length;f++){const k=t.buffered.start(f),R=t.buffered.end(f);if(t.currentTime>=k&&t.currentTime<=R)return{width:`${R/t.duration*100}%`}}return t.buffered.length>0?{width:`${t.buffered.end(0)/t.duration*100}%`}:{width:"0%"}}),p=e.computed(()=>t.muted||t.volume===0?Eu:t.volume<33?bu:t.volume<66?ku:wu);let h=null;function g(){i.value=!0,w()}function w(){h&&clearTimeout(h),t.playing&&!c&&(h=setTimeout(()=>{i.value=!1},3e3))}function E(f){if(!s.value||t.isLive)return;const k=s.value.getBoundingClientRect(),N=(f.clientX-k.left)/k.width*t.duration;o("seek",Math.max(0,Math.min(N,t.duration)))}function M(f){const k=f.target;o("setVolume",parseInt(k.value))}function S(f){o("selectQuality",f),r.value=!1}function y(f){if(!isFinite(f))return"0:00";const k=Math.floor(f/3600),R=Math.floor(f%3600/60),N=Math.floor(f%60);return k>0?`${k}:${R.toString().padStart(2,"0")}:${N.toString().padStart(2,"0")}`:`${R}:${N.toString().padStart(2,"0")}`}return e.onMounted(()=>{document.addEventListener("mousemove",g),w()}),e.onUnmounted(()=>{document.removeEventListener("mousemove",g),h&&clearTimeout(h)}),(f,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-controls",{"controls-visible":i.value}]),"data-testid":"video-controls"},[e.createElementVNode("div",{class:"progress-container","data-testid":"video-progress-bar",role:"slider","aria-valuenow":Math.round(f.currentTime),"aria-valuemin":"0","aria-valuemax":Math.round(f.duration),"aria-label":f.isLive?"Live stream":"Video progress",tabindex:"0",onClick:E},[e.createElementVNode("div",Dk,[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",Uk,[e.createElementVNode("span",Ok,e.toDisplayString(y(f.currentTime)),1),k[7]||(k[7]=e.createElementVNode("span",{class:"separator"},"/",-1)),e.createElementVNode("span",Lk,e.toDisplayString(f.isLive?"LIVE":y(f.duration)),1)])],8,$k),e.createElementVNode("div",Ak,[e.createElementVNode("div",zk,[e.createElementVNode("button",{class:"control-btn play-pause","data-testid":"btn-video-play-pause",onClick:k[0]||(k[0]=R=>f.$emit("play-pause")),"aria-label":f.playing?"Pause":"Play"},[e.createVNode(e.unref(F.IonIcon),{icon:f.playing?e.unref(au):e.unref(ru),"aria-hidden":"true"},null,8,["icon"])],8,Pk),f.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"control-btn skip-backward","data-testid":"btn-video-skip-backward",onClick:k[1]||(k[1]=R=>f.$emit("skip-backward")),"aria-label":"Skip backward 10 seconds"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(su),"aria-hidden":"true"},null,8,["icon"]),k[8]||(k[8]=e.createElementVNode("span",{class:"skip-label"},"10",-1))])),f.isLive?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn skip-forward","data-testid":"btn-video-skip-forward",onClick:k[2]||(k[2]=R=>f.$emit("skip-forward")),"aria-label":"Skip forward 10 seconds"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(du),"aria-hidden":"true"},null,8,["icon"]),k[9]||(k[9]=e.createElementVNode("span",{class:"skip-label"},"10",-1))]))]),e.createElementVNode("div",Wk,[e.unref(c)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",jk,[e.createElementVNode("button",{class:"control-btn mute-btn","data-testid":"btn-video-mute",onClick:k[3]||(k[3]=R=>f.$emit("toggleMute")),"aria-label":f.muted?"Unmute":"Mute"},[e.createVNode(e.unref(F.IonIcon),{icon:p.value,"aria-hidden":"true"},null,8,["icon"])],8,Zk),e.createElementVNode("input",{type:"range",class:"volume-slider","data-testid":"slider-video-volume",min:"0",max:"100",value:f.muted?0:f.volume,onInput:M,"aria-label":"Volume"},null,40,Xk)]))]),e.createElementVNode("div",Hk,[f.qualityLevels.length>1?(e.openBlock(),e.createElementBlock("div",Gk,[e.createElementVNode("button",{class:"control-btn quality-btn","data-testid":"btn-video-quality",onClick:k[4]||(k[4]=R=>r.value=!r.value),"aria-label":"Quality settings","aria-expanded":r.value},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(vu),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("span",Yk,e.toDisplayString(f.currentQuality),1)],8,Jk),r.value?(e.openBlock(),e.createElementBlock("div",Kk,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.qualityLevels,R=>(e.openBlock(),e.createElementBlock("button",{key:R.label,class:e.normalizeClass(["quality-option",{active:R.label===f.currentQuality}]),"data-testid":`btn-video-quality-${R.label}`,"aria-label":`Set quality to ${R.label}`,role:"menuitem",onClick:N=>S(R)},e.toDisplayString(R.label),11,qk))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!e.unref(c)&&l?(e.openBlock(),e.createElementBlock("button",{key:1,class:"control-btn pip-btn","data-testid":"btn-video-pip",onClick:k[5]||(k[5]=R=>f.$emit("togglePiP")),"aria-label":"Picture in Picture"},[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(gu),"aria-hidden":"true"},null,8,["icon"])])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"control-btn fullscreen-btn","data-testid":"btn-video-fullscreen",onClick:k[6]||(k[6]=R=>f.$emit("toggleFullscreen")),"aria-label":f.fullscreen?"Exit fullscreen":"Enter fullscreen"},[e.createVNode(e.unref(F.IonIcon),{icon:f.fullscreen?e.unref(Gd):e.unref(Kd),"aria-hidden":"true"},null,8,["icon"])],8,Qk)])])],2))}}),tx=Ne(ex,[["__scopeId","data-v-2ae77c13"]]);function nx(a={}){var ce,Te,Re;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),p=e.ref(null),h=e.ref("idle"),g=e.ref(a.playbackUrl||((ce=a.media)==null?void 0:ce.playback_url)||((Te=a.media)==null?void 0:Te.url)||""),w=e.ref(null),E=e.ref(a.isLive||!1),M=e.ref(null),S=e.ref(null);function y(ie){S.value=ie}if((Re=a.media)!=null&&Re.token_expires_at){const ie=new Date(a.media.token_expires_at);w.value=Number.isNaN(ie.getTime())?null:ie}async function f(){var B;const ie=E.value?t.value:n.value;if(ie)try{await ie.play(),o.value=!0,h.value=E.value?"live":"playing",(B=a.onPlay)==null||B.call(a)}catch{p.value="Failed to play video",h.value="error"}}function k(){var B;const ie=E.value?t.value:n.value;ie&&(ie.pause(),o.value=!1,h.value="paused",(B=a.onPause)==null||B.call(a))}function R(){o.value?k():f()}function N(ie){const B=E.value?t.value:n.value;if(!B||E.value)return;const z=Number.isFinite(B.duration)?B.duration:ie;B.currentTime=Math.max(0,Math.min(ie,z)),i.value=B.currentTime}function v(ie=10){const B=n.value;!B||E.value||N(B.currentTime+ie)}function C(ie=10){const B=n.value;!B||E.value||N(B.currentTime-ie)}function U(){const ie=E.value?t.value:n.value;ie&&(ie.muted=!ie.muted,c.value=ie.muted)}function x(ie){const B=E.value?t.value:n.value;if(!B)return;const z=Math.max(0,Math.min(100,ie));B.volume=z/100,s.value=z,z>0&&B.muted&&(B.muted=!1,c.value=!1)}function T(ie){const B=n.value;!B||E.value||(B.playbackRate=ie,u.value=ie)}async function I(){const ie=document.querySelector(".video-player-container");if(ie)try{document.fullscreenElement?(await document.exitFullscreen(),l.value=!1):(await ie.requestFullscreen(),l.value=!0)}catch{}}async function O(){const ie=E.value?t.value:n.value;if(ie)try{document.pictureInPictureElement?await document.exitPictureInPicture():document.pictureInPictureEnabled&&await ie.requestPictureInPicture()}catch{}}async function $(){var B;p.value=null,h.value="loading",(B=a.media)!=null&&B.provider&&a.media.provider!=="local"&&await j();const ie=E.value?t.value:n.value;ie&&(ie.load(),await f())}async function j(){if(!(!S.value||!a.media))try{m.value=!0;const ie=await S.value.get(`/api/v1/video/${a.media.uuid}/playback`);g.value=ie.playback_url,w.value=new Date(ie.token_expires_at);const B=E.value?t.value:n.value;if(B&&B.src!==g.value){const z=!B.paused,de=B.currentTime;B.src=g.value,E.value||(B.currentTime=de),z&&await f()}}catch{p.value="Failed to refresh playback token",h.value="error"}finally{m.value=!1}}async function P(ie){if(t.value){if(t.value.canPlayType("application/vnd.apple.mpegurl")){t.value.src=ie;return}try{t.value.src=ie}catch{p.value="Live streaming not supported in this browser",h.value="error"}}}function _(){M.value&&(M.value.destroy(),M.value=null)}function L(){var B;const ie=E.value?t.value:n.value;ie&&(i.value=ie.currentTime,r.value=ie.duration,(B=a.onTimeUpdate)==null||B.call(a,ie.currentTime))}const G=e.computed(()=>{if(!d.value||d.value.length===0||!r.value)return 0;for(let ie=0;ie<d.value.length;ie++){const B=d.value.start(ie),z=d.value.end(ie);if(i.value>=B&&i.value<=z)return z/r.value*100}return 0});function X(){if(!w.value)return!1;const ie=new Date;return w.value.getTime()-ie.getTime()<5*60*1e3}return e.watch([n,t],([ie,B])=>{const z=E.value?B:ie;z&&(z.addEventListener("timeupdate",L),z.addEventListener("loadedmetadata",()=>{r.value=z.duration,h.value="ready"}),z.addEventListener("progress",()=>{d.value=z.buffered}),z.addEventListener("ended",()=>{var de;o.value=!1,h.value="ended",(de=a.onEnded)==null||de.call(a)}),z.addEventListener("error",de=>{var oe;h.value="error",(oe=a.onError)==null||oe.call(a,"Video playback error")}),z.volume=s.value/100,z.muted=c.value)}),e.onUnmounted(()=>{_();const ie=E.value?t.value:n.value;ie&&ie.removeEventListener("timeupdate",L)}),{videoEl:n,liveVideoEl:t,playing:o,currentTime:i,duration:r,volume:s,muted:c,isFullscreen:l,bufferedRanges:d,bufferedPercent:G,playbackRate:u,isLoading:m,error:p,status:h,currentPlaybackUrl:g,tokenExpiresAt:w,play:f,pause:k,togglePlayPause:R,seek:N,skipForward:v,skipBackward:C,toggleMute:U,setVolume:x,setPlaybackRate:T,toggleFullscreen:I,togglePiP:O,retry:$,refreshToken:j,setupLiveStream:P,setApiClient:y,shouldRefreshToken:X}}const ox=["src","poster","controls","autoplay","muted","loop","preload"],ax={key:1,ref:"livePlayerEl",class:"live-player"},ix=["controls","muted"],rx={key:0,class:"live-indicator","data-testid":"video-live-indicator","aria-label":"Live stream"},sx={key:2,class:"video-loading","data-testid":"video-loading",role:"status","aria-label":"Loading video"},lx={key:3,class:"video-error","data-testid":"video-error",role:"alert"},cx={key:5,class:"gesture-zones","data-testid":"video-gesture-zones"},dx=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:p,isLoading:h,error:g,status:w,currentPlaybackUrl:E,tokenExpiresAt:M,play:S,pause:y,seek:f,toggleMute:k,setVolume:R,toggleFullscreen:N,togglePlayPause:v,skipForward:C,skipBackward:U,retry:x,refreshToken:T,setApiClient:I,shouldRefreshToken:O,setupLiveStream:$}=nx({...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 j(){await T()}const P=e.computed(()=>{const oe=["video-player-container"];return t.className&&oe.push(t.className),m.value&&oe.push("fullscreen"),t.isLive&&oe.push("is-live"),s.value&&oe.push("is-playing"),h.value&&oe.push("is-loading"),oe}),_=e.computed(()=>{var oe,K;if(t.poster)return t.poster;if((oe=t.media)!=null&&oe.poster_url)return t.media.poster_url;if((K=t.media)!=null&&K.thumbnail_url)return t.media.thumbnail_url});function L(oe){const K=oe.target;o("loadedmetadata",{duration:K.duration,width:K.videoWidth,height:K.videoHeight})}function G(oe){const K=oe.target;c.value=K.currentTime,o("timeupdate",K.currentTime)}function X(){s.value=!0,o("play")}function ce(){s.value=!1,o("pause")}function Te(){s.value=!1,o("ended")}function Re(oe){const K=oe.target;let ee="Failed to load video";if(K.error)switch(K.error.code){case K.error.MEDIA_ERR_ABORTED:ee="Video playback aborted";break;case K.error.MEDIA_ERR_NETWORK:ee="Network error while loading video";break;case K.error.MEDIA_ERR_DECODE:ee="Video decoding error";break;case K.error.MEDIA_ERR_SRC_NOT_SUPPORTED:ee="Video format not supported";break}g.value=ee,o("error",ee)}function ie(oe){const K=oe.target;p.value=K.buffered,o("progress",K.buffered)}function B(){h.value=!0}function z(){h.value=!1}e.watch(()=>t.apiClient,oe=>{oe&&I(oe)},{immediate:!0}),e.watch(()=>t.playbackUrl,oe=>{typeof oe=="string"&&oe.length>0&&(E.value=oe)},{immediate:!0}),e.watch(()=>{var oe;return(oe=t.media)==null?void 0:oe.token_expires_at},oe=>{if(!oe){M.value=null;return}const K=new Date(oe);M.value=Number.isNaN(K.getTime())?null:K},{immediate:!0}),e.watch(()=>{var oe;return(oe=t.media)==null?void 0:oe.playback_url},async(oe,K)=>{if(t.playbackUrl||!oe||oe===K)return;const ee=i.value;if(!ee||t.isLive){E.value=oe;return}const ue=!ee.paused,ge=ee.currentTime;E.value=oe,await e.nextTick();try{ee.currentTime=ge}catch{}ue&&await S()},{immediate:!0});let de=null;return e.watch(()=>t.isLive,async oe=>{var ee;if(!oe)return;const K=t.playbackUrl||((ee=t.media)==null?void 0:ee.playback_url)||"";K&&await $(K)},{immediate:!0}),e.onMounted(()=>{var oe;(oe=t.media)!=null&&oe.provider&&t.media.provider!=="local"&&(de=setInterval(()=>{O()&&j()},3e4)),F.isPlatform("mobile")&&t.showCustomControls}),e.onUnmounted(()=>{de&&clearInterval(de)}),(oe,K)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["video-player-container",P.value]),"data-testid":"video-player"},[oe.isLive?(e.openBlock(),e.createElementBlock("div",ax,[e.createElementVNode("video",{ref_key:"liveVideoEl",ref:r,controls:oe.controls&&!oe.showCustomControls,autoplay:!0,muted:e.unref(u),onPlay:X,onPause:ce,onError:Re,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,ix),e.unref(w)==="live"?(e.openBlock(),e.createElementBlock("div",rx,[...K[3]||(K[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:_.value,controls:oe.controls&&!oe.showCustomControls,autoplay:oe.autoplay,muted:e.unref(u),loop:oe.loop,preload:oe.preload,onLoadedmetadata:L,onTimeupdate:G,onPlay:X,onPause:ce,onEnded:Te,onError:Re,onProgress:ie,onWaiting:B,onCanplay:z,playsinline:"",class:"video-element","data-testid":"video-element"},null,40,ox)),e.unref(h)?(e.openBlock(),e.createElementBlock("div",sx,[e.createVNode(e.unref(F.IonSpinner),{name:"crescent"})])):e.createCommentVNode("",!0),e.unref(g)?(e.openBlock(),e.createElementBlock("div",lx,[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(zi),"aria-hidden":"true"},null,8,["icon"]),e.createElementVNode("p",null,e.toDisplayString(e.unref(g)),1),e.createVNode(e.unref(F.IonButton),{size:"small",onClick:e.unref(x),"data-testid":"btn-video-retry","aria-label":"Retry loading video"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{icon:e.unref(Un),slot:"start","aria-hidden":"true"},null,8,["icon"]),K[4]||(K[4]=e.createTextVNode(" Retry ",-1))]),_:1},8,["onClick"])])):e.createCommentVNode("",!0),oe.showCustomControls&&!e.unref(g)?(e.openBlock(),e.createBlock(tx,{key:4,playing:e.unref(s),currentTime:e.unref(c),duration:e.unref(l),buffered:e.unref(p),volume:e.unref(d),muted:e.unref(u),fullscreen:e.unref(m),isLive:oe.isLive,onPlay:e.unref(S),onPause:e.unref(y),onSeek:e.unref(f),onToggleMute:e.unref(k),onSetVolume:e.unref(R),onToggleFullscreen:e.unref(N),class:"custom-controls"},null,8,["playing","currentTime","duration","buffered","volume","muted","fullscreen","isLive","onPlay","onPause","onSeek","onToggleMute","onSetVolume","onToggleFullscreen"])):e.createCommentVNode("",!0),oe.enableGestures&&!e.unref(g)?(e.openBlock(),e.createElementBlock("div",cx,[e.createElementVNode("div",{class:"gesture-left","data-testid":"video-gesture-skip-back","aria-label":"Double tap to skip backward",onDblclick:K[0]||(K[0]=(...ee)=>e.unref(U)&&e.unref(U)(...ee))},null,32),e.createElementVNode("div",{class:"gesture-center","data-testid":"video-gesture-play-pause","aria-label":"Tap to play or pause",onClick:K[1]||(K[1]=(...ee)=>e.unref(v)&&e.unref(v)(...ee))}),e.createElementVNode("div",{class:"gesture-right","data-testid":"video-gesture-skip-forward","aria-label":"Double tap to skip forward",onDblclick:K[2]||(K[2]=(...ee)=>e.unref(C)&&e.unref(C)(...ee))},null,32)])):e.createCommentVNode("",!0)],2))}}),sc=Ne(dx,[["__scopeId","data-v-b8db4951"]]),ux=va.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($,j){const P=a.value.get($);P&&a.value.set($,{...P,...j})}function m($){a.value.delete($)}function p($){return a.value.get($)}function h($){n.value.set($.id,$)}function g($,j){const P=n.value.get($);P&&n.value.set($,{...P,...j})}function w($,j){const P=n.value.get($);P&&n.value.set($,{...P,status:j.status,viewer_count:j.viewer_count,peak_viewers:j.peak_viewers})}function E($){n.value.delete($)}function M($){return n.value.get($)}function S($){return s.value.find(j=>j.media_uuid===$)}function y($){t.value.set($.id,$)}function f($,j){const P=t.value.get($);P&&t.value.set($,{...P,...j})}function k($){t.value.delete($)}function R($){return t.value.get($)}function N($){return Array.from(t.value.values()).filter(j=>j.media_uuid===$)}function v($){o.value=$}function C($){o.value&&(o.value={...o.value,...$})}function U(){o.value=null}function x($){i.value=$}function T(){a.value.clear(),n.value.clear(),t.value.clear(),o.value=null,i.value=!1}function I($){a.value.clear(),$.forEach(j=>{a.value.set(j.uuid,j)})}function O($){n.value.clear(),$.forEach(j=>{n.value.set(j.id,j)})}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:p,setLiveStream:h,updateLiveStream:g,updateLiveStreamStats:w,removeLiveStream:E,getLiveStream:M,getLiveStreamByMedia:S,addExportJob:y,updateExportJob:f,removeExportJob:k,getExportJob:R,getExportJobsByMedia:N,setEditorState:v,updateEditorState:C,clearEditorState:U,setProcessing:x,clearAll:T,loadVideos:I,loadLiveStreams:O}});let mn=null;function mx(a){mn=a}const Wo={post:async(a,n)=>{if(!mn)throw new Error("HTTP client not configured");return await mn(`/api/v1/video${a}`,{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}})},get:async a=>{if(!mn)throw new Error("HTTP client not configured");return await mn(`/api/v1/video${a}`)},delete:async a=>{if(!mn)throw new Error("HTTP client not configured");return await mn(`/api/v1/video${a}`,{method:"DELETE"})}};function jo(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 hi(a,n){return a instanceof Error&&a.message?a.message:n}function px(a){const n=ux(),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 p;const h=e.computed(()=>d.value?Math.floor((new Date().getTime()-d.value.getTime())/1e3):0),g=e.computed(()=>{var U;if(!((U=t.value)!=null&&U.playback_url))return null;const C=new URL(t.value.playback_url);return C.searchParams.set("live","true"),o.value&&C.searchParams.set("latency","low"),C.toString()}),w=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="live"}),E=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="idle"}),M=e.computed(()=>{var C;return((C=t.value)==null?void 0:C.status)==="ended"});async function S(C={}){s.value=!0,l.value=null;try{const U=await Wo.post("/live",{title:r.value||C.title||"Live Stream",low_latency:C.low_latency??o.value,auto_record:C.auto_record??i.value,...C}),x=jo(U);return t.value=x,n.setLiveStream(x),R(),x}catch(U){throw l.value=hi(U,"Failed to create stream"),U instanceof Error?U:new Error(l.value)}finally{s.value=!1}}async function y(){if(!t.value)throw new Error("No active stream");c.value=!0,l.value=null;try{const C=await Wo.post(`/live/${t.value.id}/end`),U=jo(C,t.value);return t.value=U,n.setLiveStream(U),N(),U}catch(C){throw l.value=hi(C,"Failed to end stream"),C instanceof Error?C:new Error(l.value)}finally{c.value=!1}}async function f(){if(t.value)try{const C=await Wo.get(`/live/${t.value.id}`),U=jo(C,t.value);u.value=U.viewer_count,m.value=U.peak_viewers,t.value=U;const x={status:U.status,viewer_count:U.viewer_count,peak_viewers:U.peak_viewers};U.started_at&&(x.started_at=U.started_at),U.ended_at&&(x.ended_at=U.ended_at),n.updateLiveStreamStats(U.id,x),U.status==="live"&&!d.value&&U.started_at&&(d.value=new Date(U.started_at)),U.status==="ended"&&N()}catch{}}async function k(C){try{const U=await Wo.get(`/live/${C}`),x=jo(U,t.value);return{rtmp_url:x.rtmp_url,stream_key:x.stream_key,playback_url:x.playback_url||""}}catch(U){throw l.value=hi(U,"Failed to get stream credentials"),U instanceof Error?U:new Error(l.value)}}function R(C=5e3){N(),p=window.setInterval(()=>{f()},C)}function N(){p!==void 0&&(clearInterval(p),p=void 0)}async function v(){if(!a)return;const C=n.getLiveStreamByMedia(a);C&&(t.value=C,u.value=C.viewer_count,m.value=C.peak_viewers,C.status==="live"&&(R(),C.started_at&&(d.value=new Date(C.started_at))))}return a&&v(),e.onUnmounted(()=>{N()}),{stream:t,lowLatency:o,autoRecord:i,streamTitle:r,isCreating:s,isEnding:c,error:l,streamDuration:h,viewerCount:u,peakViewers:m,playbackUrl:g,isLive:w,isIdle:E,hasEnded:M,createStream:S,endStream:y,refreshStreamStatus:f,getStreamCredentials:k,startStatusPolling:R,stopStatusPolling:N}}const fx={class:"stream-status"},hx={class:"flex items-center justify-between"},vx={class:"flex items-center gap-3"},gx={key:0,class:"flex items-center"},yx={key:2,class:"text-sm text-gray-600"},wx={key:0,class:"flex items-center gap-2"},bx={class:"text-sm font-medium text-gray-700"},kx={key:0,class:"text-xs text-gray-500"},xx=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",fx,[e.createElementVNode("div",hx,[e.createElementVNode("div",vx,[r.status==="live"?(e.openBlock(),e.createElementBlock("div",gx,[...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",yx,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)]),r.viewers!==void 0?(e.openBlock(),e.createElementBlock("div",wx,[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",bx,e.toDisplayString(r.viewers)+" "+e.toDisplayString(r.viewers===1?"viewer":"viewers"),1),r.peakViewers>r.viewers?(e.openBlock(),e.createElementBlock("span",kx," (Peak: "+e.toDisplayString(r.peakViewers)+") ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),Ex=Ne(xx,[["__scopeId","data-v-1d09c19f"]]),Vx={class:"stream-credentials"},Sx={class:"space-y-3"},Cx={class:"credential-field"},Nx={class:"flex gap-2"},_x=["value"],Tx={class:"credential-field"},Mx={class:"flex gap-2"},Bx=["value","type"],Fx=["aria-label"],Ix={key:0,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Rx={key:1,class:"w-4 h-4 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$x={key:0,class:"mt-2 text-sm text-green-600"},Dx=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",Vx,[u[8]||(u[8]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Stream Settings",-1)),e.createElementVNode("div",Sx,[e.createElementVNode("div",Cx,[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",Nx,[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,_x),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",Tx,[u[7]||(u[7]=e.createElementVNode("label",{class:"block text-xs font-medium text-gray-500 mb-1"},"Stream Key",-1)),e.createElementVNode("div",Mx,[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,Bx),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",Rx,[...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",Ix,[...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,Fx),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",$x,e.toDisplayString(r.value)+" copied to clipboard! ",1)):e.createCommentVNode("",!0)]),_:1})]))}}),Ux=Ne(Dx,[["__scopeId","data-v-306d92f6"]]),Ox={class:"live-stream-manager","data-testid":"live-stream-manager"},Lx={key:0,class:"stream-setup"},Ax={class:"space-y-4"},zx={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},Px={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},Wx=["disabled"],jx={key:0},Zx={key:1,class:"flex items-center justify-center"},Xx={key:1,class:"stream-active space-y-6"},Hx={key:1,class:"video-preview"},Gx={key:2,class:"analytics-panel"},Jx={class:"grid grid-cols-2 gap-4"},Yx={class:"bg-gray-50 p-3 rounded"},Kx={class:"text-2xl font-bold text-gray-900"},qx={class:"bg-gray-50 p-3 rounded"},Qx={class:"text-2xl font-bold text-gray-900"},e4={class:"stream-controls flex gap-3"},t4=["disabled"],n4={key:0},o4={key:1},a4={key:2,class:"mt-4 p-4 bg-red-50 border border-red-200 rounded-lg"},i4={class:"text-red-600 text-sm"},r4=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&&mx(t.httpClient);const{stream:i,lowLatency:r,autoRecord:s,streamTitle:c,isCreating:l,isEnding:d,error:u,createStream:m,endStream:p,streamDuration:h,playbackUrl:g,refreshStreamStatus:w}=px(t.mediaUuid),E=e.ref(!1);async function M(){var R;try{const N=await m({title:c.value,low_latency:r.value,auto_record:s.value});o("stream-created",N),(R=t.onStreamCreated)==null||R.call(t,N)}catch(N){o("error",N)}}async function S(){var R;try{const N=await p();o("stream-ended",N),(R=t.onStreamEnded)==null||R.call(t,N)}catch(N){o("error",N)}}function y(){i.value=null,c.value="",E.value=!1,u.value=null}async function f(R,N){try{await navigator.clipboard.writeText(R)}catch{}}let k;return e.onMounted(()=>{var R;((R=i.value)==null?void 0:R.status)==="live"&&(k=window.setInterval(()=>{w()},5e3))}),e.onUnmounted(()=>{k&&clearInterval(k)}),(R,N)=>(e.openBlock(),e.createElementBlock("div",Ox,[e.unref(i)?(e.openBlock(),e.createElementBlock("div",Xx,[e.createVNode(Ex,{status:e.unref(i).status,viewers:e.unref(i).viewer_count,duration:e.unref(h),"peak-viewers":e.unref(i).peak_viewers},null,8,["status","viewers","duration","peak-viewers"]),e.unref(i).status==="idle"?(e.openBlock(),e.createBlock(Ux,{key:0,"rtmp-url":e.unref(i).rtmp_url,"stream-key":e.unref(i).stream_key,onCopy:f},null,8,["rtmp-url","stream-key"])):e.createCommentVNode("",!0),e.unref(g)?(e.openBlock(),e.createElementBlock("div",Hx,[N[9]||(N[9]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-2"},"Live Preview",-1)),e.createVNode(sc,{"playback-url":e.unref(g),"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",Gx,[N[12]||(N[12]=e.createElementVNode("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Live Analytics",-1)),e.createElementVNode("div",Jx,[e.createElementVNode("div",Yx,[e.createElementVNode("div",Kx,e.toDisplayString(e.unref(i).viewer_count),1),N[10]||(N[10]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Current Viewers",-1))]),e.createElementVNode("div",qx,[e.createElementVNode("div",Qx,e.toDisplayString(e.unref(i).peak_viewers),1),N[11]||(N[11]=e.createElementVNode("div",{class:"text-xs text-gray-500"},"Peak Viewers",-1))])])])):e.createCommentVNode("",!0),e.createElementVNode("div",e4,[e.unref(i).status==="idle"?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:N[3]||(N[3]=v=>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:S,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",o4,"Ending...")):(e.openBlock(),e.createElementBlock("span",n4,"End Stream"))],8,t4)):e.createCommentVNode("",!0),e.unref(i).status==="ended"?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:y,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",Lx,[N[8]||(N[8]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Start Live Stream",-1)),e.createElementVNode("div",Ax,[e.createElementVNode("div",zx,[N[4]||(N[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":N[0]||(N[0]=v=>e.isRef(r)?r.value=v:null),type:"checkbox",class:"h-5 w-5 text-blue-600 rounded focus:ring-blue-500","aria-label":"Enable low latency mode"},null,512),[[e.vModelCheckbox,e.unref(r)]])]),e.createElementVNode("div",Px,[N[5]||(N[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":N[1]||(N[1]=v=>e.isRef(s)?s.value=v:null),type:"checkbox",class:"h-5 w-5 text-blue-600 rounded focus:ring-blue-500","aria-label":"Enable auto-recording"},null,512),[[e.vModelCheckbox,e.unref(s)]])]),e.createElementVNode("div",null,[N[6]||(N[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":N[2]||(N[2]=v=>e.isRef(c)?c.value=v:null),type:"text",class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",placeholder:"My Live Stream"},null,512),[[e.vModelText,e.unref(c)]])]),e.createElementVNode("button",{onClick:M,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",Zx,[...N[7]||(N[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",jx,"Create Stream"))],8,Wx)])])),e.unref(u)?(e.openBlock(),e.createElementBlock("div",a4,[e.createElementVNode("p",i4,e.toDisplayString(e.unref(u)),1)])):e.createCommentVNode("",!0)]))}}),s4=Ne(r4,[["__scopeId","data-v-26291f6f"]]),l4={class:"album-tree-node"},c4=["data-album-id","draggable","aria-selected","aria-expanded"],d4={key:1,class:"album-node__chevron-placeholder"},u4={key:2,"data-testid":"media-count",class:"album-node__count"},m4={key:0,class:"album-tree-node__children",role:"group"},p4=16,f4=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*p4}px`),d=e.computed(()=>{var y;return((y=t.dragState)==null?void 0:y.draggedAlbumId)===t.album.id}),u=e.computed(()=>{var y;return((y=t.dragState)==null?void 0:y.dropTargetId)===t.album.id}),m=e.computed(()=>{var y;return(y=t.dragState)!=null&&y.draggedAlbumId?t.dragState.draggedAlbumId===t.album.id:!1}),p=e.computed(()=>{const y=["album-node"];return r.value&&y.push("album-node--selected"),s.value&&y.push("album-node--focused"),t.compact&&y.push("album-node--compact"),d.value&&y.push("album-node--dragging"),u.value&&y.push("album-node--drop-target"),m.value&&y.push("album-node--invalid-drop"),y});function h(){o("select",t.album)}function g(y){y.stopPropagation(),o("toggle-expand",t.album.id)}function w(y){t.draggable&&(y.dataTransfer&&(y.dataTransfer.setData("text/plain",t.album.id),y.dataTransfer.effectAllowed="move"),o("drag-start",t.album.id))}function E(y){t.draggable&&(y.preventDefault(),y.dataTransfer&&(y.dataTransfer.dropEffect="move"),o("drag-over",t.album.id))}function M(){o("drag-leave",t.album.id)}function S(y){t.draggable&&(y.preventDefault(),o("drop",t.album.id))}return(y,f)=>{var R;const k=e.resolveComponent("AlbumTreeNode",!0);return e.openBlock(),e.createElementBlock("div",l4,[e.createElementVNode("div",{"data-testid":"album-node","data-album-id":y.album.id,class:e.normalizeClass(p.value),style:e.normalizeStyle({paddingLeft:l.value}),draggable:y.draggable,role:"treeitem","aria-selected":r.value,"aria-expanded":c.value?i.value:void 0,onDragstart:w,onDragover:E,onDragleave:M,onDrop:S},[c.value?(e.openBlock(),e.createElementBlock("button",{key:0,"data-testid":"expand-chevron",class:"album-node__chevron",type:"button","aria-label":"Toggle expand",onClick:g},[e.createVNode(e.unref(F.IonIcon),{icon:i.value?e.unref(Zd):e.unref(Xd)},null,8,["icon"])])):(e.openBlock(),e.createElementBlock("span",d4)),e.createVNode(e.unref(F.IonIcon),{icon:e.unref(eu),class:"album-node__icon"},null,8,["icon"]),e.createElementVNode("span",{"data-testid":"album-name",class:"album-node__name",onClick:h},e.toDisplayString(y.album.name),1),y.showMediaCount?(e.openBlock(),e.createElementBlock("span",u4,e.toDisplayString(y.album.media_count),1)):e.createCommentVNode("",!0)],46,c4),i.value&&((R=y.album.children)!=null&&R.length)?(e.openBlock(),e.createElementBlock("div",m4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.album.children,N=>(e.openBlock(),e.createBlock(k,{key:N.id,album:N,depth:y.depth+1,"selected-id":y.selectedId,"expanded-ids":y.expandedIds,"focused-id":y.focusedId,draggable:y.draggable,"show-media-count":y.showMediaCount,compact:y.compact,onSelect:f[0]||(f[0]=v=>o("select",v)),onToggleExpand:f[1]||(f[1]=v=>o("toggle-expand",v))},null,8,["album","depth","selected-id","expanded-ids","focused-id","draggable","show-media-count","compact"]))),128))])):e.createCommentVNode("",!0)])}}}),h4=Ne(f4,[["__scopeId","data-v-76be65a6"]]),Aa=va.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 f=new Map;return a.value.forEach(k=>f.set(k.id,k)),f}),s=e.computed(()=>a.value.filter(f=>f.parent_id===null));async function c(f){t.value=!0,o.value=null;try{const k=(f==null?void 0:f.parent_id)??null,R=k?`/api/v1/albums?parent_id=${k}`:"/api/v1/albums?parent_id=null",N=await fetch(R);if(!N.ok)throw new Error("Failed to fetch albums");((await N.json()).data||[]).forEach(U=>{const x=a.value.findIndex(T=>T.id===U.id);x>=0?a.value[x]=U:a.value.push(U)}),k!==null&&i.value.add(k)}catch(k){o.value=k instanceof Error?k.message:"Unknown error"}finally{t.value=!1}}async function l(f){t.value=!0,o.value=null;try{const k=await fetch(`/api/v1/albums/${f}`);if(!k.ok)throw new Error("Failed to fetch album");const N=(await k.json()).data,v=a.value.findIndex(C=>C.id===N.id);return v>=0?a.value[v]=N:a.value.push(N),N}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function d(f){t.value=!0,o.value=null;try{const k=await fetch(`/api/v1/albums/${f}/media`);if(!k.ok)throw new Error("Failed to fetch album media");const N=(await k.json()).data||[];return n.value.set(f,N),N}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function u(f,k){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${f}/media/reorder`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({media_ids:k})})).ok)throw new Error("Failed to reorder album media");const N=n.value.get(f)||[],v=k.map(C=>N.find(U=>U.uuid===C)).filter(C=>C!==void 0);n.value.set(f,v)}catch(R){throw o.value=R instanceof Error?R.message:"Unknown error",R}finally{t.value=!1}}async function m(f){t.value=!0,o.value=null;try{const k=await fetch("/api/v1/albums",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(f)});if(!k.ok)throw new Error("Failed to create album");const N=(await k.json()).data;return a.value.push(N),N}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}async function p(f,k){t.value=!0,o.value=null;try{const R=await fetch(`/api/v1/albums/${f}`,{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(k)});if(!R.ok)throw new Error("Failed to update album");const v=(await R.json()).data,C=a.value.findIndex(U=>U.id===v.id);return C>=0&&(a.value[C]=v),v}catch(R){throw o.value=R instanceof Error?R.message:"Unknown error",R}finally{t.value=!1}}async function h(f){t.value=!0,o.value=null;try{if(!(await fetch(`/api/v1/albums/${f}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"})).ok)throw new Error("Failed to delete album");const R=a.value.findIndex(N=>N.id===f);R>=0&&a.value.splice(R,1),n.value.delete(f)}catch(k){throw o.value=k instanceof Error?k.message:"Unknown error",k}finally{t.value=!1}}function g(f){return a.value.filter(k=>k.parent_id===f)}function w(f){return i.value.has(f)}function E(f){return n.value.get(f)||[]}async function M(f,k){const R=a.value.findIndex(v=>v.id===f);if(R<0)return;const N=a.value[R];a.value[R]={...N,parent_id:k};try{if(!(await fetch(`/api/v1/albums/${f}/move`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({parent_id:k})})).ok)throw new Error("Failed to move album")}catch(v){throw a.value[R]=N,o.value=v instanceof Error?v.message:"Unknown error",v instanceof Error?v:new Error("Failed to move album")}}function S(f){a.value=f}function y(){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:p,deleteAlbum:h,getChildrenOf:g,childrenLoaded:w,getAlbumMedia:E,moveAlbum:M,setAlbums:S,reset:y}});function lc(){const a=Aa(),{albums:n,albumsById:t,rootAlbums:o,loading:i,error:r}=va.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 cc(a){const{childrenByParentId:n,onMove:t}=a,o=e.ref({isDragging:!1,draggedAlbumId:null,dropTargetId:null,dropPosition:null});function i(m,p){if(m===p)return!0;const h=new Set,g=[m];for(;g.length>0;){const w=g.shift();if(!w||h.has(w))continue;h.add(w);const E=n.get(w)||[];for(const M of E){if(M===p)return!0;g.push(M)}}return!1}function r(m,p){return m===p?!1:p===null?!0:!i(m,p)}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:p}=o.value;if(!m){c();return}if(!r(m,p)){c();return}try{await t(m,p)}finally{c()}}return{dragState:o,isDescendant:i,canDropOn:r,startDrag:s,endDrag:c,setDropTarget:l,clearDropTarget:d,executeDrop:u}}const v4={key:0,"data-testid":"loading-spinner",class:"album-tree__loading"},g4={key:1,"data-testid":"error-state",class:"album-tree__error"},y4={key:2,"data-testid":"empty-state",class:"album-tree__empty"},w4={key:3,class:"album-tree__content",role:"group"},b4=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:p,getChildrenOf:h,childrenLoaded:g,moveAlbum:w}=lc(),E=e.shallowRef(new Set(o.expandedIds)),M=e.ref(o.modelValue??null),S=e.ref(null),y=new Map,f=new Map;function k(B){y.clear(),f.clear();for(const z of B){y.set(z.id,z);const de=z.parent_id??null,oe=f.get(de)??[];oe.push(z.id),f.set(de,oe)}}e.watch(l,B=>{k(B)},{immediate:!0});const{dragState:R,canDropOn:N,startDrag:v,endDrag:C,setDropTarget:U,clearDropTarget:x,executeDrop:T}=cc({childrenByParentId:f,onMove:async(B,z)=>{await w(B,z),i("album-moved",{albumId:B,newParentId:z})}});e.watch(()=>o.modelValue,B=>{M.value=B??null}),e.watch(()=>o.expandedIds,B=>{E.value=new Set(B)}),e.onMounted(async()=>{await p({parent_id:null})});const I=e.computed(()=>d.value.map(B=>O(B)));function O(B){if(!E.value.has(B.id))return B;const z=h(B.id);return{...B,children:z.map(de=>O(de))}}const $=e.computed(()=>{const B=[];function z(de){var oe;for(const K of de)B.push(K),E.value.has(K.id)&&((oe=K.children)!=null&&oe.length)&&z(K.children)}return z(I.value),B});function j(B){var oe;if(!$.value.length)return;const z=S.value?$.value.findIndex(K=>K.id===S.value):-1,de=z>=0?$.value[z]:null;switch(B.key){case"ArrowDown":B.preventDefault(),z<$.value.length-1?S.value=$.value[z+1].id:z===-1&&$.value.length>0&&(S.value=$.value[0].id);break;case"ArrowUp":B.preventDefault(),z>0&&(S.value=$.value[z-1].id);break;case"ArrowRight":B.preventDefault(),de&&(de.children_count>0&&!E.value.has(de.id)?P(de.id):E.value.has(de.id)&&((oe=de.children)!=null&&oe.length)&&(S.value=de.children[0].id));break;case"ArrowLeft":B.preventDefault(),de&&(E.value.has(de.id)&&de.children_count>0?P(de.id):de.parent_id&&(S.value=de.parent_id));break;case"Enter":case" ":B.preventDefault(),de&&_(de);break;case"Home":B.preventDefault(),$.value.length>0&&(S.value=$.value[0].id);break;case"End":B.preventDefault(),$.value.length>0&&(S.value=$.value[$.value.length-1].id);break}}async function P(B){E.value.has(B)?(E.value.delete(B),i("album-collapsed",B)):(g(B)||await p({parent_id:B}),E.value.add(B),i("album-expanded",B))}function _(B){M.value=B.id,i("update:modelValue",B.id),i("album-selected",B)}function L(B){o.draggable&&v(B)}function G(B){var de;if(!o.draggable)return;const z=(de=R.value)==null?void 0:de.draggedAlbumId;z&&(U(B),N(z,B))}function X(){o.draggable&&x()}async function ce(B){o.draggable&&(U(B),await T())}function Te(B){o.draggable&&(B.preventDefault(),U(null))}async function Re(B){o.draggable&&(B.preventDefault(),U(null),await T())}function ie(){C()}return n({focusedId:S}),(B,z)=>(e.openBlock(),e.createElementBlock("div",{class:"album-tree","data-testid":"album-tree",tabindex:"0",role:"tree","aria-label":"Album tree",onKeydown:j,onDragover:Te,onDrop:Re,onDragend:ie},[e.unref(u)?(e.openBlock(),e.createElementBlock("div",v4,[e.createVNode(e.unref(F.IonSpinner),{name:"crescent"})])):e.unref(m)?(e.openBlock(),e.createElementBlock("div",g4,[e.createElementVNode("p",null,e.toDisplayString(e.unref(m)),1)])):e.unref(d).length?(e.openBlock(),e.createElementBlock("div",w4,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,de=>(e.openBlock(),e.createBlock(h4,{key:de.id,album:de,depth:0,"selected-id":M.value,"expanded-ids":E.value,"focused-id":S.value,draggable:r.value,"drag-state":r.value?e.unref(R):null,"show-media-count":s.value,compact:c.value,onSelect:_,onToggleExpand:P,onDragStart:L,onDragOver:G,onDragLeave:X,onDrop:ce},null,8,["album","selected-id","expanded-ids","focused-id","draggable","drag-state","show-media-count","compact"]))),128))])):(e.openBlock(),e.createElementBlock("div",y4,[z[0]||(z[0]=e.createElementVNode("p",null,"No albums yet",-1)),e.renderSlot(B.$slots,"empty-action",{},void 0,!0)]))],32))}}),dc=Ne(b4,[["__scopeId","data-v-ae3dea7a"]]),k4=300,x4=e.defineComponent({__name:"AlbumBrowser",props:{isOpen:{type:Boolean},selectedAlbumId:{default:null},title:{default:"Select Album"},confirmText:{default:"Select"}},emits:["close","confirm"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(t.selectedAlbumId??null),r=e.ref(null),s=e.ref(0),c=e.ref(null);e.watch(()=>t.selectedAlbumId,h=>{i.value=h??null});const l=e.computed(()=>r.value!==null);function d(h){const g=Date.now();if(c.value===h.id&&g-s.value<k4){o("confirm",h);return}s.value=g,c.value=h.id,i.value=h.id,r.value=h}function u(){r.value&&o("confirm",r.value)}function m(){o("close")}function p(){o("close")}return(h,g)=>(e.openBlock(),e.createBlock(e.unref(F.IonModal),{"is-open":h.isOpen,class:"album-browser-modal",onDidDismiss:p},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.title),1)]),_:1}),e.createVNode(e.unref(F.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{"data-testid":"cancel-button",onClick:m},{default:e.withCtx(()=>[...g[1]||(g[1]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(F.IonContent),{class:"album-browser-content"},{default:e.withCtx(()=>[e.createVNode(dc,{modelValue:i.value,"onUpdate:modelValue":g[0]||(g[0]=w=>i.value=w),draggable:!1,"show-media-count":!0,compact:!1,onAlbumSelected:d},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(F.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{fill:"clear",onClick:m},{default:e.withCtx(()=>[...g[2]||(g[2]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(e.unref(F.IonButton),{"data-testid":"confirm-button",fill:"solid",color:"primary",disabled:!l.value,onClick:u},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.confirmText),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"]))}}),uc=Ne(x4,[["__scopeId","data-v-21676ec1"]]),E4={class:"ion-padding-start text-sm"},V4={class:"ion-padding-start text-sm"},S4={key:1},C4={key:1,class:"album-manager-inline rounded-lg border border-gray-200 bg-white p-4"},N4={class:"flex items-center justify-between gap-3 pb-3"},_4={class:"text-base font-semibold text-gray-900"},T4={class:"ion-padding-start text-sm"},M4={class:"ion-padding-start text-sm"},B4={class:"flex justify-between pt-2"},F4={key:1},qn=255,Qn=1e3,I4=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=Aa(),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),p=e.ref(null),h=e.ref(!1),g=e.ref(!1),w=e.computed(()=>d.value.name?l.value.name.trim()?l.value.name.length>qn?`Name must be ${qn} characters or less`:null:"Name is required":null),E=e.computed(()=>d.value.description&&l.value.description.length>Qn?`Description must be ${Qn} characters or less`:null),M=e.computed(()=>{const j=l.value.name.trim().length>0,P=l.value.name.length<=qn,_=l.value.description.length<=Qn;return j&&P&&_&&!h.value}),S=e.computed(()=>{var j;return((j=u.value)==null?void 0:j.name)??"None (Root)"}),y=e.computed(()=>p.value?p.value.children_count===0&&p.value.media_count===0:!1),f=e.computed(()=>p.value?p.value.children_count>0?"Cannot delete album with child albums. Move or delete children first.":p.value.media_count>0?"Cannot delete album with media. Remove media first.":`Are you sure you want to delete "${p.value.name}"? This action cannot be undone.`:"");e.onMounted(async()=>{t.albumId&&await k()});async function k(){if(t.albumId)try{const j=await i.fetchAlbum(t.albumId);p.value=j,l.value={name:j.name,description:j.description??"",parent_id:j.parent_id},j.parent_id&&(u.value={id:j.parent_id,name:"Parent Album"})}catch(j){o("error",j)}}function R(){d.value.name=!0}function N(){d.value.description=!0}function v(){m.value=!0}function C(j){u.value={id:j.id,name:j.name},l.value.parent_id=j.id,m.value=!1}function U(){m.value=!1}function x(){o("close")}function T(){o("close")}async function I(){if(d.value.name=!0,d.value.description=!0,!(!M.value||h.value)){h.value=!0;try{const j={name:l.value.name.trim(),description:l.value.description.trim(),parent_id:l.value.parent_id};if(r.value&&t.albumId){const P=await i.updateAlbum(t.albumId,j);o("updated",P)}else{const P=await i.createAlbum(j);o("created",P)}o("close")}catch(j){o("error",j)}finally{h.value=!1}}}function O(){y.value&&(g.value=!0)}async function $(j){var _;if((((_=j.detail)==null?void 0:_.role)??"")!=="confirm"){g.value=!1;return}if(t.albumId){h.value=!0;try{await i.deleteAlbum(t.albumId),o("deleted",t.albumId),o("close")}catch(L){o("error",L)}finally{h.value=!1,g.value=!1}}}return(j,P)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[j.mode==="modal"?(e.openBlock(),e.createBlock(e.unref(F.IonModal),{key:0,"is-open":j.isOpen,class:"album-manager-modal",onDidDismiss:T},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonHeader),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonTitle),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1}),e.createVNode(e.unref(F.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:x},{default:e.withCtx(()=>[...P[4]||(P[4]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(F.IonContent),{class:"album-manager-content"},{default:e.withCtx(()=>[e.createElementVNode("form",{"data-testid":"album-form",class:"p-4 space-y-3",onSubmit:e.withModifiers(I,["prevent"])},[e.createVNode(e.unref(F.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...P[5]||(P[5]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(F.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":P[0]||(P[0]=_=>l.value.name=_),"data-testid":"name-input",maxlength:qn,onIonBlur:R},null,8,["modelValue"])]),_:1}),w.value?(e.openBlock(),e.createBlock(e.unref(F.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",E4,e.toDisplayString(w.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...P[6]||(P[6]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(F.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":P[1]||(P[1]=_=>l.value.description=_),"data-testid":"description-input",maxlength:Qn,onIonBlur:N},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref(F.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",V4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonItem),{button:"","data-testid":"parent-selector",onClick:v},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...P[7]||(P[7]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(F.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.value),1)]),_:1})]),_:1})],32)]),_:1}),e.createVNode(e.unref(F.IonFooter),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonToolbar),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButtons),{slot:"start"},{default:e.withCtx(()=>[r.value?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",disabled:!y.value,title:y.value?void 0:f.value,onClick:O},{default:e.withCtx(()=>[...P[8]||(P[8]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(F.IonButtons),{slot:"end"},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!M.value,onClick:I},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createBlock(e.unref(F.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",S4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["is-open"])):(e.openBlock(),e.createElementBlock("div",C4,[e.createElementVNode("div",N4,[e.createElementVNode("h2",_4,e.toDisplayString(s.value),1),e.createVNode(e.unref(F.IonButton),{"data-testid":"cancel-btn",fill:"clear",onClick:x},{default:e.withCtx(()=>[...P[9]||(P[9]=[e.createTextVNode(" Cancel ",-1)])]),_:1})]),e.createElementVNode("form",{"data-testid":"album-form",class:"space-y-3",onSubmit:e.withModifiers(I,["prevent"])},[e.createVNode(e.unref(F.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...P[10]||(P[10]=[e.createTextVNode("Name *",-1)])]),_:1}),e.createVNode(e.unref(F.IonInput),{modelValue:l.value.name,"onUpdate:modelValue":P[2]||(P[2]=_=>l.value.name=_),"data-testid":"name-input",maxlength:qn,onIonBlur:R},null,8,["modelValue"])]),_:1}),w.value?(e.openBlock(),e.createBlock(e.unref(F.IonText),{key:0,color:"danger","data-testid":"name-error"},{default:e.withCtx(()=>[e.createElementVNode("p",T4,e.toDisplayString(w.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),{position:"stacked"},{default:e.withCtx(()=>[...P[11]||(P[11]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(e.unref(F.IonTextarea),{modelValue:l.value.description,"onUpdate:modelValue":P[3]||(P[3]=_=>l.value.description=_),"data-testid":"description-input",maxlength:Qn,onIonBlur:N},null,8,["modelValue"])]),_:1}),E.value?(e.openBlock(),e.createBlock(e.unref(F.IonText),{key:1,color:"danger","data-testid":"description-error"},{default:e.withCtx(()=>[e.createElementVNode("p",M4,e.toDisplayString(E.value),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonItem),{button:"","data-testid":"parent-selector",onClick:v},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonLabel),null,{default:e.withCtx(()=>[...P[12]||(P[12]=[e.createTextVNode("Parent Album",-1)])]),_:1}),e.createVNode(e.unref(F.IonNote),{slot:"end","data-testid":"parent-name"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.value),1)]),_:1})]),_:1}),e.createElementVNode("div",B4,[e.createElementVNode("div",null,[r.value?(e.openBlock(),e.createBlock(e.unref(F.IonButton),{key:0,"data-testid":"delete-btn",color:"danger",fill:"outline",disabled:!y.value,title:y.value?void 0:f.value,onClick:O},{default:e.withCtx(()=>[...P[13]||(P[13]=[e.createTextVNode(" Delete ",-1)])]),_:1},8,["disabled","title"])):e.createCommentVNode("",!0)]),e.createVNode(e.unref(F.IonButton),{"data-testid":"submit-btn",type:"submit",color:"primary",disabled:!M.value,onClick:I},{default:e.withCtx(()=>[h.value?(e.openBlock(),e.createBlock(e.unref(F.IonSpinner),{key:0,"data-testid":"loading-spinner",name:"crescent"})):(e.openBlock(),e.createElementBlock("span",F4,e.toDisplayString(c.value),1))]),_:1},8,["disabled"])])],32)])),e.createVNode(uc,{"is-open":m.value,"selected-album-id":l.value.parent_id,title:"Select Parent Album",onClose:U,onConfirm:C},null,8,["is-open","selected-album-id"]),e.createVNode(e.unref(F.IonAlert),{"is-open":g.value,header:"Delete Album?",message:f.value,buttons:[{text:"Cancel",role:"cancel"},{text:"Delete",role:"confirm",cssClass:"alert-button-danger"}],onDidDismiss:$},null,8,["is-open","message"])],64))}}),R4=Ne(I4,[["__scopeId","data-v-22083f3a"]]),$4={class:"album-media-grid"},D4={class:"aspect-square"},U4={key:1,"data-testid":"empty-state",class:"flex flex-col items-center justify-center py-12 gap-4"},O4={class:"text-gray-500"},L4=["data-media-id","draggable","onDragstart","onDragover","onDrop","onMouseenter"],A4={key:0,"data-testid":"drop-indicator",class:"absolute inset-0 border-2 border-primary rounded-lg pointer-events-none z-30"},z4={key:1,class:"absolute top-2 right-2 z-20 opacity-0 group-hover:opacity-100 transition-opacity cursor-grab"},P4={class:"aspect-square relative"},W4=["src","alt"],j4={key:0,class:"absolute inset-0 bg-black/50 flex items-center justify-center gap-2 transition-opacity"},Z4=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=Aa(),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),p=e.computed(()=>{const T=t.columns;return["grid","gap-4",`grid-cols-${T.mobile??2}`,`sm:grid-cols-${T.sm??3}`,`md:grid-cols-${T.md??4}`,`lg:grid-cols-${T.lg??5}`,`xl:grid-cols-${T.xl??6}`]}),h=e.computed(()=>(t.columns.md??4)*2);e.onMounted(async()=>{await g()}),e.watch(()=>t.albumId,async()=>{await g()});async function g(){s.value=!0;try{const T=await i.fetchAlbumMedia(t.albumId);r.value=T}catch{r.value=[]}finally{s.value=!1}}function w(T){return t.selectedItems.includes(T)}function E(T){o("toggle-select",T);const I=w(T.uuid)?t.selectedItems.filter(O=>O!==T.uuid):[...t.selectedItems,T.uuid];o("selection-change",I)}function M(T){if(T.conversions&&typeof T.conversions=="object"){const I=T.conversions.thumb;if(typeof I=="string")return I}return T.original_url}function S(T){c.value=T}function y(){c.value=null}function f(T){o("preview",T)}function k(T){o("edit",T)}function R(T){o("detach",T.uuid)}function N(){o("add")}function v(T,I){t.reorderable&&(l.value=I,T.dataTransfer&&(T.dataTransfer.effectAllowed="move",T.dataTransfer.setData("text/plain",String(I))))}function C(T,I){!t.reorderable||l.value===null||(T.preventDefault(),d.value=I)}function U(T,I){if(!t.reorderable||l.value===null)return;T.preventDefault();const O=l.value;if(O!==I){const $=[...r.value],[j]=$.splice(O,1);$.splice(I,0,j),r.value=$;const P=$.map(_=>_.uuid);o("reorder",P),i.reorderAlbumMedia(t.albumId,P).catch(()=>{g()})}l.value=null,d.value=null}function x(){l.value=null,d.value=null}return(T,I)=>(e.openBlock(),e.createElementBlock("div",$4,[u.value?(e.openBlock(),e.createElementBlock("div",{key:0,"data-testid":"loading-grid",class:e.normalizeClass(p.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,O=>(e.openBlock(),e.createBlock(e.unref(F.IonCard),{key:O,class:"m-0"},{default:e.withCtx(()=>[e.createElementVNode("div",D4,[e.createVNode(e.unref(F.IonSkeletonText),{animated:"",class:"w-full h-full skeleton"})])]),_:1}))),128))],2)):m.value?(e.openBlock(),e.createElementBlock("div",U4,[e.createVNode(e.unref(F.IonIcon),{name:"images-outline",class:"text-6xl text-gray-400"}),e.createElementVNode("p",O4,e.toDisplayString(T.emptyText),1),e.createVNode(e.unref(F.IonButton),{"data-testid":"add-media-btn",onClick:N},{default:e.withCtx(()=>[...I[0]||(I[0]=[e.createTextVNode(" Add Media ",-1)])]),_:1})])):(e.openBlock(),e.createElementBlock("div",{key:2,"data-testid":"media-grid",class:e.normalizeClass(p.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(O,$)=>(e.openBlock(),e.createElementBlock("div",{key:O.uuid,"data-media-id":O.uuid,class:e.normalizeClass(["media-item relative group",{"opacity-50":l.value===$,"ring-2 ring-primary":d.value===$&&l.value!==$}]),draggable:T.reorderable,onDragstart:j=>v(j,$),onDragover:j=>C(j,$),onDrop:j=>U(j,$),onDragend:x,onMouseenter:j=>S(O.uuid),onMouseleave:y},[d.value===$&&l.value!==$&&T.reorderable?(e.openBlock(),e.createElementBlock("div",A4)):e.createCommentVNode("",!0),T.reorderable?(e.openBlock(),e.createElementBlock("div",z4,[e.createVNode(e.unref(F.IonIcon),{name:"reorder-three-outline",class:"text-white drop-shadow-md"})])):e.createCommentVNode("",!0),T.selectionMode?(e.openBlock(),e.createBlock(e.unref(F.IonCheckbox),{key:2,"data-testid":"media-checkbox",checked:w(O.uuid),class:"absolute top-2 left-2 z-20",onIonChange:j=>E(O)},null,8,["checked","onIonChange"])):e.createCommentVNode("",!0),e.createVNode(e.unref(F.IonCard),{class:"m-0 overflow-hidden"},{default:e.withCtx(()=>[e.createElementVNode("div",P4,[e.createElementVNode("img",{src:M(O),alt:O.file_name,class:"w-full h-full object-cover"},null,8,W4),T.showActions&&c.value===O.uuid?(e.openBlock(),e.createElementBlock("div",j4,[e.createVNode(e.unref(F.IonButton),{"data-testid":"action-preview",fill:"clear",size:"small",color:"light",onClick:j=>f(O)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{slot:"icon-only",name:"eye-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(F.IonButton),{"data-testid":"action-edit",fill:"clear",size:"small",color:"light",onClick:j=>k(O)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{slot:"icon-only",name:"create-outline"})]),_:1},8,["onClick"]),e.createVNode(e.unref(F.IonButton),{"data-testid":"action-detach",fill:"clear",size:"small",color:"danger",onClick:j=>R(O)},{default:e.withCtx(()=>[e.createVNode(e.unref(F.IonIcon),{slot:"icon-only",name:"close-circle-outline"})]),_:1},8,["onClick"])])):e.createCommentVNode("",!0)])]),_:2},1024)],42,L4))),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:N},[e.createVNode(e.unref(F.IonIcon),{name:"add-circle-outline",class:"text-4xl text-gray-400"}),I[1]||(I[1]=e.createElementVNode("span",{class:"text-sm text-gray-500"},"Add Media",-1))])],2))]))}}),X4=Ne(Z4,[["__scopeId","data-v-d84b796a"]]);function dr(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 Li(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 ur(a){if(a){const t={};a.apiBaseUrl!==void 0&&(t.apiBaseUrl=a.apiBaseUrl),a.isAdmin!==void 0&&(t.isAdmin=a.isAdmin),Fn(t)}return{name:"mediables",async upload(t,o){const r=await kt().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 kt().attachMedia(o.modelType,String(o.modelId),[t],o.collection||"images")},async attachMany(t,o){await kt().attachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async detach(t,o){await kt().detachMedia(o.modelType,String(o.modelId),t,o.collection||"images")},async reorder(t,o){await kt().reorderMedia(t.modelType,String(t.modelId),o,t.collection||"images")},async fetchModelMedia(t){return await kt().fetchModelMedia(t.modelType,String(t.modelId),t.collection||"images")},getUrl(t,o){return kt().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 kt().deleteMedia(t)},async update(t,o){const r=await kt().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),Fn(o)}}}let na=null;function H4(){return na||(na=ur()),na}function G4(){na=null}const J4={apiBaseUrl:"/media-library-pro"};function Zo(){var a;return typeof document>"u"?null:((a=document.querySelector('meta[name="csrf-token"]'))==null?void 0:a.getAttribute("content"))||null}function vi(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 mr(a){const n={...J4,...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||Zo();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 p=await d.json().catch(()=>({message:"Upload failed"}));throw new Error(p.message||`HTTP ${d.status}`)}const u=await d.json(),m=vi(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||Zo();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(vi)}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||Zo();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||Zo();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 vi(l)},configure(o){Object.assign(n,o)}}}let oa=null;function Y4(){return oa||(oa=mr()),oa}function K4(){oa=null}function mc(a,n){switch(a){case"mediables":return ur(n);case"spatie":return mr(n);default:throw new Error(`Unknown adapter: ${a}`)}}function ha(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 pc(a){var t;const n=a.split(".");return n.length>1?`.${(t=n.pop())==null?void 0:t.toLowerCase()}`:""}function pr(a){return a.type.startsWith("image/")}async function fc(a){return pr(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 hc(a,n){const t=[];if(n.maxFileSize&&a.size>n.maxFileSize&&t.push({field:"size",message:`File exceeds maximum size of ${ha(n.maxFileSize)}`,code:"MAX_FILE_SIZE"}),n.minFileSize&&a.size<n.minFileSize&&t.push({field:"size",message:`File is smaller than minimum size of ${ha(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=pc(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(pr(a)&&(n.maxDimensions||n.minDimensions)){const o=await fc(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 fr(a={}){const n=e.ref(a.rules||{});function t(l){n.value=l}async function o(l){return hc(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 q4(){return`upload-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function Q4(a){if(a.type.startsWith("image/"))return URL.createObjectURL(a)}function vc(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),p=o?{rules:o}:{},{validateFile:h}=fr(p);async function g(){if(m.value.size>=t)return;const x=Array.from(u.value.entries()).find(([O,$])=>$.status==="pending"&&!m.value.has(O));if(!x){Array.from(u.value.values()).every($=>$.status==="completed"||$.status==="error")&&u.value.size>0&&(d==null||d());return}const[T,I]=x;await w(T,I)}async function w(x,T){m.value.add(x),T.status="uploading",T.abortController=new AbortController,u.value.set(x,{...T}),r==null||r(T);try{const I={onProgress:$=>{T.progress=$,u.value.set(x,{...T}),s==null||s(T)},signal:T.abortController.signal};i&&(I.collection=i);const O=await n.upload(T.file,I);T.status="completed",T.progress=100,T.media=O.media,u.value.set(x,{...T}),c==null||c(T,O.media)}catch(I){I.name==="AbortError"?u.value.delete(x):(T.status="error",T.error=I.message,u.value.set(x,{...T}),l==null||l(T,I))}finally{m.value.delete(x),delete T.abortController,g()}}async function E(x){var O;const T=Array.from(x),I=[];for(const $ of T){const j=await h($),P=q4(),_=Q4($),L={id:P,file:$,progress:0,status:j.valid?"pending":"error"};!j.valid&&((O=j.errors[0])!=null&&O.message)&&(L.error=j.errors[0].message),_&&(L.previewUrl=_),u.value.set(P,L);const G={media:null,clientId:P,name:$.name,order:0,upload:L,errors:j.errors};I.push(G)}for(let $=0;$<t;$++)g();return I}function M(x){const T=u.value.get(x);T&&(T.abortController&&T.abortController.abort(),T.previewUrl&&URL.revokeObjectURL(T.previewUrl),u.value.delete(x),m.value.delete(x),g())}async function S(x){const T=u.value.get(x);!T||T.status!=="error"||(T.status="pending",T.progress=0,delete T.error,u.value.set(x,{...T}),g())}function y(){for(const[x,T]of u.value.entries())(T.status==="completed"||T.status==="error")&&(T.previewUrl&&URL.revokeObjectURL(T.previewUrl),u.value.delete(x))}function f(){for(const x of u.value.values())x.abortController&&x.abortController.abort(),x.previewUrl&&URL.revokeObjectURL(x.previewUrl);u.value.clear(),m.value.clear()}function k(x){return u.value.get(x)}const R=e.computed(()=>m.value.size>0),N=e.computed(()=>m.value.size),v=e.computed(()=>Array.from(u.value.values()).filter(x=>x.status==="pending").length),C=e.computed(()=>u.value.size===0?!0:Array.from(u.value.values()).every(x=>x.status==="completed"||x.status==="error")),U=e.computed(()=>Array.from(u.value.values()));return{uploads:u,isUploading:R,activeCount:N,pendingCount:v,isComplete:C,addFiles:E,cancelUpload:M,retryUpload:S,clearCompleted:y,clearAll:f,getUpload:k,uploadsArray:U}}function gc(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(S,y,f){n&&("dataTransfer"in S&&S.dataTransfer&&(S.dataTransfer.effectAllowed="move",S.dataTransfer.setData("text/plain",String(f))),d=S.target,d&&d.classList.add(r),c.value={isDragging:!0,dragIndex:f,dropIndex:f,draggedItem:y},l.value=!0,o==null||o(y,f))}function m(S,y){var f;if(!(!n||!c.value.isDragging)&&(S.preventDefault(),c.value.dropIndex!==y)){const k=document.querySelector(`.${s}`);k==null||k.classList.remove(s);const R=(f=S.target)==null?void 0:f.closest("[data-index]");R==null||R.classList.add(s),c.value.dropIndex=y}}function p(){if(!c.value.isDragging)return;const{dragIndex:S,dropIndex:y,draggedItem:f}=c.value;d&&d.classList.remove(r);const k=document.querySelector(`.${s}`);k==null||k.classList.remove(s),S!==null&&y!==null&&S!==y&&f&&(t==null||t({fromIndex:S,toIndex:y,item:f})),g(),i==null||i()}function h(){d&&d.classList.remove(r);const S=document.querySelector(`.${s}`);S==null||S.classList.remove(s),g(),i==null||i()}function g(){c.value={isDragging:!1,dragIndex:null,dropIndex:null,draggedItem:null},l.value=!1,d=null}function w(S,y,f){const k=[...S],[R]=k.splice(y,1);return k.splice(f,0,R),k.map((N,v)=>({...N,order:v}))}function E(S,y){return{draggable:n,"data-index":y,onDragstart:f=>u(f,S,y),onDragover:f=>m(f,y),onDragend:()=>p(),onDrop:f=>{f.preventDefault(),p()}}}function M(S){S.key==="Escape"&&c.value.isDragging&&h()}return e.onMounted(()=>{document.addEventListener("keydown",M)}),e.onUnmounted(()=>{document.removeEventListener("keydown",M),h()}),{dragState:c,isDragging:l,startDrag:u,handleDragOver:m,endDrag:p,cancelDrag:h,reorderItems:w,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:p,maxConcurrentUploads:h=3,onChange:g,onUpload:w,onUploadComplete:E,onUploadError:M,onRemove:S,onReorder:y,onError:f,onReadyToSubmitChange:k}=a,R={maxItems:r,maxFileSize:s,acceptedMimeTypes:c,...u},N=p||mc(m),v=e.ref([]),C=e.ref(!1),U=e.ref([]);function x(ne){if(ne.length===0)return[];const ke=ne[0];return"media"in ke&&"clientId"in ke?ne:Li(ne)}v.value=x(n);const{acceptString:T,canAddFiles:I}=fr({rules:R}),O=vc({adapter:N,maxConcurrent:h,rules:R,collection:i,onUploadStart:ne=>{w==null||w(ne)},onUploadComplete:(ne,ke)=>{const he=v.value.findIndex(Ye=>Ye.clientId===ne.id);he!==-1&&(v.value[he]={...v.value[he],media:ke,name:ke.name||ke.file_name,upload:{...ne,status:"completed"}}),E==null||E(ke)},onUploadError:(ne,ke)=>{const he=v.value.findIndex(Ye=>Ye.clientId===ne.id);he!==-1&&(v.value[he]={...v.value[he],upload:{...ne,status:"error",error:ke.message},errors:[{field:"upload",message:ke.message,code:"UPLOAD_ERROR"}]}),M==null||M({file:ne.file,message:ke.message})},onQueueComplete:()=>{g==null||g(v.value)}}),{dragState:$,getDragProps:j,reorderItems:P}=gc({enabled:l&&!d,onReorder:ne=>{v.value=P(v.value,ne.fromIndex,ne.toIndex),y==null||y(v.value),g==null||g(v.value)}}),_=e.computed(()=>O.isUploading.value),L=e.computed(()=>!O.isUploading.value&&O.pendingCount.value===0),G=e.computed(()=>r?v.value.length>=r:!1),X=e.computed(()=>dr(v.value)),ce=e.computed(()=>v.value.length),Te=e.computed(()=>r?Math.max(0,r-v.value.length):1/0);e.watch(L,ne=>{k==null||k(ne)});function Re(ne){v.value=x(ne),g==null||g(v.value)}async function ie(ne){if(d)return;const ke=Array.from(ne);if(!I(ke.length,v.value.length)){const pt={field:"count",message:`Maximum ${r} files allowed`,code:"MAX_ITEMS"};U.value=[pt],f==null||f([pt]);return}const he=await O.addFiles(ke),Ye=v.value.length,it=he.map((pt,me)=>({...pt,order:Ye+me}));v.value=[...v.value,...it],g==null||g(v.value)}function B(ne){d||(ne.upload&&(ne.upload.status==="uploading"||ne.upload.status==="pending")&&O.cancelUpload(ne.clientId),v.value=v.value.filter(ke=>ke.clientId!==ne.clientId),v.value=v.value.map((ke,he)=>({...ke,order:he})),S==null||S(ne),g==null||g(v.value))}function z(ne){const ke=v.value.find(he=>he.clientId===ne);ke&&B(ke)}function de(){d||(O.clearAll(),v.value=[],g==null||g(v.value))}function oe(ne,ke){d||!l||(v.value=P(v.value,ne,ke),y==null||y(v.value),g==null||g(v.value))}function K(ne,ke){if(d)return;const he=v.value.findIndex(Ye=>Ye.clientId===ne);he!==-1&&(v.value[he]={...v.value[he],...ke},g==null||g(v.value))}function ee(ne){O.cancelUpload(ne),z(ne)}async function ue(ne){await O.retryUpload(ne)}async function ge(){if(!t||!o)throw new Error("modelType and modelId are required for save()");const ne={modelType:t,modelId:o,collection:i},ke=v.value.filter(he=>he.media&&!he.markedForRemoval).map(he=>he.media.uuid);C.value=!0;try{await N.attachMany(ke,ne),await N.reorder(ne,ke)}finally{C.value=!1}}async function xe(){if(!t||!o)throw new Error("modelType and modelId are required for load()");const ne={modelType:t,modelId:o,collection:i};C.value=!0;try{const ke=await N.fetchModelMedia(ne);v.value=Li(ke),g==null||g(v.value)}finally{C.value=!1}}return e.onMounted(()=>{t&&o&&n.length===0&&xe().catch(console.error)}),e.onUnmounted(()=>{O.clearAll()}),{items:v,setItems:Re,addFiles:ie,removeItem:B,removeItemById:z,clearAll:de,reorderItems:oe,updateItem:K,cancelUpload:ee,retryUpload:ue,save:ge,load:xe,isLoading:C,isUploading:_,isReadyToSubmit:L,isAtMaxItems:G,errors:U,dragState:$,getDragProps:j,adapter:N,formValues:X,acceptString:T,count:ce,remainingSlots:Te}}const eE=["aria-disabled"],tE=["accept","multiple","disabled"],nE={class:"media-dropzone__content"},oE={class:"media-dropzone__title"},aE={class:"media-dropzone__subtitle"},iE=["disabled"],rE={key:0,class:"media-dropzone__helper"},sE=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 w=[];return t.maxFileSize&&w.push(`Max size: ${ha(t.maxFileSize)}`),t.maxItems&&t.maxItems>1&&w.push(`Max files: ${t.maxItems}`),w.join(" • ")});function l(w){w.preventDefault(),!t.disabled&&(i.value=!0)}function d(w){w.preventDefault(),i.value=!1}function u(w){w.preventDefault()}function m(w){var M;if(w.preventDefault(),i.value=!1,t.disabled)return;const E=(M=w.dataTransfer)==null?void 0:M.files;E&&E.length>0&&o("files",E)}function p(){var w;t.disabled||(w=r.value)==null||w.click()}function h(w){const E=w.target,M=E.files;M&&M.length>0&&o("files",M),E.value=""}function g(w){(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),p())}return(w,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(s.value),role:"button",tabindex:"0","aria-disabled":w.disabled,"aria-label":"Upload files",onClick:p,onKeydown:g,onDragenter:l,onDragleave:d,onDragover:u,onDrop:m},[e.createElementVNode("input",{ref_key:"fileInput",ref:r,type:"file",accept:w.accept,multiple:w.multiple,disabled:w.disabled,class:"media-dropzone__input",onChange:h},null,40,tE),e.createElementVNode("div",nE,[e.renderSlot(w.$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",oE,[e.renderSlot(w.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(w.title),1)],!0)]),e.createElementVNode("p",aE,[e.renderSlot(w.$slots,"subtitle",{},()=>[e.createTextVNode(e.toDisplayString(w.subtitle),1)],!0)]),e.createElementVNode("button",{type:"button",class:"media-dropzone__button",disabled:w.disabled,onClick:e.withModifiers(p,["stop"])},[e.renderSlot(w.$slots,"button",{},()=>[e.createTextVNode(e.toDisplayString(w.buttonText),1)],!0)],8,iE),c.value?(e.openBlock(),e.createElementBlock("p",rE,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0)])],42,eE))}}),hr=Ne(sE,[["__scopeId","data-v-b1366c1e"]]),lE=["data-index"],cE={key:0,class:"media-item__drag-handle","aria-label":"Drag to reorder",role:"button",tabindex:"0"},dE={class:"media-item__thumbnail"},uE=["src","alt"],mE={key:1,class:"media-item__file-icon"},pE={key:2,class:"media-item__progress-overlay"},fE={class:"media-item__progress-text"},hE={key:3,class:"media-item__processing-overlay"},vE={key:4,class:"media-item__error-overlay"},gE={class:"media-item__info"},yE=["title"],wE={key:0,class:"media-item__size"},bE={key:1,class:"media-item__error-message"},kE={class:"media-item__actions"},xE=["disabled"],EE=["disabled"],VE=["disabled"],SE=["disabled"],CE=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 y;return(y=t.item.upload)!=null&&y.previewUrl?t.item.upload.previewUrl:t.item.media?t.adapter.getThumbnailUrl(t.item.media):null}),s=e.computed(()=>{var y,f,k;return((y=t.item.upload)==null?void 0:y.status)==="uploading"||((f=t.item.upload)==null?void 0:f.status)==="pending"||((k=t.item.upload)==null?void 0:k.status)==="queued"}),c=e.computed(()=>{var y;return((y=t.item.upload)==null?void 0:y.status)==="processing"}),l=e.computed(()=>{var y;return((y=t.item.upload)==null?void 0:y.status)==="error"||t.item.errors&&t.item.errors.length>0}),d=e.computed(()=>{var y;return(y=t.item.upload)!=null&&y.error?t.item.upload.error:t.item.errors&&t.item.errors.length>0?t.item.errors[0].message:null}),u=e.computed(()=>{var y;return((y=t.item.upload)==null?void 0:y.progress)||0}),m=e.computed(()=>{var y;return t.item.name||((y=t.item.media)==null?void 0:y.file_name)||"Unknown file"}),p=e.computed(()=>{var N,v;const y=((N=t.item.media)==null?void 0:N.size)||((v=t.item.upload)==null?void 0:v.file.size);if(!y)return"";const f=1024,k=["Bytes","KB","MB","GB"],R=Math.floor(Math.log(y)/Math.log(f));return parseFloat((y/Math.pow(f,R)).toFixed(2))+" "+k[R]}),h=e.computed(()=>{var f,k;const y=((f=t.item.media)==null?void 0:f.mime_type)||((k=t.item.upload)==null?void 0:k.file.type);return y==null?void 0:y.startsWith("image/")}),g=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 w(){t.disabled||o("remove",t.item)}function E(){t.disabled||o("edit",t.item)}function M(){t.disabled||o("retry",t.item)}function S(){t.disabled||o("cancel",t.item)}return(y,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(g.value),"data-index":y.index,onMouseenter:f[0]||(f[0]=k=>i.value=!0),onMouseleave:f[1]||(f[1]=k=>i.value=!1)},[y.sortable&&!y.disabled?(e.openBlock(),e.createElementBlock("div",cE,[...f[2]||(f[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",dE,[r.value&&h.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:r.value,alt:m.value,class:"media-item__image"},null,8,uE)):(e.openBlock(),e.createElementBlock("div",mE,[...f[3]||(f[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",pE,[e.createElementVNode("div",{class:"media-item__progress-bar",style:e.normalizeStyle({width:`${u.value}%`})},null,4),e.createElementVNode("span",fE,e.toDisplayString(u.value)+"%",1)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",hE,[...f[4]||(f[4]=[e.createElementVNode("div",{class:"media-item__spinner","aria-label":"Processing"},null,-1)])])):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("div",vE,[...f[5]||(f[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",gE,[e.createElementVNode("span",{class:"media-item__name",title:m.value},e.toDisplayString(m.value),9,yE),p.value?(e.openBlock(),e.createElementBlock("span",wE,e.toDisplayString(p.value),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("span",bE,e.toDisplayString(d.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",kE,[s.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-item__action media-item__action--cancel",disabled:y.disabled,"aria-label":"Cancel upload",onClick:S},[...f[6]||(f[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,xE)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"media-item__action media-item__action--retry",disabled:y.disabled,"aria-label":"Retry upload",onClick:M},[...f[7]||(f[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,EE)):e.createCommentVNode("",!0),y.showEdit&&y.item.media&&!s.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"media-item__action media-item__action--edit",disabled:y.disabled,"aria-label":"Edit",onClick:E},[...f[8]||(f[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,VE)):e.createCommentVNode("",!0),y.showRemove?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"media-item__action media-item__action--remove",disabled:y.disabled,"aria-label":"Remove",onClick:w},[...f[9]||(f[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,SE)):e.createCommentVNode("",!0)])],42,lE))}}),vr=Ne(CE,[["__scopeId","data-v-ff81c9ec"]]),NE=["aria-label"],_E=["draggable","data-index","onDragstart","onDragover","onDragend","onDrop"],TE={key:0,class:"media-collection__footer"},ME={class:"media-collection__count"},BE={key:0},FE={key:0,class:"media-collection__uploading"},IE=["name","value"],RE=["name","value"],$E=["name","value"],DE=["name","value"],UE={key:3,class:"media-collection__errors",role:"alert","aria-live":"polite"},OE=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:_=>{o("update:modelValue",_),o("change",_)},onUpload:_=>{o("upload",_)},onUploadComplete:_=>{o("upload-complete",_)},onUploadError:_=>{o("upload-error",_)},onRemove:_=>{o("remove",_)},onReorder:_=>{o("reorder",_)},onError:_=>{o("validation-error",_)},onReadyToSubmitChange:_=>{o("is-ready-to-submit-change",_)}},{items:r,setItems:s,addFiles:c,removeItem:l,reorderItems:d,cancelUpload:u,retryUpload:m,isLoading:p,isUploading:h,isAtMaxItems:g,errors:w,dragState:E,getDragProps:M,adapter:S,formValues:y,acceptString:f,count:k,remainingSlots:R}=za(i);e.provide("mediaAdapter",S),e.provide("mediaCollection",{items:r,addFiles:c,removeItem:l,reorderItems:d}),e.watch(()=>t.modelValue,_=>{_!==r.value&&s(_)},{deep:!0});const N=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!g.value),v=e.computed(()=>({"media-collection":!0,"media-collection--disabled":t.disabled,"media-collection--readonly":t.readonly,"media-collection--loading":p.value,"media-collection--has-items":r.value.length>0,"media-collection--dragging":E.value.isDragging}));function C(_){c(_)}function U(_){l(_)}function x(_){m(_.clientId)}function T(_){u(_.clientId)}function I(_){}function O(_,L,G){if(!t.sortable||t.disabled)return;const X=M(L,G);X.onDragstart&&X.onDragstart(_)}function $(_,L){if(!t.sortable||t.disabled)return;_.preventDefault();const G=r.value[L],X=M(G,L);X.onDragover&&X.onDragover(_)}function j(_,L){const G=M(_,L);G.onDragend&&G.onDragend()}function P(_,L){_.preventDefault();const G=r.value[L],X=M(G,L);X.onDrop&&X.onDrop(_)}return(_,L)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(v.value)},[e.renderSlot(_.$slots,"dropzone",{addFiles:e.unref(c)},()=>[N.value?(e.openBlock(),e.createBlock(hr,{key:0,accept:e.unref(f),multiple:_.maxItems!==1,disabled:_.disabled,"max-file-size":_.maxFileSize,"max-items":e.unref(R),onFiles:C},null,8,["accept","multiple","disabled","max-file-size","max-items"])):e.createCommentVNode("",!0)],!0),e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"media-collection__list",role:"list","aria-label":`${e.unref(k)} media items`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r),(G,X)=>e.renderSlot(_.$slots,"item",{key:G.clientId,item:G,index:X,remove:()=>U(G)},()=>[e.createElementVNode("div",{class:e.normalizeClass(["media-collection__item-wrapper",{"media-collection__item-wrapper--drag-over":e.unref(E).dropIndex===X}]),draggable:_.sortable&&!_.disabled,"data-index":X,onDragstart:ce=>O(ce,G,X),onDragover:ce=>$(ce,X),onDragend:ce=>j(G,X),onDrop:ce=>P(ce,X)},[e.createVNode(vr,{item:G,adapter:e.unref(S),disabled:_.disabled,sortable:_.sortable,"show-remove":!_.readonly,"show-edit":!1,index:X,onRemove:U,onRetry:x,onCancel:T,onEdit:I},null,8,["item","adapter","disabled","sortable","show-remove","index"])],42,_E)],!0)),128))],8,NE)):N.value?e.createCommentVNode("",!0):e.renderSlot(_.$slots,"empty",{key:1},()=>[L[0]||(L[0]=e.createElementVNode("div",{class:"media-collection__empty"},[e.createElementVNode("p",null,"No files uploaded")],-1))],!0),e.renderSlot(_.$slots,"footer",{count:e.unref(k),isUploading:e.unref(h)},()=>[e.unref(r).length>0?(e.openBlock(),e.createElementBlock("div",TE,[e.createElementVNode("span",ME,[e.createTextVNode(e.toDisplayString(e.unref(k))+" "+e.toDisplayString(e.unref(k)===1?"file":"files")+" ",1),_.maxItems?(e.openBlock(),e.createElementBlock("span",BE," / "+e.toDisplayString(_.maxItems)+" max",1)):e.createCommentVNode("",!0)]),e.unref(h)?(e.openBlock(),e.createElementBlock("span",FE," Uploading... ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],!0),_.generateFormFields?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(G,X)=>(e.openBlock(),e.createElementBlock("input",{key:`${_.name}-${G.uuid}`,type:"hidden",name:`${_.name}[${X}][uuid]`,value:G.uuid},null,8,IE))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(G,X)=>(e.openBlock(),e.createElementBlock("input",{key:`${_.name}-${G.uuid}-name`,type:"hidden",name:`${_.name}[${X}][name]`,value:G.name},null,8,RE))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(G,X)=>(e.openBlock(),e.createElementBlock("input",{key:`${_.name}-${G.uuid}-order`,type:"hidden",name:`${_.name}[${X}][order]`,value:G.order},null,8,$E))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(G,X)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`${_.name}-${G.uuid}-props`},[G.custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${_.name}[${X}][custom_properties]`,value:JSON.stringify(G.custom_properties)},null,8,DE)):e.createCommentVNode("",!0)],64))),128))],64)):e.createCommentVNode("",!0),e.unref(w).length>0?(e.openBlock(),e.createElementBlock("div",UE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),G=>(e.openBlock(),e.createElementBlock("p",{key:G.code||G.message,class:"media-collection__error"},e.toDisplayString(G.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),LE=Ne(OE,[["__scopeId","data-v-10a5bfff"]]);function gr(a={}){const{initialItem:n,onChange:t,onReplace:o,onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d,...u}=a,p={...u,initialItems:n?[n]:[],maxItems:1,sortable:!1,onChange:N=>{t==null||t(N[0]||null)},onUpload:i,onUploadComplete:r,onUploadError:s,onRemove:c,onError:l,onReadyToSubmitChange:d},h=za(p),g=e.computed(()=>h.items.value[0]||null),w=e.computed(()=>g.value!==null),E=e.computed(()=>h.formValues.value[0]||null);function M(N){N===null?h.clearAll():h.setItems([N])}async function S(N){const v=g.value;v&&h.removeItem(v),await h.addFiles([N])}function y(){g.value&&h.removeItem(g.value)}async function f(N){const v=g.value;v&&h.removeItem(v),await h.addFiles([N]);const C=h.items.value[0];C&&(o==null||o(v,C))}function k(){var N;(N=g.value)!=null&&N.upload&&h.cancelUpload(g.value.clientId)}async function R(){var N,v;((v=(N=g.value)==null?void 0:N.upload)==null?void 0:v.status)==="error"&&await h.retryUpload(g.value.clientId)}return{item:g,setItem:M,addFile:S,removeItem:y,replaceItem:f,cancelUpload:k,retryUpload:R,save:h.save,load:h.load,isLoading:h.isLoading,isUploading:h.isUploading,isReadyToSubmit:h.isReadyToSubmit,hasItem:w,errors:h.errors,adapter:h.adapter,formValue:E,acceptString:h.acceptString}}const AE=["accept","disabled"],zE={class:"media-attachment__preview"},PE=["name","value"],WE=["name","value"],jE=["name","value"],ZE=["name","value"],XE={key:4,class:"media-attachment__errors",role:"alert","aria-live":"polite"},HE=e.defineComponent({__name:"MediaAttachment",props:{modelValue:{default:null},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxFileSize:{},acceptedMimeTypes:{},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0},showReplaceButton:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","replace","is-ready-to-submit-change","validation-error"],setup(a,{emit:n}){const t=a,o=n,i=e.ref(null),r={initialItem:t.modelValue,modelType:t.modelType,modelId:t.modelId,collection:t.collection,maxFileSize:t.maxFileSize,acceptedMimeTypes:t.acceptedMimeTypes,disabled:t.disabled,rules:t.rules,adapterType:t.adapter,onChange:x=>{o("update:modelValue",x),o("change",x)},onUpload:x=>{o("upload",x)},onUploadComplete:x=>{o("upload-complete",x)},onUploadError:x=>{o("upload-error",x)},onRemove:x=>{o("remove",x)},onReplace:(x,T)=>{o("replace",T)},onError:x=>{o("validation-error",x)},onReadyToSubmitChange:x=>{o("is-ready-to-submit-change",x)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:p,isLoading:h,hasItem:g,errors:w,adapter:E,formValue:M,acceptString:S}=gr(r);e.provide("mediaAdapter",E),e.watch(()=>t.modelValue,x=>{x!==s.value&&c(x)},{deep:!0});const y=e.computed(()=>t.showUploadZone&&!t.disabled&&!t.readonly&&!g.value),f=e.computed(()=>({"media-attachment":!0,"media-attachment--disabled":t.disabled,"media-attachment--readonly":t.readonly,"media-attachment--loading":h.value,"media-attachment--has-item":g.value}));function k(x){x.length>0&&l(x[0])}function R(){var x;(x=i.value)==null||x.click()}function N(x){const T=x.target,I=T.files;I&&I.length>0&&u(I[0]),T.value=""}function v(x){d()}function C(x){p()}function U(x){m()}return(x,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(f.value)},[e.createElementVNode("input",{ref_key:"fileInputRef",ref:i,type:"file",accept:e.unref(S),disabled:x.disabled,class:"media-attachment__hidden-input",onChange:N},null,40,AE),y.value?e.renderSlot(x.$slots,"dropzone",{key:0,addFile:e.unref(l)},()=>[e.createVNode(hr,{accept:e.unref(S),multiple:!1,disabled:x.disabled,"max-file-size":x.maxFileSize,onFiles:k},null,8,["accept","disabled","max-file-size"])],!0):e.unref(g)&&e.unref(s)?e.renderSlot(x.$slots,"preview",{key:1,item:e.unref(s),remove:e.unref(d),replace:R},()=>[e.createElementVNode("div",zE,[e.createVNode(vr,{item:e.unref(s),adapter:e.unref(E),disabled:x.disabled,sortable:!1,"show-remove":!x.readonly,"show-edit":!1,onRemove:v,onRetry:C,onCancel:U},null,8,["item","adapter","disabled","show-remove"]),x.showReplaceButton&&!x.readonly&&!x.disabled&&e.unref(s).media?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"media-attachment__replace-button",onClick:R},[...T[0]||(T[0]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.createElementVNode("polyline",{points:"17 8 12 3 7 8"}),e.createElementVNode("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1),e.createTextVNode(" Replace ",-1)])])):e.createCommentVNode("",!0)])],!0):e.renderSlot(x.$slots,"empty",{key:2},()=>[T[1]||(T[1]=e.createElementVNode("div",{class:"media-attachment__empty"},[e.createElementVNode("p",null,"No file selected")],-1))],!0),x.generateFormFields&&e.unref(M)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("input",{type:"hidden",name:`${x.name}[uuid]`,value:e.unref(M).uuid},null,8,PE),e.createElementVNode("input",{type:"hidden",name:`${x.name}[name]`,value:e.unref(M).name},null,8,WE),e.createElementVNode("input",{type:"hidden",name:`${x.name}[order]`,value:e.unref(M).order},null,8,jE),e.unref(M).custom_properties?(e.openBlock(),e.createElementBlock("input",{key:0,type:"hidden",name:`${x.name}[custom_properties]`,value:JSON.stringify(e.unref(M).custom_properties)},null,8,ZE)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.unref(w).length>0?(e.openBlock(),e.createElementBlock("div",XE,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),I=>(e.openBlock(),e.createElementBlock("p",{key:I.code||I.message,class:"media-attachment__error"},e.toDisplayString(I.message),1))),128))])):e.createCommentVNode("",!0)],2))}}),GE=Ne(HE,[["__scopeId","data-v-26911174"]]),yc={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"}},JE=e.defineComponent({__name:"MediaCollectionProvider",props:{modelValue:{default:()=>[]},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxItems:{},maxFileSize:{},acceptedMimeTypes:{},sortable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","reorder","is-ready-to-submit-change","validation-error"],setup(a,{expose:n,emit:t}){const o=a,i=t,r={initialItems:o.modelValue,modelType:o.modelType,modelId:o.modelId,collection:o.collection,maxItems:o.maxItems,maxFileSize:o.maxFileSize,acceptedMimeTypes:o.acceptedMimeTypes,sortable:o.sortable,disabled:o.disabled,rules:o.rules,adapterType:o.adapter,onChange:x=>{i("update:modelValue",x),i("change",x)},onUpload:x=>{i("upload",x)},onUploadComplete:x=>{i("upload-complete",x)},onUploadError:x=>{i("upload-error",x)},onRemove:x=>{i("remove",x)},onReorder:x=>{i("reorder",x)},onError:x=>{i("validation-error",x)},onReadyToSubmitChange:x=>{i("is-ready-to-submit-change",x)}},{items:s,setItems:c,addFiles:l,removeItem:d,reorderItems:u,updateItem:m,cancelUpload:p,retryUpload:h,isLoading:g,isUploading:w,isReadyToSubmit:E,isAtMaxItems:M,errors:S,dragState:y,getDragProps:f,adapter:k,formValues:R,acceptString:N}=za(r);e.provide("mediaAdapter",k),e.provide("mediaCollection",{items:s,addFiles:l,removeItem:d,reorderItems:u}),e.watch(()=>o.modelValue,x=>{x!==s.value&&c(x)},{deep:!0});const v=e.computed(()=>({...yc,...o.labels})),C=e.computed(()=>({accept:N.value,multiple:o.maxItems!==1,disabled:o.disabled||o.readonly||M.value})),U=e.computed(()=>({items:s.value,isLoading:g.value,isUploading:w.value,isReadyToSubmit:E.value,isAtMaxItems:M.value,errors:S.value,addFiles:l,removeItem:d,reorderItems:u,clearAll:()=>{s.value.forEach(x=>d(x))},cancelUpload:p,retryUpload:h,labels:v.value,dropzoneProps:C.value}));return n({items:s,addFiles:l,removeItem:d,reorderItems:u,updateItem:m,cancelUpload:p,retryUpload:h,isLoading:g,isUploading:w,isReadyToSubmit:E,isAtMaxItems:M,errors:S,dragState:y,getDragProps:f,adapter:k,formValues:R,acceptString:N}),(x,T)=>e.renderSlot(x.$slots,"default",e.normalizeProps(e.guardReactiveProps(U.value)))}}),YE=e.defineComponent({__name:"MediaAttachmentProvider",props:{modelValue:{default:null},name:{default:"media"},modelType:{},modelId:{},collection:{default:"images"},maxFileSize:{},acceptedMimeTypes:{},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{},adapter:{default:"mediables"},labels:{},showUploadZone:{type:Boolean,default:!0},generateFormFields:{type:Boolean,default:!0},showReplaceButton:{type:Boolean,default:!0}},emits:["update:modelValue","change","upload","upload-complete","upload-error","remove","replace","is-ready-to-submit-change","validation-error"],setup(a,{expose:n,emit:t}){const o=a,i=t,r={initialItem:o.modelValue,modelType:o.modelType,modelId:o.modelId,collection:o.collection,maxFileSize:o.maxFileSize,acceptedMimeTypes:o.acceptedMimeTypes,disabled:o.disabled,rules:o.rules,adapterType:o.adapter,onChange:v=>{i("update:modelValue",v),i("change",v)},onUpload:v=>{i("upload",v)},onUploadComplete:v=>{i("upload-complete",v)},onUploadError:v=>{i("upload-error",v)},onRemove:v=>{i("remove",v)},onReplace:(v,C)=>{i("replace",C)},onError:v=>{i("validation-error",v)},onReadyToSubmitChange:v=>{i("is-ready-to-submit-change",v)}},{item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:p,isLoading:h,isUploading:g,isReadyToSubmit:w,hasItem:E,errors:M,adapter:S,formValue:y,acceptString:f}=gr(r);e.provide("mediaAdapter",S),e.watch(()=>o.modelValue,v=>{v!==s.value&&c(v)},{deep:!0});const k=e.computed(()=>({...yc,...o.labels})),R=e.computed(()=>({accept:f.value,multiple:!1,disabled:o.disabled||o.readonly||E.value})),N=e.computed(()=>({item:s.value,hasItem:E.value,isLoading:h.value,isUploading:g.value,isReadyToSubmit:w.value,errors:M.value,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:p,labels:k.value,dropzoneProps:R.value}));return n({item:s,setItem:c,addFile:l,removeItem:d,replaceItem:u,cancelUpload:m,retryUpload:p,isLoading:h,isUploading:g,isReadyToSubmit:w,hasItem:E,errors:M,adapter:S,formValue:y,acceptString:f}),(v,C)=>e.renderSlot(v.$slots,"default",e.normalizeProps(e.guardReactiveProps(N.value)))}}),KE=["name","value"],qE=["name","value"],QE=["name","value"],e3=["name","value"],t3=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(()=>dr(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,KE),e.createElementVNode("input",{type:"hidden",name:s(u,"name"),value:d.name},null,8,qE),e.createElementVNode("input",{type:"hidden",name:s(u,"order"),value:d.order},null,8,QE),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,e3)):e.createCommentVNode("",!0)],64))),128))}});exports.AlbumBrowser=uc;exports.AlbumManager=R4;exports.AlbumMediaGrid=X4;exports.AlbumTree=dc;exports.ArrayBufferTarget=Xi;exports.ImageEditor=Zs;exports.ImageEditorModal=Xs;exports.LiveStreamManager=s4;exports.ManagedMediaGallery=Ld;exports.MediaAttachment=GE;exports.MediaCollection=LE;exports.MediaCollectionDropzone=hr;exports.MediaCollectionItem=vr;exports.MediaWorkspace=$d;exports.ModelMediaManager=Rm;exports.Muxer=gl;exports.VideoEditor=Oi;exports.VideoEditorDialog=jw;exports.VideoEditorSimple=fb;exports.VideoExportPanel=H2;exports.VideoJobClient=cr;exports.VideoPlayer=sc;exports.VideoTimeline=Ob;exports.VideoToolsPanel=N2;exports.VideoUploader=Rk;exports._sfc_main=JE;exports._sfc_main$1=YE;exports._sfc_main$2=t3;exports.applyTemporaryMediaStoreConfig=Ws;exports.configureMediaStore=Fn;exports.createAdapter=mc;exports.createMediablesAdapter=ur;exports.createSpatieAdapter=mr;exports.formatFileSize=ha;exports.fromMediaArray=Li;exports.getFileExtension=pc;exports.getImageDimensions=fc;exports.getMediablesAdapter=H4;exports.getSpatieAdapter=Y4;exports.isImageFile=pr;exports.resetMediablesAdapter=G4;exports.resetSpatieAdapter=K4;exports.restoreMediaStoreConfig=Ps;exports.snapshotMediaStoreConfig=zs;exports.toFormValues=dr;exports.useAdminMediaStore=js;exports.useAlbumDragDrop=cc;exports.useAlbumStore=Aa;exports.useAlbums=lc;exports.useMediaAttachment=gr;exports.useMediaCollection=za;exports.useMediaDragSort=gc;exports.useMediaStore=kt;exports.useMediaUploadQueue=vc;exports.useMediaValidation=fr;exports.validateFile=hc;
342
+ //# sourceMappingURL=index-6-ArBBEQ.cjs.map