Files
pictureFrame-webApp/public/build/assets/UploadView-WeaxCthK.js
T
football2801 91b148c271
CI / test (push) Has been cancelled
fix(home): wake-time list never reorders mid-edit
Symptom: clicking + Add time would insert the new entry sorted into
the list, hiding it among the existing rows. Editing an existing
row's hour/minute/AM-PM moved the row mid-keystroke.

Both behaviors made the user lose track of what they were editing.
The list now only sorts at save time (which the backend already
canonicalizes via setWakeTimes()). New entries land at the end,
edits stay in place. Two regression tests pin this:
  - + Add appends; the new row is the last DOM row even when its
    minutes-of-day are smaller than an existing entry.
  - Editing a row's hour from 9 to 1 keeps the row at the same
    index (would have moved to index 0 under the old sort-on-edit).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 12:25:36 -04:00

1 line
16 KiB
JavaScript

import{E as e,H as t,K as n,N as r,R as i,T as a,_ as o,d as s,dt as c,f as l,g as u,j as d,k as f,m as p,p as m,pt as h,s as g,t as _,u as v,v as y,w as b,z as x}from"./_plugin-vue_export-helper-DRLwVS0w.js";import{a as S,i as C,s as w}from"./index-DK_JsCTY.js";import{i as T,n as E,r as D,t as O}from"./BaseBottomSheet-DsLKl74W.js";import{t as k}from"./DevicePicker-xvlGTaxv.js";var A={class:`crop-editor__top`},j={key:0,class:`crop-editor__label`},M={class:`crop-editor__orient`,role:`radiogroup`,"aria-label":`Crop orientation`},N=[`aria-checked`,`aria-label`,`onClick`],P={width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"aria-hidden":`true`},ee={key:0,x:`2`,y:`6`,width:`20`,height:`12`,rx:`1.5`},te={key:1,x:`6`,y:`2`,width:`12`,height:`20`,rx:`1.5`},ne={key:1,class:`crop-editor__mismatch`,role:`status`},F={class:`crop-editor__actions`},I=_(y({__name:`CropEditor`,props:{src:{},orientation:{},deviceName:{},initialParams:{},initialOrientation:{}},emits:[`crop`],setup(n,{emit:r}){let l=n,_=r,y=[{value:`landscape`,label:`Landscape crop`},{value:`portrait`,label:`Portrait crop`}],b=t(l.initialOrientation??l.orientation),S=v(()=>b.value===`landscape`?{w:1600,h:960}:{w:960,h:1600}),C=v(()=>S.value.w/S.value.h),w=v(()=>b.value!==l.orientation),T=t(),D=t(),O=null,k=null,I=0,L=t(0),R=t(0),z=t(1),B={x:0,y:0,w:0,h:0},V=1;function re(e){b.value!==e&&(b.value=e,L.value=0,R.value=0,z.value=1,H())}function H(){let e=D.value,t=T.value;if(!e||!t)return;let n=t.getBoundingClientRect(),r=n.height-80,i=n.width;e.width=i,e.height=r,O=e.getContext(`2d`);let a=i-48,o=r-48,s,c;a/o>C.value?(c=o,s=c*C.value):(s=a,c=s/C.value),B={x:(i-s)/2,y:(r-c)/2,w:s,h:c},k&&U()}function U(){k&&(V=Math.max(B.w/k.naturalWidth,B.h/k.naturalHeight),l.initialParams?W(l.initialParams):(z.value=1,L.value=0,R.value=0,K()))}function W(e){if(!k)return;let t=B.w/e.natW;z.value=t/V,L.value=t*(k.naturalWidth/2-e.natX-e.natW/2),R.value=t*(k.naturalHeight/2-e.natY-e.natH/2);let[n,r]=G(L.value,R.value);L.value=n,R.value=r,K()}function G(e,t){if(!k)return[e,t];let n=V*z.value,r=k.naturalWidth*n,i=k.naturalHeight*n,a=(r-B.w)/2,o=(i-B.h)/2;return[Math.max(-a,Math.min(a,e)),Math.max(-o,Math.min(o,t))]}function K(){if(!O||!k||!D.value)return;let{width:e,height:t}=D.value,n=V*z.value,r=k.naturalWidth*n,i=k.naturalHeight*n,a=B.x+B.w/2+L.value,o=B.y+B.h/2+R.value,s=a-r/2,c=o-i/2;O.clearRect(0,0,e,t),O.drawImage(k,s,c,r,i),O.save(),O.fillStyle=`rgba(0,0,0,0.55)`,O.fillRect(0,0,e,t),O.globalCompositeOperation=`destination-out`,O.fillRect(B.x,B.y,B.w,B.h),O.restore(),O.strokeStyle=`#fff`,O.lineWidth=2,O.strokeRect(B.x,B.y,B.w,B.h),O.lineWidth=3,[[B.x,B.y,20,0,0,20],[B.x+B.w,B.y,-20,0,0,20],[B.x,B.y+B.h,20,0,0,-20],[B.x+B.w,B.y+B.h,-20,0,0,-20]].forEach(([e,t,n,r,i,a])=>{O.beginPath(),O.moveTo(e+n,t+r),O.lineTo(e,t),O.lineTo(e+i,t+a),O.stroke()})}let q=new Map,J=0;function Y(e){if(D.value?.setPointerCapture(e.pointerId),q.set(e.pointerId,{x:e.clientX,y:e.clientY}),q.size===2){let e=[...q.values()];J=Math.hypot(e[1].x-e[0].x,e[1].y-e[0].y)}}function X(e){if(!q.has(e.pointerId))return;let t=q.get(e.pointerId);if(q.set(e.pointerId,{x:e.clientX,y:e.clientY}),q.size===1){let n=e.clientX-t.x,r=e.clientY-t.y,[i,a]=G(L.value+n,R.value+r);L.value=i,R.value=a,Q();return}if(q.size===2){let e=[...q.values()],t=Math.hypot(e[1].x-e[0].x,e[1].y-e[0].y);if(J>0){let e=t/J;z.value=Math.max(1,z.value*e);let[n,r]=G(L.value,R.value);L.value=n,R.value=r,Q()}J=t}}function Z(e){q.delete(e.pointerId),J=0}function Q(){cancelAnimationFrame(I),I=requestAnimationFrame(K)}async function ie(){if(!k)return;let e=V*z.value,t=B.x+B.w/2+L.value,n=B.y+B.h/2+R.value,r=t-k.naturalWidth*e/2,i=n-k.naturalHeight*e/2,a=(B.x-r)/e,o=(B.y-i)/e,s=B.w/e,c=B.h/e,{w:l,h:u}=S.value,d=new OffscreenCanvas(l,u);d.getContext(`2d`).drawImage(k,a,o,s,c,0,0,l,u),_(`crop`,{blob:await d.convertToBlob({type:`image/jpeg`,quality:.92}),params:{natX:a,natY:o,natW:s,natH:c},orientation:b.value})}let $=new ResizeObserver(H);return e(()=>{T.value&&$.observe(T.value),H(),k=new Image,k.onload=()=>{H(),U()},k.src=l.src}),i(()=>l.src,e=>{k&&(k.onload=()=>U(),k.src=e)}),a(()=>{$.disconnect(),cancelAnimationFrame(I)}),(e,t)=>(f(),p(`div`,{class:`crop-editor`,ref_key:`containerRef`,ref:T},[s(`canvas`,{ref_key:`canvasRef`,ref:D,class:`crop-editor__canvas`,onPointerdown:Y,onPointermove:X,onPointerup:Z,onPointercancel:Z},null,544),s(`div`,A,[n.deviceName?(f(),p(`div`,j,h(n.deviceName),1)):m(``,!0),s(`div`,M,[(f(),p(g,null,d(y,e=>s(`button`,{key:e.value,type:`button`,role:`radio`,"aria-checked":b.value===e.value,"aria-label":e.label,class:c([`crop-editor__orient-btn`,{"crop-editor__orient-btn--active":b.value===e.value}]),onClick:t=>re(e.value)},[(f(),p(`svg`,P,[e.value===`landscape`?(f(),p(`rect`,ee)):(f(),p(`rect`,te))]))],10,N)),64))]),w.value?(f(),p(`div`,ne,[t[0]||=s(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"aria-hidden":`true`},[s(`path`,{d:`M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z`}),s(`line`,{x1:`12`,y1:`9`,x2:`12`,y2:`13`}),s(`line`,{x1:`12`,y1:`17`,x2:`12.01`,y2:`17`})],-1),s(`span`,null,`Frame is set to `+h(n.orientation)+`. Switch the frame in Settings to display this crop.`,1)])):m(``,!0)]),s(`div`,F,[o(E,{variant:`primary`,class:`crop-editor__use-btn`,onClick:ie},{default:x(()=>[...t[1]||=[u(` Use this crop `,-1)]]),_:1})])],512))}}),[[`__scopeId`,`data-v-85d7731b`]]),L=[{id:`seasonal`,label:`Seasonal`},{id:`holidays`,label:`Holidays`},{id:`fun`,label:`Fun`},{id:`family`,label:`Family`},{id:`nature`,label:`Nature`}],R=[{id:`sea-snow`,category:`seasonal`,label:`Snowflake`,emoji:`❄️`},{id:`sea-sun`,category:`seasonal`,label:`Sun`,emoji:`☀️`},{id:`sea-leaves`,category:`seasonal`,label:`Autumn`,emoji:`🍂`},{id:`sea-blossom`,category:`seasonal`,label:`Blossom`,emoji:`🌸`},{id:`sea-snowman`,category:`seasonal`,label:`Snowman`,emoji:``},{id:`hol-tree`,category:`holidays`,label:`Tree`,emoji:`🎄`},{id:`hol-gift`,category:`holidays`,label:`Gift`,emoji:`🎁`},{id:`hol-heart`,category:`holidays`,label:`Heart`,emoji:`❤️`},{id:`hol-party`,category:`holidays`,label:`Party`,emoji:`🎉`},{id:`hol-cake`,category:`holidays`,label:`Cake`,emoji:`🎂`},{id:`fun-star`,category:`fun`,label:`Star`,emoji:``},{id:`fun-rainbow`,category:`fun`,label:`Rainbow`,emoji:`🌈`},{id:`fun-balloon`,category:`fun`,label:`Balloon`,emoji:`🎈`},{id:`fun-sparkle`,category:`fun`,label:`Sparkles`,emoji:``},{id:`fun-fire`,category:`fun`,label:`Fire`,emoji:`🔥`},{id:`fam-house`,category:`family`,label:`Home`,emoji:`🏠`},{id:`fam-paw`,category:`family`,label:`Paw`,emoji:`🐾`},{id:`fam-camera`,category:`family`,label:`Camera`,emoji:`📷`},{id:`fam-plane`,category:`family`,label:`Airplane`,emoji:`✈️`},{id:`fam-music`,category:`family`,label:`Music`,emoji:`🎵`},{id:`nat-tree`,category:`nature`,label:`Tree`,emoji:`🌲`},{id:`nat-flower`,category:`nature`,label:`Flower`,emoji:`🌺`},{id:`nat-bee`,category:`nature`,label:`Bee`,emoji:`🐝`},{id:`nat-fly`,category:`nature`,label:`Butterfly`,emoji:`🦋`},{id:`nat-moon`,category:`nature`,label:`Moon`,emoji:`🌙`}],z={class:`sticker-tray`},B={class:`sticker-tray__cats`,role:`tablist`},V=[`onClick`],re={class:`sticker-tray__grid`,role:`tabpanel`},H=[`aria-label`,`onClick`],U={class:`sticker-tray__emoji`,"aria-hidden":`true`},W={class:`sticker-tray__label`},G=_(y({__name:`StickerTray`,props:{modelValue:{type:Boolean}},emits:[`update:modelValue`,`pick`],setup(e){let r=t(`seasonal`),i=v(()=>R.filter(e=>e.category===r.value));return(t,a)=>(f(),l(O,{"model-value":e.modelValue,label:`Add sticker`,"onUpdate:modelValue":a[0]||=e=>t.$emit(`update:modelValue`,e)},{default:x(()=>[s(`div`,z,[s(`div`,B,[(f(!0),p(g,null,d(n(L),e=>(f(),p(`button`,{key:e.id,type:`button`,role:`tab`,class:c([`sticker-tray__cat`,{"sticker-tray__cat--active":r.value===e.id}]),onClick:t=>r.value=e.id},h(e.label),11,V))),128))]),s(`div`,re,[(f(!0),p(g,null,d(i.value,e=>(f(),p(`button`,{key:e.id,type:`button`,class:`sticker-tray__item`,"aria-label":e.label,onClick:n=>t.$emit(`pick`,e.id)},[s(`span`,U,h(e.emoji),1),s(`span`,W,h(e.label),1)],8,H))),128))])])]),_:1},8,[`model-value`]))}}),[[`__scopeId`,`data-v-7eada75b`]]),K={class:`sticker-canvas__bar`},q=52,J=_(y({__name:`StickerCanvas`,props:{croppedUrl:{},orientation:{},stickers:{}},emits:[`add-sticker`,`update-sticker`,`remove-sticker`,`done`],setup(n,{emit:c}){let h=n,_=c,y=t(),S=t(),C=t(),w=t(),T=t(!1),D=t(null),O=t(375),k=t(225),A=h.orientation===`landscape`?1600/960:960/1600;function j(){if(!y.value)return;let{width:e,height:t}=y.value.getBoundingClientRect(),n=t-72;e/n>A?(k.value=n,O.value=n*A):(O.value=e,k.value=e/A),P()}let M=new ResizeObserver(j);e(()=>{y.value&&M.observe(y.value),j(),Q()}),a(()=>{M.disconnect(),ie()});let N=t(null);function P(){let e=new Image;e.onload=()=>{N.value=e},e.src=h.croppedUrl}i(()=>h.croppedUrl,()=>P(),{immediate:!0});let ee=v(()=>({width:O.value,height:k.value})),te=v(()=>({image:N.value,x:0,y:0,width:O.value,height:k.value})),ne={enabledAnchors:[`top-left`,`top-right`,`bottom-left`,`bottom-right`],rotateEnabled:!0,borderStroke:`rgba(255,255,255,0.8)`,anchorFill:`#fff`,anchorSize:18,keepRatio:!0,boundBoxFunc:(e,t)=>t};function F(e){return{id:e.id,text:I(e.type),fontSize:q,fontFamily:`"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif`,x:e.x,y:e.y,scaleX:e.scale,scaleY:e.scale,rotation:e.rotation,draggable:!0,offsetX:q/2,offsetY:q/2}}function I(e){return R.find(t=>t.id===e)?.emoji??``}function L(e,t){t.cancelBubble=!0,D.value=e,b(()=>{let t=(w.value?.getNode())?.findOne(`#${e}`),n=C.value?.getNode();t&&n&&n.nodes([t])})}function z(e){e.target===e.target.getStage()&&(D.value=null,C.value?.getNode()?.nodes([]))}function B(){D.value&&(_(`remove-sticker`,D.value),D.value=null,C.value?.getNode()?.nodes([]))}function V(e,t){_(`update-sticker`,e,{x:t.target.x(),y:t.target.y()})}function re(e,t){_(`update-sticker`,e,{x:t.target.x(),y:t.target.y(),scale:t.target.scaleX(),rotation:t.target.rotation()})}function H(e){let t={id:`${e}-${Date.now()}`,type:e,x:O.value/2,y:k.value/2,scale:1,rotation:0};_(`add-sticker`,t),T.value=!1,b(()=>L(t.id,{cancelBubble:!1}))}let U=0,W=1;function J(e){let t=e[0].clientX-e[1].clientX,n=e[0].clientY-e[1].clientY;return Math.hypot(t,n)}function Y(e){e.touches.length!==2||!D.value||(U=J(e.touches),W=h.stickers.find(e=>e.id===D.value)?.scale??1)}function X(e){if(e.touches.length!==2||!D.value||U===0)return;e.preventDefault();let t=Math.max(.2,Math.min(6,W*(J(e.touches)/U)));_(`update-sticker`,D.value,{scale:t})}function Z(){U=0,W=1}function Q(){let e=y.value;e&&(e.addEventListener(`touchstart`,Y,{passive:!0}),e.addEventListener(`touchmove`,X,{passive:!1}),e.addEventListener(`touchend`,Z,{passive:!0}))}function ie(){let e=y.value;e&&(e.removeEventListener(`touchstart`,Y),e.removeEventListener(`touchmove`,X),e.removeEventListener(`touchend`,Z))}async function $(){D.value=null,C.value?.getNode()?.nodes([]),await b();let e=S.value?.getNode();if(!e)return;let t=(h.orientation===`landscape`?1600:960)/O.value,n=await e.toBlob({pixelRatio:t,mimeType:`image/jpeg`,quality:.92});n&&_(`done`,n)}return(e,t)=>{let i=r(`v-image`),a=r(`v-layer`),c=r(`v-text`),h=r(`v-transformer`),_=r(`v-stage`);return f(),p(`div`,{class:`sticker-canvas`,ref_key:`containerRef`,ref:y},[o(_,{ref_key:`stageRef`,ref:S,config:ee.value,onClick:z,onTap:z},{default:x(()=>[o(a,null,{default:x(()=>[o(i,{config:te.value},null,8,[`config`])]),_:1}),o(a,{ref_key:`stickerLayerRef`,ref:w},{default:x(()=>[(f(!0),p(g,null,d(n.stickers,e=>(f(),l(c,{key:e.id,config:F(e),onClick:t=>L(e.id,t),onTap:t=>L(e.id,t),onDragend:t=>V(e.id,t),onTransformend:t=>re(e.id,t)},null,8,[`config`,`onClick`,`onTap`,`onDragend`,`onTransformend`]))),128)),o(h,{ref_key:`transformerRef`,ref:C,config:ne},null,512)]),_:1},512)]),_:1},8,[`config`]),D.value?(f(),p(`button`,{key:0,class:`sticker-canvas__delete`,type:`button`,"aria-label":`Remove sticker`,onClick:B},[...t[2]||=[s(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"aria-hidden":`true`},[s(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),s(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]])):m(``,!0),s(`div`,K,[s(`button`,{class:`sticker-canvas__add-btn`,type:`button`,onClick:t[0]||=e=>T.value=!0},[...t[3]||=[s(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"aria-hidden":`true`},[s(`circle`,{cx:`12`,cy:`12`,r:`10`}),s(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`16`}),s(`line`,{x1:`8`,y1:`12`,x2:`16`,y2:`12`})],-1),u(` Add sticker `,-1)]]),o(E,{variant:`primary`,class:`sticker-canvas__next-btn`,onClick:$},{default:x(()=>[...t[4]||=[u(`Next`,-1)]]),_:1})]),o(G,{modelValue:T.value,"onUpdate:modelValue":t[1]||=e=>T.value=e,onPick:H},null,8,[`modelValue`])],512)}}}),[[`__scopeId`,`data-v-fb52db70`]]),Y={class:`upload-view`},X={class:`upload-view__header`},Z=[`aria-label`],Q={key:0,width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"aria-hidden":`true`},ie={key:1,width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"aria-hidden":`true`},$={class:`upload-view__step-label`},ae={key:2,class:`upload-view__done`},oe={class:`upload-view__done-title`},se=_(y({__name:`UploadView`,setup(r){let i=w(),a=D(),c=T(),d=S(),g=C(),_=t(`crop`),y=t(!1),b=t(!1),O=null,A=v(()=>a.editingImageId!==null);e(async()=>{if(await c.fetchDevices(),!a.originalFile){i.replace(`/`);return}_.value=`crop`});let j=v(()=>a.contextDeviceId?c.devices.find(e=>e.id===a.contextDeviceId):c.devices[0]),M=v(()=>j.value?.orientation??`landscape`),N=v(()=>a.cropOrientation??M.value),P=v(()=>j.value?.name),ee=v(()=>_.value===`crop`?A.value?`Edit crop`:`Crop photo`:_.value===`stickers`?`Add stickers`:A.value?`Updated`:`Added`);function te({blob:e,params:t,orientation:n}){a.setCrop(e,t,n),_.value=`stickers`}function ne(){a.croppedBlob&&(O=a.croppedBlob,A.value?R():b.value=!0)}function F(e){O=e,A.value?R():b.value=!0}function L(){if(_.value===`crop`){a.cleanup(),i.replace(`/library`);return}_.value===`stickers`&&(_.value=`crop`)}async function R(){if(O){y.value=!0;try{let e=new File([O],`photo.jpg`,{type:`image/jpeg`});if(A.value){await d.reprocessImage(a.editingImageId,e,{cropParams:a.cropParams??void 0,stickerState:a.stickers,cropOrientation:a.cropOrientation??void 0}),b.value=!1,_.value=`done`;return}let t=await d.uploadImage(e,{original:a.originalFile??void 0,cropParams:a.cropParams??void 0,stickerState:a.stickers,cropOrientation:a.cropOrientation??void 0});await Promise.all(a.selectedDeviceIds.map(e=>d.setApproval(t.id,e,!0))),b.value=!1,_.value=`done`}catch(e){g.show(e instanceof Error?e.message:`Upload failed`,`error`)}finally{y.value=!1}}}function z(){a.cleanup(),i.replace(`/library`)}return(e,t)=>(f(),p(`div`,Y,[s(`header`,X,[_.value===`done`?m(``,!0):(f(),p(`button`,{key:0,class:`upload-view__back`,type:`button`,"aria-label":_.value===`crop`?`Cancel`:`Back`,onClick:L},[_.value===`crop`?(f(),p(`svg`,Q,[...t[2]||=[s(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`},null,-1),s(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`},null,-1)]])):(f(),p(`svg`,ie,[...t[3]||=[s(`polyline`,{points:`15 18 9 12 15 6`},null,-1)]]))],8,Z)),s(`span`,$,h(ee.value),1),_.value===`stickers`?(f(),p(`button`,{key:1,class:`upload-view__skip`,type:`button`,onClick:ne},`Skip`)):m(``,!0)]),_.value===`crop`&&n(a).originalUrl?(f(),l(I,{key:0,src:n(a).originalUrl,orientation:M.value,"device-name":P.value,"initial-params":n(a).cropParams,"initial-orientation":n(a).cropOrientation,class:`upload-view__stage`,onCrop:te},null,8,[`src`,`orientation`,`device-name`,`initial-params`,`initial-orientation`])):_.value===`stickers`&&n(a).croppedUrl?(f(),l(J,{key:1,"cropped-url":n(a).croppedUrl,orientation:N.value,stickers:n(a).stickers,class:`upload-view__stage`,onAddSticker:n(a).addSticker,onUpdateSticker:n(a).updateSticker,onRemoveSticker:n(a).removeSticker,onDone:F},null,8,[`cropped-url`,`orientation`,`stickers`,`onAddSticker`,`onUpdateSticker`,`onRemoveSticker`])):_.value===`done`?(f(),p(`div`,ae,[t[5]||=s(`div`,{class:`upload-view__done-icon`,"aria-hidden":`true`},`🎉`,-1),s(`p`,oe,h(A.value?`Photo updated!`:`Photo added!`),1),t[6]||=s(`p`,{class:`upload-view__done-sub`},`It'll appear on your frame at the next update.`,-1),o(E,{variant:`primary`,class:`upload-view__done-btn`,onClick:z},{default:x(()=>[...t[4]||=[u(`Done`,-1)]]),_:1})])):m(``,!0),A.value?m(``,!0):(f(),l(k,{key:3,modelValue:b.value,"onUpdate:modelValue":t[0]||=e=>b.value=e,devices:n(c).devices,selected:n(a).selectedDeviceIds,uploading:y.value,"onUpdate:selected":t[1]||=e=>n(a).selectedDeviceIds=e,onConfirm:R},null,8,[`modelValue`,`devices`,`selected`,`uploading`]))]))}}),[[`__scopeId`,`data-v-af5b9c38`]]);export{se as default};