328ad632d3
CI / test (push) Has been cancelled
iOS standalone PWAs don't get Safari's native pull-to-refresh, so add our own. New <PullToRefresh> component handles the gesture: dampened drag past an 80px threshold triggers an async onRefresh; below that it springs back. Swipe direction is locked to the first 6px of movement, so horizontal carousel swipes (landscape Home) don't accidentally fire PTR. The arrow icon rotates from 0° to 180° as the pull approaches the threshold and turns primary-color when ready; during refresh a CSS spinner replaces it. - HomeView refreshes the device list (and sync status with it) - LibraryView refreshes images, pending-share count, devices, and the active shared sub-tab page when it's the one in view Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 line
16 KiB
JavaScript
1 line
16 KiB
JavaScript
import{A as e,C as t,G as n,L as r,M as i,O as a,R as o,T as s,V as c,_ as l,d as u,f as d,ft as f,g as p,h as m,l as h,o as g,p as _,t as v,u as y,ut as b,w as x}from"./_plugin-vue_export-helper-CeYnMxKK.js";import{a as S,i as C,s as w}from"./index-BvMU-pbo.js";import{i as T,n as E,r as D,t as O}from"./BaseBottomSheet-Baz8jxBn.js";import{t as k}from"./DevicePicker-B0Ct0KJt.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`},F={key:1,x:`6`,y:`2`,width:`12`,height:`20`,rx:`1.5`},te={key:1,class:`crop-editor__mismatch`,role:`status`},ne={class:`crop-editor__actions`},I=v(l({__name:`CropEditor`,props:{src:{},orientation:{},deviceName:{},initialParams:{},initialOrientation:{}},emits:[`crop`],setup(t,{emit:n}){let i=t,l=n,u=[{value:`landscape`,label:`Landscape crop`},{value:`portrait`,label:`Portrait crop`}],v=c(i.initialOrientation??i.orientation),S=h(()=>v.value===`landscape`?{w:1600,h:960}:{w:960,h:1600}),C=h(()=>S.value.w/S.value.h),w=h(()=>v.value!==i.orientation),T=c(),D=c(),O=null,k=null,I=0,L=c(0),R=c(0),z=c(1),B={x:0,y:0,w:0,h:0},V=1;function re(e){v.value!==e&&(v.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),i.initialParams?W(i.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:u,h:d}=S.value,f=new OffscreenCanvas(u,d);f.getContext(`2d`).drawImage(k,a,o,s,c,0,0,u,d),l(`crop`,{blob:await f.convertToBlob({type:`image/jpeg`,quality:.92}),params:{natX:a,natY:o,natW:s,natH:c},orientation:v.value})}let $=new ResizeObserver(H);return s(()=>{T.value&&$.observe(T.value),H(),k=new Image,k.onload=()=>{H(),U()},k.src=i.src}),r(()=>i.src,e=>{k&&(k.onload=()=>U(),k.src=e)}),x(()=>{$.disconnect(),cancelAnimationFrame(I)}),(n,r)=>(a(),_(`div`,{class:`crop-editor`,ref_key:`containerRef`,ref:T},[y(`canvas`,{ref_key:`canvasRef`,ref:D,class:`crop-editor__canvas`,onPointerdown:Y,onPointermove:X,onPointerup:Z,onPointercancel:Z},null,544),y(`div`,A,[t.deviceName?(a(),_(`div`,j,f(t.deviceName),1)):d(``,!0),y(`div`,M,[(a(),_(g,null,e(u,e=>y(`button`,{key:e.value,type:`button`,role:`radio`,"aria-checked":v.value===e.value,"aria-label":e.label,class:b([`crop-editor__orient-btn`,{"crop-editor__orient-btn--active":v.value===e.value}]),onClick:t=>re(e.value)},[(a(),_(`svg`,P,[e.value===`landscape`?(a(),_(`rect`,ee)):(a(),_(`rect`,F))]))],10,N)),64))]),w.value?(a(),_(`div`,te,[r[0]||=y(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"aria-hidden":`true`},[y(`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`}),y(`line`,{x1:`12`,y1:`9`,x2:`12`,y2:`13`}),y(`line`,{x1:`12`,y1:`17`,x2:`12.01`,y2:`17`})],-1),y(`span`,null,`Frame is set to `+f(t.orientation)+`. Switch the frame in Settings to display this crop.`,1)])):d(``,!0)]),y(`div`,ne,[p(E,{variant:`primary`,class:`crop-editor__use-btn`,onClick:ie},{default:o(()=>[...r[1]||=[m(` 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=v(l({__name:`StickerTray`,props:{modelValue:{type:Boolean}},emits:[`update:modelValue`,`pick`],setup(t){let r=c(`seasonal`),i=h(()=>R.filter(e=>e.category===r.value));return(s,c)=>(a(),u(O,{"model-value":t.modelValue,label:`Add sticker`,"onUpdate:modelValue":c[0]||=e=>s.$emit(`update:modelValue`,e)},{default:o(()=>[y(`div`,z,[y(`div`,B,[(a(!0),_(g,null,e(n(L),e=>(a(),_(`button`,{key:e.id,type:`button`,role:`tab`,class:b([`sticker-tray__cat`,{"sticker-tray__cat--active":r.value===e.id}]),onClick:t=>r.value=e.id},f(e.label),11,V))),128))]),y(`div`,re,[(a(!0),_(g,null,e(i.value,e=>(a(),_(`button`,{key:e.id,type:`button`,class:`sticker-tray__item`,"aria-label":e.label,onClick:t=>s.$emit(`pick`,e.id)},[y(`span`,U,f(e.emoji),1),y(`span`,W,f(e.label),1)],8,H))),128))])])]),_:1},8,[`model-value`]))}}),[[`__scopeId`,`data-v-7eada75b`]]),K={class:`sticker-canvas__bar`},q=52,J=v(l({__name:`StickerCanvas`,props:{croppedUrl:{},orientation:{},stickers:{}},emits:[`add-sticker`,`update-sticker`,`remove-sticker`,`done`],setup(n,{emit:l}){let f=n,v=l,b=c(),S=c(),C=c(),w=c(),T=c(!1),D=c(null),O=c(375),k=c(225),A=f.orientation===`landscape`?1600/960:960/1600;function j(){if(!b.value)return;let{width:e,height:t}=b.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);s(()=>{b.value&&M.observe(b.value),j(),Q()}),x(()=>{M.disconnect(),ie()});let N=c(null);function P(){let e=new Image;e.onload=()=>{N.value=e},e.src=f.croppedUrl}r(()=>f.croppedUrl,()=>P(),{immediate:!0});let ee=h(()=>({width:O.value,height:k.value})),F=h(()=>({image:N.value,x:0,y:0,width:O.value,height:k.value})),te={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 ne(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,n){n.cancelBubble=!0,D.value=e,t(()=>{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&&(v(`remove-sticker`,D.value),D.value=null,C.value?.getNode()?.nodes([]))}function V(e,t){v(`update-sticker`,e,{x:t.target.x(),y:t.target.y()})}function re(e,t){v(`update-sticker`,e,{x:t.target.x(),y:t.target.y(),scale:t.target.scaleX(),rotation:t.target.rotation()})}function H(e){let n={id:`${e}-${Date.now()}`,type:e,x:O.value/2,y:k.value/2,scale:1,rotation:0};v(`add-sticker`,n),T.value=!1,t(()=>L(n.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=f.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)));v(`update-sticker`,D.value,{scale:t})}function Z(){U=0,W=1}function Q(){let e=b.value;e&&(e.addEventListener(`touchstart`,Y,{passive:!0}),e.addEventListener(`touchmove`,X,{passive:!1}),e.addEventListener(`touchend`,Z,{passive:!0}))}function ie(){let e=b.value;e&&(e.removeEventListener(`touchstart`,Y),e.removeEventListener(`touchmove`,X),e.removeEventListener(`touchend`,Z))}async function $(){D.value=null,C.value?.getNode()?.nodes([]),await t();let e=S.value?.getNode();if(!e)return;let n=(f.orientation===`landscape`?1600:960)/O.value,r=await e.toBlob({pixelRatio:n,mimeType:`image/jpeg`,quality:.92});r&&v(`done`,r)}return(t,r)=>{let s=i(`v-image`),c=i(`v-layer`),l=i(`v-text`),f=i(`v-transformer`),h=i(`v-stage`);return a(),_(`div`,{class:`sticker-canvas`,ref_key:`containerRef`,ref:b},[p(h,{ref_key:`stageRef`,ref:S,config:ee.value,onClick:z,onTap:z},{default:o(()=>[p(c,null,{default:o(()=>[p(s,{config:F.value},null,8,[`config`])]),_:1}),p(c,{ref_key:`stickerLayerRef`,ref:w},{default:o(()=>[(a(!0),_(g,null,e(n.stickers,e=>(a(),u(l,{key:e.id,config:ne(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)),p(f,{ref_key:`transformerRef`,ref:C,config:te},null,512)]),_:1},512)]),_:1},8,[`config`]),D.value?(a(),_(`button`,{key:0,class:`sticker-canvas__delete`,type:`button`,"aria-label":`Remove sticker`,onClick:B},[...r[2]||=[y(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"aria-hidden":`true`},[y(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),y(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]])):d(``,!0),y(`div`,K,[y(`button`,{class:`sticker-canvas__add-btn`,type:`button`,onClick:r[0]||=e=>T.value=!0},[...r[3]||=[y(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"aria-hidden":`true`},[y(`circle`,{cx:`12`,cy:`12`,r:`10`}),y(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`16`}),y(`line`,{x1:`8`,y1:`12`,x2:`16`,y2:`12`})],-1),m(` Add sticker `,-1)]]),p(E,{variant:`primary`,class:`sticker-canvas__next-btn`,onClick:$},{default:o(()=>[...r[4]||=[m(`Next`,-1)]]),_:1})]),p(G,{modelValue:T.value,"onUpdate:modelValue":r[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=v(l({__name:`UploadView`,setup(e){let t=w(),r=D(),i=T(),l=S(),g=C(),v=c(`crop`),b=c(!1),x=c(!1),O=null,A=h(()=>r.editingImageId!==null);s(async()=>{if(await i.fetchDevices(),!r.originalFile){t.replace(`/`);return}v.value=`crop`});let j=h(()=>r.contextDeviceId?i.devices.find(e=>e.id===r.contextDeviceId):i.devices[0]),M=h(()=>j.value?.orientation??`landscape`),N=h(()=>r.cropOrientation??M.value),P=h(()=>j.value?.name),ee=h(()=>v.value===`crop`?A.value?`Edit crop`:`Crop photo`:v.value===`stickers`?`Add stickers`:A.value?`Updated`:`Added`);function F({blob:e,params:t,orientation:n}){r.setCrop(e,t,n),v.value=`stickers`}function te(){r.croppedBlob&&(O=r.croppedBlob,A.value?R():x.value=!0)}function ne(e){O=e,A.value?R():x.value=!0}function L(){if(v.value===`crop`){r.cleanup(),t.replace(`/library`);return}v.value===`stickers`&&(v.value=`crop`)}async function R(){if(O){b.value=!0;try{let e=new File([O],`photo.jpg`,{type:`image/jpeg`});if(A.value){await l.reprocessImage(r.editingImageId,e,{cropParams:r.cropParams??void 0,stickerState:r.stickers,cropOrientation:r.cropOrientation??void 0}),x.value=!1,v.value=`done`;return}let t=await l.uploadImage(e,{original:r.originalFile??void 0,cropParams:r.cropParams??void 0,stickerState:r.stickers,cropOrientation:r.cropOrientation??void 0});await Promise.all(r.selectedDeviceIds.map(e=>l.setApproval(t.id,e,!0))),x.value=!1,v.value=`done`}catch(e){g.show(e instanceof Error?e.message:`Upload failed`,`error`)}finally{b.value=!1}}}function z(){r.cleanup(),t.replace(`/library`)}return(e,t)=>(a(),_(`div`,Y,[y(`header`,X,[v.value===`done`?d(``,!0):(a(),_(`button`,{key:0,class:`upload-view__back`,type:`button`,"aria-label":v.value===`crop`?`Cancel`:`Back`,onClick:L},[v.value===`crop`?(a(),_(`svg`,Q,[...t[2]||=[y(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`},null,-1),y(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`},null,-1)]])):(a(),_(`svg`,ie,[...t[3]||=[y(`polyline`,{points:`15 18 9 12 15 6`},null,-1)]]))],8,Z)),y(`span`,$,f(ee.value),1),v.value===`stickers`?(a(),_(`button`,{key:1,class:`upload-view__skip`,type:`button`,onClick:te},`Skip`)):d(``,!0)]),v.value===`crop`&&n(r).originalUrl?(a(),u(I,{key:0,src:n(r).originalUrl,orientation:M.value,"device-name":P.value,"initial-params":n(r).cropParams,"initial-orientation":n(r).cropOrientation,class:`upload-view__stage`,onCrop:F},null,8,[`src`,`orientation`,`device-name`,`initial-params`,`initial-orientation`])):v.value===`stickers`&&n(r).croppedUrl?(a(),u(J,{key:1,"cropped-url":n(r).croppedUrl,orientation:N.value,stickers:n(r).stickers,class:`upload-view__stage`,onAddSticker:n(r).addSticker,onUpdateSticker:n(r).updateSticker,onRemoveSticker:n(r).removeSticker,onDone:ne},null,8,[`cropped-url`,`orientation`,`stickers`,`onAddSticker`,`onUpdateSticker`,`onRemoveSticker`])):v.value===`done`?(a(),_(`div`,ae,[t[5]||=y(`div`,{class:`upload-view__done-icon`,"aria-hidden":`true`},`🎉`,-1),y(`p`,oe,f(A.value?`Photo updated!`:`Photo added!`),1),t[6]||=y(`p`,{class:`upload-view__done-sub`},`It'll appear on your frame at the next update.`,-1),p(E,{variant:`primary`,class:`upload-view__done-btn`,onClick:z},{default:o(()=>[...t[4]||=[m(`Done`,-1)]]),_:1})])):d(``,!0),A.value?d(``,!0):(a(),u(k,{key:3,modelValue:x.value,"onUpdate:modelValue":t[0]||=e=>x.value=e,devices:n(i).devices,selected:n(r).selectedDeviceIds,uploading:b.value,"onUpdate:selected":t[1]||=e=>n(r).selectedDeviceIds=e,onConfirm:R},null,8,[`modelValue`,`devices`,`selected`,`uploading`]))]))}}),[[`__scopeId`,`data-v-af5b9c38`]]);export{se as default}; |