wizards 0.2.8 → 0.2.10
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.
- package/apps/runtime/dist/agents/project-assistant.js +16 -2
- package/apps/runtime/dist/agents/website.js +48 -10
- package/apps/runtime/dist/app.js +2 -0
- package/apps/runtime/dist/db/control-schema.js +18 -1
- package/apps/runtime/dist/db/migrations/control/0007_common_the_hand.sql +15 -0
- package/apps/runtime/dist/db/migrations/control/meta/0007_snapshot.json +460 -0
- package/apps/runtime/dist/db/migrations/control/meta/_journal.json +7 -0
- package/apps/runtime/dist/db/migrations/tenant/0006_hard_war_machine.sql +30 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/0006_snapshot.json +1696 -0
- package/apps/runtime/dist/db/migrations/tenant/meta/_journal.json +7 -0
- package/apps/runtime/dist/db/schema.js +12 -6
- package/apps/runtime/dist/engine/steps.js +3 -0
- package/apps/runtime/dist/env.js +2 -0
- package/apps/runtime/dist/index.js +2 -0
- package/apps/runtime/dist/plugins/events.js +37 -14
- package/apps/runtime/dist/plugins/jobs.js +64 -0
- package/apps/runtime/dist/plugins/loader.js +67 -4
- package/apps/runtime/dist/plugins/public.js +31 -0
- package/apps/runtime/dist/plugins/registry.js +5 -0
- package/apps/runtime/dist/routes/plugin-public.js +59 -0
- package/apps/runtime/dist/routes/plugins.js +1 -1
- package/apps/runtime/dist/routes/studio.js +3 -0
- package/apps/runtime/dist/services/project-files.js +4 -0
- package/apps/runtime/dist/services/project-index.js +69 -9
- package/apps/runtime/dist/services/projects.js +7 -1
- package/apps/runtime/dist/services/spaces.js +2 -0
- package/apps/runtime/dist/tools/index.js +3 -2
- package/apps/runtime/dist/tools/plugin.js +89 -17
- package/apps/runtime/dist/tools/project.js +39 -31
- package/apps/web/dist/assets/Account-6cwwWOU3.js +1 -0
- package/apps/web/dist/assets/{ChangelogDialog-BNQ9yup8.js → ChangelogDialog-DewAXwoQ.js} +1 -1
- package/apps/web/dist/assets/{ChatPanel-CtE1wcUD.js → ChatPanel-CCNgem_v.js} +1 -1
- package/apps/web/dist/assets/{EditorPage-CAxamSak.js → EditorPage-DqVuS-JG.js} +2 -2
- package/apps/web/dist/assets/{FlowPreview-B3IxmikV.js → FlowPreview-BAVCgsXg.js} +1 -1
- package/apps/web/dist/assets/{Harness-Bo-kwm1H.js → Harness-BZCoZ4Z1.js} +1 -1
- package/apps/web/dist/assets/{HomePage-BdIa2zcg.js → HomePage-BsuuOXbB.js} +1 -1
- package/apps/web/dist/assets/{ImportWizard-DMea5ZH1.js → ImportWizard-BG28_HzC.js} +1 -1
- package/apps/web/dist/assets/{LocalRuntime-DFswQjxc.js → LocalRuntime-DyJJVozN.js} +1 -1
- package/apps/web/dist/assets/{NewWizardPage-Cnb6UYme.js → NewWizardPage-8B-d3T4k.js} +2 -2
- package/apps/web/dist/assets/ProjectPage-CkO8ndix.js +2 -0
- package/apps/web/dist/assets/{PublicRunner-CIHEMLlN.js → PublicRunner-DF960weZ.js} +1 -1
- package/apps/web/dist/assets/{RunnerView-COKGppwq.js → RunnerView-Z3VVOwVR.js} +1 -1
- package/apps/web/dist/assets/SettingsPage-BOYAZS08.js +1 -0
- package/apps/web/dist/assets/{SetupPage-Bk4qXYZV.js → SetupPage-Cl4Yc7A2.js} +1 -1
- package/apps/web/dist/assets/{SharePage-ChEtCkhn.js → SharePage-BFRWRmOF.js} +1 -1
- package/apps/web/dist/assets/changelog-DhleQ4p1.js +1 -0
- package/apps/web/dist/assets/{esm-Rtjq9ReB.js → esm-CLbOcpCO.js} +1 -1
- package/apps/web/dist/assets/index-Bl5vhqT3.js +10 -0
- package/apps/web/dist/assets/{meta-MVWkLr9H.js → meta-DxGh33r8.js} +1 -1
- package/apps/web/dist/assets/{outputs-s8BpXH6V.js → outputs-BDP8UsZT.js} +1 -1
- package/apps/web/dist/index.html +1 -1
- package/node_modules/@engenty-wizards/plugin-sdk/dist/index.d.ts +183 -0
- package/node_modules/@engenty-wizards/plugin-sdk/dist/studio.d.ts +48 -3
- package/node_modules/@engenty-wizards/shared/dist/projects.d.ts +7 -1
- package/package.json +1 -1
- package/apps/web/dist/assets/Account-YJEQEo5k.js +0 -1
- package/apps/web/dist/assets/ProjectPage-CR_FIUya.js +0 -2
- package/apps/web/dist/assets/SettingsPage-BqAogRSI.js +0 -1
- package/apps/web/dist/assets/changelog-C03GWYid.js +0 -1
- package/apps/web/dist/assets/index-BAQ2e4is.js +0 -10
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/qr-scanner.min-C_UI0gH-.js","assets/preload-helper-CNEI7N0N.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{c as r,d as i,n as a,t as o}from"./api-u3nydnnp.js";import{t as s}from"./preload-helper-CNEI7N0N.js";import{t as c}from"./createLucideIcon-q3MZMmnf.js";import{t as l}from"./arrow-left-hTN1VoH1.js";import{t as u}from"./arrow-right-6FyN3e7D.js";import{C as d,S as f,T as p,a as m,b as h,c as g,d as _,f as v,g as y,h as b,i as x,l as S,o as C,p as w,s as T,t as E,u as D,w as O,x as k,y as A}from"./outputs-s8BpXH6V.js";import{t as j}from"./check-CUpby_J9.js";import{n as M,t as N}from"./plus-Du-Jx8aI.js";import{t as P}from"./external-link-MAL7vJYj.js";import{n as F,t as I}from"./mic-Bvz4mA2j.js";import{n as L,t as R}from"./trash-0IafyhZB.js";import{t as ee}from"./pen-line-NK46C_nG.js";import{t as te}from"./refresh-cw-Cmk7VCe0.js";import{t as ne}from"./video-DBmwF1Jm.js";import{_ as z,c as B,d as V,f as re,h as H,i as ie,l as ae,m as oe,n as se,o as U,p as ce,s as W,t as G,u as le,y as K}from"./ui-gGAdXx-P.js";import{T as q}from"./index-BAQ2e4is.js";import{d as ue,f as de,u as fe}from"./definition-Co2Mg1qo.js";var pe={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};pe.node;var me=c(pe),he={name:`bell-ring`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]};he.node;var ge=c(he),_e={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};_e.node;var ve=c(_e),ye={name:`camera`,size:24,node:[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]};ye.node;var be=c(ye),xe={name:`corner-down-left`,size:24,node:[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]};xe.node;var Se=c(xe),Ce={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Ce.node;var we=c(Ce),Te={name:`eraser`,size:24,node:[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`,key:`g5wo59`}],[`path`,{d:`m5.082 11.09 8.828 8.828`,key:`1wx5vj`}]]};Te.node;var Ee=c(Te),De={name:`file-headphone`,size:24,node:[[`path`,{d:`M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343`,key:`1vfytu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0`,key:`1etmh7`}]],aliases:[`file-audio`,`file-audio-2`]};De.node;var Oe=c(De),ke={name:`flashlight-off`,size:24,node:[[`path`,{d:`M11.652 6H18`,key:`voqkpr`}],[`path`,{d:`M12 13v1`,key:`176q98`}],[`path`,{d:`M16 16v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V6`,key:`dzyf92`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M7.649 2H17a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8a4 4 0 0 0-.55 1.007`,key:`1hvcfn`}]]};ke.node;var Ae=c(ke),je={name:`flashlight`,size:24,node:[[`path`,{d:`M12 13v1`,key:`176q98`}],[`path`,{d:`M17 2a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8A4 4 0 0 0 16 12v8a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V3a1 1 0 0 1 1-1z`,key:`17vh7j`}],[`path`,{d:`M6 6h12`,key:`n6hhss`}]]};je.node;var Me=c(je),Ne={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};Ne.node;var Pe=c(Ne),Fe={name:`image-plus`,size:24,node:[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};Fe.node;var Ie=c(Fe),Le={name:`image-up`,size:24,node:[[`path`,{d:`M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21`,key:`9csbqa`}],[`path`,{d:`m14 19.5 3-3 3 3`,key:`9vmjn0`}],[`path`,{d:`M17 22v-5.5`,key:`1aa6fl`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};Le.node;var Re=c(Le),ze={name:`locate-fixed`,size:24,node:[[`line`,{x1:`2`,x2:`5`,y1:`12`,y2:`12`,key:`bvdh0s`}],[`line`,{x1:`19`,x2:`22`,y1:`12`,y2:`12`,key:`1tbv5k`}],[`line`,{x1:`12`,x2:`12`,y1:`2`,y2:`5`,key:`11lu5j`}],[`line`,{x1:`12`,x2:`12`,y1:`19`,y2:`22`,key:`x3vr5v`}],[`circle`,{cx:`12`,cy:`12`,r:`7`,key:`fim9np`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};ze.node;var Be=c(ze),Ve={name:`lock-keyhole`,size:24,node:[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]};Ve.node;var He=c(Ve),Ue={name:`map-pin`,size:24,node:[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]};Ue.node;var We=c(Ue),Ge={name:`pencil-line`,size:24,node:[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]};Ge.node;var Ke=c(Ge),qe={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};qe.node;var Je=c(qe),Ye={name:`scan-line`,size:24,node:[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]};Ye.node;var Xe=c(Ye),Ze={name:`share-2`,size:24,node:[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]};Ze.node;var Qe=c(Ze),$e={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};$e.node;var et=c($e),tt={name:`switch-camera`,size:24,node:[[`path`,{d:`M11 19H4a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5`,key:`mtk2lu`}],[`path`,{d:`M13 5h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-5`,key:`120jsl`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`path`,{d:`m18 22-3-3 3-3`,key:`kgdoj7`}],[`path`,{d:`m6 2 3 3-3 3`,key:`1fnbkv`}]]};tt.node;var nt=c(tt),rt={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};rt.node;var it=c(rt),at={name:`unplug`,size:24,node:[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]};at.node;var ot=c(at),J=e(t(),1),Y=e(n(),1);function st(e,t){let n=encodeURIComponent(e),r=encodeURIComponent(t);return[{id:`mail`,label:K(`shareRun.email`),href:`mailto:?subject=${r}&body=${r}%0A%0A${n}`},{id:`x`,label:`X`,href:`https://x.com/intent/post?text=${r}&url=${n}`},{id:`linkedin`,label:`LinkedIn`,href:`https://www.linkedin.com/sharing/share-offsite/?url=${n}`},{id:`whatsapp`,label:`WhatsApp`,href:`https://wa.me/?text=${r}%20${n}`},{id:`facebook`,label:`Facebook`,href:`https://www.facebook.com/sharer/sharer.php?u=${n}`}]}var ct={x:`𝕏`,linkedin:`in`,whatsapp:`WA`,facebook:`f`};function lt({runId:e,title:t,initial:n}){let[r,i]=(0,J.useState)(!1),[o,s]=(0,J.useState)(n),[c,l]=(0,J.useState)(!1),[u,f]=(0,J.useState)(!1),[p,m]=(0,J.useState)(null),h=async()=>{if(i(!0),!o){l(!0),m(null);try{s(await a.post(`/api/runs/${e}/share`))}catch(e){m(e.message)}finally{l(!1)}}},g=async()=>{await a.del(`/api/runs/${e}/share`),s(null),i(!1)},_=()=>{o&&(navigator.clipboard.writeText(o.url),f(!0),setTimeout(()=>f(!1),1500))},v=y(`share`)||typeof navigator<`u`&&`share`in navigator,x=o?.expiresAt?new Intl.DateTimeFormat(z,{dateStyle:`long`}).format(new Date(o.expiresAt)):null;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(G,{variant:`secondary`,onClick:()=>void h(),children:[(0,Y.jsx)(Qe,{className:`size-4`}),` `,K(`shareRun.button`)]}),(0,Y.jsx)(ie,{open:r,onClose:()=>i(!1),title:K(`shareRun.title`),children:c?(0,Y.jsx)(`div`,{className:`flex justify-center py-8 text-ink-4`,children:(0,Y.jsx)(V,{})}):p?(0,Y.jsx)(`p`,{className:`rounded-lg bg-rose-tint px-3 py-2 text-[14px] text-rose`,children:p}):o?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-paper-2 p-1.5 pl-3`,children:[(0,Y.jsx)(L,{className:`size-4 shrink-0 text-ink-3`}),(0,Y.jsx)(`input`,{readOnly:!0,value:o.url,onFocus:e=>e.target.select(),"aria-label":K(`share.link`),className:`min-w-0 flex-1 bg-transparent text-[14px] outline-none coarse:h-11`}),(0,Y.jsxs)(G,{size:`sm`,onClick:_,children:[u?(0,Y.jsx)(j,{className:`size-3.5`}):(0,Y.jsx)(M,{className:`size-3.5`}),K(u?`share.copied`:`share.copy`)]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 sm:grid-cols-6`,children:[st(o.url,t).map(e=>(0,Y.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer`,className:`flex flex-col items-center gap-1.5 text-[12px] text-ink-2 hover:text-ink`,children:[(0,Y.jsx)(`span`,{className:`inline-flex size-12 items-center justify-center rounded-full bg-paper-2 font-semibold text-[15px] transition hover:bg-paper-3`,children:e.id===`mail`?(0,Y.jsx)(d,{className:`size-5`}):ct[e.id]}),e.label]},e.id)),v?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void(y(`share`)?b(`share`,{link:o.url,title:t}):navigator.share({title:t,url:o.url})).catch(()=>void 0),className:`flex flex-col items-center gap-1.5 text-[12px] text-ink-2 hover:text-ink`,children:[(0,Y.jsx)(`span`,{className:`inline-flex size-12 items-center justify-center rounded-full bg-paper-2 transition hover:bg-paper-3`,children:(0,Y.jsx)(Qe,{className:`size-5`})}),K(`shareRun.more`)]}):null]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-[13px] text-ink-3`,children:[(0,Y.jsx)(`span`,{children:x?K(`shareRun.until`,{date:x}):K(`shareRun.kept`)}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void g(),className:`shrink-0 hover:text-rose coarse:min-h-11`,children:K(`shareRun.withdraw`)})]})]}):null})]})}function ut({runId:e,ask:t}){return t.kind===`confirm`?(0,Y.jsx)(dt,{runId:e,ask:t}):(0,Y.jsx)(ft,{runId:e,ask:t})}function dt({runId:e,ask:t}){let[n,r]=(0,J.useState)(!1),[i,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(null),l=async n=>{o(!0),c(null);try{await a.post(`/api/runs/${e}/ask/${t.id}`,n)}catch(e){c(e.message),o(!1)}},u=t.action.destructive?it:Ke;return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-5 flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:H(`flex size-10 shrink-0 items-center justify-center rounded-full`,t.action.destructive?`bg-rose-tint text-rose`:`bg-ember-tint text-ember-strong`),children:(0,Y.jsx)(u,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:K(`ask.wants`,{service:t.service})}),(0,Y.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-snug tracking-tight`,children:t.reason})]})]}),(0,Y.jsx)(`pre`,{className:`max-h-72 overflow-auto whitespace-pre-wrap break-words rounded-xl bg-paper-2 p-4 text-[13px] leading-relaxed ring-1 ring-border-soft`,children:t.input}),(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center gap-4`,children:[(0,Y.jsx)(ce,{checked:n,onChange:r,label:K(`ask.allowRest`)}),(0,Y.jsx)(`span`,{className:`flex-1 text-[13px] text-ink-2`,children:K(`ask.allowRest`)})]}),s?(0,Y.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:s}):null,(0,Y.jsxs)(`div`,{className:`action-bar mt-6 flex items-center justify-between gap-3`,children:[(0,Y.jsx)(G,{variant:`ghost`,disabled:i,onClick:()=>void l({type:`skip`}),children:K(`ask.deny`)}),(0,Y.jsx)(G,{busy:i,onClick:()=>void l({type:`done`,remember:n}),children:K(`ask.allow`)})]})]})}function ft({runId:e,ask:t}){let[n,i]=(0,J.useState)({}),[o,s]=(0,J.useState)(!1),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(null),[f,m]=(0,J.useState)(0),[h,g]=(0,J.useState)(``),[_,v]=(0,J.useState)(!1),y=(0,J.useRef)(null),b=(0,J.useCallback)(()=>m(e=>e+1),[]);(0,J.useEffect)(()=>{let e=setInterval(b,2500);return()=>clearInterval(e)},[b]);let x=async n=>{l(!0),d(null);try{await a.post(`/api/runs/${e}/ask/${t.id}`,n)}catch(e){d(e.message),l(!1)}},S=async t=>{d(null);try{await a.post(`/api/runs/${e}/browser/act`,t)}catch(e){d(e.message)}b()},C=e=>{let t=y.current;if(!t?.naturalWidth)return;let n=t.getBoundingClientRect();S({type:`click`,x:Math.round((e.clientX-n.left)/n.width*t.naturalWidth),y:Math.round((e.clientY-n.top)/n.height*t.naturalHeight)})},w=t.fields.some(e=>n[e.id]);return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-5 flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-ember-tint text-ember-strong`,children:(0,Y.jsx)(He,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-snug tracking-tight`,children:t.reason}),(0,Y.jsxs)(`p`,{className:`mt-0.5 truncate text-[13px] text-ink-3`,children:[t.site.host,t.site.title?` · ${t.site.title}`:``]})]})]}),(0,Y.jsxs)(`div`,{className:`overflow-hidden rounded-xl bg-paper-2 ring-1 ring-border-soft`,children:[(0,Y.jsx)(`img`,{ref:y,src:r(`/api/runs/${e}/browser/screen?t=${f}`),alt:t.site.host,onClick:C,className:`block w-full cursor-pointer`}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-border-soft border-t bg-card p-2`,children:[(0,Y.jsx)(W,{type:_?`password`:`text`,autoComplete:`off`,value:h,placeholder:K(`ask.typeInto`),onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),S({type:`type`,text:h}).then(()=>g(``)))},autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:`send`,className:`h-9 min-w-[9rem] flex-1 basis-full text-[13px] sm:basis-0 coarse:h-11`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:H(`h-9 shrink-0 rounded-md px-2.5 text-[12px] coarse:h-11 coarse:px-3.5`,_?`bg-ember-veil text-ink`:`text-ink-3 hover:bg-paper-2`),children:K(`ask.hide`)}),(0,Y.jsx)(pt,{label:`Enter`,onClick:()=>void S({type:`key`,key:`Enter`}),children:(0,Y.jsx)(Se,{className:`size-4`})}),(0,Y.jsx)(pt,{label:K(`ask.up`),onClick:()=>void S({type:`scroll`,dy:-500}),children:(0,Y.jsx)(p,{className:`size-4`})}),(0,Y.jsx)(pt,{label:K(`ask.down`),onClick:()=>void S({type:`scroll`,dy:500}),children:(0,Y.jsx)(me,{className:`size-4`})})]})]}),(0,Y.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-4`,children:K(`ask.pictureHint`)}),t.fields.length?(0,Y.jsxs)(`form`,{className:`mt-5 flex flex-col gap-4`,onSubmit:e=>{e.preventDefault(),x({type:`fill`,values:n,remember:o})},children:[t.fields.map((e,r)=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(B,{children:e.label}),(0,Y.jsx)(W,{autoFocus:r===0,type:e.secret?`password`:`text`,autoComplete:`off`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:r===t.fields.length-1?`go`:`next`,value:n[e.id]??``,onChange:t=>i(n=>({...n,[e.id]:t.target.value}))})]},e.id)),(0,Y.jsx)(`button`,{type:`submit`,hidden:!0})]}):null,(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-4`,children:[(0,Y.jsx)(ce,{checked:o,onChange:s,label:K(`ask.remember`)}),(0,Y.jsx)(`span`,{className:`flex-1 text-[13px] text-ink-2`,children:K(`ask.remember`)})]}),(0,Y.jsxs)(`p`,{className:`mt-3 flex items-start gap-2 text-[13px] text-ink-3`,children:[(0,Y.jsx)(et,{className:`mt-0.5 size-4 shrink-0 text-moss`}),` `,K(`ask.private`)]}),u?(0,Y.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:u}):null,(0,Y.jsxs)(`div`,{className:`action-bar mt-6 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(G,{variant:`ghost`,disabled:c,onClick:()=>void x({type:`skip`}),children:K(`ask.skip`)}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[t.fields.length?(0,Y.jsx)(G,{variant:`secondary`,disabled:c,onClick:()=>void x({type:`done`,remember:o}),children:K(`ask.done`)}):null,t.fields.length?(0,Y.jsx)(G,{busy:c,disabled:!w,onClick:()=>void x({type:`fill`,values:n,remember:o}),children:K(`ask.signIn`)}):(0,Y.jsx)(G,{busy:c,onClick:()=>void x({type:`done`,remember:o}),children:K(`ask.done`)})]})]})]})}function pt({label:e,onClick:t,children:n}){return(0,Y.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:t,className:`flex size-9 shrink-0 items-center justify-center rounded-md text-ink-3 hover:bg-paper-2 hover:text-ink coarse:size-11`,children:n})}var X=36e5,Z=6e4,mt=1e3;function ht(e){return e.fractionDigits===void 0?e.style===`integer`?0:2:e.fractionDigits}function gt(e,t,n=`en`){if(typeof e!=`number`||!Number.isFinite(e))return``;let r=ht(t),i=t.grouping!==!1;return t.style===`percent`?new Intl.NumberFormat(n,{maximumFractionDigits:r,minimumFractionDigits:r,style:`percent`,useGrouping:i}).format(e):t.style===`currency`&&t.currency?new Intl.NumberFormat(n,{currency:t.currency,maximumFractionDigits:r,minimumFractionDigits:r,style:`currency`,useGrouping:i}).format(e):new Intl.NumberFormat(n,{maximumFractionDigits:r,minimumFractionDigits:r,useGrouping:i}).format(e)}function _t(e,t,n=`en`){if(typeof e!=`string`||e.length===0)return``;if(t.kind===`time`)return vt(e,t.timePrecision??`minutes`);if(t.dateStyle===`iso`)return t.kind===`date`?e.slice(0,10):e;let r=t.kind===`date`?new Date(`${e}T00:00:00`):new Date(e);if(Number.isNaN(r.getTime()))return e;let i=t.dateStyle??`medium`;if(t.kind===`date`)return new Intl.DateTimeFormat(n,{dateStyle:i}).format(r);let a=t.timePrecision??`minutes`;return new Intl.DateTimeFormat(n,{dateStyle:i,timeStyle:a===`hours`?`short`:`medium`}).format(r)}function vt(e,t){let[n=`0`,r=`00`,i=`00`]=e.split(`:`);return t===`hours`?`${n.padStart(2,`0`)}:00`:t===`minutes`?`${n.padStart(2,`0`)}:${r.padStart(2,`0`)}`:`${n.padStart(2,`0`)}:${r.padStart(2,`0`)}:${i.padStart(2,`0`)}`}function yt(e,t){if(typeof e!=`number`||!Number.isFinite(e))return``;let n=Math.max(0,Math.round(e));if(t.display===`iso`)return bt(n);if(t.display===`minutes`)return`${Math.round(n/Z)} min`;if(t.display===`hours`)return`${(n/X).toFixed(2)} h`;if(t.display===`decimal-hours`)return(n/X).toFixed(2);let r=Math.floor(n/X),i=Math.floor(n%X/Z),a=Math.floor(n%Z/mt);return`${r}:${String(i).padStart(2,`0`)}:${String(a).padStart(2,`0`)}`}function bt(e){let t=Math.floor(e/X),n=Math.floor(e%X/Z),r=Math.floor(e%Z/mt);return`${t>=24?`P${Math.floor(t/24)}D`:`P`}T${t%24}H${n}M${r}S`}function xt(e,t,n=`en`){if(t==null)return``;switch(e.type){case`number`:return gt(t,e.format,n);case`date`:return _t(t,e.format,n);case`duration`:return yt(t,e.format);case`boolean`:return t===!0?`true`:t===!1?`false`:``;case`select`:return St(e,t);default:return String(t)}}function St(e,t){let n=Array.isArray(t)?t:[t],r=e.format.options.reduce((e,t)=>(e[t.id]=t.label,e),{});return n.filter(e=>typeof e==`string`&&e.length>0).map(e=>r[e]??e).join(`, `)}async function Ct(e,t=2400){if(!/^image\/(jpeg|png|webp)$/.test(e.type)||e.size<12e5)return e;try{let n=await createImageBitmap(e),r=Math.min(1,t/Math.max(n.width,n.height)),i=document.createElement(`canvas`);i.width=Math.round(n.width*r),i.height=Math.round(n.height*r),i.getContext(`2d`)?.drawImage(n,0,0,i.width,i.height);let a=await new Promise(e=>i.toBlob(e,`image/jpeg`,.86));return a&&a.size<e.size?new File([a],`${e.name.replace(/\.[^.]+$/,``)}.jpg`,{type:`image/jpeg`}):e}catch{return e}}function wt(){return new Date().toISOString().slice(0,19).replace(/[:T]/g,`-`)}function Tt(e){let t=e?.name;return t===`NotFoundError`||t===`OverconstrainedError`?`missing`:t===`NotReadableError`||t===`AbortError`?`busy`:`denied`}function Et(e){return!!e?.getCapabilities?.()?.torch}function Dt(e,t,n=!1){let r=(0,J.useRef)(null),[i,a]=(0,J.useState)(null),[o,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(1),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(!1);return(0,J.useEffect)(()=>{if(!e)return;let r=null,i=!1;s(null),a(null),d(!1),p(!1);let o={facingMode:{ideal:t},width:{ideal:2560},height:{ideal:1440}};return(async()=>{if(!navigator.mediaDevices?.getUserMedia)throw new DOMException(`no camera api`,`NotAllowedError`);try{r=await navigator.mediaDevices.getUserMedia({video:o,audio:n})}catch(e){if(!n)throw e;r=await navigator.mediaDevices.getUserMedia({video:o})}if(i){for(let e of r.getTracks())e.stop();return}a(r);let e=r.getVideoTracks()[0],t=()=>!i&&d(Et(e));t(),setTimeout(t,600);let s=await navigator.mediaDevices.enumerateDevices().catch(()=>[]);i||l(s.filter(e=>e.kind===`videoinput`).length)})().catch(e=>!i&&s(Tt(e))),()=>{i=!0;for(let e of r?.getTracks()??[])e.stop()}},[e,t,n]),(0,J.useEffect)(()=>{r.current&&i&&(r.current.srcObject=i)},[i]),{video:r,stream:i,error:o,cameras:c,torchable:u,torch:f,setTorch:async e=>{let t=i?.getVideoTracks()[0];try{await t?.applyConstraints({advanced:[{torch:e}]}),p(e)}catch{d(!1)}},mirrored:i?.getVideoTracks()[0]?.getSettings().facingMode===`user`}}function Ot({open:e,onClose:t,label:n,children:r}){let i=(0,J.useRef)(null);return(0,J.useEffect)(()=>{let t=i.current;t&&(e&&!t.open?t.showModal():!e&&t.open&&t.close())},[e]),(0,Y.jsx)(`dialog`,{ref:i,onClose:t,"aria-label":n,className:`media-sheet`,children:e?(0,Y.jsx)(`div`,{className:`flex h-full flex-col`,children:r}):null})}function kt({label:e,onClick:t,active:n,children:r}){return(0,Y.jsx)(`button`,{type:`button`,"aria-label":e,title:e,"aria-pressed":n,onClick:t,className:H(`flex size-11 shrink-0 items-center justify-center rounded-full transition`,n?`bg-white text-black`:`bg-white/12 text-white hover:bg-white/20`),children:r})}function At({title:e,onClose:t,camera:n,onFlip:r}){return(0,Y.jsx)(`div`,{className:`safe-top`,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,Y.jsx)(kt,{label:K(`common.close`),onClick:t,children:(0,Y.jsx)(q,{className:`size-5`})}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-center font-medium text-[15px]`,children:e}),n.torchable?(0,Y.jsx)(kt,{label:K(`camera.torch`),active:n.torch,onClick:()=>void n.setTorch(!n.torch),children:n.torch?(0,Y.jsx)(Me,{className:`size-5`}):(0,Y.jsx)(Ae,{className:`size-5`})}):null,n.stream&&(n.cameras>1||g)?(0,Y.jsx)(kt,{label:K(`camera.flip`),onClick:r,children:(0,Y.jsx)(nt,{className:`size-5`})}):(0,Y.jsx)(`span`,{className:`size-11`})]})})}function jt({camera:e,asking:t,children:n,actions:r}){return(0,Y.jsxs)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden`,children:[(0,Y.jsx)(`video`,{ref:e.video,autoPlay:!0,playsInline:!0,muted:!0,className:H(`absolute inset-0 size-full object-contain`,e.mirrored&&`-scale-x-100`)}),e.error?(0,Y.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-5 bg-black px-8 text-center`,children:[(0,Y.jsx)(`p`,{className:`max-w-sm text-[15px] text-white/85 leading-relaxed`,children:K(`camera.${e.error}`)}),r]}):e.stream?n:(0,Y.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-4 px-8 text-center text-white/75`,children:[(0,Y.jsx)(V,{}),(0,Y.jsx)(`p`,{className:`max-w-xs text-[14px] leading-relaxed`,children:t})]})]})}var Mt=30;function Nt(){if(typeof MediaRecorder<`u`)return[`video/mp4;codecs=avc1.42E01E,mp4a.40.2`,`video/mp4`,`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`].find(e=>MediaRecorder.isTypeSupported(e))}var Pt=!!Nt();function Ft({open:e,multiple:t,video:n,onClose:r,onCapture:i,onNative:a}){let[o,s]=(0,J.useState)(`environment`),[c,l]=(0,J.useState)(`photo`),[u,d]=(0,J.useState)(0),[f,p]=(0,J.useState)(!1),[m,h]=(0,J.useState)(null),_=(0,J.useRef)(null),v=Dt(e,o,c===`video`);(0,J.useEffect)(()=>{e&&(d(0),l(`photo`),h(null))},[e]);let y=async e=>{p(!0);try{await i(e),d(e=>e+1),t||r()}finally{p(!1)}},b=async()=>{let e=v.video.current;if(!e?.videoWidth)return;let t=document.createElement(`canvas`);t.width=e.videoWidth,t.height=e.videoHeight,t.getContext(`2d`)?.drawImage(e,0,0);let n=await new Promise(e=>t.toBlob(e,`image/jpeg`,.9));n&&await y(new File([n],`foto-${wt()}.jpg`,{type:`image/jpeg`}))},x=()=>{_.current?.state===`recording`&&_.current.stop()},S=()=>{let e=Nt();if(!v.stream||!e)return;let t=[],n=new MediaRecorder(v.stream,{mimeType:e,videoBitsPerSecond:25e5,audioBitsPerSecond:96e3});n.ondataavailable=e=>e.data.size&&t.push(e.data),n.onstop=()=>{h(null),_.current=null;let n=e.split(`;`)[0];if(t.length){let e=n===`video/mp4`?`mp4`:`webm`;y(new File(t,`video-${wt()}.${e}`,{type:n}))}},_.current=n,n.start(1e3),h(0)};(0,J.useEffect)(()=>{if(m===null)return;if(m>=Mt){_.current?.state===`recording`&&_.current.stop();return}let e=setTimeout(()=>h(e=>e===null?null:e+1),1e3);return()=>clearTimeout(e)},[m]),(0,J.useEffect)(()=>{!e&&_.current&&(_.current.onstop=null,_.current.stop(),_.current=null)},[e]);let C=e=>`0:${String(e).padStart(2,`0`)}`;return(0,Y.jsxs)(Ot,{open:e,onClose:r,label:K(`camera.title`),children:[(0,Y.jsx)(At,{title:m===null?u?K(`camera.taken`,{n:u}):K(`camera.title`):`${C(m)} / ${C(Mt)}`,onClose:r,camera:v,onFlip:()=>s(e=>e===`environment`?`user`:`environment`)}),(0,Y.jsx)(jt,{camera:v,asking:K(`camera.asking`),actions:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[a?(0,Y.jsxs)(Q,{onClick:()=>{r(),a()},children:[(0,Y.jsx)(be,{className:`size-4`}),` `,K(g?`camera.native`:`camera.pick`)]}):null,(0,Y.jsx)(Q,{quiet:!0,onClick:r,children:K(`common.close`)})]})}),(0,Y.jsxs)(`div`,{className:H(`safe-bottom px-4 pt-3`,v.error&&`invisible`),children:[n&&Pt&&m===null?(0,Y.jsx)(`div`,{className:`mb-3 flex justify-center gap-1 text-[13px]`,children:[`photo`,`video`].map(e=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":c===e,onClick:()=>l(e),className:H(`h-9 rounded-full px-4 font-medium transition`,c===e?`bg-white text-black`:`text-white/70 hover:text-white`),children:K(e===`photo`?`camera.photo`:`camera.video`)},e))}):null,(0,Y.jsxs)(`div`,{className:`grid grid-cols-[1fr_auto_1fr] items-center gap-3`,children:[(0,Y.jsx)(`span`,{className:`text-[13px] text-white/70 leading-snug`,children:m===null?c===`video`?K(`camera.clipHint`,{s:Mt}):K(t?`camera.hintMany`:`camera.hint`):K(`camera.recording`)}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":K(c===`photo`?`camera.shoot`:m===null?`camera.record`:`camera.stop`),disabled:!v.stream||f,onClick:()=>c===`photo`?void b():m===null?S():x(),className:`flex size-[72px] items-center justify-center rounded-full border-4 border-white transition active:scale-95 disabled:opacity-40`,children:f?(0,Y.jsx)(V,{className:`text-white`}):c===`photo`?(0,Y.jsx)(`span`,{className:`size-[54px] rounded-full bg-white`}):m===null?(0,Y.jsx)(`span`,{className:`flex size-[54px] items-center justify-center rounded-full bg-[#e5484d]`,children:(0,Y.jsx)(ne,{className:`size-6 text-white`})}):(0,Y.jsx)(`span`,{className:`size-7 rounded-md bg-[#e5484d]`})}),(0,Y.jsx)(`div`,{className:`flex justify-end`,children:t&&u&&m===null?(0,Y.jsxs)(Q,{onClick:r,children:[(0,Y.jsx)(j,{className:`size-4`}),` `,K(`camera.done`)]}):null})]})]})]})}function Q({onClick:e,quiet:t,children:n}){return(0,Y.jsx)(`button`,{type:`button`,onClick:e,className:H(`inline-flex h-11 items-center justify-center gap-2 rounded-full px-5 font-medium text-[14px] transition`,t?`text-white/75 hover:text-white`:`bg-white text-black hover:bg-white/90`),children:n})}var It=25,Lt=9e3;function Rt(e){return e.code===e.PERMISSION_DENIED?`denied`:e.code===e.TIMEOUT?`timeout`:`unavailable`}function zt({value:e,runId:t,placeholder:n,onChange:r,onBusy:i}){let o=ue(e)?e:null,[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(null),d=(0,J.useRef)(null),f=(0,J.useRef)(!!o?.label),p=(0,J.useRef)(o);p.current=o;let m=o?.lat!==void 0&&o.lng!==void 0,h=typeof navigator<`u`&&`geolocation`in navigator,g=()=>{d.current!==null&&(navigator.geolocation.clearWatch(d.current),d.current=null),c(!1),i?.(!1)};(0,J.useEffect)(()=>()=>{d.current!==null&&navigator.geolocation.clearWatch(d.current)},[]);let _=async(e,n)=>{try{let{label:i}=await a.post(`/api/runs/${t}/geocode`,{lat:e,lng:n,language:z}),o=p.current;i&&!f.current&&o?.lat===e&&o.lng===n&&r({...o,label:i})}catch{}},v=()=>{u(null),c(!0),i?.(!0);let e=Date.now(),t=1/0;d.current=navigator.geolocation.watchPosition(n=>{let{latitude:i,longitude:a,accuracy:o}=n.coords;if(o<t){t=o;let e=Math.round(i*1e6)/1e6,n=Math.round(a*1e6)/1e6,s=f.current?p.current?.label:void 0,c={lat:e,lng:n,accuracy:Math.round(o),...s?{label:s}:{}};p.current=c,r(c)}if(t<=It||Date.now()-e>Lt){g();let e=p.current;e?.lat!==void 0&&e.lng!==void 0&&_(e.lat,e.lng)}},e=>{g(),t===1/0&&u(Rt(e))},{enableHighAccuracy:!0,timeout:15e3,maximumAge:1e4})},y=e=>{f.current=e.trim().length>0;let t={...m?o:{},label:e};r(m||e.trim()?t:void 0)};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[m?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-moss-tint text-moss`,children:(0,Y.jsx)(We,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`truncate font-medium text-[15px] tabular-nums`,children:[o.lat?.toFixed(5),`, `,o.lng?.toFixed(5)]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 text-[13px] text-ink-3`,children:[(0,Y.jsx)(`span`,{children:s?K(`location.refining`):o.accuracy?K(`location.accuracy`,{m:o.accuracy}):null}),(0,Y.jsxs)(`a`,{href:`https://www.openstreetmap.org/?mlat=${o.lat}&mlon=${o.lng}#map=17/${o.lat}/${o.lng}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 underline-offset-2 hover:text-ink hover:underline coarse:-my-3 coarse:min-h-11 coarse:min-w-11`,children:[K(`location.map`),` `,(0,Y.jsx)(P,{className:`size-3`})]})]})]}),(0,Y.jsx)(U,{label:K(`location.remove`),onClick:()=>{g(),f.current=!1,r(void 0)},children:(0,Y.jsx)(q,{className:`size-4`})})]}):h?(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(G,{variant:`secondary`,size:`lg`,busy:s,onClick:v,className:`w-full sm:w-auto`,children:[s?null:(0,Y.jsx)(Be,{className:`size-4`}),K(s?`location.locating`:`location.use`)]}),l?(0,Y.jsx)(`p`,{className:`mt-2 rounded-lg bg-amber-tint px-3 py-2 text-[13px] text-ink-2 leading-relaxed`,children:K(`location.${l}`)}):(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3 leading-relaxed`,children:K(`location.why`)})]}):null,(0,Y.jsx)(W,{value:o?.label??``,placeholder:n??K(m?`location.label`:`location.manual`),autoComplete:`street-address`,enterKeyHint:`done`,"aria-label":K(`location.manual`),onChange:e=>y(e.target.value)})]})}var Bt=null;function Vt(){return Bt??=(async()=>{let e=window.BarcodeDetector;if(e)try{let t=await e.getSupportedFormats();if(t.includes(`qr_code`)){let n=new e({formats:t});return{qrOnly:!1,detect:async e=>(await n.detect(e))[0]?.rawValue||null}}}catch{}let{default:t}=await s(async()=>{let{default:e}=await import(`./qr-scanner.min-C_UI0gH-.js`);return{default:e}},__vite__mapDeps([0,1])),n=t.createQrEngine();return{qrOnly:!0,detect:async e=>{try{return(await t.scanImage(e,{qrEngine:n,returnDetailedScanResult:!0})).data||null}catch{return null}}}})(),Bt}function Ht({open:e,onClose:t,onResult:n}){let r=(0,J.useRef)(n);r.current=n;let i=(0,J.useRef)(t);return i.current=t,(0,J.useEffect)(()=>{e&&b(`scan`).then(e=>{e&&r.current(e)}).catch(()=>void 0).finally(()=>i.current())},[e]),null}function Ut(e){return y(`scan`)?(0,Y.jsx)(Ht,{...e}):(0,Y.jsx)(Wt,{...e})}function Wt({open:e,onClose:t,onResult:n}){let[r,i]=(0,J.useState)(`environment`),[a,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(!1),l=(0,J.useRef)(null),u=Dt(e,r),d=(0,J.useRef)(n);d.current=n;let f=(0,J.useRef)(t);f.current=t,(0,J.useEffect)(()=>{e&&(c(!1),Vt().then(e=>o(e.qrOnly)))},[e]),(0,J.useEffect)(()=>{if(!e||!u.stream)return;let t=!1,n,r=async()=>{let e=u.video.current;if(!t&&e&&e.readyState>=2&&e.videoWidth){let n=await(await Vt()).detect(e).catch(()=>null);if(n&&!t){navigator.vibrate?.(60),d.current(n),f.current();return}}t||(n=setTimeout(r,200))};return r(),()=>{t=!0,clearTimeout(n)}},[e,u.stream,u.video]);let p=async e=>{if(!e)return;c(!1);let r=await createImageBitmap(e).catch(()=>null),i=r?await(await Vt()).detect(r).catch(()=>null):null;i?(n(i),t()):c(!0)};return(0,Y.jsxs)(Ot,{open:e,onClose:t,label:K(`scan.title`),children:[(0,Y.jsx)(At,{title:K(`scan.title`),onClose:t,camera:u,onFlip:()=>i(e=>e===`environment`?`user`:`environment`)}),(0,Y.jsx)(jt,{camera:u,asking:K(`scan.asking`),actions:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Y.jsxs)(Q,{onClick:()=>l.current?.click(),children:[(0,Y.jsx)(Re,{className:`size-4`}),` `,K(`scan.fromPhoto`)]}),(0,Y.jsx)(Q,{quiet:!0,onClick:t,children:K(`scan.typeInstead`)})]}),children:(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center`,children:(0,Y.jsx)(`div`,{className:`aspect-square w-[min(68%,320px)] rounded-3xl border-2 border-white/90 shadow-[0_0_0_100vmax_rgb(0_0_0/0.35)]`})})}),(0,Y.jsxs)(`div`,{className:`safe-bottom flex flex-col items-center gap-3 px-5 pt-3 text-center`,children:[(0,Y.jsx)(`p`,{className:`text-[13px] text-white/75 leading-snug`,children:K(s?`scan.miss`:a?`scan.hintQr`:`scan.hint`)}),u.stream?(0,Y.jsxs)(Q,{quiet:!0,onClick:()=>l.current?.click(),children:[(0,Y.jsx)(Re,{className:`size-4`}),` `,K(`scan.fromPhoto`)]}):null]}),(0,Y.jsx)(`input`,{ref:l,type:`file`,hidden:!0,accept:`image/*`,onChange:e=>{p(e.target.files?.[0]),e.target.value=``}})]})}var Gt=`#1d1a17`,Kt={width:1200,height:480};function qt(e,t,n,r,i){e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=Gt,e.fillStyle=Gt,e.lineWidth=i;for(let a of t){if(a.length===1){e.beginPath(),e.arc(a[0].x*n,a[0].y*r,i/2,0,Math.PI*2),e.fill();continue}e.beginPath(),e.moveTo(a[0].x*n,a[0].y*r);for(let t=1;t<a.length-1;t++){let i=a[t],o=a[t+1];e.quadraticCurveTo(i.x*n,i.y*r,(i.x+o.x)/2*n,(i.y+o.y)/2*r)}let t=a[a.length-1];e.lineTo(t.x*n,t.y*r),e.stroke()}}function Jt({strokes:e,onStrokes:t}){let n=(0,J.useRef)(null),r=(0,J.useRef)(null),i=(0,J.useRef)(e);i.current=e;let a=()=>{let e=n.current,t=e?.getContext(`2d`);if(!e||!t)return;let a=window.devicePixelRatio||1,o=Math.round(e.clientWidth*a),s=Math.round(e.clientHeight*a);(e.width!==o||e.height!==s)&&(e.width=o,e.height=s),t.clearRect(0,0,o,s),qt(t,r.current?[...i.current,r.current]:i.current,o,s,2.4*a)};(0,J.useEffect)(()=>{a();let e=n.current;if(!e)return;let t=new ResizeObserver(a);return t.observe(e),()=>t.disconnect()},[e]);let o=e=>{let t=e.currentTarget.getBoundingClientRect();return{x:Math.min(1,Math.max(0,(e.clientX-t.left)/t.width)),y:Math.min(1,Math.max(0,(e.clientY-t.top)/t.height))}};return(0,Y.jsxs)(`div`,{className:`relative overflow-hidden rounded-xl bg-white ring-1 ring-input`,children:[(0,Y.jsx)(`canvas`,{ref:n,"aria-label":K(`sign.pad`),className:`block aspect-[5/2] w-full cursor-crosshair touch-none select-none`,onPointerDown:e=>{e.currentTarget.setPointerCapture(e.pointerId),r.current=[o(e)],a()},onPointerMove:e=>{r.current&&(r.current.push(o(e)),a())},onPointerUp:()=>{if(r.current){let e=r.current;r.current=null,t([...i.current,e])}},onPointerCancel:()=>{r.current=null,a()}}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-x-6 bottom-[22%] border-[#1d1a17]/25 border-b`}),e.length?null:(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center text-[#1d1a17]/40 text-[14px]`,children:K(`sign.hint`)})]})}async function Yt(e){let t=document.createElement(`canvas`);t.width=Kt.width,t.height=Kt.height;let n=t.getContext(`2d`);if(!n)return null;qt(n,e,Kt.width,Kt.height,7);let r=await new Promise(e=>t.toBlob(e,`image/png`));return r?new File([r],`unterschrift.png`,{type:`image/png`}):null}function Xt({label:e,value:t,runId:n,onChange:i}){let[o,s]=(0,J.useState)(!1),[c,l]=(0,J.useState)([]),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(null),m=typeof t==`string`&&t?t:null,h=async()=>{d(!0),p(null);try{let e=await Yt(c);if(!e)return;i((await a.upload(`/api/runs/${n}/uploads`,e)).id),s(!1)}catch(e){p(e.message)}finally{d(!1)}};return(0,Y.jsxs)(`div`,{children:[m?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-2 ring-1 ring-input`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{l([]),s(!0)},className:`min-w-0 flex-1 rounded-lg bg-white px-3`,"aria-label":K(`sign.again`),children:(0,Y.jsx)(`img`,{src:r(`/api/runs/${n}/assets/${m}`),alt:e,className:`mx-auto h-20 object-contain`})}),(0,Y.jsx)(U,{label:K(`sign.remove`),onClick:()=>i(void 0),children:(0,Y.jsx)(q,{className:`size-4`})})]}):(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{l([]),s(!0)},className:`flex w-full flex-col items-center justify-center gap-2 rounded-xl border border-input border-dashed bg-card px-4 py-7 text-[14px] text-ink-3 transition hover:border-ember hover:text-ink`,children:[(0,Y.jsx)(ee,{className:`size-6`}),K(`sign.open`)]}),(0,Y.jsxs)(ie,{open:o,onClose:()=>s(!1),title:e,wide:!0,children:[(0,Y.jsx)(Jt,{strokes:c,onStrokes:l}),f?(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:f}):null,(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-3`,children:[(0,Y.jsxs)(G,{variant:`ghost`,disabled:!c.length||u,onClick:()=>l([]),children:[(0,Y.jsx)(Ee,{className:`size-4`}),` `,K(`sign.clear`)]}),(0,Y.jsx)(G,{busy:u,disabled:!c.length,onClick:()=>void h(),children:K(`sign.accept`)})]})]})]})}function Zt({runId:e,connectionId:t,connector:n,onCancel:r}){let[i,o]=(0,J.useState)({}),[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(null),d=async()=>{c(!0),u(null);try{await a.post(`/api/runs/${e}/connections/${t}/credentials/${n.id}`,{values:i})}catch(e){u(e.message)}finally{c(!1)}};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-xl bg-card p-4 ring-1 ring-input`,children:[(n.fields??[]).map(e=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(B,{children:e.label}),(0,Y.jsx)(W,{type:e.secret?`password`:`text`,autoComplete:`off`,value:i[e.key]??``,placeholder:e.placeholder,onChange:t=>o(n=>({...n,[e.key]:t.target.value})),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),d())}})]},e.key)),n.hint?(0,Y.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:n.hint}):null,l?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:l}):null,(0,Y.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Y.jsx)(G,{variant:`ghost`,size:`sm`,onClick:r,children:K(`common.cancel`)}),(0,Y.jsx)(G,{size:`sm`,busy:s,onClick:()=>void d(),children:K(`connect.go`)})]})]})}function Qt({runId:e,connection:t}){let[n,r]=(0,J.useState)(null),[i,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(null);if(!t)return null;if(t.account){let n=t.connectors.find(e=>e.id===t.account?.connector)?.name??``;return(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 items-center justify-center rounded-full bg-moss-tint text-moss`,children:(0,Y.jsx)(j,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`truncate font-medium text-[15px]`,children:t.account.label}),(0,Y.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:K(`connect.connected`,{name:n})})]}),(0,Y.jsx)(U,{label:K(`connect.disconnect`),onClick:()=>void a.del(`/api/runs/${e}/connections/${t.id}`),children:(0,Y.jsx)(ot,{className:`size-4`})})]})}let l=async n=>{if(c(null),o(null),y(`signIn`)){try{let{url:r}=await a.post(`/api/runs/${e}/connections/${t.id}/oauth/${n.id}`);await b(`signIn`,{url:r})}catch(e){c(e.message)}return}let r=window.open(`about:blank`,`wizard-connect`,`width=540,height=700`);try{let{url:i}=await a.post(`/api/runs/${e}/connections/${t.id}/oauth/${n.id}`);r?r.location.replace(i):o(i)}catch(e){r?.close(),c(e.message)}},u=t.connectors.find(e=>e.id===n);return t.connectors.length?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.connectors.map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>e.auth===`oauth2`?void l(e):r(n===e.id?null:e.id),className:H(`inline-flex h-11 items-center gap-2 rounded-full px-4 font-medium text-[14px] ring-1 transition`,n===e.id?`bg-ember-veil text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink hover:ring-ember`),children:[(0,Y.jsx)(L,{className:`size-4`}),` `,e.name]},e.id))}),u?(0,Y.jsx)(Zt,{runId:e,connectionId:t.id,connector:u,onCancel:()=>r(null)}):null,i?(0,Y.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,className:`text-[14px] text-ember underline`,children:K(`connect.openLink`)}):null,s?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:s}):null]}):(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`connect.none`)})}function $t(e){return e==null?``:Array.isArray(e)?e.join(`, `):String(e)}function en(e,t){if(t.trim()===``)return null;if(e.type===`number`){let e=Number(t.replace(/\s/g,``).replace(`,`,`.`));return Number.isFinite(e)?e:t}return e.type===`boolean`?t===`true`:t}function $({column:e,value:t,boxed:n,onCommit:r}){let[i,a]=(0,J.useState)($t(t));(0,J.useEffect)(()=>a($t(t)),[t]);let o=H(`w-full min-w-0 rounded-md border border-transparent px-2 text-[13px] outline-none focus:border-ember focus:bg-card`,n?`h-11 bg-paper-2`:`h-9 bg-transparent hover:bg-paper-2 coarse:h-11`);return e.type===`boolean`?(0,Y.jsx)(`label`,{className:`flex size-9 cursor-pointer items-center justify-center coarse:size-11`,children:(0,Y.jsx)(`input`,{type:`checkbox`,"aria-label":e.name,checked:t===!0,onChange:e=>r(e.target.checked),className:`size-4 accent-[var(--ember)] coarse:size-6`})}):e.type===`select`&&!e.format.multiple&&!e.format.allowCustom?(0,Y.jsxs)(`select`,{value:i,onChange:e=>r(e.target.value||null),className:o,children:[(0,Y.jsx)(`option`,{value:``}),e.format.options.map(e=>(0,Y.jsx)(`option`,{value:e.id,children:e.label},e.id))]}):(0,Y.jsx)(`input`,{"aria-label":e.name,type:e.type===`date`&&e.format.kind===`date`?`date`:`text`,inputMode:e.type===`number`?`decimal`:void 0,enterKeyHint:`done`,autoComplete:`off`,value:i,onChange:e=>a(e.target.value),onBlur:()=>{i!==$t(t)&&r(en(e,i))},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),e.target.blur())},className:H(o,e.type===`number`&&`text-right tabular-nums`)})}function tn({runId:e,list:t,editable:n}){let{def:r,rows:i}=t,[s,c]=(0,J.useState)(null),[l,u]=(0,J.useState)({}),d=`/api/runs/${e}/lists/${r.id}/rows`,f=async e=>{c(null);try{await e()}catch(e){c(e instanceof o?e.message:String(e))}},p=()=>f(async()=>{await a.post(d,{cells:l}),u({})}),m=Object.values(l).some(e=>e!=null&&e!==``);if(!i.length&&!n)return(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`list.empty`)});let h=(e,t)=>t===0||e.type===`text`&&e.format?.style===`multiline`,g=(e,t,n)=>void f(()=>a.patch(`${d}/${e}`,{cells:{[t]:n}}));return(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 sm:hidden`,children:[i.map(e=>(0,Y.jsxs)(`div`,{className:`rounded-lg bg-paper p-2 ring-1 ring-border-soft`,children:[(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-1.5`,children:r.columns.map((t,r)=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,h(t,r)&&`col-span-2`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:t.name}),n?(0,Y.jsx)($,{boxed:!0,column:t,value:e.cells[t.id],onCommit:n=>g(e.id,t.id,n)}):(0,Y.jsx)(`div`,{className:H(`break-words px-1 text-[14px]`,t.type===`number`&&`tabular-nums`),children:xt(t,e.cells[t.id],z)||`—`})]},t.id))}),n?(0,Y.jsx)(`div`,{className:`mt-1 flex justify-end`,children:(0,Y.jsx)(U,{label:K(`list.delete`),onClick:()=>void f(()=>a.del(`${d}/${e.id}`)),children:(0,Y.jsx)(R,{className:`size-4`})})}):null]},e.id)),n?(0,Y.jsxs)(`div`,{className:`rounded-lg border border-input border-dashed p-2`,children:[(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-1.5`,children:r.columns.map((e,t)=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,h(e,t)&&`col-span-2`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:e.name}),(0,Y.jsx)($,{boxed:!0,column:e,value:l[e.id],onCommit:t=>u(n=>({...n,[e.id]:t}))})]},e.id))}),(0,Y.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,Y.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:()=>m?void p():void 0,children:[(0,Y.jsx)(N,{className:`size-4`}),` `,K(`run.addRow`)]})})]}):null]}),(0,Y.jsx)(`div`,{className:`hidden overflow-x-auto rounded-lg ring-1 ring-border-soft sm:block`,children:(0,Y.jsxs)(`table`,{className:`w-full text-[13px]`,children:[(0,Y.jsx)(`thead`,{className:`bg-paper-2 text-ink-2`,children:(0,Y.jsxs)(`tr`,{children:[r.columns.map(e=>(0,Y.jsx)(`th`,{className:`whitespace-nowrap px-3 py-2 text-left font-medium`,children:e.name},e.id)),n?(0,Y.jsx)(`th`,{className:`w-10`}):null]})}),(0,Y.jsxs)(`tbody`,{children:[i.map(e=>(0,Y.jsxs)(`tr`,{className:`border-border-soft border-t align-top`,children:[r.columns.map(t=>(0,Y.jsx)(`td`,{className:H(`min-w-[7.5rem]`,n?`px-1 py-0.5`:`px-3 py-2`),children:n?(0,Y.jsx)($,{column:t,value:e.cells[t.id],onCommit:n=>g(e.id,t.id,n)}):(0,Y.jsx)(`span`,{className:H(t.type===`number`&&`tabular-nums`),children:xt(t,e.cells[t.id],z)})},t.id)),n?(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)(U,{label:K(`list.delete`),className:`size-9`,onClick:()=>void f(()=>a.del(`${d}/${e.id}`)),children:(0,Y.jsx)(R,{className:`size-3.5`})})}):null]},e.id)),n?(0,Y.jsxs)(`tr`,{className:`border-border-soft border-t bg-paper`,children:[r.columns.map(e=>(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)($,{column:e,value:l[e.id],onCommit:t=>u(n=>({...n,[e.id]:t}))})},e.id)),(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)(U,{label:K(`run.addRow`),className:`size-9`,onClick:()=>m?void p():void 0,children:(0,Y.jsx)(N,{className:`size-4`})})})]}):null]})]})}),s?(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:s}):null]})}function nn(e,t,n){let i=t.split(`/`).map(encodeURIComponent).join(`/`);return r(`/api/runs/${e}/store/files/${i}${n?`?inline=1`:``}`)}var rn=[`bg-paper-3 text-ink-3`,`bg-moss-tint text-moss`,`bg-rose-tint text-rose`,`bg-ember-tint text-ember-strong`];function an({runId:e,list:t}){let{def:n,rows:r}=t,i=n.columns.find(e=>e.id===n.check?.file),s=n.columns.find(e=>e.id===n.check?.status),c=s?.type===`select`?s.format.options:[],l=c[0]?.id,u=e=>s?String(e.cells[s.id]??l??``):``,d=e=>!s||u(e)===l,[f,p]=(0,J.useState)(()=>(r.find(d)??r[0])?.id??null),[m,h]=(0,J.useState)(!1),[g,_]=(0,J.useState)(null),v=`/api/runs/${e}/lists/${n.id}/rows`,y=r.find(e=>e.id===f)??r[0],b=m?r.filter(e=>d(e)||e.id===y?.id):r,x=r.filter(e=>!d(e)).length,S=n.columns.filter(e=>e!==i&&e!==s),C=S.filter(e=>e.id!==n.key),w=C.find(e=>e.type===`text`)??C[0],T=C.filter(e=>e!==w),E=async(e,t)=>{_(null);try{await a.patch(`${v}/${e}`,{cells:t})}catch(e){_(e instanceof o?e.message:String(e))}},D=e=>{let t=b.findIndex(e=>e.id===y?.id),n=b[Math.min(b.length-1,Math.max(0,t+e))];n&&p(n.id)},O=async e=>{if(!y||!s)return;let t=r.findIndex(e=>e.id===y.id),n=[...r.slice(t+1),...r.slice(0,t)].find(d);await E(y.id,{[s.id]:e}),n&&e!==l&&p(n.id)},k=e=>{e.target.closest(`input, textarea, select`)||(e.key===`ArrowDown`||e.key===`ArrowUp`?(e.preventDefault(),D(e.key===`ArrowDown`?1:-1)):/^[1-9]$/.test(e.key)&&c[Number(e.key)]&&(e.preventDefault(),O(c[Number(e.key)].id)))};if(!r.length)return(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`list.empty`)});let A=i&&y?String(y.cells[i.id]??``).trim():``,M=A.split(`.`).pop()?.toLowerCase()??``,N=e=>rn[Math.min(Math.max(0,c.findIndex(t=>t.id===u(e))),3)];return(0,Y.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-[minmax(280px,360px)_minmax(0,1fr)]`,onKeyDown:k,children:[(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-col`,children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-[13px] text-ink-3 tabular-nums`,children:K(`check.progress`,{done:x,total:r.length})}),s?(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":m,onClick:()=>h(e=>!e),className:H(`inline-flex h-8 items-center rounded-full px-3 text-[13px] ring-1 transition coarse:h-11`,m?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink`),children:K(`check.onlyOpen`)}):null]}),(0,Y.jsx)(`ul`,{className:`flex max-h-[38vh] flex-col gap-1.5 overflow-y-auto p-0.5 pr-1 lg:max-h-[calc(100vh-15rem)]`,children:b.map(e=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>p(e.id),"aria-current":e.id===y?.id,className:H(`flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left ring-1 transition`,e.id===y?.id?`bg-card shadow-soft ring-ember`:`bg-paper ring-border-soft hover:bg-card`),children:[(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:`block truncate font-medium text-[14px]`,children:w&&xt(w,e.cells[w.id],z)||`—`}),(0,Y.jsx)(`span`,{className:`block truncate text-[12px] text-ink-3 tabular-nums`,children:T.slice(0,2).map(t=>xt(t,e.cells[t.id],z)).filter(Boolean).join(` · `)})]}),s?(0,Y.jsx)(`span`,{className:H(`shrink-0 rounded-full px-2 py-0.5 font-medium text-[11px]`,N(e)),children:c.find(t=>t.id===u(e))?.label??u(e)}):null]})},e.id))})]}),y?(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[c.length>1?(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[c.slice(1).map((e,t)=>(0,Y.jsxs)(G,{size:`md`,variant:u(y)===e.id?`primary`:`secondary`,onClick:()=>void O(e.id),children:[u(y)===e.id?(0,Y.jsx)(j,{className:`size-4`}):null,e.label,(0,Y.jsx)(`kbd`,{className:`ml-1 hidden rounded bg-black/10 px-1.5 text-[11px] lg:inline`,children:t+1})]},e.id)),u(y)===l?null:(0,Y.jsx)(G,{size:`md`,variant:`ghost`,onClick:()=>void O(l??``),children:K(`check.reopen`)})]}):null,(0,Y.jsx)(`div`,{className:`overflow-hidden rounded-lg bg-paper-2 ring-1 ring-border-soft`,children:A?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 border-border-soft border-b bg-card px-3 py-2 text-[13px]`,children:[(0,Y.jsx)(F,{className:`size-3.5 shrink-0 text-ink-3`}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:A.split(`/`).pop()}),(0,Y.jsx)(`a`,{href:nn(e,A,M===`pdf`),target:`_blank`,rel:`noreferrer`,className:`shrink-0 text-ink-2 underline-offset-2 hover:text-ink hover:underline`,children:K(`run.openFull`)})]}),M===`pdf`?(0,Y.jsx)(`iframe`,{title:A,src:`${nn(e,A,!0)}#toolbar=0&navpanes=0&view=FitH`,className:`h-[46vh] w-full border-0 bg-white lg:h-[calc(100vh-27rem)] lg:min-h-[360px]`},A):[`png`,`jpg`,`jpeg`,`webp`].includes(M)?(0,Y.jsx)(`div`,{className:`flex max-h-[46vh] justify-center overflow-auto bg-white lg:max-h-[calc(100vh-27rem)]`,children:(0,Y.jsx)(`img`,{src:nn(e,A,!0),alt:A,className:`max-w-full object-contain`},A)}):(0,Y.jsx)(`p`,{className:`px-4 py-10 text-center text-[14px] text-ink-3`,children:K(`check.noPreview`)})]}):(0,Y.jsx)(`p`,{className:`px-4 py-14 text-center text-[14px] text-ink-3`,children:K(`check.noFile`)})}),(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-3 gap-y-2 sm:grid-cols-3`,children:S.map(e=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,e.type===`text`&&e.format?.style===`multiline`&&`col-span-full`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:e.name}),(0,Y.jsx)($,{boxed:!0,column:e,value:y.cells[e.id],onCommit:t=>void E(y.id,{[e.id]:t})})]},e.id))}),g?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:g}):null]}):null]})}var on={xlsx:`Excel`,csv:`CSV`,json:`JSON`,md:`Markdown`,zip:`ZIP`};function sn({runId:e,list:t}){return(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.formats.map(n=>(0,Y.jsx)(`a`,{href:r(`/api/runs/${e}/lists/${t.def.id}/download?format=${n}`),className:`inline-flex h-9 items-center rounded-full bg-paper-2 px-3.5 font-medium text-[13px] text-ink-2 transition hover:bg-paper-3 hover:text-ink coarse:h-11 coarse:px-4`,children:on[n]??n},n))})}function cn(e){return e>1e6?`${(e/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1e3))} KB`}function ln({runId:e}){let[t,n]=(0,J.useState)(!1),[i,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(!1);(0,J.useEffect)(()=>{t&&(c(!1),a.get(`/api/runs/${e}/store`).then(o))},[t,e]);let l=i&&!i.files.length&&!i.connections.length&&!i.keepsSignIns&&i.lists.every(e=>!e.rows);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(!0),className:`inline-flex items-center gap-1.5 text-[13px] text-ink-4 transition hover:text-ink-2 coarse:min-h-11`,children:[(0,Y.jsx)(we,{className:`size-3.5`}),` `,K(`store.open`)]}),(0,Y.jsx)(ie,{open:t,onClose:()=>n(!1),title:K(`store.title`),wide:!0,children:i?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5 text-[14px]`,children:[(0,Y.jsx)(`p`,{className:`text-ink-3`,children:K(`store.explain`)}),l?(0,Y.jsx)(`p`,{className:`text-ink-2`,children:K(`store.empty`)}):null,i.lists.some(e=>e.rows)?(0,Y.jsx)(`ul`,{className:`flex flex-col gap-1`,children:i.lists.filter(e=>e.rows).map(e=>(0,Y.jsxs)(`li`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`span`,{children:e.title}),(0,Y.jsx)(`span`,{className:`text-ink-3 tabular-nums`,children:K(`store.rows`,{n:e.rows})})]},e.id))}):null,i.connections.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(L,{className:`size-4 text-ink-3`}),` `,e.account?.label]},e.id)),i.keepsSignIns?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(j,{className:`size-4 text-ink-3`}),` `,K(`store.signIns`)]}):null,i.files.length?(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`mb-1 text-ink-3`,children:K(`store.files`,{n:i.files.length,size:cn(i.files.reduce((e,t)=>e+t.size,0))})}),(0,Y.jsx)(`ul`,{className:`max-h-56 overflow-y-auto rounded-lg ring-1 ring-border-soft`,children:i.files.map(t=>(0,Y.jsx)(`li`,{className:`border-border-soft border-b last:border-0`,children:(0,Y.jsxs)(`a`,{href:r(`/api/runs/${e}/store/files/${t.path}`),className:`flex items-center gap-2 px-3 py-2 text-[13px] hover:bg-paper-2 coarse:min-h-11`,title:t.source??void 0,children:[(0,Y.jsx)(F,{className:`size-3.5 shrink-0 text-ink-3`}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t.path}),(0,Y.jsx)(`span`,{className:`text-ink-4 tabular-nums`,children:cn(t.size)})]})},t.path))})]}):null,(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 pt-1`,children:[l?(0,Y.jsx)(`span`,{}):s?(0,Y.jsxs)(G,{variant:`secondary`,onClick:async()=>{await a.del(`/api/runs/${e}/store`),o(await a.get(`/api/runs/${e}/store`)),c(!1)},children:[(0,Y.jsx)(R,{className:`size-4`}),` `,K(`store.confirmDelete`)]}):(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>c(!0),children:[(0,Y.jsx)(R,{className:`size-4`}),` `,K(`store.delete`)]}),(0,Y.jsx)(G,{onClick:()=>n(!1),children:K(`common.close`)})]})]}):(0,Y.jsx)(`div`,{className:`flex justify-center py-8 text-ink-4`,children:(0,Y.jsx)(V,{})})})]})}var un=300;function dn(){if(typeof MediaRecorder<`u`)return[`audio/webm;codecs=opus`,`audio/mp4`,`audio/webm`,`audio/ogg;codecs=opus`].find(e=>MediaRecorder.isTypeSupported(e))}function fn(e){return`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function pn({value:e,runId:t,onChange:n,onBusy:r}){let i=fe(e)?e:null,[o,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(0),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(null),[h,g]=(0,J.useState)(!1),[_,v]=(0,J.useState)(null),y=(0,J.useRef)(null),b=(0,J.useRef)(null),x=dn(),S=m&&!!x;(0,J.useEffect)(()=>()=>{y.current&&(y.current.recorder.onstop=null,y.current.stop())},[]),(0,J.useEffect)(()=>()=>{_&&URL.revokeObjectURL(_.url)},[_]);let C=async(e,i)=>{d(!0),r?.(!0),p(null);try{let r=await a.upload(`/api/runs/${t}/uploads`,e);v({asset:r.id,url:URL.createObjectURL(e)}),n({asset:r.id,...i===void 0?{}:{seconds:i}})}catch(e){p(e.message)}finally{d(!1),r?.(!1)}},w=async()=>{p(null),g(!1);let e;try{e=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}})}catch{g(!0);return}let t=[],n=new MediaRecorder(e,{mimeType:x,audioBitsPerSecond:48e3}),i=Date.now(),a=new AudioContext,o=a.createAnalyser();o.fftSize=256,a.createMediaStreamSource(e).connect(o);let c=new Uint8Array(o.fftSize),u=0,d=()=>{o.getByteTimeDomainData(c);let e=0;for(let t of c)e=Math.max(e,Math.abs(t-128));if(l(Math.min(1,e/64)),s((Date.now()-i)/1e3),(Date.now()-i)/1e3>=un){f();return}u=requestAnimationFrame(d)},f=()=>{cancelAnimationFrame(u),n.state!==`inactive`&&n.stop();for(let t of e.getTracks())t.stop();a.close().catch(()=>void 0),y.current=null,s(null),l(0)};n.ondataavailable=e=>e.data.size&&t.push(e.data),n.onstop=()=>{let e=(n.mimeType||x||`audio/webm`).split(`;`)[0],r=e===`audio/mp4`?`m4a`:e===`audio/ogg`?`ogg`:`webm`,a=Math.max(1,Math.round((Date.now()-i)/1e3));C(new File(t,`sprachnotiz-${wt()}.${r}`,{type:e}),a)},y.current={recorder:n,stop:f},r?.(!0),n.start(1e3),u=requestAnimationFrame(d)},T=o!==null,E=(0,Y.jsxs)(G,{variant:`secondary`,onClick:()=>b.current?.click(),children:[(0,Y.jsx)(Oe,{className:`size-4`}),` `,K(`voice.pick`)]});return(0,Y.jsxs)(`div`,{children:[T?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-ember`,children:[(0,Y.jsxs)(`span`,{className:`relative flex size-11 shrink-0 items-center justify-center`,children:[(0,Y.jsx)(`span`,{className:`absolute inset-0 rounded-full bg-rose-tint transition-transform duration-75`,style:{transform:`scale(${.7+c*.5})`}}),(0,Y.jsx)(`span`,{className:`relative size-3.5 animate-pulse-dot rounded-full bg-rose`})]}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`font-medium text-[15px] tabular-nums`,children:fn(o)}),(0,Y.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:o>270?K(`voice.left`,{s:Math.ceil(un-o)}):K(`voice.recording`)})]}),(0,Y.jsxs)(G,{onClick:()=>y.current?.stop(),children:[(0,Y.jsx)(A,{className:`size-3.5 fill-current`}),` `,K(`voice.stop`)]})]}):u?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-4 text-[14px] text-ink-3 ring-1 ring-input`,children:[(0,Y.jsx)(V,{className:`size-4`}),` `,K(`run.uploading`)]}):i?(0,Y.jsxs)(`div`,{className:`rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`audio`,{controls:!0,preload:`metadata`,src:_?.asset===i.asset?_.url:`/api/runs/${t}/assets/${i.asset}`,className:`h-11 w-full`}),i.transcript?(0,Y.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap px-1 text-[14px] text-ink-2 leading-relaxed`,children:i.transcript}):null,(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`px-1 text-[13px] text-ink-3`,children:i.seconds?fn(i.seconds):null}),(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[S?(0,Y.jsxs)(G,{variant:`ghost`,size:`sm`,onClick:()=>void w(),children:[(0,Y.jsx)(Je,{className:`size-3.5`}),` `,K(`voice.again`)]}):null,(0,Y.jsx)(G,{variant:`ghost`,size:`sm`,onClick:()=>n(void 0),children:K(`voice.remove`)})]})]})]}):(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[S?(0,Y.jsxs)(G,{variant:`secondary`,size:`lg`,onClick:()=>void w(),className:`w-full sm:w-auto`,children:[(0,Y.jsx)(I,{className:`size-4`}),` `,K(`voice.start`)]}):E,S&&h?E:null]}),h?(0,Y.jsx)(`p`,{className:`mt-2 rounded-lg bg-amber-tint px-3 py-2 text-[13px] text-ink-2 leading-relaxed`,children:K(`voice.denied`)}):(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3 leading-relaxed`,children:K(S?`voice.why`:`voice.noRecorder`)})]}),(0,Y.jsx)(`input`,{ref:b,type:`file`,hidden:!0,accept:`audio/*`,capture:!0,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&C(t,void 0)}}),f?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-rose`,children:f}):null]})}function mn(e,t){try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t}).format(e)}catch{return`${e.toFixed(2)} ${t}`}}function hn({field:e,value:t,values:n,onChange:r}){let i=e.columns??[],a=Array.isArray(t)&&t.length?t:[{}],o=de(e,a,n),s=(e,t,n)=>{r(a.map((r,i)=>i===e?{...r,[t]:n}:r))},c=i.map(e=>e.kind===`text`&&e===i[0]?`minmax(0,3fr)`:`minmax(0,1fr)`).join(` `);return(0,Y.jsxs)(`div`,{className:`rounded-xl bg-card p-2 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`hidden gap-2 px-2 pt-1 pb-2 text-[12px] text-ink-3 sm:grid`,style:{gridTemplateColumns:`${c} 36px`},children:i.map(e=>(0,Y.jsx)(`div`,{className:e.kind===`text`?``:`text-right`,children:e.label},e.id))}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-2`,children:a.map((e,t)=>(0,Y.jsxs)(`div`,{className:`grid grid-cols-6 gap-2 rounded-lg bg-paper p-2 sm:bg-transparent sm:p-0 sm:[grid-template-columns:var(--cols)]`,style:{"--cols":`${c} 36px`},children:[i.map((n,r)=>(0,Y.jsxs)(`label`,{className:H(`flex min-w-0 flex-col gap-1 sm:col-span-1`,r===0?`col-span-5`:i.length-1<=2?`col-span-3`:`col-span-2`),children:[(0,Y.jsx)(`span`,{className:`px-0.5 text-[11px] text-ink-3 sm:hidden`,children:n.label}),(0,Y.jsx)(`input`,{"aria-label":n.label,placeholder:n.label,inputMode:n.kind===`text`?`text`:`decimal`,autoComplete:`off`,value:String(e[n.id]??``),onChange:e=>s(t,n.id,e.target.value),className:H(`h-11 w-full min-w-0 rounded-md border border-transparent bg-paper-2 px-2.5 text-[14px] outline-none placeholder:text-transparent focus:border-focus focus:bg-card sm:placeholder:text-ink-4`,n.kind!==`text`&&`text-right tabular-nums`)})]},n.id)),(0,Y.jsx)(U,{label:K(`list.delete`),onClick:()=>r(a.filter((e,n)=>n!==t)),className:`order-first col-start-6 row-start-1 size-11 justify-self-end self-end sm:order-none sm:col-start-auto sm:row-start-auto`,children:(0,Y.jsx)(R,{className:`size-4`})})]},t))}),(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-end justify-between gap-3 px-2 pb-1`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r([...a,{}]),className:`inline-flex h-9 items-center gap-1.5 rounded-full px-3 text-[13px] text-ink-2 hover:bg-accent coarse:h-11`,children:[(0,Y.jsx)(N,{className:`size-4`}),` `,K(`run.addRow`)]}),(0,Y.jsxs)(`div`,{className:`text-right text-[13px] tabular-nums`,children:[(0,Y.jsxs)(`div`,{className:`text-ink-3`,children:[K(`run.net`),` `,mn(o.net,o.currency)]}),o.vatRate?(0,Y.jsxs)(`div`,{className:`text-ink-3`,children:[K(`run.vat`,{r:o.vatRate}),` `,mn(o.vat,o.currency)]}):null,(0,Y.jsxs)(`div`,{className:`font-semibold text-[15px] text-ink`,children:[K(`run.total`),` `,mn(o.gross,o.currency)]})]})]})]})}function gn(e){return!!e?.closest(`input, textarea, [contenteditable='true']`)}function _n({field:e,value:t,runId:n,onChange:i,onBusy:o}){let s=(0,J.useRef)(null),c=(0,J.useRef)(null),l=(0,J.useRef)(null),u=(0,J.useRef)(null),[d,p]=(0,J.useState)(!1),[h,_]=(0,J.useState)({}),[v,y]=(0,J.useState)(null),[b,x]=(0,J.useState)(!1),[S,C]=(0,J.useState)(!1),[w,T]=(0,J.useState)(null),E=(0,J.useRef)(null),D=e=>{E.current=e,T(e)},k=e.kind===`image`,A=!!e.multiple,j=A?e.max??30:1,M=k||!!e.camera||!!e.video,N=!k&&!!e.video,P=Array.isArray(t)?t:typeof t==`string`&&t?[t]:[],F=(0,J.useRef)(P);F.current=P;let I=P.length<j,L=async e=>{let t=(k?e.filter(e=>e.type.startsWith(`image/`)):e).sort((e,t)=>e.name.localeCompare(t.name,void 0,{numeric:!0}));if(!t.length)return;let r=j-(A?F.current.length:0);p(!0),o?.(!0),y(t.length>r&&A?K(`run.maxFiles`,{n:j}):null);try{for(let e of t.slice(0,Math.max(0,r))){let t=await Ct(e),r=await a.upload(`/api/runs/${n}/uploads`,t);_(e=>({...e,[r.id]:{name:r.name,mime:r.mime}}));let o=A?[...F.current,r.id]:r.id;F.current=A?o:[r.id],i(o)}}catch(e){y(e.message)}finally{p(!1),o?.(!1)}},R=(0,J.useRef)(L);R.current=L;let ee=e=>{let t=P.filter(t=>t!==e);i(A?t:void 0)},te=(e,t)=>{let n=F.current.indexOf(e),r=Math.min(F.current.length-1,Math.max(0,t));if(n<0||n===r)return;let a=F.current.filter(t=>t!==e);a.splice(r,0,e),F.current=a,i(a)},z=A&&P.length>1;(0,J.useEffect)(()=>{if(!I)return;let e=e=>{let t=Array.from(e.clipboardData?.files??[]),n=s.current;if(!t.length||!n||gn(document.activeElement))return;let r=document.querySelectorAll(`[data-upload-field]`);(n.matches(`:hover`)||n.contains(document.activeElement)||r.length===1)&&(e.preventDefault(),R.current(t))};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[I]);let B=H(`flex flex-col items-center justify-center gap-2 rounded-xl border border-input border-dashed bg-card px-3 text-[14px] text-ink-3 transition hover:border-ember hover:text-ink`,P.length?`py-4`:`py-8`);return(0,Y.jsxs)(`div`,{ref:s,"data-upload-field":``,onDragOver:e=>{I&&(e.preventDefault(),C(!0))},onDragLeave:()=>C(!1),onDrop:e=>{C(!1),I&&(e.preventDefault(),L(Array.from(e.dataTransfer.files)))},children:[P.length?(0,Y.jsx)(`div`,{className:`mb-2 flex flex-col gap-2`,children:P.map((e,t)=>{let i=h[e],a=i?.mime??(k?`image/`:``);return(0,Y.jsxs)(`div`,{"data-file-id":e,className:H(`flex items-center gap-3 rounded-xl bg-card p-2 ring-1 ring-input transition-shadow`,w===e&&`relative z-10 shadow-elevated ring-2 ring-ember`),children:[z?(0,Y.jsxs)(`button`,{type:`button`,"aria-label":K(`run.moveFile`,{n:t+1}),title:K(`run.moveFileHint`),className:H(`-mr-1 flex h-14 w-9 shrink-0 touch-none flex-col items-center justify-center gap-0.5 rounded-lg text-ink-3 hover:bg-paper-2 hover:text-ink`,w===e?`cursor-grabbing`:`cursor-grab`),onPointerDown:t=>{try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}D(e)},onPointerMove:t=>{if(E.current!==e)return;let n=document.elementFromPoint(t.clientX,t.clientY)?.closest(`[data-file-id]`),r=n?.getAttribute(`data-file-id`);r&&r!==e&&s.current?.contains(n??null)&&te(e,F.current.indexOf(r))},onPointerUp:()=>D(null),onPointerCancel:()=>D(null),onKeyDown:n=>{(n.key===`ArrowUp`||n.key===`ArrowDown`)&&(n.preventDefault(),te(e,t+(n.key===`ArrowUp`?-1:1)))},children:[(0,Y.jsx)(`span`,{className:`font-medium text-[12px] tabular-nums`,children:t+1}),(0,Y.jsx)(Pe,{className:`size-4`})]}):null,a.startsWith(`image/`)?(0,Y.jsx)(`img`,{src:r(`/api/runs/${n}/assets/${e}`),alt:``,className:`size-14 rounded-lg object-cover`}):(0,Y.jsx)(`div`,{className:`flex size-12 shrink-0 items-center justify-center rounded-lg bg-paper-2`,children:a.startsWith(`video/`)?(0,Y.jsx)(O,{className:`size-5 text-ink-3`}):(0,Y.jsx)(f,{className:`size-5 text-ink-3`})}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-[14px]`,children:i?.name??`✓`}),(0,Y.jsx)(U,{label:K(`run.removeFile`),onClick:()=>ee(e),children:(0,Y.jsx)(q,{className:`size-4`})})]},e)})}):null,I?(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>c.current?.click(),className:H(B,`min-w-[9rem] flex-1 px-4`,S&&`border-ember text-ink`),children:[k?(0,Y.jsx)(Ie,{className:`size-6`}):(0,Y.jsx)(f,{className:`size-6`}),d?K(`run.uploading`):P.length?K(`run.uploadMore`):K(g?`run.uploadTouch`:`run.upload`)]}),M?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>m?x(!0):l.current?.click(),className:H(B,`w-28`),children:[(0,Y.jsx)(be,{className:`size-6`}),K(`run.camera`)]}):null,N&&!(m&&Pt)?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>u.current?.click(),className:H(B,`w-28`),children:[(0,Y.jsx)(ne,{className:`size-6`}),K(`camera.video`)]}):null]}):null,(0,Y.jsx)(`input`,{ref:c,type:`file`,hidden:!0,multiple:A,accept:k?`image/*`:void 0,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}),(0,Y.jsx)(`input`,{ref:l,type:`file`,hidden:!0,accept:`image/*`,capture:`environment`,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}),N?(0,Y.jsx)(`input`,{ref:u,type:`file`,hidden:!0,accept:`video/*`,capture:`environment`,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}):null,(0,Y.jsx)(Ft,{open:b,multiple:A,video:N,onClose:()=>x(!1),onCapture:e=>L([e]),onNative:()=>l.current?.click()}),A&&(e.min||e.max)?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-ink-3 tabular-nums`,children:e.min&&P.length<e.min?K(`run.filesMin`,{n:P.length,min:e.min}):e.max?K(`run.filesOf`,{n:P.length,max:e.max}):null}):null,v?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-rose`,children:v}):null]})}function vn(e){let t=`${e.id} ${e.label}`.toLowerCase();return/telefon|phone|handy|mobil(?!it)|\btel\b|rückruf/.test(t)?{type:`tel`,inputMode:`tel`,autoComplete:`tel`}:/\bplz\b|postleitzahl|postal|zip/.test(t)?{inputMode:`numeric`,autoComplete:`postal-code`}:/iban/.test(t)?{autoCapitalize:`characters`,autoCorrect:`off`,spellCheck:!1}:/vorname|first.?name/.test(t)?{autoComplete:`given-name`,autoCapitalize:`words`}:/nachname|last.?name|surname/.test(t)?{autoComplete:`family-name`,autoCapitalize:`words`}:/firma|unternehmen|company|organi[sz]ation/.test(t)?{autoComplete:`organization`,autoCapitalize:`words`}:/straße|strasse|street|anschrift|adresse|address/.test(t)?{autoComplete:`street-address`,autoCapitalize:`words`}:/\b(ort|stadt|city|town)\b/.test(t)?{autoComplete:`address-level2`,autoCapitalize:`words`}:/\bname\b|ansprechp/.test(t)?{autoComplete:`name`,autoCapitalize:`words`}:{autoCapitalize:`sentences`}}function yn({field:e,value:t,onChange:n}){let[r,i]=(0,J.useState)(!1);return(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)(W,{value:t,placeholder:e.placeholder,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,onChange:e=>n(e.target.value)}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>i(!0),className:`inline-flex h-11 shrink-0 items-center gap-2 rounded-lg border border-input bg-card px-3.5 font-medium text-[14px] text-ink-2 transition hover:border-ember hover:text-ink`,children:[(0,Y.jsx)(Xe,{className:`size-4`}),` `,K(`scan.button`)]}),(0,Y.jsx)(Ut,{open:r,onClose:()=>i(!1),onResult:n})]})}function bn({field:e,value:t,values:n,runId:r,view:i,onChange:a,onBusy:o,error:s}){let c=t==null?``:String(t),l;switch(e.kind){case`textarea`:l=(0,Y.jsx)(oe,{value:c,placeholder:e.placeholder,autoCapitalize:`sentences`,enterKeyHint:`enter`,onChange:e=>a(e.target.value)});break;case`number`:l=(0,Y.jsx)(W,{inputMode:`decimal`,autoComplete:`off`,value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)});break;case`select`:{let t=e.options??[];l=t.length<=5&&t.every(e=>e.length<=28)?(0,Y.jsx)(ae,{value:c,options:t,onChange:a}):(0,Y.jsx)(le,{value:c,placeholder:`—`,onChange:a,options:t.map(e=>({value:e,label:e}))});break}case`multiselect`:l=(0,Y.jsx)(ae,{multi:!0,value:Array.isArray(t)?t:[],options:e.options??[],onChange:a});break;case`date`:l=(0,Y.jsx)(W,{type:`date`,value:c,onChange:e=>a(e.target.value),className:`w-full sm:w-56`});break;case`email`:l=(0,Y.jsx)(W,{type:`email`,inputMode:`email`,autoComplete:`email`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)});break;case`url`:l=(0,Y.jsx)(W,{type:`url`,inputMode:`url`,autoComplete:`url`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,value:c,placeholder:e.placeholder??`https://`,onChange:e=>a(e.target.value)});break;case`toggle`:l=(0,Y.jsx)(ce,{checked:t===!0,onChange:a,label:e.label});break;case`color`:l=(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(re,{value:c||`#e0531b`,onChange:e=>a(e.target.value)}),(0,Y.jsx)(W,{value:c,placeholder:`#e0531b`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,onChange:e=>a(e.target.value),className:`w-36`})]});break;case`image`:case`file`:l=(0,Y.jsx)(_n,{field:e,value:t,runId:r,onChange:a,onBusy:o});break;case`items`:l=(0,Y.jsx)(hn,{field:e,value:t,values:n,onChange:a});break;case`connection`:l=(0,Y.jsx)(Qt,{runId:r,connection:i?.connections.find(t=>t.id===e.connection)});break;case`list`:{let t=i?.lists.find(t=>t.def.id===e.list);l=t?(0,Y.jsx)(tn,{runId:r,list:t,editable:!0}):null;break}case`location`:l=(0,Y.jsx)(zt,{value:t,runId:r,placeholder:e.placeholder,onChange:a,onBusy:o});break;case`audio`:l=(0,Y.jsx)(pn,{value:t,runId:r,onChange:a,onBusy:o});break;case`signature`:l=(0,Y.jsx)(Xt,{label:e.label,value:t,runId:r,onChange:a});break;default:l=e.scan?(0,Y.jsx)(yn,{field:e,value:c,onChange:a}):(0,Y.jsx)(W,{...vn(e),value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)})}return(0,Y.jsxs)(`div`,{children:[e.kind===`toggle`?(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-6`,children:[(0,Y.jsx)(B,{hint:e.help,children:e.label}),l]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(B,{hint:e.help,required:e.required,children:e.label}),l]}),s?(0,Y.jsx)(`div`,{className:`mt-1.5 text-[13px] text-rose`,children:s}):null]})}var xn=45e3;function Sn(e){let[t,n]=(0,J.useState)(null),[i,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)({});(0,J.useEffect)(()=>{if(n(null),l(!1),!e)return;let t=!1,i=0,s,c=null,u=Date.now(),d=()=>{t=!0,c?.close(),l(!0)},f=async()=>{try{let r=await a.get(`/api/runs/${e}`);t||n(r)}catch(e){e instanceof o&&e.status===404&&d()}},p=()=>{if(clearTimeout(s),c?.close(),t)return;let a=new EventSource(r(`/api/runs/${e}/stream`),{withCredentials:!0});c=a,u=Date.now(),a.addEventListener(`view`,e=>{i=0,u=Date.now(),n(JSON.parse(e.data))}),a.addEventListener(`ping`,()=>{u=Date.now()}),a.onerror=()=>{a.close(),!(t||c!==a)&&(c=null,f(),i=Math.min(i+1,6),s=setTimeout(p,500*2**i))}},m=()=>{t||document.visibilityState!==`visible`||(!c||c.readyState===EventSource.CLOSED||Date.now()-u>xn?(i=0,p()):f())},h=setInterval(()=>{!t&&c&&Date.now()-u>xn&&(i=0,p())},15e3);return p(),document.addEventListener(`visibilitychange`,m),window.addEventListener(`pageshow`,m),window.addEventListener(`online`,m),()=>{t=!0,clearTimeout(s),clearInterval(h),document.removeEventListener(`visibilitychange`,m),window.removeEventListener(`pageshow`,m),window.removeEventListener(`online`,m),c?.close()}},[e]);let m=(0,J.useCallback)(async(t,n)=>{if(!e)return!1;d(!0),s(null),p({});try{return await a.post(`/api/runs/${e}/${t}`,n),!0}catch(e){return e instanceof o&&e.status===422&&Array.isArray(e.body?.fields)&&p(Object.fromEntries(e.body.fields.map(e=>[e.field,e.message]))),s(e.message),!1}finally{d(!1)}},[e]);return{view:t,notFound:c,error:i,busy:u,fieldErrors:f,submitPage:(e,t)=>m(`pages/${e}`,{values:t}),accept:(e,t)=>m(`reviews/${e}`,{type:`accept`,edits:t}),regenerate:(e,t,n,r)=>m(`reviews/${e}`,{type:`regenerate`,target:t,note:n,items:r?.length?r:void 0}),back:()=>m(`back`),retry:()=>m(`retry`)}}function Cn({view:e}){let t=Math.round(Math.min(e.progress.done,e.progress.total)/Math.max(1,e.progress.total)*100);return(0,Y.jsx)(`div`,{className:`h-[3px] w-full bg-paper-2`,children:(0,Y.jsx)(`div`,{className:`h-full bg-ember transition-[width] duration-700 ease-out`,style:{width:`${t}%`}})})}function wn({title:e,description:t,kicker:n}){return(0,Y.jsxs)(`div`,{className:`mb-8`,children:[n?(0,Y.jsx)(`p`,{className:`mb-4 text-[15px] text-ink-2 leading-relaxed`,children:n}):null,(0,Y.jsx)(`h1`,{className:`font-display font-semibold text-[28px] leading-[1.15] tracking-tight sm:text-[32px]`,children:e}),t?(0,Y.jsx)(`p`,{className:`mt-2 text-[15px] text-ink-3 leading-relaxed`,children:t}):null]})}function Tn(e,t){let n={};for(let r of e.fields)n[r.id]=t.values[r.id]??t.prefill?.[r.id]??r.default??(r.kind===`multiselect`?[]:void 0);return n}function En(e){return Array.from(e.querySelectorAll(`input:not([type="hidden"], [type="file"], [type="checkbox"], [type="color"], [type="range"], [disabled]), textarea:not([disabled])`)).filter(e=>!e.closest(`dialog`)&&e.offsetParent!==null)}function Dn({view:e,run:t,step:n}){let[r,i]=(0,J.useState)(()=>Tn(n,e)),[a,o]=(0,J.useState)(new Set),s=(0,J.useRef)(null),c=e.progress.done===0,l=()=>void t.submitPage(n.id,r);return(0,J.useEffect)(()=>{if(!s.current)return;let e=En(s.current).filter(e=>e instanceof HTMLInputElement);for(let[t,n]of e.entries())(n.dataset.hint||!n.hasAttribute(`enterkeyhint`))&&(n.dataset.hint=`1`,n.setAttribute(`enterkeyhint`,t===e.length-1?`go`:`next`))}),(0,Y.jsxs)(`form`,{ref:s,className:`animate-rise`,onSubmit:e=>{e.preventDefault(),a.size||l()},onKeyDown:e=>{let t=e.target;if(e.key!==`Enter`||e.defaultPrevented||e.nativeEvent.isComposing||!(t instanceof HTMLInputElement)||t.closest(`dialog`))return;let n=En(e.currentTarget),r=n[n.indexOf(t)+1];r&&(e.preventDefault(),r.focus())},children:[(0,Y.jsx)(wn,{title:n.title,description:n.description,kicker:c?e.wizard.intro:null}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-7`,children:n.fields.map(n=>(0,Y.jsx)(bn,{field:n,value:r[n.id],values:r,runId:e.id,view:e,error:t.fieldErrors[n.id],onChange:e=>i(t=>({...t,[n.id]:e})),onBusy:e=>o(t=>{if(t.has(n.id)===e)return t;let r=new Set(t);return e?r.add(n.id):r.delete(n.id),r})},n.id))}),(0,Y.jsx)(On,{view:e,run:t,sticky:!0,children:(0,Y.jsxs)(G,{type:`submit`,size:`lg`,busy:t.busy,disabled:a.size>0,children:[n.cta||K(`run.next`),` `,(0,Y.jsx)(u,{className:`size-4`})]})})]})}function On({view:e,run:t,sticky:n,children:r}){return(0,Y.jsxs)(`div`,{className:H(`mt-10 flex items-center justify-between gap-3`,n&&`action-bar`),children:[e.canBack?(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>void t.back(),disabled:t.busy,children:[(0,Y.jsx)(l,{className:`size-4`}),` `,K(`run.back`)]}):(0,Y.jsx)(`span`,{}),r]})}function kn(){let e=v(),[t,n]=(0,J.useState)(!1),r=e!==`off`;return(0,Y.jsxs)(`div`,{className:`mt-6 flex flex-col items-center gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,"aria-pressed":r,disabled:t,onClick:async()=>{if(r){C();return}n(!0),await T(),n(!1)},className:H(`inline-flex h-11 items-center gap-2 rounded-full px-4 font-medium text-[14px] ring-1 transition`,r?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink hover:ring-ink-4`),children:[r?(0,Y.jsx)(ge,{className:`size-4 text-ember-strong`}):(0,Y.jsx)(ve,{className:`size-4`}),K(r?`notify.on`:`notify.ask`)]}),(0,Y.jsx)(`p`,{className:`max-w-xs text-[12px] text-ink-4 leading-relaxed`,children:K(e===`off`?`notify.why`:e===`on`?`notify.onHint`:S()?`notify.blocked`:`notify.quiet`)})]})}function An({view:e,compact:t,awake:n}){let a=(0,J.useMemo)(()=>{let t=[...e.events].reverse().find(t=>t.type===`step_started`&&t.stepId===e.step?.id);return t?new Date(t.at).getTime():Date.now()},[e.events,e.step?.id]),[o,s]=(0,J.useState)(Date.now());(0,J.useEffect)(()=>{let e=setInterval(()=>s(Date.now()),1e3);return()=>clearInterval(e)},[]);let c=[...e.events].reverse().find(t=>t.type===`step_started`&&t.stepId===e.step?.id)?.message??e.step?.title??K(`run.working`),l=e.events.filter(e=>(e.type===`tool`||e.type===`info`)&&new Date(e.at).getTime()>=a-500),u=l.slice(-4),d=[...new Set(l.map(e=>e.asset).filter(e=>!!e))],f=[...l].reverse().find(e=>e.asset)?.asset;return(0,Y.jsxs)(`div`,{className:`flex animate-rise flex-col items-center pt-6 text-center`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:t?130:170,fluffy:!0}),(0,Y.jsx)(`h2`,{className:`mt-4 font-display font-semibold text-[22px] tracking-tight`,children:c}),(0,Y.jsx)(`div`,{className:`mt-1 text-[13px] text-ink-4 tabular-nums`,children:K(`run.elapsed`,{s:Math.max(0,Math.round((o-a)/1e3))})}),d.length?(0,Y.jsx)(`div`,{className:`mt-5 flex max-w-full flex-wrap justify-center gap-2`,children:d.slice(-8).map(t=>(0,Y.jsx)(`img`,{src:r(`/api/runs/${e.id}/assets/${t}`),alt:``,className:H(`size-16 animate-rise rounded-lg bg-paper-2 object-cover ring-1 ring-border-soft transition sm:size-20`,t===f?`ring-2 ring-ember`:`opacity-70`)},t))}):null,(0,Y.jsx)(`div`,{className:`mt-6 flex min-h-[7rem] w-full max-w-sm flex-col gap-1.5`,children:u.map((e,t)=>(0,Y.jsxs)(`div`,{className:H(`flex items-center justify-center gap-2 text-[13px] transition-opacity`,t===u.length-1?`text-ink-2`:`text-ink-4`),children:[t===u.length-1?(0,Y.jsx)(h,{className:`size-3.5 animate-breathe text-ember`}):null,(0,Y.jsx)(`span`,{className:`truncate`,children:e.message})]},e.id))}),t?null:(0,Y.jsx)(kn,{}),n?(0,Y.jsx)(`p`,{className:`mt-3 text-[12px] text-ink-4`,children:K(`run.awake`)}):null]})}function jn(e){let t=(0,J.useRef)({running:!1,since:0,ask:null});(0,J.useEffect)(()=>{if(!e)return;let n=t.current,r=e.status===`running`,i=r?n.running?n.since:Date.now():0,a=t=>{document.visibilityState!==`visible`&&!document.title.startsWith(`● `)&&(document.title=`● ${document.title}`),D({title:e.wizard.title,body:t,tag:e.id})};r&&e.ask&&e.ask.id!==n.ask?a(K(`notify.needsYou`)):!r&&n.running&&Date.now()-n.since>8e3&&a(e.status===`failed`?K(`run.failed`):e.status===`done`?K(`notify.done`):K(`notify.next`)),t.current={running:r,since:i,ask:e.ask?.id??null}},[e]),(0,J.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&document.title.startsWith(`● `)&&(document.title=document.title.slice(2))};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[])}function Mn({view:e,run:t,step:n}){let[r,i]=(0,J.useState)({}),[a,o]=(0,J.useState)({}),[s,c]=(0,J.useState)(``),l=e.shown.filter(e=>e.output),[d,f]=(0,J.useState)(l.length===1?l[0].step.id:null),[p,m]=(0,J.useState)({}),h=(0,J.useRef)(null),g=l.find(e=>e.step.id===d),_=g?.step.type===`generate`&&(g.output?.assets?.length??0)>1,v=()=>{g&&s.trim()&&t.regenerate(n.id,g.step.id,s.trim(),p[g.step.id])};return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsx)(wn,{title:n.title,description:n.description}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[e.shown.map(({step:t,output:s})=>{let c=!!n.edit&&t.type===`agent`&&t.output.format!==`json`;return(0,Y.jsxs)(`section`,{children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-medium text-[13px] text-ink-3 uppercase tracking-[0.06em]`,children:t.title}),(0,Y.jsx)(`div`,{className:`flex items-center`,children:c&&!a[t.id]?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>({...e,[t.id]:!0})),className:`inline-flex h-8 items-center gap-1.5 rounded-full px-3 text-[13px] text-ink-2 hover:bg-accent hover:text-ink coarse:h-11`,children:[(0,Y.jsx)(k,{className:`size-3.5`}),` `,K(`run.edit`)]}):null})]}),(0,Y.jsx)(x,{base:`/api/runs/${e.id}`,step:t,output:s,editable:c&&a[t.id],draft:r[t.id],onDraft:e=>i(n=>({...n,[t.id]:e})),picked:p[t.id],onPick:n.regenerate?e=>{f(t.id),m(n=>{let r=n[t.id]??[];return{...n,[t.id]:r.includes(e)?r.filter(t=>t!==e):[...r,e]}}),h.current?.focus()}:void 0})]},t.id)}),e.lists.map(t=>(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(`h3`,{className:`mb-2 font-medium text-[13px] text-ink-3 uppercase tracking-[0.06em]`,children:t.def.title}),t.def.check?(0,Y.jsx)(an,{runId:e.id,list:t}):(0,Y.jsx)(tn,{runId:e.id,list:t,editable:!0})]},t.def.id)),n.regenerate&&l.length?(0,Y.jsxs)(se,{className:`p-3`,children:[l.length>1?(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 pb-2`,children:[(0,Y.jsx)(`span`,{className:`mr-1 text-[13px] text-ink-3`,children:K(`run.feedbackTarget`)}),l.map(({step:e})=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":d===e.id,onClick:()=>{f(e.id),h.current?.focus()},className:H(`inline-flex h-8 items-center rounded-full px-3 text-[13px] ring-1 transition coarse:h-11`,d===e.id?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink`),children:e.title},e.id))]}):null,(0,Y.jsx)(oe,{ref:h,minRows:2,maxRows:8,value:s,placeholder:K(`run.feedbackPlaceholder`),onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),v())},className:`border-0 bg-transparent shadow-none focus:ring-0`}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-1 pt-1`,children:[(0,Y.jsx)(`span`,{className:`min-w-0 text-[12px] text-ink-3`,children:_?p[g.step.id]?.length?K(`run.regeneratePicked`,{n:[...p[g.step.id]].sort((e,t)=>e-t).map(e=>e+1).join(`, `)}):K(`run.regenerateAll`):!g&&s.trim()?K(`run.feedbackPick`):null}),(0,Y.jsxs)(G,{size:`sm`,variant:`secondary`,busy:t.busy,disabled:!s.trim()||!g,onClick:v,children:[(0,Y.jsx)(te,{className:`size-3.5`}),` `,K(`run.regenerateGo`)]})]})]}):null]}),(0,Y.jsx)(On,{view:e,run:t,sticky:!0,children:(0,Y.jsxs)(G,{size:`lg`,busy:t.busy,onClick:()=>void t.accept(n.id,Object.keys(r).length?r:void 0),children:[K(`run.accept`),` `,(0,Y.jsx)(u,{className:`size-4`})]})})]})}function Nn({view:e,run:t,step:n,onRestart:r}){let a=e.shown.filter(e=>e.output);return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-8 flex flex-wrap items-center gap-x-4 gap-y-5`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:64}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1 basis-[12rem]`,children:[(0,Y.jsx)(`h1`,{className:`text-balance font-display font-semibold text-[28px] leading-tight tracking-tight sm:text-[32px]`,children:n.title}),n.message?(0,Y.jsx)(`p`,{className:`mt-1 text-[15px] text-ink-3`,children:n.message}):null]}),e.shown.some(e=>e.output)?(0,Y.jsx)(`div`,{className:`max-sm:basis-full`,children:(0,Y.jsx)(lt,{runId:e.id,title:`${n.title} · ${e.wizard.title}`,initial:e.shareUrl?{url:e.shareUrl,expiresAt:e.expiresAt}:null})}):null]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[a.map(({step:t,output:n,formats:r,label:i})=>(0,Y.jsxs)(se,{className:`p-4 sm:p-5`,children:[(0,Y.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-display font-semibold text-[17px]`,children:i??t.title}),(0,Y.jsx)(E,{base:`/api/runs/${e.id}`,stepId:t.id,formats:r,title:i??t.title})]}),(0,Y.jsx)(x,{base:`/api/runs/${e.id}`,step:t,output:n}),n?.assets?.some(e=>e.ai)?(0,Y.jsx)(`p`,{className:`mt-3 text-[12px] text-ink-3 leading-relaxed`,children:K(`ai.publish`)}):null]},t.id)),e.lists.map(t=>(0,Y.jsxs)(se,{className:`p-4 sm:p-5`,children:[(0,Y.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-display font-semibold text-[17px]`,children:t.label??t.def.title}),(0,Y.jsx)(sn,{runId:e.id,list:t})]}),(0,Y.jsx)(tn,{runId:e.id,list:t,editable:!0})]},t.def.id))]}),(0,Y.jsx)(On,{view:e,run:t,children:r?(0,Y.jsxs)(G,{variant:`secondary`,onClick:r,children:[(0,Y.jsx)(Je,{className:`size-4`}),` `,K(`run.again`)]}):(0,Y.jsx)(`span`,{})})]})}function Pn({view:e,run:t}){return(0,Y.jsxs)(`div`,{className:`flex animate-rise flex-col items-center pt-8 text-center`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:90}),(0,Y.jsx)(`h2`,{className:`mt-4 font-display font-semibold text-[22px]`,children:K(`run.failed`)}),(0,Y.jsx)(`p`,{className:`mt-2 max-w-md text-[15px] text-ink-3`,children:e.error}),(0,Y.jsxs)(`div`,{className:`mt-8 flex gap-3`,children:[e.canBack?(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>void t.back(),children:[(0,Y.jsx)(l,{className:`size-4`}),` `,K(`run.back`)]}):null,(0,Y.jsxs)(G,{onClick:()=>void t.retry(),busy:t.busy,children:[(0,Y.jsx)(Je,{className:`size-4`}),` `,K(`run.retry`)]})]})]})}function Fn({runId:e,compact:t,onRestart:n,onView:r,stickyProgress:i}){let a=Sn(e),{view:o}=a;(0,J.useEffect)(()=>{r?.(o)},[o,r]),_();let s=w(o?.status===`running`&&!o.ask);if(jn(o),a.notFound)return(0,Y.jsx)(`div`,{className:`py-24 text-center text-ink-3`,children:K(`run.notFound`)});if(!o)return(0,Y.jsx)(`div`,{className:`flex justify-center py-24 text-ink-4`,children:(0,Y.jsx)(V,{})});let c=o.step,l=null;if(o.status===`running`&&o.ask)l=(0,Y.jsx)(ut,{runId:o.id,ask:o.ask},o.ask.id);else if(o.status===`running`)l=(0,Y.jsx)(An,{view:o,compact:t,awake:s});else if(o.status===`failed`)l=(0,Y.jsx)(Pn,{view:o,run:a});else if(o.status===`cancelled`)l=(0,Y.jsx)(`div`,{className:`py-24 text-center text-ink-3`,children:K(`run.cancelled`)});else if(c?.type===`page`)l=(0,Y.jsx)(Dn,{view:o,run:a,step:c},c.id);else if(c?.type===`review`){let e=o.shown.map(e=>e.output?.at??``).join(`|`);l=(0,Y.jsx)(Mn,{view:o,run:a,step:c},`${c.id}:${e}`)}else c?.type===`result`&&(l=(0,Y.jsx)(Nn,{view:o,run:a,step:c,onRestart:n}));let u=c?.type===`review`&&o.status===`waiting_input`&&o.lists.some(e=>e.def.check);return(0,Y.jsxs)(`div`,{className:`flex min-h-full flex-col`,children:[i?(0,Y.jsx)(`div`,{className:`sticky top-0 z-10`,children:(0,Y.jsx)(Cn,{view:o})}):(0,Y.jsx)(Cn,{view:o}),(0,Y.jsxs)(`div`,{className:H(`safe-x mx-auto w-full flex-1`,u?`max-w-[1240px] py-8`:t?`max-w-[620px] py-8`:`max-w-[640px] py-8 sm:py-16`),children:[l,a.error&&o.status!==`failed`?(0,Y.jsx)(`div`,{className:`mt-4 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:a.error}):null,o.keeps&&o.status!==`running`?(0,Y.jsx)(`div`,{className:`mt-10 flex justify-center`,children:(0,Y.jsx)(ln,{runId:o.id})}):null]})]})}export{Qe as n,me as r,Fn as t};
|
|
2
|
+
import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{c as r,d as i,n as a,t as o}from"./api-u3nydnnp.js";import{t as s}from"./preload-helper-CNEI7N0N.js";import{t as c}from"./createLucideIcon-q3MZMmnf.js";import{t as l}from"./arrow-left-hTN1VoH1.js";import{t as u}from"./arrow-right-6FyN3e7D.js";import{C as d,S as f,T as p,a as m,b as h,c as g,d as _,f as v,g as y,h as b,i as x,l as S,o as C,p as w,s as T,t as E,u as D,w as O,x as k,y as A}from"./outputs-BDP8UsZT.js";import{t as j}from"./check-CUpby_J9.js";import{n as M,t as N}from"./plus-Du-Jx8aI.js";import{t as P}from"./external-link-MAL7vJYj.js";import{n as F,t as I}from"./mic-Bvz4mA2j.js";import{n as L,t as R}from"./trash-0IafyhZB.js";import{t as ee}from"./pen-line-NK46C_nG.js";import{t as te}from"./refresh-cw-Cmk7VCe0.js";import{t as ne}from"./video-DBmwF1Jm.js";import{_ as z,c as B,d as V,f as re,h as H,i as ie,l as ae,m as oe,n as se,o as U,p as ce,s as W,t as G,u as le,y as K}from"./ui-gGAdXx-P.js";import{E as q}from"./index-Bl5vhqT3.js";import{d as ue,f as de,u as fe}from"./definition-Co2Mg1qo.js";var pe={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};pe.node;var me=c(pe),he={name:`bell-ring`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]};he.node;var ge=c(he),_e={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};_e.node;var ve=c(_e),ye={name:`camera`,size:24,node:[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]};ye.node;var be=c(ye),xe={name:`corner-down-left`,size:24,node:[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]};xe.node;var Se=c(xe),Ce={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Ce.node;var we=c(Ce),Te={name:`eraser`,size:24,node:[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`,key:`g5wo59`}],[`path`,{d:`m5.082 11.09 8.828 8.828`,key:`1wx5vj`}]]};Te.node;var Ee=c(Te),De={name:`file-headphone`,size:24,node:[[`path`,{d:`M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343`,key:`1vfytu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0`,key:`1etmh7`}]],aliases:[`file-audio`,`file-audio-2`]};De.node;var Oe=c(De),ke={name:`flashlight-off`,size:24,node:[[`path`,{d:`M11.652 6H18`,key:`voqkpr`}],[`path`,{d:`M12 13v1`,key:`176q98`}],[`path`,{d:`M16 16v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V6`,key:`dzyf92`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M7.649 2H17a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8a4 4 0 0 0-.55 1.007`,key:`1hvcfn`}]]};ke.node;var Ae=c(ke),je={name:`flashlight`,size:24,node:[[`path`,{d:`M12 13v1`,key:`176q98`}],[`path`,{d:`M17 2a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8A4 4 0 0 0 16 12v8a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V3a1 1 0 0 1 1-1z`,key:`17vh7j`}],[`path`,{d:`M6 6h12`,key:`n6hhss`}]]};je.node;var Me=c(je),Ne={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};Ne.node;var Pe=c(Ne),Fe={name:`image-plus`,size:24,node:[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};Fe.node;var Ie=c(Fe),Le={name:`image-up`,size:24,node:[[`path`,{d:`M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21`,key:`9csbqa`}],[`path`,{d:`m14 19.5 3-3 3 3`,key:`9vmjn0`}],[`path`,{d:`M17 22v-5.5`,key:`1aa6fl`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};Le.node;var Re=c(Le),ze={name:`locate-fixed`,size:24,node:[[`line`,{x1:`2`,x2:`5`,y1:`12`,y2:`12`,key:`bvdh0s`}],[`line`,{x1:`19`,x2:`22`,y1:`12`,y2:`12`,key:`1tbv5k`}],[`line`,{x1:`12`,x2:`12`,y1:`2`,y2:`5`,key:`11lu5j`}],[`line`,{x1:`12`,x2:`12`,y1:`19`,y2:`22`,key:`x3vr5v`}],[`circle`,{cx:`12`,cy:`12`,r:`7`,key:`fim9np`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};ze.node;var Be=c(ze),Ve={name:`lock-keyhole`,size:24,node:[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]};Ve.node;var He=c(Ve),Ue={name:`map-pin`,size:24,node:[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]};Ue.node;var We=c(Ue),Ge={name:`pencil-line`,size:24,node:[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]};Ge.node;var Ke=c(Ge),qe={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};qe.node;var Je=c(qe),Ye={name:`scan-line`,size:24,node:[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]};Ye.node;var Xe=c(Ye),Ze={name:`share-2`,size:24,node:[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]};Ze.node;var Qe=c(Ze),$e={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};$e.node;var et=c($e),tt={name:`switch-camera`,size:24,node:[[`path`,{d:`M11 19H4a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5`,key:`mtk2lu`}],[`path`,{d:`M13 5h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-5`,key:`120jsl`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`path`,{d:`m18 22-3-3 3-3`,key:`kgdoj7`}],[`path`,{d:`m6 2 3 3-3 3`,key:`1fnbkv`}]]};tt.node;var nt=c(tt),rt={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};rt.node;var it=c(rt),at={name:`unplug`,size:24,node:[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]};at.node;var ot=c(at),J=e(t(),1),Y=e(n(),1);function st(e,t){let n=encodeURIComponent(e),r=encodeURIComponent(t);return[{id:`mail`,label:K(`shareRun.email`),href:`mailto:?subject=${r}&body=${r}%0A%0A${n}`},{id:`x`,label:`X`,href:`https://x.com/intent/post?text=${r}&url=${n}`},{id:`linkedin`,label:`LinkedIn`,href:`https://www.linkedin.com/sharing/share-offsite/?url=${n}`},{id:`whatsapp`,label:`WhatsApp`,href:`https://wa.me/?text=${r}%20${n}`},{id:`facebook`,label:`Facebook`,href:`https://www.facebook.com/sharer/sharer.php?u=${n}`}]}var ct={x:`𝕏`,linkedin:`in`,whatsapp:`WA`,facebook:`f`};function lt({runId:e,title:t,initial:n}){let[r,i]=(0,J.useState)(!1),[o,s]=(0,J.useState)(n),[c,l]=(0,J.useState)(!1),[u,f]=(0,J.useState)(!1),[p,m]=(0,J.useState)(null),h=async()=>{if(i(!0),!o){l(!0),m(null);try{s(await a.post(`/api/runs/${e}/share`))}catch(e){m(e.message)}finally{l(!1)}}},g=async()=>{await a.del(`/api/runs/${e}/share`),s(null),i(!1)},_=()=>{o&&(navigator.clipboard.writeText(o.url),f(!0),setTimeout(()=>f(!1),1500))},v=y(`share`)||typeof navigator<`u`&&`share`in navigator,x=o?.expiresAt?new Intl.DateTimeFormat(z,{dateStyle:`long`}).format(new Date(o.expiresAt)):null;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(G,{variant:`secondary`,onClick:()=>void h(),children:[(0,Y.jsx)(Qe,{className:`size-4`}),` `,K(`shareRun.button`)]}),(0,Y.jsx)(ie,{open:r,onClose:()=>i(!1),title:K(`shareRun.title`),children:c?(0,Y.jsx)(`div`,{className:`flex justify-center py-8 text-ink-4`,children:(0,Y.jsx)(V,{})}):p?(0,Y.jsx)(`p`,{className:`rounded-lg bg-rose-tint px-3 py-2 text-[14px] text-rose`,children:p}):o?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-paper-2 p-1.5 pl-3`,children:[(0,Y.jsx)(L,{className:`size-4 shrink-0 text-ink-3`}),(0,Y.jsx)(`input`,{readOnly:!0,value:o.url,onFocus:e=>e.target.select(),"aria-label":K(`share.link`),className:`min-w-0 flex-1 bg-transparent text-[14px] outline-none coarse:h-11`}),(0,Y.jsxs)(G,{size:`sm`,onClick:_,children:[u?(0,Y.jsx)(j,{className:`size-3.5`}):(0,Y.jsx)(M,{className:`size-3.5`}),K(u?`share.copied`:`share.copy`)]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 sm:grid-cols-6`,children:[st(o.url,t).map(e=>(0,Y.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer`,className:`flex flex-col items-center gap-1.5 text-[12px] text-ink-2 hover:text-ink`,children:[(0,Y.jsx)(`span`,{className:`inline-flex size-12 items-center justify-center rounded-full bg-paper-2 font-semibold text-[15px] transition hover:bg-paper-3`,children:e.id===`mail`?(0,Y.jsx)(d,{className:`size-5`}):ct[e.id]}),e.label]},e.id)),v?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void(y(`share`)?b(`share`,{link:o.url,title:t}):navigator.share({title:t,url:o.url})).catch(()=>void 0),className:`flex flex-col items-center gap-1.5 text-[12px] text-ink-2 hover:text-ink`,children:[(0,Y.jsx)(`span`,{className:`inline-flex size-12 items-center justify-center rounded-full bg-paper-2 transition hover:bg-paper-3`,children:(0,Y.jsx)(Qe,{className:`size-5`})}),K(`shareRun.more`)]}):null]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-[13px] text-ink-3`,children:[(0,Y.jsx)(`span`,{children:x?K(`shareRun.until`,{date:x}):K(`shareRun.kept`)}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void g(),className:`shrink-0 hover:text-rose coarse:min-h-11`,children:K(`shareRun.withdraw`)})]})]}):null})]})}function ut({runId:e,ask:t}){return t.kind===`confirm`?(0,Y.jsx)(dt,{runId:e,ask:t}):(0,Y.jsx)(ft,{runId:e,ask:t})}function dt({runId:e,ask:t}){let[n,r]=(0,J.useState)(!1),[i,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(null),l=async n=>{o(!0),c(null);try{await a.post(`/api/runs/${e}/ask/${t.id}`,n)}catch(e){c(e.message),o(!1)}},u=t.action.destructive?it:Ke;return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-5 flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:H(`flex size-10 shrink-0 items-center justify-center rounded-full`,t.action.destructive?`bg-rose-tint text-rose`:`bg-ember-tint text-ember-strong`),children:(0,Y.jsx)(u,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:K(`ask.wants`,{service:t.service})}),(0,Y.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-snug tracking-tight`,children:t.reason})]})]}),(0,Y.jsx)(`pre`,{className:`max-h-72 overflow-auto whitespace-pre-wrap break-words rounded-xl bg-paper-2 p-4 text-[13px] leading-relaxed ring-1 ring-border-soft`,children:t.input}),(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center gap-4`,children:[(0,Y.jsx)(ce,{checked:n,onChange:r,label:K(`ask.allowRest`)}),(0,Y.jsx)(`span`,{className:`flex-1 text-[13px] text-ink-2`,children:K(`ask.allowRest`)})]}),s?(0,Y.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:s}):null,(0,Y.jsxs)(`div`,{className:`action-bar mt-6 flex items-center justify-between gap-3`,children:[(0,Y.jsx)(G,{variant:`ghost`,disabled:i,onClick:()=>void l({type:`skip`}),children:K(`ask.deny`)}),(0,Y.jsx)(G,{busy:i,onClick:()=>void l({type:`done`,remember:n}),children:K(`ask.allow`)})]})]})}function ft({runId:e,ask:t}){let[n,i]=(0,J.useState)({}),[o,s]=(0,J.useState)(!1),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(null),[f,m]=(0,J.useState)(0),[h,g]=(0,J.useState)(``),[_,v]=(0,J.useState)(!1),y=(0,J.useRef)(null),b=(0,J.useCallback)(()=>m(e=>e+1),[]);(0,J.useEffect)(()=>{let e=setInterval(b,2500);return()=>clearInterval(e)},[b]);let x=async n=>{l(!0),d(null);try{await a.post(`/api/runs/${e}/ask/${t.id}`,n)}catch(e){d(e.message),l(!1)}},S=async t=>{d(null);try{await a.post(`/api/runs/${e}/browser/act`,t)}catch(e){d(e.message)}b()},C=e=>{let t=y.current;if(!t?.naturalWidth)return;let n=t.getBoundingClientRect();S({type:`click`,x:Math.round((e.clientX-n.left)/n.width*t.naturalWidth),y:Math.round((e.clientY-n.top)/n.height*t.naturalHeight)})},w=t.fields.some(e=>n[e.id]);return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-5 flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-ember-tint text-ember-strong`,children:(0,Y.jsx)(He,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-snug tracking-tight`,children:t.reason}),(0,Y.jsxs)(`p`,{className:`mt-0.5 truncate text-[13px] text-ink-3`,children:[t.site.host,t.site.title?` · ${t.site.title}`:``]})]})]}),(0,Y.jsxs)(`div`,{className:`overflow-hidden rounded-xl bg-paper-2 ring-1 ring-border-soft`,children:[(0,Y.jsx)(`img`,{ref:y,src:r(`/api/runs/${e}/browser/screen?t=${f}`),alt:t.site.host,onClick:C,className:`block w-full cursor-pointer`}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-border-soft border-t bg-card p-2`,children:[(0,Y.jsx)(W,{type:_?`password`:`text`,autoComplete:`off`,value:h,placeholder:K(`ask.typeInto`),onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),S({type:`type`,text:h}).then(()=>g(``)))},autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:`send`,className:`h-9 min-w-[9rem] flex-1 basis-full text-[13px] sm:basis-0 coarse:h-11`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:H(`h-9 shrink-0 rounded-md px-2.5 text-[12px] coarse:h-11 coarse:px-3.5`,_?`bg-ember-veil text-ink`:`text-ink-3 hover:bg-paper-2`),children:K(`ask.hide`)}),(0,Y.jsx)(pt,{label:`Enter`,onClick:()=>void S({type:`key`,key:`Enter`}),children:(0,Y.jsx)(Se,{className:`size-4`})}),(0,Y.jsx)(pt,{label:K(`ask.up`),onClick:()=>void S({type:`scroll`,dy:-500}),children:(0,Y.jsx)(p,{className:`size-4`})}),(0,Y.jsx)(pt,{label:K(`ask.down`),onClick:()=>void S({type:`scroll`,dy:500}),children:(0,Y.jsx)(me,{className:`size-4`})})]})]}),(0,Y.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-4`,children:K(`ask.pictureHint`)}),t.fields.length?(0,Y.jsxs)(`form`,{className:`mt-5 flex flex-col gap-4`,onSubmit:e=>{e.preventDefault(),x({type:`fill`,values:n,remember:o})},children:[t.fields.map((e,r)=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(B,{children:e.label}),(0,Y.jsx)(W,{autoFocus:r===0,type:e.secret?`password`:`text`,autoComplete:`off`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:r===t.fields.length-1?`go`:`next`,value:n[e.id]??``,onChange:t=>i(n=>({...n,[e.id]:t.target.value}))})]},e.id)),(0,Y.jsx)(`button`,{type:`submit`,hidden:!0})]}):null,(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-4`,children:[(0,Y.jsx)(ce,{checked:o,onChange:s,label:K(`ask.remember`)}),(0,Y.jsx)(`span`,{className:`flex-1 text-[13px] text-ink-2`,children:K(`ask.remember`)})]}),(0,Y.jsxs)(`p`,{className:`mt-3 flex items-start gap-2 text-[13px] text-ink-3`,children:[(0,Y.jsx)(et,{className:`mt-0.5 size-4 shrink-0 text-moss`}),` `,K(`ask.private`)]}),u?(0,Y.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:u}):null,(0,Y.jsxs)(`div`,{className:`action-bar mt-6 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(G,{variant:`ghost`,disabled:c,onClick:()=>void x({type:`skip`}),children:K(`ask.skip`)}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[t.fields.length?(0,Y.jsx)(G,{variant:`secondary`,disabled:c,onClick:()=>void x({type:`done`,remember:o}),children:K(`ask.done`)}):null,t.fields.length?(0,Y.jsx)(G,{busy:c,disabled:!w,onClick:()=>void x({type:`fill`,values:n,remember:o}),children:K(`ask.signIn`)}):(0,Y.jsx)(G,{busy:c,onClick:()=>void x({type:`done`,remember:o}),children:K(`ask.done`)})]})]})]})}function pt({label:e,onClick:t,children:n}){return(0,Y.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:t,className:`flex size-9 shrink-0 items-center justify-center rounded-md text-ink-3 hover:bg-paper-2 hover:text-ink coarse:size-11`,children:n})}var X=36e5,Z=6e4,mt=1e3;function ht(e){return e.fractionDigits===void 0?e.style===`integer`?0:2:e.fractionDigits}function gt(e,t,n=`en`){if(typeof e!=`number`||!Number.isFinite(e))return``;let r=ht(t),i=t.grouping!==!1;return t.style===`percent`?new Intl.NumberFormat(n,{maximumFractionDigits:r,minimumFractionDigits:r,style:`percent`,useGrouping:i}).format(e):t.style===`currency`&&t.currency?new Intl.NumberFormat(n,{currency:t.currency,maximumFractionDigits:r,minimumFractionDigits:r,style:`currency`,useGrouping:i}).format(e):new Intl.NumberFormat(n,{maximumFractionDigits:r,minimumFractionDigits:r,useGrouping:i}).format(e)}function _t(e,t,n=`en`){if(typeof e!=`string`||e.length===0)return``;if(t.kind===`time`)return vt(e,t.timePrecision??`minutes`);if(t.dateStyle===`iso`)return t.kind===`date`?e.slice(0,10):e;let r=t.kind===`date`?new Date(`${e}T00:00:00`):new Date(e);if(Number.isNaN(r.getTime()))return e;let i=t.dateStyle??`medium`;if(t.kind===`date`)return new Intl.DateTimeFormat(n,{dateStyle:i}).format(r);let a=t.timePrecision??`minutes`;return new Intl.DateTimeFormat(n,{dateStyle:i,timeStyle:a===`hours`?`short`:`medium`}).format(r)}function vt(e,t){let[n=`0`,r=`00`,i=`00`]=e.split(`:`);return t===`hours`?`${n.padStart(2,`0`)}:00`:t===`minutes`?`${n.padStart(2,`0`)}:${r.padStart(2,`0`)}`:`${n.padStart(2,`0`)}:${r.padStart(2,`0`)}:${i.padStart(2,`0`)}`}function yt(e,t){if(typeof e!=`number`||!Number.isFinite(e))return``;let n=Math.max(0,Math.round(e));if(t.display===`iso`)return bt(n);if(t.display===`minutes`)return`${Math.round(n/Z)} min`;if(t.display===`hours`)return`${(n/X).toFixed(2)} h`;if(t.display===`decimal-hours`)return(n/X).toFixed(2);let r=Math.floor(n/X),i=Math.floor(n%X/Z),a=Math.floor(n%Z/mt);return`${r}:${String(i).padStart(2,`0`)}:${String(a).padStart(2,`0`)}`}function bt(e){let t=Math.floor(e/X),n=Math.floor(e%X/Z),r=Math.floor(e%Z/mt);return`${t>=24?`P${Math.floor(t/24)}D`:`P`}T${t%24}H${n}M${r}S`}function xt(e,t,n=`en`){if(t==null)return``;switch(e.type){case`number`:return gt(t,e.format,n);case`date`:return _t(t,e.format,n);case`duration`:return yt(t,e.format);case`boolean`:return t===!0?`true`:t===!1?`false`:``;case`select`:return St(e,t);default:return String(t)}}function St(e,t){let n=Array.isArray(t)?t:[t],r=e.format.options.reduce((e,t)=>(e[t.id]=t.label,e),{});return n.filter(e=>typeof e==`string`&&e.length>0).map(e=>r[e]??e).join(`, `)}async function Ct(e,t=2400){if(!/^image\/(jpeg|png|webp)$/.test(e.type)||e.size<12e5)return e;try{let n=await createImageBitmap(e),r=Math.min(1,t/Math.max(n.width,n.height)),i=document.createElement(`canvas`);i.width=Math.round(n.width*r),i.height=Math.round(n.height*r),i.getContext(`2d`)?.drawImage(n,0,0,i.width,i.height);let a=await new Promise(e=>i.toBlob(e,`image/jpeg`,.86));return a&&a.size<e.size?new File([a],`${e.name.replace(/\.[^.]+$/,``)}.jpg`,{type:`image/jpeg`}):e}catch{return e}}function wt(){return new Date().toISOString().slice(0,19).replace(/[:T]/g,`-`)}function Tt(e){let t=e?.name;return t===`NotFoundError`||t===`OverconstrainedError`?`missing`:t===`NotReadableError`||t===`AbortError`?`busy`:`denied`}function Et(e){return!!e?.getCapabilities?.()?.torch}function Dt(e,t,n=!1){let r=(0,J.useRef)(null),[i,a]=(0,J.useState)(null),[o,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(1),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(!1);return(0,J.useEffect)(()=>{if(!e)return;let r=null,i=!1;s(null),a(null),d(!1),p(!1);let o={facingMode:{ideal:t},width:{ideal:2560},height:{ideal:1440}};return(async()=>{if(!navigator.mediaDevices?.getUserMedia)throw new DOMException(`no camera api`,`NotAllowedError`);try{r=await navigator.mediaDevices.getUserMedia({video:o,audio:n})}catch(e){if(!n)throw e;r=await navigator.mediaDevices.getUserMedia({video:o})}if(i){for(let e of r.getTracks())e.stop();return}a(r);let e=r.getVideoTracks()[0],t=()=>!i&&d(Et(e));t(),setTimeout(t,600);let s=await navigator.mediaDevices.enumerateDevices().catch(()=>[]);i||l(s.filter(e=>e.kind===`videoinput`).length)})().catch(e=>!i&&s(Tt(e))),()=>{i=!0;for(let e of r?.getTracks()??[])e.stop()}},[e,t,n]),(0,J.useEffect)(()=>{r.current&&i&&(r.current.srcObject=i)},[i]),{video:r,stream:i,error:o,cameras:c,torchable:u,torch:f,setTorch:async e=>{let t=i?.getVideoTracks()[0];try{await t?.applyConstraints({advanced:[{torch:e}]}),p(e)}catch{d(!1)}},mirrored:i?.getVideoTracks()[0]?.getSettings().facingMode===`user`}}function Ot({open:e,onClose:t,label:n,children:r}){let i=(0,J.useRef)(null);return(0,J.useEffect)(()=>{let t=i.current;t&&(e&&!t.open?t.showModal():!e&&t.open&&t.close())},[e]),(0,Y.jsx)(`dialog`,{ref:i,onClose:t,"aria-label":n,className:`media-sheet`,children:e?(0,Y.jsx)(`div`,{className:`flex h-full flex-col`,children:r}):null})}function kt({label:e,onClick:t,active:n,children:r}){return(0,Y.jsx)(`button`,{type:`button`,"aria-label":e,title:e,"aria-pressed":n,onClick:t,className:H(`flex size-11 shrink-0 items-center justify-center rounded-full transition`,n?`bg-white text-black`:`bg-white/12 text-white hover:bg-white/20`),children:r})}function At({title:e,onClose:t,camera:n,onFlip:r}){return(0,Y.jsx)(`div`,{className:`safe-top`,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,Y.jsx)(kt,{label:K(`common.close`),onClick:t,children:(0,Y.jsx)(q,{className:`size-5`})}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-center font-medium text-[15px]`,children:e}),n.torchable?(0,Y.jsx)(kt,{label:K(`camera.torch`),active:n.torch,onClick:()=>void n.setTorch(!n.torch),children:n.torch?(0,Y.jsx)(Me,{className:`size-5`}):(0,Y.jsx)(Ae,{className:`size-5`})}):null,n.stream&&(n.cameras>1||g)?(0,Y.jsx)(kt,{label:K(`camera.flip`),onClick:r,children:(0,Y.jsx)(nt,{className:`size-5`})}):(0,Y.jsx)(`span`,{className:`size-11`})]})})}function jt({camera:e,asking:t,children:n,actions:r}){return(0,Y.jsxs)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden`,children:[(0,Y.jsx)(`video`,{ref:e.video,autoPlay:!0,playsInline:!0,muted:!0,className:H(`absolute inset-0 size-full object-contain`,e.mirrored&&`-scale-x-100`)}),e.error?(0,Y.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-5 bg-black px-8 text-center`,children:[(0,Y.jsx)(`p`,{className:`max-w-sm text-[15px] text-white/85 leading-relaxed`,children:K(`camera.${e.error}`)}),r]}):e.stream?n:(0,Y.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-4 px-8 text-center text-white/75`,children:[(0,Y.jsx)(V,{}),(0,Y.jsx)(`p`,{className:`max-w-xs text-[14px] leading-relaxed`,children:t})]})]})}var Mt=30;function Nt(){if(typeof MediaRecorder<`u`)return[`video/mp4;codecs=avc1.42E01E,mp4a.40.2`,`video/mp4`,`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`].find(e=>MediaRecorder.isTypeSupported(e))}var Pt=!!Nt();function Ft({open:e,multiple:t,video:n,onClose:r,onCapture:i,onNative:a}){let[o,s]=(0,J.useState)(`environment`),[c,l]=(0,J.useState)(`photo`),[u,d]=(0,J.useState)(0),[f,p]=(0,J.useState)(!1),[m,h]=(0,J.useState)(null),_=(0,J.useRef)(null),v=Dt(e,o,c===`video`);(0,J.useEffect)(()=>{e&&(d(0),l(`photo`),h(null))},[e]);let y=async e=>{p(!0);try{await i(e),d(e=>e+1),t||r()}finally{p(!1)}},b=async()=>{let e=v.video.current;if(!e?.videoWidth)return;let t=document.createElement(`canvas`);t.width=e.videoWidth,t.height=e.videoHeight,t.getContext(`2d`)?.drawImage(e,0,0);let n=await new Promise(e=>t.toBlob(e,`image/jpeg`,.9));n&&await y(new File([n],`foto-${wt()}.jpg`,{type:`image/jpeg`}))},x=()=>{_.current?.state===`recording`&&_.current.stop()},S=()=>{let e=Nt();if(!v.stream||!e)return;let t=[],n=new MediaRecorder(v.stream,{mimeType:e,videoBitsPerSecond:25e5,audioBitsPerSecond:96e3});n.ondataavailable=e=>e.data.size&&t.push(e.data),n.onstop=()=>{h(null),_.current=null;let n=e.split(`;`)[0];if(t.length){let e=n===`video/mp4`?`mp4`:`webm`;y(new File(t,`video-${wt()}.${e}`,{type:n}))}},_.current=n,n.start(1e3),h(0)};(0,J.useEffect)(()=>{if(m===null)return;if(m>=Mt){_.current?.state===`recording`&&_.current.stop();return}let e=setTimeout(()=>h(e=>e===null?null:e+1),1e3);return()=>clearTimeout(e)},[m]),(0,J.useEffect)(()=>{!e&&_.current&&(_.current.onstop=null,_.current.stop(),_.current=null)},[e]);let C=e=>`0:${String(e).padStart(2,`0`)}`;return(0,Y.jsxs)(Ot,{open:e,onClose:r,label:K(`camera.title`),children:[(0,Y.jsx)(At,{title:m===null?u?K(`camera.taken`,{n:u}):K(`camera.title`):`${C(m)} / ${C(Mt)}`,onClose:r,camera:v,onFlip:()=>s(e=>e===`environment`?`user`:`environment`)}),(0,Y.jsx)(jt,{camera:v,asking:K(`camera.asking`),actions:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[a?(0,Y.jsxs)(Q,{onClick:()=>{r(),a()},children:[(0,Y.jsx)(be,{className:`size-4`}),` `,K(g?`camera.native`:`camera.pick`)]}):null,(0,Y.jsx)(Q,{quiet:!0,onClick:r,children:K(`common.close`)})]})}),(0,Y.jsxs)(`div`,{className:H(`safe-bottom px-4 pt-3`,v.error&&`invisible`),children:[n&&Pt&&m===null?(0,Y.jsx)(`div`,{className:`mb-3 flex justify-center gap-1 text-[13px]`,children:[`photo`,`video`].map(e=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":c===e,onClick:()=>l(e),className:H(`h-9 rounded-full px-4 font-medium transition`,c===e?`bg-white text-black`:`text-white/70 hover:text-white`),children:K(e===`photo`?`camera.photo`:`camera.video`)},e))}):null,(0,Y.jsxs)(`div`,{className:`grid grid-cols-[1fr_auto_1fr] items-center gap-3`,children:[(0,Y.jsx)(`span`,{className:`text-[13px] text-white/70 leading-snug`,children:m===null?c===`video`?K(`camera.clipHint`,{s:Mt}):K(t?`camera.hintMany`:`camera.hint`):K(`camera.recording`)}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":K(c===`photo`?`camera.shoot`:m===null?`camera.record`:`camera.stop`),disabled:!v.stream||f,onClick:()=>c===`photo`?void b():m===null?S():x(),className:`flex size-[72px] items-center justify-center rounded-full border-4 border-white transition active:scale-95 disabled:opacity-40`,children:f?(0,Y.jsx)(V,{className:`text-white`}):c===`photo`?(0,Y.jsx)(`span`,{className:`size-[54px] rounded-full bg-white`}):m===null?(0,Y.jsx)(`span`,{className:`flex size-[54px] items-center justify-center rounded-full bg-[#e5484d]`,children:(0,Y.jsx)(ne,{className:`size-6 text-white`})}):(0,Y.jsx)(`span`,{className:`size-7 rounded-md bg-[#e5484d]`})}),(0,Y.jsx)(`div`,{className:`flex justify-end`,children:t&&u&&m===null?(0,Y.jsxs)(Q,{onClick:r,children:[(0,Y.jsx)(j,{className:`size-4`}),` `,K(`camera.done`)]}):null})]})]})]})}function Q({onClick:e,quiet:t,children:n}){return(0,Y.jsx)(`button`,{type:`button`,onClick:e,className:H(`inline-flex h-11 items-center justify-center gap-2 rounded-full px-5 font-medium text-[14px] transition`,t?`text-white/75 hover:text-white`:`bg-white text-black hover:bg-white/90`),children:n})}var It=25,Lt=9e3;function Rt(e){return e.code===e.PERMISSION_DENIED?`denied`:e.code===e.TIMEOUT?`timeout`:`unavailable`}function zt({value:e,runId:t,placeholder:n,onChange:r,onBusy:i}){let o=ue(e)?e:null,[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(null),d=(0,J.useRef)(null),f=(0,J.useRef)(!!o?.label),p=(0,J.useRef)(o);p.current=o;let m=o?.lat!==void 0&&o.lng!==void 0,h=typeof navigator<`u`&&`geolocation`in navigator,g=()=>{d.current!==null&&(navigator.geolocation.clearWatch(d.current),d.current=null),c(!1),i?.(!1)};(0,J.useEffect)(()=>()=>{d.current!==null&&navigator.geolocation.clearWatch(d.current)},[]);let _=async(e,n)=>{try{let{label:i}=await a.post(`/api/runs/${t}/geocode`,{lat:e,lng:n,language:z}),o=p.current;i&&!f.current&&o?.lat===e&&o.lng===n&&r({...o,label:i})}catch{}},v=()=>{u(null),c(!0),i?.(!0);let e=Date.now(),t=1/0;d.current=navigator.geolocation.watchPosition(n=>{let{latitude:i,longitude:a,accuracy:o}=n.coords;if(o<t){t=o;let e=Math.round(i*1e6)/1e6,n=Math.round(a*1e6)/1e6,s=f.current?p.current?.label:void 0,c={lat:e,lng:n,accuracy:Math.round(o),...s?{label:s}:{}};p.current=c,r(c)}if(t<=It||Date.now()-e>Lt){g();let e=p.current;e?.lat!==void 0&&e.lng!==void 0&&_(e.lat,e.lng)}},e=>{g(),t===1/0&&u(Rt(e))},{enableHighAccuracy:!0,timeout:15e3,maximumAge:1e4})},y=e=>{f.current=e.trim().length>0;let t={...m?o:{},label:e};r(m||e.trim()?t:void 0)};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[m?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-moss-tint text-moss`,children:(0,Y.jsx)(We,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`truncate font-medium text-[15px] tabular-nums`,children:[o.lat?.toFixed(5),`, `,o.lng?.toFixed(5)]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 text-[13px] text-ink-3`,children:[(0,Y.jsx)(`span`,{children:s?K(`location.refining`):o.accuracy?K(`location.accuracy`,{m:o.accuracy}):null}),(0,Y.jsxs)(`a`,{href:`https://www.openstreetmap.org/?mlat=${o.lat}&mlon=${o.lng}#map=17/${o.lat}/${o.lng}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 underline-offset-2 hover:text-ink hover:underline coarse:-my-3 coarse:min-h-11 coarse:min-w-11`,children:[K(`location.map`),` `,(0,Y.jsx)(P,{className:`size-3`})]})]})]}),(0,Y.jsx)(U,{label:K(`location.remove`),onClick:()=>{g(),f.current=!1,r(void 0)},children:(0,Y.jsx)(q,{className:`size-4`})})]}):h?(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(G,{variant:`secondary`,size:`lg`,busy:s,onClick:v,className:`w-full sm:w-auto`,children:[s?null:(0,Y.jsx)(Be,{className:`size-4`}),K(s?`location.locating`:`location.use`)]}),l?(0,Y.jsx)(`p`,{className:`mt-2 rounded-lg bg-amber-tint px-3 py-2 text-[13px] text-ink-2 leading-relaxed`,children:K(`location.${l}`)}):(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3 leading-relaxed`,children:K(`location.why`)})]}):null,(0,Y.jsx)(W,{value:o?.label??``,placeholder:n??K(m?`location.label`:`location.manual`),autoComplete:`street-address`,enterKeyHint:`done`,"aria-label":K(`location.manual`),onChange:e=>y(e.target.value)})]})}var Bt=null;function Vt(){return Bt??=(async()=>{let e=window.BarcodeDetector;if(e)try{let t=await e.getSupportedFormats();if(t.includes(`qr_code`)){let n=new e({formats:t});return{qrOnly:!1,detect:async e=>(await n.detect(e))[0]?.rawValue||null}}}catch{}let{default:t}=await s(async()=>{let{default:e}=await import(`./qr-scanner.min-C_UI0gH-.js`);return{default:e}},__vite__mapDeps([0,1])),n=t.createQrEngine();return{qrOnly:!0,detect:async e=>{try{return(await t.scanImage(e,{qrEngine:n,returnDetailedScanResult:!0})).data||null}catch{return null}}}})(),Bt}function Ht({open:e,onClose:t,onResult:n}){let r=(0,J.useRef)(n);r.current=n;let i=(0,J.useRef)(t);return i.current=t,(0,J.useEffect)(()=>{e&&b(`scan`).then(e=>{e&&r.current(e)}).catch(()=>void 0).finally(()=>i.current())},[e]),null}function Ut(e){return y(`scan`)?(0,Y.jsx)(Ht,{...e}):(0,Y.jsx)(Wt,{...e})}function Wt({open:e,onClose:t,onResult:n}){let[r,i]=(0,J.useState)(`environment`),[a,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(!1),l=(0,J.useRef)(null),u=Dt(e,r),d=(0,J.useRef)(n);d.current=n;let f=(0,J.useRef)(t);f.current=t,(0,J.useEffect)(()=>{e&&(c(!1),Vt().then(e=>o(e.qrOnly)))},[e]),(0,J.useEffect)(()=>{if(!e||!u.stream)return;let t=!1,n,r=async()=>{let e=u.video.current;if(!t&&e&&e.readyState>=2&&e.videoWidth){let n=await(await Vt()).detect(e).catch(()=>null);if(n&&!t){navigator.vibrate?.(60),d.current(n),f.current();return}}t||(n=setTimeout(r,200))};return r(),()=>{t=!0,clearTimeout(n)}},[e,u.stream,u.video]);let p=async e=>{if(!e)return;c(!1);let r=await createImageBitmap(e).catch(()=>null),i=r?await(await Vt()).detect(r).catch(()=>null):null;i?(n(i),t()):c(!0)};return(0,Y.jsxs)(Ot,{open:e,onClose:t,label:K(`scan.title`),children:[(0,Y.jsx)(At,{title:K(`scan.title`),onClose:t,camera:u,onFlip:()=>i(e=>e===`environment`?`user`:`environment`)}),(0,Y.jsx)(jt,{camera:u,asking:K(`scan.asking`),actions:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Y.jsxs)(Q,{onClick:()=>l.current?.click(),children:[(0,Y.jsx)(Re,{className:`size-4`}),` `,K(`scan.fromPhoto`)]}),(0,Y.jsx)(Q,{quiet:!0,onClick:t,children:K(`scan.typeInstead`)})]}),children:(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center`,children:(0,Y.jsx)(`div`,{className:`aspect-square w-[min(68%,320px)] rounded-3xl border-2 border-white/90 shadow-[0_0_0_100vmax_rgb(0_0_0/0.35)]`})})}),(0,Y.jsxs)(`div`,{className:`safe-bottom flex flex-col items-center gap-3 px-5 pt-3 text-center`,children:[(0,Y.jsx)(`p`,{className:`text-[13px] text-white/75 leading-snug`,children:K(s?`scan.miss`:a?`scan.hintQr`:`scan.hint`)}),u.stream?(0,Y.jsxs)(Q,{quiet:!0,onClick:()=>l.current?.click(),children:[(0,Y.jsx)(Re,{className:`size-4`}),` `,K(`scan.fromPhoto`)]}):null]}),(0,Y.jsx)(`input`,{ref:l,type:`file`,hidden:!0,accept:`image/*`,onChange:e=>{p(e.target.files?.[0]),e.target.value=``}})]})}var Gt=`#1d1a17`,Kt={width:1200,height:480};function qt(e,t,n,r,i){e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=Gt,e.fillStyle=Gt,e.lineWidth=i;for(let a of t){if(a.length===1){e.beginPath(),e.arc(a[0].x*n,a[0].y*r,i/2,0,Math.PI*2),e.fill();continue}e.beginPath(),e.moveTo(a[0].x*n,a[0].y*r);for(let t=1;t<a.length-1;t++){let i=a[t],o=a[t+1];e.quadraticCurveTo(i.x*n,i.y*r,(i.x+o.x)/2*n,(i.y+o.y)/2*r)}let t=a[a.length-1];e.lineTo(t.x*n,t.y*r),e.stroke()}}function Jt({strokes:e,onStrokes:t}){let n=(0,J.useRef)(null),r=(0,J.useRef)(null),i=(0,J.useRef)(e);i.current=e;let a=()=>{let e=n.current,t=e?.getContext(`2d`);if(!e||!t)return;let a=window.devicePixelRatio||1,o=Math.round(e.clientWidth*a),s=Math.round(e.clientHeight*a);(e.width!==o||e.height!==s)&&(e.width=o,e.height=s),t.clearRect(0,0,o,s),qt(t,r.current?[...i.current,r.current]:i.current,o,s,2.4*a)};(0,J.useEffect)(()=>{a();let e=n.current;if(!e)return;let t=new ResizeObserver(a);return t.observe(e),()=>t.disconnect()},[e]);let o=e=>{let t=e.currentTarget.getBoundingClientRect();return{x:Math.min(1,Math.max(0,(e.clientX-t.left)/t.width)),y:Math.min(1,Math.max(0,(e.clientY-t.top)/t.height))}};return(0,Y.jsxs)(`div`,{className:`relative overflow-hidden rounded-xl bg-white ring-1 ring-input`,children:[(0,Y.jsx)(`canvas`,{ref:n,"aria-label":K(`sign.pad`),className:`block aspect-[5/2] w-full cursor-crosshair touch-none select-none`,onPointerDown:e=>{e.currentTarget.setPointerCapture(e.pointerId),r.current=[o(e)],a()},onPointerMove:e=>{r.current&&(r.current.push(o(e)),a())},onPointerUp:()=>{if(r.current){let e=r.current;r.current=null,t([...i.current,e])}},onPointerCancel:()=>{r.current=null,a()}}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-x-6 bottom-[22%] border-[#1d1a17]/25 border-b`}),e.length?null:(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center text-[#1d1a17]/40 text-[14px]`,children:K(`sign.hint`)})]})}async function Yt(e){let t=document.createElement(`canvas`);t.width=Kt.width,t.height=Kt.height;let n=t.getContext(`2d`);if(!n)return null;qt(n,e,Kt.width,Kt.height,7);let r=await new Promise(e=>t.toBlob(e,`image/png`));return r?new File([r],`unterschrift.png`,{type:`image/png`}):null}function Xt({label:e,value:t,runId:n,onChange:i}){let[o,s]=(0,J.useState)(!1),[c,l]=(0,J.useState)([]),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(null),m=typeof t==`string`&&t?t:null,h=async()=>{d(!0),p(null);try{let e=await Yt(c);if(!e)return;i((await a.upload(`/api/runs/${n}/uploads`,e)).id),s(!1)}catch(e){p(e.message)}finally{d(!1)}};return(0,Y.jsxs)(`div`,{children:[m?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-2 ring-1 ring-input`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{l([]),s(!0)},className:`min-w-0 flex-1 rounded-lg bg-white px-3`,"aria-label":K(`sign.again`),children:(0,Y.jsx)(`img`,{src:r(`/api/runs/${n}/assets/${m}`),alt:e,className:`mx-auto h-20 object-contain`})}),(0,Y.jsx)(U,{label:K(`sign.remove`),onClick:()=>i(void 0),children:(0,Y.jsx)(q,{className:`size-4`})})]}):(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{l([]),s(!0)},className:`flex w-full flex-col items-center justify-center gap-2 rounded-xl border border-input border-dashed bg-card px-4 py-7 text-[14px] text-ink-3 transition hover:border-ember hover:text-ink`,children:[(0,Y.jsx)(ee,{className:`size-6`}),K(`sign.open`)]}),(0,Y.jsxs)(ie,{open:o,onClose:()=>s(!1),title:e,wide:!0,children:[(0,Y.jsx)(Jt,{strokes:c,onStrokes:l}),f?(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:f}):null,(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-3`,children:[(0,Y.jsxs)(G,{variant:`ghost`,disabled:!c.length||u,onClick:()=>l([]),children:[(0,Y.jsx)(Ee,{className:`size-4`}),` `,K(`sign.clear`)]}),(0,Y.jsx)(G,{busy:u,disabled:!c.length,onClick:()=>void h(),children:K(`sign.accept`)})]})]})]})}function Zt({runId:e,connectionId:t,connector:n,onCancel:r}){let[i,o]=(0,J.useState)({}),[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(null),d=async()=>{c(!0),u(null);try{await a.post(`/api/runs/${e}/connections/${t}/credentials/${n.id}`,{values:i})}catch(e){u(e.message)}finally{c(!1)}};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-xl bg-card p-4 ring-1 ring-input`,children:[(n.fields??[]).map(e=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(B,{children:e.label}),(0,Y.jsx)(W,{type:e.secret?`password`:`text`,autoComplete:`off`,value:i[e.key]??``,placeholder:e.placeholder,onChange:t=>o(n=>({...n,[e.key]:t.target.value})),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),d())}})]},e.key)),n.hint?(0,Y.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:n.hint}):null,l?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:l}):null,(0,Y.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Y.jsx)(G,{variant:`ghost`,size:`sm`,onClick:r,children:K(`common.cancel`)}),(0,Y.jsx)(G,{size:`sm`,busy:s,onClick:()=>void d(),children:K(`connect.go`)})]})]})}function Qt({runId:e,connection:t}){let[n,r]=(0,J.useState)(null),[i,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(null);if(!t)return null;if(t.account){let n=t.connectors.find(e=>e.id===t.account?.connector)?.name??``;return(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 items-center justify-center rounded-full bg-moss-tint text-moss`,children:(0,Y.jsx)(j,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`truncate font-medium text-[15px]`,children:t.account.label}),(0,Y.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:K(`connect.connected`,{name:n})})]}),(0,Y.jsx)(U,{label:K(`connect.disconnect`),onClick:()=>void a.del(`/api/runs/${e}/connections/${t.id}`),children:(0,Y.jsx)(ot,{className:`size-4`})})]})}let l=async n=>{if(c(null),o(null),y(`signIn`)){try{let{url:r}=await a.post(`/api/runs/${e}/connections/${t.id}/oauth/${n.id}`);await b(`signIn`,{url:r})}catch(e){c(e.message)}return}let r=window.open(`about:blank`,`wizard-connect`,`width=540,height=700`);try{let{url:i}=await a.post(`/api/runs/${e}/connections/${t.id}/oauth/${n.id}`);r?r.location.replace(i):o(i)}catch(e){r?.close(),c(e.message)}},u=t.connectors.find(e=>e.id===n);return t.connectors.length?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.connectors.map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>e.auth===`oauth2`?void l(e):r(n===e.id?null:e.id),className:H(`inline-flex h-11 items-center gap-2 rounded-full px-4 font-medium text-[14px] ring-1 transition`,n===e.id?`bg-ember-veil text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink hover:ring-ember`),children:[(0,Y.jsx)(L,{className:`size-4`}),` `,e.name]},e.id))}),u?(0,Y.jsx)(Zt,{runId:e,connectionId:t.id,connector:u,onCancel:()=>r(null)}):null,i?(0,Y.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,className:`text-[14px] text-ember underline`,children:K(`connect.openLink`)}):null,s?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:s}):null]}):(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`connect.none`)})}function $t(e){return e==null?``:Array.isArray(e)?e.join(`, `):String(e)}function en(e,t){if(t.trim()===``)return null;if(e.type===`number`){let e=Number(t.replace(/\s/g,``).replace(`,`,`.`));return Number.isFinite(e)?e:t}return e.type===`boolean`?t===`true`:t}function $({column:e,value:t,boxed:n,onCommit:r}){let[i,a]=(0,J.useState)($t(t));(0,J.useEffect)(()=>a($t(t)),[t]);let o=H(`w-full min-w-0 rounded-md border border-transparent px-2 text-[13px] outline-none focus:border-ember focus:bg-card`,n?`h-11 bg-paper-2`:`h-9 bg-transparent hover:bg-paper-2 coarse:h-11`);return e.type===`boolean`?(0,Y.jsx)(`label`,{className:`flex size-9 cursor-pointer items-center justify-center coarse:size-11`,children:(0,Y.jsx)(`input`,{type:`checkbox`,"aria-label":e.name,checked:t===!0,onChange:e=>r(e.target.checked),className:`size-4 accent-[var(--ember)] coarse:size-6`})}):e.type===`select`&&!e.format.multiple&&!e.format.allowCustom?(0,Y.jsxs)(`select`,{value:i,onChange:e=>r(e.target.value||null),className:o,children:[(0,Y.jsx)(`option`,{value:``}),e.format.options.map(e=>(0,Y.jsx)(`option`,{value:e.id,children:e.label},e.id))]}):(0,Y.jsx)(`input`,{"aria-label":e.name,type:e.type===`date`&&e.format.kind===`date`?`date`:`text`,inputMode:e.type===`number`?`decimal`:void 0,enterKeyHint:`done`,autoComplete:`off`,value:i,onChange:e=>a(e.target.value),onBlur:()=>{i!==$t(t)&&r(en(e,i))},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),e.target.blur())},className:H(o,e.type===`number`&&`text-right tabular-nums`)})}function tn({runId:e,list:t,editable:n}){let{def:r,rows:i}=t,[s,c]=(0,J.useState)(null),[l,u]=(0,J.useState)({}),d=`/api/runs/${e}/lists/${r.id}/rows`,f=async e=>{c(null);try{await e()}catch(e){c(e instanceof o?e.message:String(e))}},p=()=>f(async()=>{await a.post(d,{cells:l}),u({})}),m=Object.values(l).some(e=>e!=null&&e!==``);if(!i.length&&!n)return(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`list.empty`)});let h=(e,t)=>t===0||e.type===`text`&&e.format?.style===`multiline`,g=(e,t,n)=>void f(()=>a.patch(`${d}/${e}`,{cells:{[t]:n}}));return(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 sm:hidden`,children:[i.map(e=>(0,Y.jsxs)(`div`,{className:`rounded-lg bg-paper p-2 ring-1 ring-border-soft`,children:[(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-1.5`,children:r.columns.map((t,r)=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,h(t,r)&&`col-span-2`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:t.name}),n?(0,Y.jsx)($,{boxed:!0,column:t,value:e.cells[t.id],onCommit:n=>g(e.id,t.id,n)}):(0,Y.jsx)(`div`,{className:H(`break-words px-1 text-[14px]`,t.type===`number`&&`tabular-nums`),children:xt(t,e.cells[t.id],z)||`—`})]},t.id))}),n?(0,Y.jsx)(`div`,{className:`mt-1 flex justify-end`,children:(0,Y.jsx)(U,{label:K(`list.delete`),onClick:()=>void f(()=>a.del(`${d}/${e.id}`)),children:(0,Y.jsx)(R,{className:`size-4`})})}):null]},e.id)),n?(0,Y.jsxs)(`div`,{className:`rounded-lg border border-input border-dashed p-2`,children:[(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-1.5`,children:r.columns.map((e,t)=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,h(e,t)&&`col-span-2`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:e.name}),(0,Y.jsx)($,{boxed:!0,column:e,value:l[e.id],onCommit:t=>u(n=>({...n,[e.id]:t}))})]},e.id))}),(0,Y.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,Y.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:()=>m?void p():void 0,children:[(0,Y.jsx)(N,{className:`size-4`}),` `,K(`run.addRow`)]})})]}):null]}),(0,Y.jsx)(`div`,{className:`hidden overflow-x-auto rounded-lg ring-1 ring-border-soft sm:block`,children:(0,Y.jsxs)(`table`,{className:`w-full text-[13px]`,children:[(0,Y.jsx)(`thead`,{className:`bg-paper-2 text-ink-2`,children:(0,Y.jsxs)(`tr`,{children:[r.columns.map(e=>(0,Y.jsx)(`th`,{className:`whitespace-nowrap px-3 py-2 text-left font-medium`,children:e.name},e.id)),n?(0,Y.jsx)(`th`,{className:`w-10`}):null]})}),(0,Y.jsxs)(`tbody`,{children:[i.map(e=>(0,Y.jsxs)(`tr`,{className:`border-border-soft border-t align-top`,children:[r.columns.map(t=>(0,Y.jsx)(`td`,{className:H(`min-w-[7.5rem]`,n?`px-1 py-0.5`:`px-3 py-2`),children:n?(0,Y.jsx)($,{column:t,value:e.cells[t.id],onCommit:n=>g(e.id,t.id,n)}):(0,Y.jsx)(`span`,{className:H(t.type===`number`&&`tabular-nums`),children:xt(t,e.cells[t.id],z)})},t.id)),n?(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)(U,{label:K(`list.delete`),className:`size-9`,onClick:()=>void f(()=>a.del(`${d}/${e.id}`)),children:(0,Y.jsx)(R,{className:`size-3.5`})})}):null]},e.id)),n?(0,Y.jsxs)(`tr`,{className:`border-border-soft border-t bg-paper`,children:[r.columns.map(e=>(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)($,{column:e,value:l[e.id],onCommit:t=>u(n=>({...n,[e.id]:t}))})},e.id)),(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)(U,{label:K(`run.addRow`),className:`size-9`,onClick:()=>m?void p():void 0,children:(0,Y.jsx)(N,{className:`size-4`})})})]}):null]})]})}),s?(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:s}):null]})}function nn(e,t,n){let i=t.split(`/`).map(encodeURIComponent).join(`/`);return r(`/api/runs/${e}/store/files/${i}${n?`?inline=1`:``}`)}var rn=[`bg-paper-3 text-ink-3`,`bg-moss-tint text-moss`,`bg-rose-tint text-rose`,`bg-ember-tint text-ember-strong`];function an({runId:e,list:t}){let{def:n,rows:r}=t,i=n.columns.find(e=>e.id===n.check?.file),s=n.columns.find(e=>e.id===n.check?.status),c=s?.type===`select`?s.format.options:[],l=c[0]?.id,u=e=>s?String(e.cells[s.id]??l??``):``,d=e=>!s||u(e)===l,[f,p]=(0,J.useState)(()=>(r.find(d)??r[0])?.id??null),[m,h]=(0,J.useState)(!1),[g,_]=(0,J.useState)(null),v=`/api/runs/${e}/lists/${n.id}/rows`,y=r.find(e=>e.id===f)??r[0],b=m?r.filter(e=>d(e)||e.id===y?.id):r,x=r.filter(e=>!d(e)).length,S=n.columns.filter(e=>e!==i&&e!==s),C=S.filter(e=>e.id!==n.key),w=C.find(e=>e.type===`text`)??C[0],T=C.filter(e=>e!==w),E=async(e,t)=>{_(null);try{await a.patch(`${v}/${e}`,{cells:t})}catch(e){_(e instanceof o?e.message:String(e))}},D=e=>{let t=b.findIndex(e=>e.id===y?.id),n=b[Math.min(b.length-1,Math.max(0,t+e))];n&&p(n.id)},O=async e=>{if(!y||!s)return;let t=r.findIndex(e=>e.id===y.id),n=[...r.slice(t+1),...r.slice(0,t)].find(d);await E(y.id,{[s.id]:e}),n&&e!==l&&p(n.id)},k=e=>{e.target.closest(`input, textarea, select`)||(e.key===`ArrowDown`||e.key===`ArrowUp`?(e.preventDefault(),D(e.key===`ArrowDown`?1:-1)):/^[1-9]$/.test(e.key)&&c[Number(e.key)]&&(e.preventDefault(),O(c[Number(e.key)].id)))};if(!r.length)return(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`list.empty`)});let A=i&&y?String(y.cells[i.id]??``).trim():``,M=A.split(`.`).pop()?.toLowerCase()??``,N=e=>rn[Math.min(Math.max(0,c.findIndex(t=>t.id===u(e))),3)];return(0,Y.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-[minmax(280px,360px)_minmax(0,1fr)]`,onKeyDown:k,children:[(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-col`,children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-[13px] text-ink-3 tabular-nums`,children:K(`check.progress`,{done:x,total:r.length})}),s?(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":m,onClick:()=>h(e=>!e),className:H(`inline-flex h-8 items-center rounded-full px-3 text-[13px] ring-1 transition coarse:h-11`,m?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink`),children:K(`check.onlyOpen`)}):null]}),(0,Y.jsx)(`ul`,{className:`flex max-h-[38vh] flex-col gap-1.5 overflow-y-auto p-0.5 pr-1 lg:max-h-[calc(100vh-15rem)]`,children:b.map(e=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>p(e.id),"aria-current":e.id===y?.id,className:H(`flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left ring-1 transition`,e.id===y?.id?`bg-card shadow-soft ring-ember`:`bg-paper ring-border-soft hover:bg-card`),children:[(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:`block truncate font-medium text-[14px]`,children:w&&xt(w,e.cells[w.id],z)||`—`}),(0,Y.jsx)(`span`,{className:`block truncate text-[12px] text-ink-3 tabular-nums`,children:T.slice(0,2).map(t=>xt(t,e.cells[t.id],z)).filter(Boolean).join(` · `)})]}),s?(0,Y.jsx)(`span`,{className:H(`shrink-0 rounded-full px-2 py-0.5 font-medium text-[11px]`,N(e)),children:c.find(t=>t.id===u(e))?.label??u(e)}):null]})},e.id))})]}),y?(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[c.length>1?(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[c.slice(1).map((e,t)=>(0,Y.jsxs)(G,{size:`md`,variant:u(y)===e.id?`primary`:`secondary`,onClick:()=>void O(e.id),children:[u(y)===e.id?(0,Y.jsx)(j,{className:`size-4`}):null,e.label,(0,Y.jsx)(`kbd`,{className:`ml-1 hidden rounded bg-black/10 px-1.5 text-[11px] lg:inline`,children:t+1})]},e.id)),u(y)===l?null:(0,Y.jsx)(G,{size:`md`,variant:`ghost`,onClick:()=>void O(l??``),children:K(`check.reopen`)})]}):null,(0,Y.jsx)(`div`,{className:`overflow-hidden rounded-lg bg-paper-2 ring-1 ring-border-soft`,children:A?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 border-border-soft border-b bg-card px-3 py-2 text-[13px]`,children:[(0,Y.jsx)(F,{className:`size-3.5 shrink-0 text-ink-3`}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:A.split(`/`).pop()}),(0,Y.jsx)(`a`,{href:nn(e,A,M===`pdf`),target:`_blank`,rel:`noreferrer`,className:`shrink-0 text-ink-2 underline-offset-2 hover:text-ink hover:underline`,children:K(`run.openFull`)})]}),M===`pdf`?(0,Y.jsx)(`iframe`,{title:A,src:`${nn(e,A,!0)}#toolbar=0&navpanes=0&view=FitH`,className:`h-[46vh] w-full border-0 bg-white lg:h-[calc(100vh-27rem)] lg:min-h-[360px]`},A):[`png`,`jpg`,`jpeg`,`webp`].includes(M)?(0,Y.jsx)(`div`,{className:`flex max-h-[46vh] justify-center overflow-auto bg-white lg:max-h-[calc(100vh-27rem)]`,children:(0,Y.jsx)(`img`,{src:nn(e,A,!0),alt:A,className:`max-w-full object-contain`},A)}):(0,Y.jsx)(`p`,{className:`px-4 py-10 text-center text-[14px] text-ink-3`,children:K(`check.noPreview`)})]}):(0,Y.jsx)(`p`,{className:`px-4 py-14 text-center text-[14px] text-ink-3`,children:K(`check.noFile`)})}),(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-3 gap-y-2 sm:grid-cols-3`,children:S.map(e=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,e.type===`text`&&e.format?.style===`multiline`&&`col-span-full`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:e.name}),(0,Y.jsx)($,{boxed:!0,column:e,value:y.cells[e.id],onCommit:t=>void E(y.id,{[e.id]:t})})]},e.id))}),g?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:g}):null]}):null]})}var on={xlsx:`Excel`,csv:`CSV`,json:`JSON`,md:`Markdown`,zip:`ZIP`};function sn({runId:e,list:t}){return(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.formats.map(n=>(0,Y.jsx)(`a`,{href:r(`/api/runs/${e}/lists/${t.def.id}/download?format=${n}`),className:`inline-flex h-9 items-center rounded-full bg-paper-2 px-3.5 font-medium text-[13px] text-ink-2 transition hover:bg-paper-3 hover:text-ink coarse:h-11 coarse:px-4`,children:on[n]??n},n))})}function cn(e){return e>1e6?`${(e/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1e3))} KB`}function ln({runId:e}){let[t,n]=(0,J.useState)(!1),[i,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(!1);(0,J.useEffect)(()=>{t&&(c(!1),a.get(`/api/runs/${e}/store`).then(o))},[t,e]);let l=i&&!i.files.length&&!i.connections.length&&!i.keepsSignIns&&i.lists.every(e=>!e.rows);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(!0),className:`inline-flex items-center gap-1.5 text-[13px] text-ink-4 transition hover:text-ink-2 coarse:min-h-11`,children:[(0,Y.jsx)(we,{className:`size-3.5`}),` `,K(`store.open`)]}),(0,Y.jsx)(ie,{open:t,onClose:()=>n(!1),title:K(`store.title`),wide:!0,children:i?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5 text-[14px]`,children:[(0,Y.jsx)(`p`,{className:`text-ink-3`,children:K(`store.explain`)}),l?(0,Y.jsx)(`p`,{className:`text-ink-2`,children:K(`store.empty`)}):null,i.lists.some(e=>e.rows)?(0,Y.jsx)(`ul`,{className:`flex flex-col gap-1`,children:i.lists.filter(e=>e.rows).map(e=>(0,Y.jsxs)(`li`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`span`,{children:e.title}),(0,Y.jsx)(`span`,{className:`text-ink-3 tabular-nums`,children:K(`store.rows`,{n:e.rows})})]},e.id))}):null,i.connections.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(L,{className:`size-4 text-ink-3`}),` `,e.account?.label]},e.id)),i.keepsSignIns?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(j,{className:`size-4 text-ink-3`}),` `,K(`store.signIns`)]}):null,i.files.length?(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`mb-1 text-ink-3`,children:K(`store.files`,{n:i.files.length,size:cn(i.files.reduce((e,t)=>e+t.size,0))})}),(0,Y.jsx)(`ul`,{className:`max-h-56 overflow-y-auto rounded-lg ring-1 ring-border-soft`,children:i.files.map(t=>(0,Y.jsx)(`li`,{className:`border-border-soft border-b last:border-0`,children:(0,Y.jsxs)(`a`,{href:r(`/api/runs/${e}/store/files/${t.path}`),className:`flex items-center gap-2 px-3 py-2 text-[13px] hover:bg-paper-2 coarse:min-h-11`,title:t.source??void 0,children:[(0,Y.jsx)(F,{className:`size-3.5 shrink-0 text-ink-3`}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t.path}),(0,Y.jsx)(`span`,{className:`text-ink-4 tabular-nums`,children:cn(t.size)})]})},t.path))})]}):null,(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 pt-1`,children:[l?(0,Y.jsx)(`span`,{}):s?(0,Y.jsxs)(G,{variant:`secondary`,onClick:async()=>{await a.del(`/api/runs/${e}/store`),o(await a.get(`/api/runs/${e}/store`)),c(!1)},children:[(0,Y.jsx)(R,{className:`size-4`}),` `,K(`store.confirmDelete`)]}):(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>c(!0),children:[(0,Y.jsx)(R,{className:`size-4`}),` `,K(`store.delete`)]}),(0,Y.jsx)(G,{onClick:()=>n(!1),children:K(`common.close`)})]})]}):(0,Y.jsx)(`div`,{className:`flex justify-center py-8 text-ink-4`,children:(0,Y.jsx)(V,{})})})]})}var un=300;function dn(){if(typeof MediaRecorder<`u`)return[`audio/webm;codecs=opus`,`audio/mp4`,`audio/webm`,`audio/ogg;codecs=opus`].find(e=>MediaRecorder.isTypeSupported(e))}function fn(e){return`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function pn({value:e,runId:t,onChange:n,onBusy:r}){let i=fe(e)?e:null,[o,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(0),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(null),[h,g]=(0,J.useState)(!1),[_,v]=(0,J.useState)(null),y=(0,J.useRef)(null),b=(0,J.useRef)(null),x=dn(),S=m&&!!x;(0,J.useEffect)(()=>()=>{y.current&&(y.current.recorder.onstop=null,y.current.stop())},[]),(0,J.useEffect)(()=>()=>{_&&URL.revokeObjectURL(_.url)},[_]);let C=async(e,i)=>{d(!0),r?.(!0),p(null);try{let r=await a.upload(`/api/runs/${t}/uploads`,e);v({asset:r.id,url:URL.createObjectURL(e)}),n({asset:r.id,...i===void 0?{}:{seconds:i}})}catch(e){p(e.message)}finally{d(!1),r?.(!1)}},w=async()=>{p(null),g(!1);let e;try{e=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}})}catch{g(!0);return}let t=[],n=new MediaRecorder(e,{mimeType:x,audioBitsPerSecond:48e3}),i=Date.now(),a=new AudioContext,o=a.createAnalyser();o.fftSize=256,a.createMediaStreamSource(e).connect(o);let c=new Uint8Array(o.fftSize),u=0,d=()=>{o.getByteTimeDomainData(c);let e=0;for(let t of c)e=Math.max(e,Math.abs(t-128));if(l(Math.min(1,e/64)),s((Date.now()-i)/1e3),(Date.now()-i)/1e3>=un){f();return}u=requestAnimationFrame(d)},f=()=>{cancelAnimationFrame(u),n.state!==`inactive`&&n.stop();for(let t of e.getTracks())t.stop();a.close().catch(()=>void 0),y.current=null,s(null),l(0)};n.ondataavailable=e=>e.data.size&&t.push(e.data),n.onstop=()=>{let e=(n.mimeType||x||`audio/webm`).split(`;`)[0],r=e===`audio/mp4`?`m4a`:e===`audio/ogg`?`ogg`:`webm`,a=Math.max(1,Math.round((Date.now()-i)/1e3));C(new File(t,`sprachnotiz-${wt()}.${r}`,{type:e}),a)},y.current={recorder:n,stop:f},r?.(!0),n.start(1e3),u=requestAnimationFrame(d)},T=o!==null,E=(0,Y.jsxs)(G,{variant:`secondary`,onClick:()=>b.current?.click(),children:[(0,Y.jsx)(Oe,{className:`size-4`}),` `,K(`voice.pick`)]});return(0,Y.jsxs)(`div`,{children:[T?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-ember`,children:[(0,Y.jsxs)(`span`,{className:`relative flex size-11 shrink-0 items-center justify-center`,children:[(0,Y.jsx)(`span`,{className:`absolute inset-0 rounded-full bg-rose-tint transition-transform duration-75`,style:{transform:`scale(${.7+c*.5})`}}),(0,Y.jsx)(`span`,{className:`relative size-3.5 animate-pulse-dot rounded-full bg-rose`})]}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`font-medium text-[15px] tabular-nums`,children:fn(o)}),(0,Y.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:o>270?K(`voice.left`,{s:Math.ceil(un-o)}):K(`voice.recording`)})]}),(0,Y.jsxs)(G,{onClick:()=>y.current?.stop(),children:[(0,Y.jsx)(A,{className:`size-3.5 fill-current`}),` `,K(`voice.stop`)]})]}):u?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-4 text-[14px] text-ink-3 ring-1 ring-input`,children:[(0,Y.jsx)(V,{className:`size-4`}),` `,K(`run.uploading`)]}):i?(0,Y.jsxs)(`div`,{className:`rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`audio`,{controls:!0,preload:`metadata`,src:_?.asset===i.asset?_.url:`/api/runs/${t}/assets/${i.asset}`,className:`h-11 w-full`}),i.transcript?(0,Y.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap px-1 text-[14px] text-ink-2 leading-relaxed`,children:i.transcript}):null,(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`px-1 text-[13px] text-ink-3`,children:i.seconds?fn(i.seconds):null}),(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[S?(0,Y.jsxs)(G,{variant:`ghost`,size:`sm`,onClick:()=>void w(),children:[(0,Y.jsx)(Je,{className:`size-3.5`}),` `,K(`voice.again`)]}):null,(0,Y.jsx)(G,{variant:`ghost`,size:`sm`,onClick:()=>n(void 0),children:K(`voice.remove`)})]})]})]}):(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[S?(0,Y.jsxs)(G,{variant:`secondary`,size:`lg`,onClick:()=>void w(),className:`w-full sm:w-auto`,children:[(0,Y.jsx)(I,{className:`size-4`}),` `,K(`voice.start`)]}):E,S&&h?E:null]}),h?(0,Y.jsx)(`p`,{className:`mt-2 rounded-lg bg-amber-tint px-3 py-2 text-[13px] text-ink-2 leading-relaxed`,children:K(`voice.denied`)}):(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3 leading-relaxed`,children:K(S?`voice.why`:`voice.noRecorder`)})]}),(0,Y.jsx)(`input`,{ref:b,type:`file`,hidden:!0,accept:`audio/*`,capture:!0,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&C(t,void 0)}}),f?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-rose`,children:f}):null]})}function mn(e,t){try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t}).format(e)}catch{return`${e.toFixed(2)} ${t}`}}function hn({field:e,value:t,values:n,onChange:r}){let i=e.columns??[],a=Array.isArray(t)&&t.length?t:[{}],o=de(e,a,n),s=(e,t,n)=>{r(a.map((r,i)=>i===e?{...r,[t]:n}:r))},c=i.map(e=>e.kind===`text`&&e===i[0]?`minmax(0,3fr)`:`minmax(0,1fr)`).join(` `);return(0,Y.jsxs)(`div`,{className:`rounded-xl bg-card p-2 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`hidden gap-2 px-2 pt-1 pb-2 text-[12px] text-ink-3 sm:grid`,style:{gridTemplateColumns:`${c} 36px`},children:i.map(e=>(0,Y.jsx)(`div`,{className:e.kind===`text`?``:`text-right`,children:e.label},e.id))}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-2`,children:a.map((e,t)=>(0,Y.jsxs)(`div`,{className:`grid grid-cols-6 gap-2 rounded-lg bg-paper p-2 sm:bg-transparent sm:p-0 sm:[grid-template-columns:var(--cols)]`,style:{"--cols":`${c} 36px`},children:[i.map((n,r)=>(0,Y.jsxs)(`label`,{className:H(`flex min-w-0 flex-col gap-1 sm:col-span-1`,r===0?`col-span-5`:i.length-1<=2?`col-span-3`:`col-span-2`),children:[(0,Y.jsx)(`span`,{className:`px-0.5 text-[11px] text-ink-3 sm:hidden`,children:n.label}),(0,Y.jsx)(`input`,{"aria-label":n.label,placeholder:n.label,inputMode:n.kind===`text`?`text`:`decimal`,autoComplete:`off`,value:String(e[n.id]??``),onChange:e=>s(t,n.id,e.target.value),className:H(`h-11 w-full min-w-0 rounded-md border border-transparent bg-paper-2 px-2.5 text-[14px] outline-none placeholder:text-transparent focus:border-focus focus:bg-card sm:placeholder:text-ink-4`,n.kind!==`text`&&`text-right tabular-nums`)})]},n.id)),(0,Y.jsx)(U,{label:K(`list.delete`),onClick:()=>r(a.filter((e,n)=>n!==t)),className:`order-first col-start-6 row-start-1 size-11 justify-self-end self-end sm:order-none sm:col-start-auto sm:row-start-auto`,children:(0,Y.jsx)(R,{className:`size-4`})})]},t))}),(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-end justify-between gap-3 px-2 pb-1`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r([...a,{}]),className:`inline-flex h-9 items-center gap-1.5 rounded-full px-3 text-[13px] text-ink-2 hover:bg-accent coarse:h-11`,children:[(0,Y.jsx)(N,{className:`size-4`}),` `,K(`run.addRow`)]}),(0,Y.jsxs)(`div`,{className:`text-right text-[13px] tabular-nums`,children:[(0,Y.jsxs)(`div`,{className:`text-ink-3`,children:[K(`run.net`),` `,mn(o.net,o.currency)]}),o.vatRate?(0,Y.jsxs)(`div`,{className:`text-ink-3`,children:[K(`run.vat`,{r:o.vatRate}),` `,mn(o.vat,o.currency)]}):null,(0,Y.jsxs)(`div`,{className:`font-semibold text-[15px] text-ink`,children:[K(`run.total`),` `,mn(o.gross,o.currency)]})]})]})]})}function gn(e){return!!e?.closest(`input, textarea, [contenteditable='true']`)}function _n({field:e,value:t,runId:n,onChange:i,onBusy:o}){let s=(0,J.useRef)(null),c=(0,J.useRef)(null),l=(0,J.useRef)(null),u=(0,J.useRef)(null),[d,p]=(0,J.useState)(!1),[h,_]=(0,J.useState)({}),[v,y]=(0,J.useState)(null),[b,x]=(0,J.useState)(!1),[S,C]=(0,J.useState)(!1),[w,T]=(0,J.useState)(null),E=(0,J.useRef)(null),D=e=>{E.current=e,T(e)},k=e.kind===`image`,A=!!e.multiple,j=A?e.max??30:1,M=k||!!e.camera||!!e.video,N=!k&&!!e.video,P=Array.isArray(t)?t:typeof t==`string`&&t?[t]:[],F=(0,J.useRef)(P);F.current=P;let I=P.length<j,L=async e=>{let t=(k?e.filter(e=>e.type.startsWith(`image/`)):e).sort((e,t)=>e.name.localeCompare(t.name,void 0,{numeric:!0}));if(!t.length)return;let r=j-(A?F.current.length:0);p(!0),o?.(!0),y(t.length>r&&A?K(`run.maxFiles`,{n:j}):null);try{for(let e of t.slice(0,Math.max(0,r))){let t=await Ct(e),r=await a.upload(`/api/runs/${n}/uploads`,t);_(e=>({...e,[r.id]:{name:r.name,mime:r.mime}}));let o=A?[...F.current,r.id]:r.id;F.current=A?o:[r.id],i(o)}}catch(e){y(e.message)}finally{p(!1),o?.(!1)}},R=(0,J.useRef)(L);R.current=L;let ee=e=>{let t=P.filter(t=>t!==e);i(A?t:void 0)},te=(e,t)=>{let n=F.current.indexOf(e),r=Math.min(F.current.length-1,Math.max(0,t));if(n<0||n===r)return;let a=F.current.filter(t=>t!==e);a.splice(r,0,e),F.current=a,i(a)},z=A&&P.length>1;(0,J.useEffect)(()=>{if(!I)return;let e=e=>{let t=Array.from(e.clipboardData?.files??[]),n=s.current;if(!t.length||!n||gn(document.activeElement))return;let r=document.querySelectorAll(`[data-upload-field]`);(n.matches(`:hover`)||n.contains(document.activeElement)||r.length===1)&&(e.preventDefault(),R.current(t))};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[I]);let B=H(`flex flex-col items-center justify-center gap-2 rounded-xl border border-input border-dashed bg-card px-3 text-[14px] text-ink-3 transition hover:border-ember hover:text-ink`,P.length?`py-4`:`py-8`);return(0,Y.jsxs)(`div`,{ref:s,"data-upload-field":``,onDragOver:e=>{I&&(e.preventDefault(),C(!0))},onDragLeave:()=>C(!1),onDrop:e=>{C(!1),I&&(e.preventDefault(),L(Array.from(e.dataTransfer.files)))},children:[P.length?(0,Y.jsx)(`div`,{className:`mb-2 flex flex-col gap-2`,children:P.map((e,t)=>{let i=h[e],a=i?.mime??(k?`image/`:``);return(0,Y.jsxs)(`div`,{"data-file-id":e,className:H(`flex items-center gap-3 rounded-xl bg-card p-2 ring-1 ring-input transition-shadow`,w===e&&`relative z-10 shadow-elevated ring-2 ring-ember`),children:[z?(0,Y.jsxs)(`button`,{type:`button`,"aria-label":K(`run.moveFile`,{n:t+1}),title:K(`run.moveFileHint`),className:H(`-mr-1 flex h-14 w-9 shrink-0 touch-none flex-col items-center justify-center gap-0.5 rounded-lg text-ink-3 hover:bg-paper-2 hover:text-ink`,w===e?`cursor-grabbing`:`cursor-grab`),onPointerDown:t=>{try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}D(e)},onPointerMove:t=>{if(E.current!==e)return;let n=document.elementFromPoint(t.clientX,t.clientY)?.closest(`[data-file-id]`),r=n?.getAttribute(`data-file-id`);r&&r!==e&&s.current?.contains(n??null)&&te(e,F.current.indexOf(r))},onPointerUp:()=>D(null),onPointerCancel:()=>D(null),onKeyDown:n=>{(n.key===`ArrowUp`||n.key===`ArrowDown`)&&(n.preventDefault(),te(e,t+(n.key===`ArrowUp`?-1:1)))},children:[(0,Y.jsx)(`span`,{className:`font-medium text-[12px] tabular-nums`,children:t+1}),(0,Y.jsx)(Pe,{className:`size-4`})]}):null,a.startsWith(`image/`)?(0,Y.jsx)(`img`,{src:r(`/api/runs/${n}/assets/${e}`),alt:``,className:`size-14 rounded-lg object-cover`}):(0,Y.jsx)(`div`,{className:`flex size-12 shrink-0 items-center justify-center rounded-lg bg-paper-2`,children:a.startsWith(`video/`)?(0,Y.jsx)(O,{className:`size-5 text-ink-3`}):(0,Y.jsx)(f,{className:`size-5 text-ink-3`})}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-[14px]`,children:i?.name??`✓`}),(0,Y.jsx)(U,{label:K(`run.removeFile`),onClick:()=>ee(e),children:(0,Y.jsx)(q,{className:`size-4`})})]},e)})}):null,I?(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>c.current?.click(),className:H(B,`min-w-[9rem] flex-1 px-4`,S&&`border-ember text-ink`),children:[k?(0,Y.jsx)(Ie,{className:`size-6`}):(0,Y.jsx)(f,{className:`size-6`}),d?K(`run.uploading`):P.length?K(`run.uploadMore`):K(g?`run.uploadTouch`:`run.upload`)]}),M?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>m?x(!0):l.current?.click(),className:H(B,`w-28`),children:[(0,Y.jsx)(be,{className:`size-6`}),K(`run.camera`)]}):null,N&&!(m&&Pt)?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>u.current?.click(),className:H(B,`w-28`),children:[(0,Y.jsx)(ne,{className:`size-6`}),K(`camera.video`)]}):null]}):null,(0,Y.jsx)(`input`,{ref:c,type:`file`,hidden:!0,multiple:A,accept:k?`image/*`:void 0,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}),(0,Y.jsx)(`input`,{ref:l,type:`file`,hidden:!0,accept:`image/*`,capture:`environment`,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}),N?(0,Y.jsx)(`input`,{ref:u,type:`file`,hidden:!0,accept:`video/*`,capture:`environment`,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}):null,(0,Y.jsx)(Ft,{open:b,multiple:A,video:N,onClose:()=>x(!1),onCapture:e=>L([e]),onNative:()=>l.current?.click()}),A&&(e.min||e.max)?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-ink-3 tabular-nums`,children:e.min&&P.length<e.min?K(`run.filesMin`,{n:P.length,min:e.min}):e.max?K(`run.filesOf`,{n:P.length,max:e.max}):null}):null,v?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-rose`,children:v}):null]})}function vn(e){let t=`${e.id} ${e.label}`.toLowerCase();return/telefon|phone|handy|mobil(?!it)|\btel\b|rückruf/.test(t)?{type:`tel`,inputMode:`tel`,autoComplete:`tel`}:/\bplz\b|postleitzahl|postal|zip/.test(t)?{inputMode:`numeric`,autoComplete:`postal-code`}:/iban/.test(t)?{autoCapitalize:`characters`,autoCorrect:`off`,spellCheck:!1}:/vorname|first.?name/.test(t)?{autoComplete:`given-name`,autoCapitalize:`words`}:/nachname|last.?name|surname/.test(t)?{autoComplete:`family-name`,autoCapitalize:`words`}:/firma|unternehmen|company|organi[sz]ation/.test(t)?{autoComplete:`organization`,autoCapitalize:`words`}:/straße|strasse|street|anschrift|adresse|address/.test(t)?{autoComplete:`street-address`,autoCapitalize:`words`}:/\b(ort|stadt|city|town)\b/.test(t)?{autoComplete:`address-level2`,autoCapitalize:`words`}:/\bname\b|ansprechp/.test(t)?{autoComplete:`name`,autoCapitalize:`words`}:{autoCapitalize:`sentences`}}function yn({field:e,value:t,onChange:n}){let[r,i]=(0,J.useState)(!1);return(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)(W,{value:t,placeholder:e.placeholder,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,onChange:e=>n(e.target.value)}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>i(!0),className:`inline-flex h-11 shrink-0 items-center gap-2 rounded-lg border border-input bg-card px-3.5 font-medium text-[14px] text-ink-2 transition hover:border-ember hover:text-ink`,children:[(0,Y.jsx)(Xe,{className:`size-4`}),` `,K(`scan.button`)]}),(0,Y.jsx)(Ut,{open:r,onClose:()=>i(!1),onResult:n})]})}function bn({field:e,value:t,values:n,runId:r,view:i,onChange:a,onBusy:o,error:s}){let c=t==null?``:String(t),l;switch(e.kind){case`textarea`:l=(0,Y.jsx)(oe,{value:c,placeholder:e.placeholder,autoCapitalize:`sentences`,enterKeyHint:`enter`,onChange:e=>a(e.target.value)});break;case`number`:l=(0,Y.jsx)(W,{inputMode:`decimal`,autoComplete:`off`,value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)});break;case`select`:{let t=e.options??[];l=t.length<=5&&t.every(e=>e.length<=28)?(0,Y.jsx)(ae,{value:c,options:t,onChange:a}):(0,Y.jsx)(le,{value:c,placeholder:`—`,onChange:a,options:t.map(e=>({value:e,label:e}))});break}case`multiselect`:l=(0,Y.jsx)(ae,{multi:!0,value:Array.isArray(t)?t:[],options:e.options??[],onChange:a});break;case`date`:l=(0,Y.jsx)(W,{type:`date`,value:c,onChange:e=>a(e.target.value),className:`w-full sm:w-56`});break;case`email`:l=(0,Y.jsx)(W,{type:`email`,inputMode:`email`,autoComplete:`email`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)});break;case`url`:l=(0,Y.jsx)(W,{type:`url`,inputMode:`url`,autoComplete:`url`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,value:c,placeholder:e.placeholder??`https://`,onChange:e=>a(e.target.value)});break;case`toggle`:l=(0,Y.jsx)(ce,{checked:t===!0,onChange:a,label:e.label});break;case`color`:l=(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(re,{value:c||`#e0531b`,onChange:e=>a(e.target.value)}),(0,Y.jsx)(W,{value:c,placeholder:`#e0531b`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,onChange:e=>a(e.target.value),className:`w-36`})]});break;case`image`:case`file`:l=(0,Y.jsx)(_n,{field:e,value:t,runId:r,onChange:a,onBusy:o});break;case`items`:l=(0,Y.jsx)(hn,{field:e,value:t,values:n,onChange:a});break;case`connection`:l=(0,Y.jsx)(Qt,{runId:r,connection:i?.connections.find(t=>t.id===e.connection)});break;case`list`:{let t=i?.lists.find(t=>t.def.id===e.list);l=t?(0,Y.jsx)(tn,{runId:r,list:t,editable:!0}):null;break}case`location`:l=(0,Y.jsx)(zt,{value:t,runId:r,placeholder:e.placeholder,onChange:a,onBusy:o});break;case`audio`:l=(0,Y.jsx)(pn,{value:t,runId:r,onChange:a,onBusy:o});break;case`signature`:l=(0,Y.jsx)(Xt,{label:e.label,value:t,runId:r,onChange:a});break;default:l=e.scan?(0,Y.jsx)(yn,{field:e,value:c,onChange:a}):(0,Y.jsx)(W,{...vn(e),value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)})}return(0,Y.jsxs)(`div`,{children:[e.kind===`toggle`?(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-6`,children:[(0,Y.jsx)(B,{hint:e.help,children:e.label}),l]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(B,{hint:e.help,required:e.required,children:e.label}),l]}),s?(0,Y.jsx)(`div`,{className:`mt-1.5 text-[13px] text-rose`,children:s}):null]})}var xn=45e3;function Sn(e){let[t,n]=(0,J.useState)(null),[i,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)({});(0,J.useEffect)(()=>{if(n(null),l(!1),!e)return;let t=!1,i=0,s,c=null,u=Date.now(),d=()=>{t=!0,c?.close(),l(!0)},f=async()=>{try{let r=await a.get(`/api/runs/${e}`);t||n(r)}catch(e){e instanceof o&&e.status===404&&d()}},p=()=>{if(clearTimeout(s),c?.close(),t)return;let a=new EventSource(r(`/api/runs/${e}/stream`),{withCredentials:!0});c=a,u=Date.now(),a.addEventListener(`view`,e=>{i=0,u=Date.now(),n(JSON.parse(e.data))}),a.addEventListener(`ping`,()=>{u=Date.now()}),a.onerror=()=>{a.close(),!(t||c!==a)&&(c=null,f(),i=Math.min(i+1,6),s=setTimeout(p,500*2**i))}},m=()=>{t||document.visibilityState!==`visible`||(!c||c.readyState===EventSource.CLOSED||Date.now()-u>xn?(i=0,p()):f())},h=setInterval(()=>{!t&&c&&Date.now()-u>xn&&(i=0,p())},15e3);return p(),document.addEventListener(`visibilitychange`,m),window.addEventListener(`pageshow`,m),window.addEventListener(`online`,m),()=>{t=!0,clearTimeout(s),clearInterval(h),document.removeEventListener(`visibilitychange`,m),window.removeEventListener(`pageshow`,m),window.removeEventListener(`online`,m),c?.close()}},[e]);let m=(0,J.useCallback)(async(t,n)=>{if(!e)return!1;d(!0),s(null),p({});try{return await a.post(`/api/runs/${e}/${t}`,n),!0}catch(e){return e instanceof o&&e.status===422&&Array.isArray(e.body?.fields)&&p(Object.fromEntries(e.body.fields.map(e=>[e.field,e.message]))),s(e.message),!1}finally{d(!1)}},[e]);return{view:t,notFound:c,error:i,busy:u,fieldErrors:f,submitPage:(e,t)=>m(`pages/${e}`,{values:t}),accept:(e,t)=>m(`reviews/${e}`,{type:`accept`,edits:t}),regenerate:(e,t,n,r)=>m(`reviews/${e}`,{type:`regenerate`,target:t,note:n,items:r?.length?r:void 0}),back:()=>m(`back`),retry:()=>m(`retry`)}}function Cn({view:e}){let t=Math.round(Math.min(e.progress.done,e.progress.total)/Math.max(1,e.progress.total)*100);return(0,Y.jsx)(`div`,{className:`h-[3px] w-full bg-paper-2`,children:(0,Y.jsx)(`div`,{className:`h-full bg-ember transition-[width] duration-700 ease-out`,style:{width:`${t}%`}})})}function wn({title:e,description:t,kicker:n}){return(0,Y.jsxs)(`div`,{className:`mb-8`,children:[n?(0,Y.jsx)(`p`,{className:`mb-4 text-[15px] text-ink-2 leading-relaxed`,children:n}):null,(0,Y.jsx)(`h1`,{className:`font-display font-semibold text-[28px] leading-[1.15] tracking-tight sm:text-[32px]`,children:e}),t?(0,Y.jsx)(`p`,{className:`mt-2 text-[15px] text-ink-3 leading-relaxed`,children:t}):null]})}function Tn(e,t){let n={};for(let r of e.fields)n[r.id]=t.values[r.id]??t.prefill?.[r.id]??r.default??(r.kind===`multiselect`?[]:void 0);return n}function En(e){return Array.from(e.querySelectorAll(`input:not([type="hidden"], [type="file"], [type="checkbox"], [type="color"], [type="range"], [disabled]), textarea:not([disabled])`)).filter(e=>!e.closest(`dialog`)&&e.offsetParent!==null)}function Dn({view:e,run:t,step:n}){let[r,i]=(0,J.useState)(()=>Tn(n,e)),[a,o]=(0,J.useState)(new Set),s=(0,J.useRef)(null),c=e.progress.done===0,l=()=>void t.submitPage(n.id,r);return(0,J.useEffect)(()=>{if(!s.current)return;let e=En(s.current).filter(e=>e instanceof HTMLInputElement);for(let[t,n]of e.entries())(n.dataset.hint||!n.hasAttribute(`enterkeyhint`))&&(n.dataset.hint=`1`,n.setAttribute(`enterkeyhint`,t===e.length-1?`go`:`next`))}),(0,Y.jsxs)(`form`,{ref:s,className:`animate-rise`,onSubmit:e=>{e.preventDefault(),a.size||l()},onKeyDown:e=>{let t=e.target;if(e.key!==`Enter`||e.defaultPrevented||e.nativeEvent.isComposing||!(t instanceof HTMLInputElement)||t.closest(`dialog`))return;let n=En(e.currentTarget),r=n[n.indexOf(t)+1];r&&(e.preventDefault(),r.focus())},children:[(0,Y.jsx)(wn,{title:n.title,description:n.description,kicker:c?e.wizard.intro:null}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-7`,children:n.fields.map(n=>(0,Y.jsx)(bn,{field:n,value:r[n.id],values:r,runId:e.id,view:e,error:t.fieldErrors[n.id],onChange:e=>i(t=>({...t,[n.id]:e})),onBusy:e=>o(t=>{if(t.has(n.id)===e)return t;let r=new Set(t);return e?r.add(n.id):r.delete(n.id),r})},n.id))}),(0,Y.jsx)(On,{view:e,run:t,sticky:!0,children:(0,Y.jsxs)(G,{type:`submit`,size:`lg`,busy:t.busy,disabled:a.size>0,children:[n.cta||K(`run.next`),` `,(0,Y.jsx)(u,{className:`size-4`})]})})]})}function On({view:e,run:t,sticky:n,children:r}){return(0,Y.jsxs)(`div`,{className:H(`mt-10 flex items-center justify-between gap-3`,n&&`action-bar`),children:[e.canBack?(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>void t.back(),disabled:t.busy,children:[(0,Y.jsx)(l,{className:`size-4`}),` `,K(`run.back`)]}):(0,Y.jsx)(`span`,{}),r]})}function kn(){let e=v(),[t,n]=(0,J.useState)(!1),r=e!==`off`;return(0,Y.jsxs)(`div`,{className:`mt-6 flex flex-col items-center gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,"aria-pressed":r,disabled:t,onClick:async()=>{if(r){C();return}n(!0),await T(),n(!1)},className:H(`inline-flex h-11 items-center gap-2 rounded-full px-4 font-medium text-[14px] ring-1 transition`,r?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink hover:ring-ink-4`),children:[r?(0,Y.jsx)(ge,{className:`size-4 text-ember-strong`}):(0,Y.jsx)(ve,{className:`size-4`}),K(r?`notify.on`:`notify.ask`)]}),(0,Y.jsx)(`p`,{className:`max-w-xs text-[12px] text-ink-4 leading-relaxed`,children:K(e===`off`?`notify.why`:e===`on`?`notify.onHint`:S()?`notify.blocked`:`notify.quiet`)})]})}function An({view:e,compact:t,awake:n}){let a=(0,J.useMemo)(()=>{let t=[...e.events].reverse().find(t=>t.type===`step_started`&&t.stepId===e.step?.id);return t?new Date(t.at).getTime():Date.now()},[e.events,e.step?.id]),[o,s]=(0,J.useState)(Date.now());(0,J.useEffect)(()=>{let e=setInterval(()=>s(Date.now()),1e3);return()=>clearInterval(e)},[]);let c=[...e.events].reverse().find(t=>t.type===`step_started`&&t.stepId===e.step?.id)?.message??e.step?.title??K(`run.working`),l=e.events.filter(e=>(e.type===`tool`||e.type===`info`)&&new Date(e.at).getTime()>=a-500),u=l.slice(-4),d=[...new Set(l.map(e=>e.asset).filter(e=>!!e))],f=[...l].reverse().find(e=>e.asset)?.asset;return(0,Y.jsxs)(`div`,{className:`flex animate-rise flex-col items-center pt-6 text-center`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:t?130:170,fluffy:!0}),(0,Y.jsx)(`h2`,{className:`mt-4 font-display font-semibold text-[22px] tracking-tight`,children:c}),(0,Y.jsx)(`div`,{className:`mt-1 text-[13px] text-ink-4 tabular-nums`,children:K(`run.elapsed`,{s:Math.max(0,Math.round((o-a)/1e3))})}),d.length?(0,Y.jsx)(`div`,{className:`mt-5 flex max-w-full flex-wrap justify-center gap-2`,children:d.slice(-8).map(t=>(0,Y.jsx)(`img`,{src:r(`/api/runs/${e.id}/assets/${t}`),alt:``,className:H(`size-16 animate-rise rounded-lg bg-paper-2 object-cover ring-1 ring-border-soft transition sm:size-20`,t===f?`ring-2 ring-ember`:`opacity-70`)},t))}):null,(0,Y.jsx)(`div`,{className:`mt-6 flex min-h-[7rem] w-full max-w-sm flex-col gap-1.5`,children:u.map((e,t)=>(0,Y.jsxs)(`div`,{className:H(`flex items-center justify-center gap-2 text-[13px] transition-opacity`,t===u.length-1?`text-ink-2`:`text-ink-4`),children:[t===u.length-1?(0,Y.jsx)(h,{className:`size-3.5 animate-breathe text-ember`}):null,(0,Y.jsx)(`span`,{className:`truncate`,children:e.message})]},e.id))}),t?null:(0,Y.jsx)(kn,{}),n?(0,Y.jsx)(`p`,{className:`mt-3 text-[12px] text-ink-4`,children:K(`run.awake`)}):null]})}function jn(e){let t=(0,J.useRef)({running:!1,since:0,ask:null});(0,J.useEffect)(()=>{if(!e)return;let n=t.current,r=e.status===`running`,i=r?n.running?n.since:Date.now():0,a=t=>{document.visibilityState!==`visible`&&!document.title.startsWith(`● `)&&(document.title=`● ${document.title}`),D({title:e.wizard.title,body:t,tag:e.id})};r&&e.ask&&e.ask.id!==n.ask?a(K(`notify.needsYou`)):!r&&n.running&&Date.now()-n.since>8e3&&a(e.status===`failed`?K(`run.failed`):e.status===`done`?K(`notify.done`):K(`notify.next`)),t.current={running:r,since:i,ask:e.ask?.id??null}},[e]),(0,J.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&document.title.startsWith(`● `)&&(document.title=document.title.slice(2))};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[])}function Mn({view:e,run:t,step:n}){let[r,i]=(0,J.useState)({}),[a,o]=(0,J.useState)({}),[s,c]=(0,J.useState)(``),l=e.shown.filter(e=>e.output),[d,f]=(0,J.useState)(l.length===1?l[0].step.id:null),[p,m]=(0,J.useState)({}),h=(0,J.useRef)(null),g=l.find(e=>e.step.id===d),_=g?.step.type===`generate`&&(g.output?.assets?.length??0)>1,v=()=>{g&&s.trim()&&t.regenerate(n.id,g.step.id,s.trim(),p[g.step.id])};return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsx)(wn,{title:n.title,description:n.description}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[e.shown.map(({step:t,output:s})=>{let c=!!n.edit&&t.type===`agent`&&t.output.format!==`json`;return(0,Y.jsxs)(`section`,{children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-medium text-[13px] text-ink-3 uppercase tracking-[0.06em]`,children:t.title}),(0,Y.jsx)(`div`,{className:`flex items-center`,children:c&&!a[t.id]?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>({...e,[t.id]:!0})),className:`inline-flex h-8 items-center gap-1.5 rounded-full px-3 text-[13px] text-ink-2 hover:bg-accent hover:text-ink coarse:h-11`,children:[(0,Y.jsx)(k,{className:`size-3.5`}),` `,K(`run.edit`)]}):null})]}),(0,Y.jsx)(x,{base:`/api/runs/${e.id}`,step:t,output:s,editable:c&&a[t.id],draft:r[t.id],onDraft:e=>i(n=>({...n,[t.id]:e})),picked:p[t.id],onPick:n.regenerate?e=>{f(t.id),m(n=>{let r=n[t.id]??[];return{...n,[t.id]:r.includes(e)?r.filter(t=>t!==e):[...r,e]}}),h.current?.focus()}:void 0})]},t.id)}),e.lists.map(t=>(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(`h3`,{className:`mb-2 font-medium text-[13px] text-ink-3 uppercase tracking-[0.06em]`,children:t.def.title}),t.def.check?(0,Y.jsx)(an,{runId:e.id,list:t}):(0,Y.jsx)(tn,{runId:e.id,list:t,editable:!0})]},t.def.id)),n.regenerate&&l.length?(0,Y.jsxs)(se,{className:`p-3`,children:[l.length>1?(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 pb-2`,children:[(0,Y.jsx)(`span`,{className:`mr-1 text-[13px] text-ink-3`,children:K(`run.feedbackTarget`)}),l.map(({step:e})=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":d===e.id,onClick:()=>{f(e.id),h.current?.focus()},className:H(`inline-flex h-8 items-center rounded-full px-3 text-[13px] ring-1 transition coarse:h-11`,d===e.id?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink`),children:e.title},e.id))]}):null,(0,Y.jsx)(oe,{ref:h,minRows:2,maxRows:8,value:s,placeholder:K(`run.feedbackPlaceholder`),onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),v())},className:`border-0 bg-transparent shadow-none focus:ring-0`}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-1 pt-1`,children:[(0,Y.jsx)(`span`,{className:`min-w-0 text-[12px] text-ink-3`,children:_?p[g.step.id]?.length?K(`run.regeneratePicked`,{n:[...p[g.step.id]].sort((e,t)=>e-t).map(e=>e+1).join(`, `)}):K(`run.regenerateAll`):!g&&s.trim()?K(`run.feedbackPick`):null}),(0,Y.jsxs)(G,{size:`sm`,variant:`secondary`,busy:t.busy,disabled:!s.trim()||!g,onClick:v,children:[(0,Y.jsx)(te,{className:`size-3.5`}),` `,K(`run.regenerateGo`)]})]})]}):null]}),(0,Y.jsx)(On,{view:e,run:t,sticky:!0,children:(0,Y.jsxs)(G,{size:`lg`,busy:t.busy,onClick:()=>void t.accept(n.id,Object.keys(r).length?r:void 0),children:[K(`run.accept`),` `,(0,Y.jsx)(u,{className:`size-4`})]})})]})}function Nn({view:e,run:t,step:n,onRestart:r}){let a=e.shown.filter(e=>e.output);return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-8 flex flex-wrap items-center gap-x-4 gap-y-5`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:64}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1 basis-[12rem]`,children:[(0,Y.jsx)(`h1`,{className:`text-balance font-display font-semibold text-[28px] leading-tight tracking-tight sm:text-[32px]`,children:n.title}),n.message?(0,Y.jsx)(`p`,{className:`mt-1 text-[15px] text-ink-3`,children:n.message}):null]}),e.shown.some(e=>e.output)?(0,Y.jsx)(`div`,{className:`max-sm:basis-full`,children:(0,Y.jsx)(lt,{runId:e.id,title:`${n.title} · ${e.wizard.title}`,initial:e.shareUrl?{url:e.shareUrl,expiresAt:e.expiresAt}:null})}):null]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[a.map(({step:t,output:n,formats:r,label:i})=>(0,Y.jsxs)(se,{className:`p-4 sm:p-5`,children:[(0,Y.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-display font-semibold text-[17px]`,children:i??t.title}),(0,Y.jsx)(E,{base:`/api/runs/${e.id}`,stepId:t.id,formats:r,title:i??t.title})]}),(0,Y.jsx)(x,{base:`/api/runs/${e.id}`,step:t,output:n}),n?.assets?.some(e=>e.ai)?(0,Y.jsx)(`p`,{className:`mt-3 text-[12px] text-ink-3 leading-relaxed`,children:K(`ai.publish`)}):null]},t.id)),e.lists.map(t=>(0,Y.jsxs)(se,{className:`p-4 sm:p-5`,children:[(0,Y.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-display font-semibold text-[17px]`,children:t.label??t.def.title}),(0,Y.jsx)(sn,{runId:e.id,list:t})]}),(0,Y.jsx)(tn,{runId:e.id,list:t,editable:!0})]},t.def.id))]}),(0,Y.jsx)(On,{view:e,run:t,children:r?(0,Y.jsxs)(G,{variant:`secondary`,onClick:r,children:[(0,Y.jsx)(Je,{className:`size-4`}),` `,K(`run.again`)]}):(0,Y.jsx)(`span`,{})})]})}function Pn({view:e,run:t}){return(0,Y.jsxs)(`div`,{className:`flex animate-rise flex-col items-center pt-8 text-center`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:90}),(0,Y.jsx)(`h2`,{className:`mt-4 font-display font-semibold text-[22px]`,children:K(`run.failed`)}),(0,Y.jsx)(`p`,{className:`mt-2 max-w-md text-[15px] text-ink-3`,children:e.error}),(0,Y.jsxs)(`div`,{className:`mt-8 flex gap-3`,children:[e.canBack?(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>void t.back(),children:[(0,Y.jsx)(l,{className:`size-4`}),` `,K(`run.back`)]}):null,(0,Y.jsxs)(G,{onClick:()=>void t.retry(),busy:t.busy,children:[(0,Y.jsx)(Je,{className:`size-4`}),` `,K(`run.retry`)]})]})]})}function Fn({runId:e,compact:t,onRestart:n,onView:r,stickyProgress:i}){let a=Sn(e),{view:o}=a;(0,J.useEffect)(()=>{r?.(o)},[o,r]),_();let s=w(o?.status===`running`&&!o.ask);if(jn(o),a.notFound)return(0,Y.jsx)(`div`,{className:`py-24 text-center text-ink-3`,children:K(`run.notFound`)});if(!o)return(0,Y.jsx)(`div`,{className:`flex justify-center py-24 text-ink-4`,children:(0,Y.jsx)(V,{})});let c=o.step,l=null;if(o.status===`running`&&o.ask)l=(0,Y.jsx)(ut,{runId:o.id,ask:o.ask},o.ask.id);else if(o.status===`running`)l=(0,Y.jsx)(An,{view:o,compact:t,awake:s});else if(o.status===`failed`)l=(0,Y.jsx)(Pn,{view:o,run:a});else if(o.status===`cancelled`)l=(0,Y.jsx)(`div`,{className:`py-24 text-center text-ink-3`,children:K(`run.cancelled`)});else if(c?.type===`page`)l=(0,Y.jsx)(Dn,{view:o,run:a,step:c},c.id);else if(c?.type===`review`){let e=o.shown.map(e=>e.output?.at??``).join(`|`);l=(0,Y.jsx)(Mn,{view:o,run:a,step:c},`${c.id}:${e}`)}else c?.type===`result`&&(l=(0,Y.jsx)(Nn,{view:o,run:a,step:c,onRestart:n}));let u=c?.type===`review`&&o.status===`waiting_input`&&o.lists.some(e=>e.def.check);return(0,Y.jsxs)(`div`,{className:`flex min-h-full flex-col`,children:[i?(0,Y.jsx)(`div`,{className:`sticky top-0 z-10`,children:(0,Y.jsx)(Cn,{view:o})}):(0,Y.jsx)(Cn,{view:o}),(0,Y.jsxs)(`div`,{className:H(`safe-x mx-auto w-full flex-1`,u?`max-w-[1240px] py-8`:t?`max-w-[620px] py-8`:`max-w-[640px] py-8 sm:py-16`),children:[l,a.error&&o.status!==`failed`?(0,Y.jsx)(`div`,{className:`mt-4 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:a.error}):null,o.keeps&&o.status!==`running`?(0,Y.jsx)(`div`,{className:`mt-10 flex justify-center`,children:(0,Y.jsx)(ln,{runId:o.id})}):null]})]})}export{Qe as n,me as r,Fn as t};
|