Files
pictureFrame-webApp/public/build/assets/BaseBottomSheet-Bsol3Sat.js
football2801 bdb717de2e
CI / test (push) Has been cancelled
chore(build): drop unused imports + rebuild bundle
vue-tsc -b is stricter than --noEmit; the StickerTray emoji input
ref and the StickerCanvas customAssetUrl import were unused.
2026-05-09 15:18:29 -04:00

1 line
5.1 KiB
JavaScript

import{B as e,C as t,D as n,I as r,J as i,N as a,O as o,R as s,S as c,U as l,_ as u,a as d,d as f,f as p,g as m,m as h,q as g,r as _,t as v,v as y,y as b,z as x}from"./_plugin-vue_export-helper-BNDVmFr7.js";var S=_(`devices`,()=>{let e=l([]),t=l(!1),n=l(null);async function r(r={}){r.silent||(t.value=!0),n.value=null;try{let t=await fetch(`/api/devices`);if(!t.ok)throw Error(`Failed to load devices`);e.value=await t.json()}catch(e){n.value=e instanceof Error?e.message:`Unknown error`}finally{t.value=!1}}async function i(t,n){let r=await fetch(`/api/devices/${t}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});if(!r.ok)throw Error(`Failed to update device`);let i=await r.json(),a=e.value.findIndex(e=>e.id===t);return a!==-1&&(e.value[a]=i),i}async function a(t,n){let r=await fetch(`/api/devices/${t}/lock`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({imageId:n})});if(!r.ok)throw Error(`Failed to lock image`);let i=await r.json(),a=e.value.findIndex(e=>e.id===t);return a!==-1&&(e.value[a]=i),i}async function o(t){if(!(await fetch(`/api/devices/${t}`,{method:`DELETE`})).ok)throw Error(`Failed to remove device`);e.value=e.value.filter(e=>e.id!==t)}async function s(t){let n=await fetch(`/api/devices/${t}/lock`,{method:`DELETE`});if(!n.ok)throw Error(`Failed to unlock`);let r=await n.json(),i=e.value.findIndex(e=>e.id===t);return i!==-1&&(e.value[i]=r),r}return{devices:e,loading:t,error:n,fetchDevices:r,updateDevice:i,removeDevice:o,lockImage:a,unlockImage:s}}),C=_(`upload`,()=>{let e=l(null),t=l(null),n=l(null),r=l(null),i=l(null),a=l(null),o=l([]),s=l(null),c=l([]),u=l(null);function d(n,r){_(),e.value=n,t.value=URL.createObjectURL(n),s.value=r??null,c.value=r?[r]:[]}async function f(n,r){_();let l=await(await fetch(n.originalUrl)).blob();e.value=new File([l],n.originalFilename,{type:l.type}),t.value=URL.createObjectURL(l),u.value=n.id,i.value=n.cropParams??null,a.value=n.cropOrientation??null,o.value=n.stickerState?[...n.stickerState]:[],c.value=n.approvedDeviceIds,s.value=r??null}function p(e,t,o){r.value&&URL.revokeObjectURL(r.value),n.value=e,r.value=URL.createObjectURL(e),i.value=t,a.value=o}function m(e){o.value=[...o.value,e]}function h(e,t){o.value=o.value.map(n=>n.id===e?{...n,...t}:n)}function g(e){o.value=o.value.filter(t=>t.id!==e)}function _(){t.value&&URL.revokeObjectURL(t.value),r.value&&URL.revokeObjectURL(r.value),e.value=null,t.value=null,n.value=null,r.value=null,i.value=null,a.value=null,o.value=[],s.value=null,c.value=[],u.value=null}return{originalFile:e,originalUrl:t,croppedBlob:n,croppedUrl:r,cropParams:i,cropOrientation:a,stickers:o,contextDeviceId:s,selectedDeviceIds:c,editingImageId:u,init:d,initEdit:f,setCrop:p,addSticker:m,updateSticker:h,removeSticker:g,cleanup:_}}),w={key:0,class:`btn__spinner`,"aria-hidden":`true`},T=v(t({__name:`BaseButton`,props:{variant:{default:`primary`},tag:{default:`button`},type:{default:`button`},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},setup(t){return(i,o)=>(a(),u(s(t.tag),n({type:t.tag===`button`?t.type:void 0,disabled:t.disabled||t.loading,class:[`btn`,`btn--${t.variant}`,{"btn--loading":t.loading}]},i.$attrs),{default:e(()=>[t.loading?(a(),b(`span`,w)):y(``,!0),r(i.$slots,`default`,{},void 0,!0)]),_:3},16,[`type`,`disabled`,`class`]))}}),[[`__scopeId`,`data-v-7d3f1e61`]]),E=[`aria-label`],D=80,O=v(t({__name:`BaseBottomSheet`,props:{modelValue:{type:Boolean},label:{}},emits:[`update:modelValue`],setup(t,{emit:n}){let s=t,_=n,v=l(null),S=l(0),C=l(!1),w=0,T=null,O=null;function k(){_(`update:modelValue`,!1)}function A(e){w=e.touches[0].clientY,C.value=!0,S.value=0}function j(e){if(!C.value)return;let t=e.touches[0].clientY-w;S.value=t>0?t:0}function M(){C.value&&(C.value=!1,S.value>D&&k(),S.value=0)}function N(e){e.pointerType!==`touch`&&(w=e.clientY,C.value=!0,S.value=0,T=e.pointerId,e.currentTarget.setPointerCapture(e.pointerId),window.addEventListener(`pointermove`,P),window.addEventListener(`pointerup`,F),window.addEventListener(`pointercancel`,F))}function P(e){if(!C.value||e.pointerId!==T)return;let t=e.clientY-w;S.value=t>0?t:0}function F(e){e.pointerId===T&&(T=null,window.removeEventListener(`pointermove`,P),window.removeEventListener(`pointerup`,F),window.removeEventListener(`pointercancel`,F),M())}return x(()=>s.modelValue,async e=>{e?(O=document.activeElement,await o(),v.value?.focus()):(O?.focus(),O=null,S.value=0,C.value=!1)}),(n,o)=>(a(),u(h,{to:`body`},[c(d,{name:`sheet`},{default:e(()=>[t.modelValue?(a(),b(`div`,{key:0,class:`sheet-overlay`,role:`dialog`,"aria-label":t.label,"aria-modal":`true`,onClick:p(k,[`self`]),onKeydown:f(k,[`esc`])},[m(`div`,{ref_key:`sheetRef`,ref:v,class:g([`sheet`,{"sheet--dragging":C.value}]),style:i(S.value>0?{transform:`translateY(${S.value}px)`}:void 0),tabindex:`-1`},[m(`div`,{class:`sheet__handle-target`,onTouchstartPassive:A,onTouchmovePassive:j,onTouchend:M,onTouchcancel:M,onPointerdown:N,"aria-hidden":`true`},[...o[0]||=[m(`div`,{class:`sheet__handle`},null,-1)]],32),r(n.$slots,`default`,{},void 0,!0)],6)],40,E)):y(``,!0)]),_:3})]))}}),[[`__scopeId`,`data-v-967683c3`]]);export{S as i,T as n,C as r,O as t};