videobook 0.2.5 → 0.3.0
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/CHANGELOG.md +23 -0
- package/README.md +6 -2
- package/dist/archive-b2.js +1 -1
- package/dist/cli/args.js +42 -3
- package/dist/cli/config-command.js +17 -1
- package/dist/cli/doctor-command.js +15 -0
- package/dist/cli/har-command.js +86 -0
- package/dist/cli/main.js +13 -1
- package/dist/content-store.js +2 -1
- package/dist/diagnostics.js +1 -1
- package/dist/env-secrets.js +1 -0
- package/dist/generation-har.js +106 -0
- package/dist/har-capture.js +142 -0
- package/dist/har-export.js +238 -0
- package/dist/har-index.js +98 -0
- package/dist/har-retention.js +73 -0
- package/dist/har-settings.js +27 -0
- package/dist/jobs/_alibaba-upload.js +2 -4
- package/dist/jobs/_fal-upload.js +2 -4
- package/dist/jobs/_image-edit-adapter.js +1 -1
- package/dist/jobs/_kie-upload.js +2 -4
- package/dist/jobs/complete-provider-task.js +5 -2
- package/dist/jobs/generate-media.js +9 -1
- package/dist/jobs/image-subjects.js +1 -1
- package/dist/jobs/kie-paygate.js +10 -3
- package/dist/jobs/run-notebook.js +4 -1
- package/dist/jobs/xai-paygate.js +5 -2
- package/dist/media/adapters/kie.js +2 -1
- package/dist/media/cost.js +1 -1
- package/dist/package-version.js +18 -0
- package/dist/posts/dropbox-auth.js +1 -1
- package/dist/posts/post-metrics.js +2 -1
- package/dist/provider-usage.js +1 -18
- package/dist/queue.js +12 -1
- package/dist/serve.js +2 -0
- package/dist/tools/api-status.js +1 -1
- package/dist/tools/generate-media.js +3 -0
- package/dist/tools/generation-payload.js +17 -2
- package/dist/tools/get-generation-har.js +43 -0
- package/dist/tools/index.js +4 -0
- package/dist/tools/list-cell-generations.js +19 -0
- package/dist/tools/reconcile-project-work.js +18 -12
- package/dist/tools/set-har-capture.js +30 -0
- package/dist/upload.js +2 -1
- package/dist/usage-providers.js +48 -10
- package/dist/workspace-action-groups.js +2 -2
- package/dist/x/account.js +1 -1
- package/dist/x/authenticated-handle.js +1 -1
- package/dist/x/oauth-flow.js +1 -1
- package/dist/x/post-to-x.js +2 -1
- package/dist/x/x-tokens.js +2 -1
- package/package.json +15 -14
- package/ui/assets/{alive-captions-duTKsyll.js → alive-captions-Cj8C1tCN.js} +1 -1
- package/ui/assets/{confirm-bodies--2sc9DbH.js → confirm-bodies-BxWXwDf0.js} +1 -1
- package/ui/assets/{fullscreen-COrmiHPn.js → fullscreen-DyEncSdm.js} +1 -1
- package/ui/assets/{goal-ui-D5Xsm2EY.js → goal-ui-BdFeoSWh.js} +2 -2
- package/ui/assets/{index-DEKl00St.js → index-QZ8lbemN.js} +9 -9
- package/ui/assets/inspector-BC6xWkJU.js +1 -0
- package/ui/assets/{jobs-ui-DdP2Re41.js → jobs-ui-BudI4w0r.js} +1 -1
- package/ui/assets/{music-video-B709JZqa.js → music-video-CT4C55ok.js} +1 -1
- package/ui/assets/ui-mq0uIS5P.css +1 -0
- package/ui/assets/ui-z5r-p0K9.js +2 -0
- package/ui/assets/{vendor-BFupLz37.js → vendor-D8XcMav4.js} +2 -2
- package/ui/assets/{vendor-flow-CKiuzaeM.js → vendor-flow-nqTFQmTh.js} +1 -1
- package/ui/assets/vendor-mcp-D_C3EZPv.js +60 -0
- package/ui/assets/videobook-CsW453sb.js +21 -0
- package/ui/index.html +12 -12
- package/ui/assets/inspector-EBp3IhvH.js +0 -1
- package/ui/assets/ui-Oirr9VOf.css +0 -1
- package/ui/assets/ui-jRPWsNUw.js +0 -2
- package/ui/assets/vendor-mcp-DQEeVZH0.js +0 -67
- package/ui/assets/videobook-0DOLlhG2.js +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as U,j as t,a as K,b as Sn}from"./vendor-react-Dj7D1fD4.js";import{df as Nn,bG as Ge,dg as In,bR as An,bJ as Cn,cq as pt,bS as _t,dh as wn,di as Ft,dj as Jt,dk as kn,dl as Ht,dm as lt,dn as qe,dp as ue,dq as Mn,dr as Qe,ds as Vt,dt as $n,du as Xe,dv as Pn,dw as Tn,dx as Dn,an as zt,am as Rn,dy as Ln,dz as En,dA as Gn,bD as On,dB as Fn,dC as Vn,dD as zn,dE as Un,dF as Bn,dG as Kt,ad as Je,dH as _n,dI as Jn,dJ as Hn,dK as Kn,dL as qn,dM as Wn,aj as Qn,dN as Xn}from"./videobook-CsW453sb.js";import{c as Ut,M as Yn,A as yt,b as Zn,R as es,D as ts,d as ns,e as ss,f as is,C as os,a as rs,g as as,u as ls,N as cs,h as qt,i as ds,j as ps,k as us}from"./ui-z5r-p0K9.js";import{n as Ye,b as Oe}from"./vendor-D8XcMav4.js";import{G as ms}from"./confirm-bodies-BxWXwDf0.js";import{H as Wt,j as fs,i as Ee,c as Qt,e as hs,an as gs,B as Xt,a4 as ys,$ as Yt,m as xs,C as Zt,X as js,J as bs,al as ut,ao as vs,R as Ss,a3 as Ns,ad as Is}from"./vendor-icons-CGqhCIXV.js";const As=new Set(["extract_audio","split_video","prompt","analyze","concat","splice"]);function en(i){return As.has(i)}const Cs=["prompt","provider","model","operation","tool","startSeconds","endSeconds","overlap","frameMode","timestampSeconds","generationMode"];function We(i){return typeof i=="number"&&Number.isFinite(i)?String(i):"0"}function ws(i,e=[]){const n=i.inputs?.generationSettings,r=!n||typeof n!="object"||Array.isArray(n)?{}:Object.fromEntries(Object.entries(n).filter(s=>{const a=s[1];return typeof a=="string"||typeof a=="number"||typeof a=="boolean"}));return{...Object.fromEntries(e.flatMap(s=>{const a=i.inputs?.[s.name];return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?[[s.name,a]]:[]})),...r}}function et(i,e=[]){const n=i.inputs?.frameMode;return{prompt:i.prompt??"",provider:i.provider??"",model:i.model??"",operation:i.operation??"",tool:i.tool??"",startSeconds:We(i.inputs?.startSeconds),endSeconds:We(i.inputs?.endSeconds),overlap:We(i.inputs?.overlap),frameMode:n==="time"||n==="last"?n:"first",timestampSeconds:We(i.inputs?.timestampSeconds),generationMode:typeof i.inputs?.generationMode=="string"?i.inputs.generationMode:"",generationSettings:ws(i,e)}}function ks(i,e,n=[]){const r=Jn(i,e,n);if(!r||!Ge(i.type))return et(i);const o=Qe(e,i.type,r),s=et(i,o?.controls);return{...s,...r,generationMode:o?Xe(o,n,s.generationMode):s.generationMode}}function Ms(i,e,n=[]){const r=et(i,n);return Cs.some(o=>e[o]!==r[o])||JSON.stringify(e.generationSettings)!==JSON.stringify(r.generationSettings)}function ct(i){if(!i.trim())return!1;const e=Number(i);return Number.isFinite(e)&&e>=0}function $s(i,e){return Ge(i.type)?!!(e.provider.trim()&&e.model.trim()&&e.operation.trim()&&e.tool.trim()):i.type==="split_video"?ct(e.startSeconds)&&ct(e.endSeconds):i.type==="splice"&&e.operation==="splice_video"?ct(e.overlap):!0}function tn(i,e,n=[]){const r={...i.inputs??{}};delete r.generationMode,delete r.generationSettings;for(const o of n)delete r[o.name];return{...r,...e.generationMode?{generationMode:e.generationMode}:{},...Object.keys(e.generationSettings).length>0?{generationSettings:e.generationSettings}:{}}}function Bt(i,e,n=[],r=n){const o=et(i,n),s={};return e.prompt!==o.prompt&&(s.prompt=e.prompt),en(i.type)||(e.provider!==o.provider&&(s.provider=e.provider||void 0),e.model!==o.model&&(s.model=e.model||void 0),e.operation!==o.operation&&(s.operation=e.operation||void 0),e.tool!==o.tool&&(s.tool=e.tool||void 0)),Ge(i.type)&&(e.generationMode!==o.generationMode||JSON.stringify(e.generationSettings)!==JSON.stringify(o.generationSettings))&&(s.inputs=tn(i,e,r)),i.type==="split_video"&&(e.startSeconds!==o.startSeconds||e.endSeconds!==o.endSeconds)&&(s.inputs={...i.inputs??{},startSeconds:Number(e.startSeconds),endSeconds:Number(e.endSeconds)}),i.type==="splice"&&e.operation==="splice_video"&&e.overlap!==o.overlap&&(s.inputs={...i.inputs??{},overlap:Number(e.overlap)}),s}function Ps(i){return i.type==="extract_audio"?["video"]:i.type==="split_video"?["video","analysis"]:i.type==="analysis"?["result"]:i.type==="image"?["media","segment"]:i.type==="audio"||i.type==="video"?["media"]:[]}function Ts(i,e){const n=e.filter(r=>r.target===i.id).map(r=>r.targetInput);return[...new Set([...Ps(i),...n])]}function dt(i){return i.type==="video"||i.type==="generate_video"||i.type==="concat"||i.type==="splice"}function Ds(i,e){return i||e>0}function nn(i){if(i.classList.remove("inspector-source-picker-above"),!i.open)return;const e=i.querySelector("summary");e?.scrollIntoView({block:"nearest",inline:"nearest"});const n=i.querySelector(".inspector-source-picker-options"),r=i.closest(".inspector-media-content")??i.closest(".inspector-analysis-body")??i.closest(".inspector-body");if(!n||!r)return;const o=r.getBoundingClientRect(),s=(e??i).getBoundingClientRect(),a=o.bottom-s.bottom,c=s.top-o.top,d=Math.min(252,n.scrollHeight||160);a<d&&c>a&&i.classList.add("inspector-source-picker-above")}function Rs(i,e,n){return n.id===i.id?!1:i.type==="analysis"?e==="result"&&n.type==="analyze":i.type==="extract_audio"?e==="video"&&dt(n):i.type==="split_video"?e==="analysis"?n.type==="analysis":e==="video"?dt(n):!1:i.type==="prompt"&&e==="analysis"?n.type==="analysis":i.type==="audio"&&e==="media"?n.type==="extract_audio"||n.type==="generate_audio":i.type==="video"&&e==="media"?n.type==="split_video":i.type==="image"&&e==="media"?n.type==="generate_image":i.type==="image"&&e==="segment"?dt(n):!0}function Ls(i){const e=U.c(6),{address:n,onOpen:r}=i,o=`Open @${n} fullscreen`,s=`Open @${n} fullscreen`;let a,c;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=t.jsx(Yt,{size:14}),c=t.jsx("span",{children:"Fullscreen"}),e[0]=a,e[1]=c):(a=e[0],c=e[1]);let d;return e[2]!==r||e[3]!==o||e[4]!==s?(d=t.jsx("div",{className:"inspector-media-actions",role:"group","aria-label":"Video preview actions",children:t.jsx("span",{className:"inspector-media-action-slot",children:t.jsxs("button",{type:"button",className:"inspector-fullscreen-button","aria-label":o,title:s,onClick:r,children:[a,c]})})}),e[2]=r,e[3]=o,e[4]=s,e[5]=d):d=e[5],d}function Es(i){const e=U.c(18),{address:n,previewUrl:r,onOpen:o,onEdit:s}=i,a=`Open @${n} fullscreen`,c=`@${n}`;let d;e[0]!==r||e[1]!==c?(d=t.jsx("img",{src:r,alt:c},r),e[0]=r,e[1]=c,e[2]=d):d=e[2];let l;e[3]!==o||e[4]!==a||e[5]!==d?(l=t.jsx("button",{type:"button",className:"inspector-cell-media-open","aria-label":a,onClick:o,children:d}),e[3]=o,e[4]=a,e[5]=d,e[6]=l):l=e[6];const m=`Edit @${n} image`,u=`Edit @${n} image`;let f;e[7]===Symbol.for("react.memo_cache_sentinel")?(f=t.jsx(ys,{size:13}),e[7]=f):f=e[7];let h;e[8]!==s||e[9]!==m||e[10]!==u?(h=t.jsxs("button",{type:"button",className:"inspector-edit-button","aria-label":m,title:u,onClick:s,children:[f,"Edit"]}),e[8]=s,e[9]=m,e[10]=u,e[11]=h):h=e[11];let x;e[12]===Symbol.for("react.memo_cache_sentinel")?(x=t.jsxs("span",{className:"inspector-cell-media-zoom","aria-hidden":"true",children:[t.jsx(Yt,{size:13}),"Full"]}),e[12]=x):x=e[12];let y;e[13]!==h?(y=t.jsxs("span",{className:"inspector-cell-media-overlay",children:[h,x]}),e[13]=h,e[14]=y):y=e[14];let S;return e[15]!==y||e[16]!==l?(S=t.jsxs("div",{className:"inspector-cell-media-frame",children:[l,y]}),e[15]=y,e[16]=l,e[17]=S):S=e[17],S}function Gs(i){const e=U.c(11),{address:n,waveform:r,mediaUrl:o}=i,[s,a]=K.useState(0);let c;e[0]!==s||e[1]!==r?(c=t.jsx("span",{className:"inspector-audio-waveform",children:r.length>0?t.jsx(qt,{peaks:r,progress:s}):t.jsx(ds,{})}),e[0]=s,e[1]=r,e[2]=c):c=e[2];const d=`@${n} audio`;let l,m;e[3]===Symbol.for("react.memo_cache_sentinel")?(l=h=>{const x=h.currentTarget;a(Number.isFinite(x.duration)&&x.duration>0?Math.min(1,Math.max(0,x.currentTime/x.duration)):0)},m=()=>a(0),e[3]=l,e[4]=m):(l=e[3],m=e[4]);let u;e[5]!==o||e[6]!==d?(u=t.jsx("audio",{src:o,"aria-label":d,controls:!0,preload:"metadata",onTimeUpdate:l,onEnded:m},o),e[5]=o,e[6]=d,e[7]=u):u=e[7];let f;return e[8]!==c||e[9]!==u?(f=t.jsxs("div",{className:"inspector-audio-stage",children:[c,u]}),e[8]=c,e[9]=u,e[10]=f):f=e[10],f}function mt(i){const e=U.c(34),{asset:n,address:r,allowFullscreen:o,overlayMetadata:s,onOpenFullscreen:a}=i,c=s===void 0?!0:s,d=K.useRef(null),l=n.mediaUrl,m=n.thumbnailUrl??l,u=n.type==="video"||n.type==="final",f=n.type==="audio",h=n.type==="image",x=o&&(h||u);let y;e[0]!==n||e[1]!==a?(y=A=>{const M=A===void 0?"view":A;d.current?.pause(),a(n,M)},e[0]=n,e[1]=a,e[2]=y):y=e[2];const S=y;if(!m)return null;const j=`inspector-cell-preview${f?" inspector-cell-preview-audio":""}`;let v;e[3]!==r||e[4]!==n.thumbnailUrl||e[5]!==n.waveform||e[6]!==x||e[7]!==f||e[8]!==h||e[9]!==u||e[10]!==l||e[11]!==S||e[12]!==m?(v=u&&l?t.jsx("video",{ref:d,src:n.thumbnailUrl?l:`${l}#t=0.1`,poster:n.thumbnailUrl??void 0,controls:!0,controlsList:"nofullscreen nodownload noremoteplayback",disablePictureInPicture:!0,playsInline:!0,preload:"metadata"},l):f&&l?t.jsx(Gs,{address:r,waveform:n.waveform??[],mediaUrl:l}):h&&x?t.jsx(Es,{address:r,previewUrl:m,onOpen:()=>S("view"),onEdit:()=>S("edit")}):t.jsx("img",{src:m,alt:`@${r}`},m),e[3]=r,e[4]=n.thumbnailUrl,e[5]=n.waveform,e[6]=x,e[7]=f,e[8]=h,e[9]=u,e[10]=l,e[11]=S,e[12]=m,e[13]=v):v=e[13];let N;e[14]!==n.duration||e[15]!==n.height||e[16]!==n.type||e[17]!==n.width||e[18]!==f||e[19]!==u||e[20]!==c?(N=!f&&c&&t.jsx(cs,{className:"inspector-cell-metadata",width:n.width,height:n.height,durationSeconds:u?n.duration:null,fallbackLabel:n.type.toUpperCase()}),e[14]=n.duration,e[15]=n.height,e[16]=n.type,e[17]=n.width,e[18]=f,e[19]=u,e[20]=c,e[21]=N):N=e[21];let I;e[22]!==v||e[23]!==N?(I=t.jsxs("div",{className:"inspector-cell-media",children:[v,N]}),e[22]=v,e[23]=N,e[24]=I):I=e[24];let C;e[25]!==r||e[26]!==x||e[27]!==u||e[28]!==S?(C=x&&u&&t.jsx(Ls,{address:r,onOpen:()=>S("view")}),e[25]=r,e[26]=x,e[27]=u,e[28]=S,e[29]=C):C=e[29];let w;return e[30]!==j||e[31]!==I||e[32]!==C?(w=t.jsxs("section",{className:j,"aria-label":"Cell output media",children:[I,C]}),e[30]=j,e[31]=I,e[32]=C,e[33]=w):w=e[33],w}function Os(i,e,n){const r=new Map;for(const o of n??[])r.set(o.artifactId,o);for(const o of e?.values()??[])r.set(o.artifactId,o);return i&&r.set(i.artifactId,i),r}function ft(i){return i.type.replaceAll("_"," ")}function ht(i){const e=U.c(3),{cell:n,asset:r}=i;let o;return e[0]!==r||e[1]!==n.type?(o=t.jsx(yt,{asset:r,kindHint:n.type}),e[0]=r,e[1]=n.type,e[2]=o):o=e[2],o}function Fs(i){const e=U.c(73),{input:n,candidates:r,selectedCellId:o,cellAssets:s,busy:a,onSelect:c}=i,d=K.useRef(null);let l,m,u,f,h,x,y,S,j,v,N,I,C;if(e[0]!==a||e[1]!==r||e[2]!==s||e[3]!==n||e[4]!==c||e[5]!==o){let B;e[19]!==o?(B=O=>O.id===o,e[19]=o,e[20]=B):B=e[20];const E=r.find(B);let q;e[21]!==c||e[22]!==o?(q=O=>{d.current?.removeAttribute("open"),O!==o&&c(O)},e[21]=c,e[22]=o,e[23]=q):q=e[23],l=q,I=d,C="inspector-source-picker",u=zs,f=Vs,e[24]===Symbol.for("react.memo_cache_sentinel")?(h=O=>{O.key==="Escape"&&(O.preventDefault(),d.current?.removeAttribute("open"),d.current?.querySelector("summary")?.focus())},e[24]=h):h=e[24],m="preserve";let Q;e[25]!==n?(Q=n.replaceAll("_"," "),e[25]=n,e[26]=Q):Q=e[26],x=`${Q} input`;let J;e[27]!==n?(J=n.replaceAll("_"," "),e[27]=n,e[28]=J):J=e[28],y=`${J} input`,S=a,j=a?-1:0,e[29]!==a?(v=O=>{a&&O.preventDefault()},e[29]=a,e[30]=v):v=e[30],N=E?t.jsxs(t.Fragment,{children:[t.jsx(ht,{cell:E,asset:s?.get(E.id)}),t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:Oe(E.slot)}),t.jsx("small",{children:ft(E)})]})]}):t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"inspector-source-thumb inspector-source-thumb-empty","aria-hidden":"true",children:t.jsx(ut,{size:15})}),t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:"No source"}),t.jsx("small",{children:"Optional input"})]})]}),e[0]=a,e[1]=r,e[2]=s,e[3]=n,e[4]=c,e[5]=o,e[6]=l,e[7]=m,e[8]=u,e[9]=f,e[10]=h,e[11]=x,e[12]=y,e[13]=S,e[14]=j,e[15]=v,e[16]=N,e[17]=I,e[18]=C}else l=e[6],m=e[7],u=e[8],f=e[9],h=e[10],x=e[11],y=e[12],S=e[13],j=e[14],v=e[15],N=e[16],I=e[17],C=e[18];let w;e[31]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx(Zt,{className:"inspector-source-picker-chevron",size:15,"aria-hidden":"true"}),e[31]=w):w=e[31];let A;e[32]!==m||e[33]!==x||e[34]!==y||e[35]!==S||e[36]!==j||e[37]!==v||e[38]!==N?(A=t.jsxs("summary",{"data-composer-focus":m,"aria-label":x,title:y,"aria-disabled":S,tabIndex:j,onClick:v,children:[N,w]}),e[32]=m,e[33]=x,e[34]=y,e[35]=S,e[36]=j,e[37]=v,e[38]=N,e[39]=A):A=e[39];let M;e[40]!==n?(M=n.replaceAll("_"," "),e[40]=n,e[41]=M):M=e[41];const T=`${M} input options`,b=o===null;let R;e[42]!==l?(R=()=>l(null),e[42]=l,e[43]=R):R=e[43];let g;e[44]===Symbol.for("react.memo_cache_sentinel")?(g=t.jsx("span",{className:"inspector-source-thumb inspector-source-thumb-empty","aria-hidden":"true",children:t.jsx(ut,{size:15})}),e[44]=g):g=e[44];let L;e[45]===Symbol.for("react.memo_cache_sentinel")?(L=t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:"No source"}),t.jsx("small",{children:"Disconnect input"})]}),e[45]=L):L=e[45];let D;e[46]!==a||e[47]!==b||e[48]!==R?(D=t.jsxs("button",{type:"button",role:"option","aria-selected":b,disabled:a,onClick:R,children:[g,L]}),e[46]=a,e[47]=b,e[48]=R,e[49]=D):D=e[49];let F;if(e[50]!==a||e[51]!==r||e[52]!==s||e[53]!==l||e[54]!==o){let B;e[56]!==a||e[57]!==s||e[58]!==l||e[59]!==o?(B=E=>t.jsxs("button",{type:"button",role:"option","aria-selected":E.id===o,disabled:a,onClick:()=>l(E.id),children:[t.jsx(ht,{cell:E,asset:s?.get(E.id)}),t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:Oe(E.slot)}),t.jsx("small",{children:ft(E)})]})]},E.id),e[56]=a,e[57]=s,e[58]=l,e[59]=o,e[60]=B):B=e[60],F=r.map(B),e[50]=a,e[51]=r,e[52]=s,e[53]=l,e[54]=o,e[55]=F}else F=e[55];let W;e[61]!==T||e[62]!==D||e[63]!==F?(W=t.jsxs("div",{className:"inspector-source-picker-options",role:"listbox","aria-label":T,children:[D,F]}),e[61]=T,e[62]=D,e[63]=F,e[64]=W):W=e[64];let _;return e[65]!==u||e[66]!==f||e[67]!==h||e[68]!==A||e[69]!==W||e[70]!==I||e[71]!==C?(_=t.jsxs("details",{ref:I,className:C,onToggle:u,onBlur:f,onKeyDown:h,children:[A,W]}),e[65]=u,e[66]=f,e[67]=h,e[68]=A,e[69]=W,e[70]=I,e[71]=C,e[72]=_):_=e[72],_}function Vs(i){i.currentTarget.contains(i.relatedTarget)||i.currentTarget.removeAttribute("open")}function zs(i){nn(i.currentTarget)}function Ze(i){return i==="input"?"input":i==="first_frame"?"first frame input":i==="last_frame"?"last frame input":i==="replace_audio"?"replacement audio":`${i.replaceAll("_"," ")} input`}function Us(i){const e=U.c(41),{attachments:n,cells:r,cellAssets:o,busy:s,onAttach:a}=i,c=K.useRef(null);let d,l,m,u,f,h,x,y,S,j;if(e[0]!==n||e[1]!==s||e[2]!==o||e[3]!==r||e[4]!==a){const I=new Map(r.map(Js)),C=g=>{c.current?.removeAttribute("open"),a(g.targetInput,g.sourceCellId)};h=c,x="inspector-source-picker inspector-attach-source-picker",y=_s,S=Bs,e[15]===Symbol.for("react.memo_cache_sentinel")?(j=g=>{g.key==="Escape"&&(g.preventDefault(),c.current?.removeAttribute("open"),c.current?.querySelector("summary")?.focus())},e[15]=j):j=e[15];const w=s?-1:0;let A;e[16]!==s?(A=g=>{s&&g.preventDefault()},e[16]=s,e[17]=A):A=e[17];let M;e[18]===Symbol.for("react.memo_cache_sentinel")?(M=t.jsx("span",{className:"inspector-source-thumb inspector-source-thumb-empty","aria-hidden":"true",children:t.jsx(xs,{size:15})}),e[18]=M):M=e[18];let T;e[19]===Symbol.for("react.memo_cache_sentinel")?(T=t.jsx("strong",{children:"Attach media"}),e[19]=T):T=e[19];let b;e[20]!==n.length?(b=t.jsxs("span",{className:"inspector-source-picker-copy",children:[T,t.jsxs("small",{children:[n.length," available"]})]}),e[20]=n.length,e[21]=b):b=e[21];let R;e[22]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx(Zt,{className:"inspector-source-picker-chevron",size:15,"aria-hidden":"true"}),e[22]=R):R=e[22],e[23]!==s||e[24]!==w||e[25]!==A||e[26]!==b?(l=t.jsxs("summary",{"data-composer-focus":"preserve","aria-label":"Attach media input",title:"Attach media input","aria-disabled":s,tabIndex:w,onClick:A,children:[M,b,R]}),e[23]=s,e[24]=w,e[25]=A,e[26]=b,e[27]=l):l=e[27],d="inspector-source-picker-options",m="listbox",u="Media input options",f=n.map(g=>{const L=I.get(g.sourceCellId);return L?t.jsxs("button",{type:"button",role:"option","aria-selected":"false",disabled:s,onClick:()=>C(g),children:[t.jsx(ht,{cell:L,asset:o?.get(L.id)}),t.jsxs("span",{className:"inspector-source-picker-copy",children:[t.jsx("strong",{children:Oe(L.slot)}),t.jsxs("small",{children:[ft(L)," · ",Ze(g.target)]})]})]},`${g.sourceCellId}:${g.target}`):null}),e[0]=n,e[1]=s,e[2]=o,e[3]=r,e[4]=a,e[5]=d,e[6]=l,e[7]=m,e[8]=u,e[9]=f,e[10]=h,e[11]=x,e[12]=y,e[13]=S,e[14]=j}else d=e[5],l=e[6],m=e[7],u=e[8],f=e[9],h=e[10],x=e[11],y=e[12],S=e[13],j=e[14];let v;e[28]!==d||e[29]!==m||e[30]!==u||e[31]!==f?(v=t.jsx("div",{className:d,role:m,"aria-label":u,children:f}),e[28]=d,e[29]=m,e[30]=u,e[31]=f,e[32]=v):v=e[32];let N;return e[33]!==l||e[34]!==v||e[35]!==h||e[36]!==x||e[37]!==y||e[38]!==S||e[39]!==j?(N=t.jsxs("details",{ref:h,className:x,onToggle:y,onBlur:S,onKeyDown:j,children:[l,v]}),e[33]=l,e[34]=v,e[35]=h,e[36]=x,e[37]=y,e[38]=S,e[39]=j,e[40]=N):N=e[40],N}function Bs(i){i.currentTarget.contains(i.relatedTarget)||i.currentTarget.removeAttribute("open")}function _s(i){nn(i.currentTarget)}function Js(i){return[i.id,i]}function Hs(i,e,n,r){const o=new Map(e.map(s=>[s.id,s]));return ue(i,e,n,r).flatMap(s=>{const a=o.get(s.sourceCellId);return a?[{token:s.token,cell:a}]:[]})}function xt(i){const e=U.c(37),{cell:n,cells:r,edges:o,busy:s,cellAssets:a,attachments:c,onSetInput:d}=i;let l;e[0]!==c?(l=c===void 0?[]:c,e[0]=c,e[1]=l):l=e[1];const m=l;let u,f,h,x,y;if(e[2]!==m||e[3]!==s||e[4]!==n||e[5]!==a||e[6]!==r||e[7]!==o||e[8]!==d){y=Symbol.for("react.early_return_sentinel");e:{const N=Ts(n,o);let I;e[14]!==n||e[15]!==r||e[16]!==o?(I=A=>{const M=o.find(g=>g.target===n.id&&g.targetInput===A),T=o.filter(g=>g.target!==n.id||g.targetInput!==A),b=M?r.find(g=>g.id===M.source):void 0,R=r.filter(g=>Rs(n,A,g)&&Wn(r,T,g.id,n.id)!==null||g.id===M?.source).sort(Ks);return Ds(!!M,R.length)?[{input:A,edge:M,sourceCell:b,candidates:R,inputLabel:A==="input"?"input":`${A.replaceAll("_"," ")} input`}]:[]},e[14]=n,e[15]=r,e[16]=o,e[17]=I):I=e[17];const C=N.flatMap(I);if(C.length===0&&m.length===0){y=null;break e}h="inspector-input-sources",e[18]===Symbol.for("react.memo_cache_sentinel")?(x=t.jsx("h3",{children:"Inputs"}),e[18]=x):x=e[18],u="inspector-input-source-rows";let w;e[19]!==s||e[20]!==a||e[21]!==d?(w=A=>{const{input:M,edge:T,sourceCell:b,candidates:R,inputLabel:g}=A;return t.jsxs("div",{className:T?"inspector-input-source-row connected":"inspector-input-source-row",children:[t.jsx(Fs,{input:M,candidates:R,selectedCellId:T?.source??null,cellAssets:a,busy:s,onSelect:L=>d(M,L)}),T&&t.jsx("button",{type:"button",className:"inspector-input-remove-button","aria-label":`Remove ${b?Oe(b.slot):"source"} from ${g}`,title:"Remove input",disabled:s,onClick:()=>{d(M,null)},children:t.jsx(js,{size:15,"aria-hidden":"true"})})]},M)},e[19]=s,e[20]=a,e[21]=d,e[22]=w):w=e[22],f=C.map(w)}e[2]=m,e[3]=s,e[4]=n,e[5]=a,e[6]=r,e[7]=o,e[8]=d,e[9]=u,e[10]=f,e[11]=h,e[12]=x,e[13]=y}else u=e[9],f=e[10],h=e[11],x=e[12],y=e[13];if(y!==Symbol.for("react.early_return_sentinel"))return y;let S;e[23]!==m||e[24]!==s||e[25]!==a||e[26]!==r||e[27]!==d?(S=m.length>0&&t.jsx("div",{className:"inspector-input-source-row",children:t.jsx(Us,{attachments:m,cells:r,cellAssets:a,busy:s,onAttach:d})}),e[23]=m,e[24]=s,e[25]=a,e[26]=r,e[27]=d,e[28]=S):S=e[28];let j;e[29]!==u||e[30]!==f||e[31]!==S?(j=t.jsxs("div",{className:u,children:[f,S]}),e[29]=u,e[30]=f,e[31]=S,e[32]=j):j=e[32];let v;return e[33]!==h||e[34]!==x||e[35]!==j?(v=t.jsxs("section",{className:h,children:[x,j]}),e[33]=h,e[34]=x,e[35]=j,e[36]=v):v=e[36],v}function Ks(i,e){return i.slot.row-e.slot.row||i.slot.column-e.slot.column}function qs(i){const e=U.c(10),{busy:n,deleting:r,onDelete:o}=i;let s;e[0]!==o?(s=()=>{o()},e[0]=o,e[1]=s):s=e[1];const a=n||r;let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=t.jsx(ut,{size:13}),e[2]=c):c=e[2];const d=r?"Deleting…":"Delete cell";let l;e[3]!==d?(l=t.jsx("span",{children:d}),e[3]=d,e[4]=l):l=e[4];let m;return e[5]!==r||e[6]!==s||e[7]!==a||e[8]!==l?(m=t.jsxs("button",{type:"button",className:"danger-button inspector-delete-cell-button","aria-busy":r,title:"Delete cell",onClick:s,disabled:a,children:[c,l]}),e[5]=r,e[6]=s,e[7]=a,e[8]=l,e[9]=m):m=e[9],m}function jt(i){const e=U.c(4),{busy:n,deleting:r,onDelete:o}=i;let s;return e[0]!==n||e[1]!==r||e[2]!==o?(s=t.jsx("section",{className:"inspector-cell-actions inspector-compact-actions","aria-label":"Cell cleanup actions",children:t.jsx(qs,{busy:n,deleting:r,onDelete:o})}),e[0]=n,e[1]=r,e[2]=o,e[3]=s):s=e[3],s}function sn(i){const e=U.c(23),{artifactIds:n,availableArtifactIds:r,currentArtifactId:o,selectedArtifactId:s,outputLabel:a,onSelect:c}=i,d=n.indexOf(s)+1,l=s===o,m=`${a} versions`;let u;e[0]===Symbol.for("react.memo_cache_sentinel")?(u=t.jsxs("span",{className:"inspector-audio-version-label",children:[t.jsx(bs,{size:13,"aria-hidden":"true"}),"Version"]}),e[0]=u):u=e[0];const f=`${a} version`;let h;e[1]!==c?(h=I=>c(I.target.value),e[1]=c,e[2]=h):h=e[2];let x;if(e[3]!==n||e[4]!==r||e[5]!==o){let I;e[7]!==n.length||e[8]!==r||e[9]!==o?(I=(C,w)=>t.jsxs("option",{value:C,disabled:!r.has(C),children:["Version ",w+1," of ",n.length,C===o?" · current":""]},C),e[7]=n.length,e[8]=r,e[9]=o,e[10]=I):I=e[10],x=n.map(I),e[3]=n,e[4]=r,e[5]=o,e[6]=x}else x=e[6];let y;e[11]!==s||e[12]!==f||e[13]!==h||e[14]!==x?(y=t.jsx("select",{value:s,"aria-label":f,onChange:h,children:x}),e[11]=s,e[12]=f,e[13]=h,e[14]=x,e[15]=y):y=e[15];const S=`inspector-audio-version-state${l?" current":""}`,j=l?"Current output":`Viewing version ${d}`;let v;e[16]!==S||e[17]!==j?(v=t.jsx("span",{className:S,"aria-live":"polite",children:j}),e[16]=S,e[17]=j,e[18]=v):v=e[18];let N;return e[19]!==m||e[20]!==y||e[21]!==v?(N=t.jsxs("section",{className:"inspector-audio-versions","aria-label":m,children:[u,y,v]}),e[19]=m,e[20]=y,e[21]=v,e[22]=N):N=e[22],N}function Ws(i){const e=U.c(22),{bookId:n,assetTools:r,asset:o}=i,s=r??null;let a;e[0]!==o.artifactId||e[1]!==n?(a={bookId:n,assetId:o.artifactId},e[0]=o.artifactId,e[1]=n,e[2]=a):a=e[2];const c=o.tags??null;let d;e[3]!==s||e[4]!==a||e[5]!==c?(d={call:s,target:a,tags:c},e[3]=s,e[4]=a,e[5]=c,e[6]=d):d=e[6];const l=Xn(d);let m,u,f,h;e[7]!==l?(m=y=>{l.addTag(y)},u=y=>{l.removeTag(y)},f=y=>{l.restoreTag(y)},h=y=>{l.loadSuggestions(y)},e[7]=l,e[8]=m,e[9]=u,e[10]=f,e[11]=h):(m=e[8],u=e[9],f=e[10],h=e[11]);let x;return e[12]!==l.busy||e[13]!==l.canEdit||e[14]!==l.error||e[15]!==l.suggestions||e[16]!==l.tags||e[17]!==m||e[18]!==u||e[19]!==f||e[20]!==h?(x=t.jsx(ps,{tags:l.tags,busy:l.busy,error:l.error,canEdit:l.canEdit,suggestions:l.suggestions,onAdd:m,onRemove:u,onRestore:f,onQueryChange:h}),e[12]=l.busy,e[13]=l.canEdit,e[14]=l.error,e[15]=l.suggestions,e[16]=l.tags,e[17]=m,e[18]=u,e[19]=f,e[20]=h,e[21]=x):x=e[21],x}function Qs(i){const e=U.c(6),{asset:n}=i,r=n?.thumbnailUrl??n?.mediaUrl??null;if(n?.type!=="audio"&&r){let a;return e[0]!==r?(a=t.jsx("img",{src:r,alt:""}),e[0]=r,e[1]=a):a=e[1],a}let o;e[2]!==n?.waveform?(o=(n?.waveform?.length??0)>0&&t.jsx(qt,{peaks:n?.waveform??[],progress:0}),e[2]=n?.waveform,e[3]=o):o=e[3];let s;return e[4]!==o?(s=t.jsx("span",{className:"inspector-media-version-blank",children:o}),e[4]=o,e[5]=s):s=e[5],s}function Xs(i){const e=U.c(20),{kind:n,artifactIds:r,assetsById:o,currentArtifactId:s,selectedArtifactId:a,onSelect:c}=i;let d;e[0]!==n?(d=Jt(n),e[0]=n,e[1]=d):d=e[1];const l=`${d} versions`;let m;e[2]===Symbol.for("react.memo_cache_sentinel")?(m=t.jsx("span",{className:"inspector-media-field-label",children:"Versions"}),e[2]=m):m=e[2];let u;if(e[3]!==r||e[4]!==o||e[5]!==s||e[6]!==c||e[7]!==a){let x;e[9]!==r.length||e[10]!==o||e[11]!==s||e[12]!==c||e[13]!==a?(x=(y,S)=>{const j=o.get(y),v=y===s,N=y===a;return t.jsx("li",{children:t.jsxs("button",{type:"button",className:N?"inspector-media-version selected":"inspector-media-version",disabled:!j,"aria-current":N?"true":void 0,"aria-label":`Version ${S+1} of ${r.length}${v?", current output":""}`,onClick:()=>c(y),children:[t.jsx(Qs,{asset:j}),t.jsxs("span",{className:"inspector-media-version-label",children:["v",S+1,v&&t.jsx("span",{className:"inspector-media-version-now",children:"now"})]})]})},y)},e[9]=r.length,e[10]=o,e[11]=s,e[12]=c,e[13]=a,e[14]=x):x=e[14],u=r.map(x),e[3]=r,e[4]=o,e[5]=s,e[6]=c,e[7]=a,e[8]=u}else u=e[8];let f;e[15]!==u?(f=t.jsx("ul",{className:"inspector-media-version-list",children:u}),e[15]=u,e[16]=f):f=e[16];let h;return e[17]!==l||e[18]!==f?(h=t.jsxs("section",{className:"inspector-media-versions","aria-label":l,children:[m,f]}),e[17]=l,e[18]=f,e[19]=h):h=e[19],h}function Ys(i){const e=U.c(9),{kind:n,address:r,asset:o,inputs:s}=i;let a,c;if(e[0]!==r||e[1]!==o||e[2]!==s||e[3]!==n){const l=_n(n,r,o,s).filter(ei);a="inspector-media-facts",c=l.map(Zs),e[0]=r,e[1]=o,e[2]=s,e[3]=n,e[4]=a,e[5]=c}else a=e[4],c=e[5];let d;return e[6]!==a||e[7]!==c?(d=t.jsx("dl",{className:a,children:c}),e[6]=a,e[7]=c,e[8]=d):d=e[8],d}function Zs(i){return t.jsxs("div",{children:[t.jsx("dt",{children:i.term}),t.jsx("dd",{children:i.value})]},i.key)}function ei(i){return i.key!=="address"}function ti(i){const e=U.c(10),{kind:n,failed:r}=i;let o;e[0]!==n?(o=Ht(n,null),e[0]=n,e[1]=o):o=e[1];const s=String(o);let a;e[2]!==s?(a={"--media-aspect":s},e[2]=s,e[3]=a):a=e[3];const c=a,d=r?"inspector-media-placeholder failed":"inspector-media-placeholder",l=r?"Failed":"Generating…";let m;e[4]!==l?(m=t.jsx("span",{className:"inspector-media-placeholder-label",children:l}),e[4]=l,e[5]=m):m=e[5];let u;return e[6]!==c||e[7]!==d||e[8]!==m?(u=t.jsx("div",{className:d,style:c,children:m}),e[6]=c,e[7]=d,e[8]=m,e[9]=u):u=e[9],u}function on(i){const e=U.c(15),{producer:n,onSelectSource:r}=i;let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx("span",{className:"inspector-media-field-label",children:"From"}),e[0]=o):o=e[0];let s;e[1]!==r||e[2]!==n.id?(s=()=>r?.(n.id),e[1]=r,e[2]=n.id,e[3]=s):s=e[3];let a;e[4]!==n.slot?(a=Oe(n.slot),e[4]=n.slot,e[5]=a):a=e[5];let c;e[6]!==a?(c=t.jsx("span",{className:"inspector-generation-from-tag",children:a}),e[6]=a,e[7]=c):c=e[7];const d=n.type==="generate_image"?"image":"video";let l;e[8]!==d?(l=t.jsxs("span",{children:["Generate ",d]}),e[8]=d,e[9]=l):l=e[9];let m;e[10]===Symbol.for("react.memo_cache_sentinel")?(m=t.jsx(vs,{size:12,"aria-hidden":"true"}),e[10]=m):m=e[10];let u;return e[11]!==s||e[12]!==c||e[13]!==l?(u=t.jsxs("div",{className:"inspector-media-from",children:[o,t.jsxs("button",{type:"button",className:"inspector-generation-from-link",onClick:s,children:[c,l,m]})]}),e[11]=s,e[12]=c,e[13]=l,e[14]=u):u=e[14],u}function ni(i){if(!i)return null;const e=i.width&&i.height?`${i.width}×${i.height}`:null,n=i.duration?Je(i.duration):null;return[i.type,e,n].filter(Boolean).join(" · ")||null}function si(i){const e=U.c(5),{asset:n,kindHint:r}=i,o=n?.thumbnailUrl??(n?.type==="image"?n.mediaUrl:null),s=!o&&n?.mediaUrl&&(n.type==="video"||n.type==="final")?n.mediaUrl:null;let a;return e[0]!==n||e[1]!==o||e[2]!==r||e[3]!==s?(a=t.jsx("span",{className:"inspector-generation-input-thumb",children:o?t.jsx("img",{src:o,alt:"",loading:"lazy",decoding:"async"}):s?t.jsx("video",{src:`${s}#t=0.1`,muted:!0,playsInline:!0,preload:"metadata","aria-hidden":"true"}):t.jsx(yt,{asset:n,kindHint:r})}),e[0]=n,e[1]=o,e[2]=r,e[3]=s,e[4]=a):a=e[4],a}function ii(i){const e=U.c(18),{producerId:n,cells:r,edges:o,cellAssets:s,onSelectSource:a}=i;let c,d,l,m,u;if(e[0]!==s||e[1]!==r||e[2]!==o||e[3]!==a||e[4]!==n){u=Symbol.for("react.early_return_sentinel");e:{const x=ue(n,r,o);if(x.length===0){u=null;break e}const y=new Map(r.map(oi));l="inspector-media-generation-inputs",e[10]===Symbol.for("react.memo_cache_sentinel")?(m=t.jsx("span",{className:"inspector-media-field-label",children:"Inputs"}),e[10]=m):m=e[10],c="inspector-generation-input-cards",d=x.map(S=>{const j=y.get(S.sourceCellId),v=j?s?.get(j.id):void 0,N=ni(v);return t.jsx("li",{children:t.jsxs("button",{type:"button",className:"inspector-generation-input-card",onClick:()=>j&&a?.(j.id),children:[t.jsx(si,{asset:v,kindHint:j?.type}),t.jsxs("span",{className:"inspector-generation-input-text",children:[t.jsxs("span",{children:[t.jsxs("code",{children:["@",S.token]}),j&&t.jsxs("span",{className:"inspector-generation-input-source",children:[" ← ",Oe(j.slot)]})]}),N&&t.jsx("span",{className:"inspector-generating-muted",children:N})]})]})},S.token)})}e[0]=s,e[1]=r,e[2]=o,e[3]=a,e[4]=n,e[5]=c,e[6]=d,e[7]=l,e[8]=m,e[9]=u}else c=e[5],d=e[6],l=e[7],m=e[8],u=e[9];if(u!==Symbol.for("react.early_return_sentinel"))return u;let f;e[11]!==c||e[12]!==d?(f=t.jsx("ul",{className:c,children:d}),e[11]=c,e[12]=d,e[13]=f):f=e[13];let h;return e[14]!==l||e[15]!==m||e[16]!==f?(h=t.jsxs("div",{className:l,children:[m,f]}),e[14]=l,e[15]=m,e[16]=f,e[17]=h):h=e[17],h}function oi(i){return[i.id,i]}function ri(i){const e=U.c(24),{state:n,model:r,elapsed:o,busy:s,deleting:a,producerCellId:c,cancelJobId:d,onRunProducer:l,onCancelJob:m,onDelete:u}=i,f=n.kind==="failed",h=f?"FAILED":n.kind==="queued"?"QUEUED":"GENERATING",x=r&&` · ${r}`;let y;e[0]!==o?(y=o!==null&&` · ${Je(o)} elapsed`,e[0]=o,e[1]=y):y=e[1];let S;e[2]!==h||e[3]!==x||e[4]!==y?(S=t.jsxs("span",{className:"inspector-media-generating-state",children:[h,x,y]}),e[2]=h,e[3]=x,e[4]=y,e[5]=S):S=e[5];let j;e[6]!==s||e[7]!==d||e[8]!==a||e[9]!==f||e[10]!==m||e[11]!==u||e[12]!==l||e[13]!==c?(j=f?t.jsxs("span",{className:"inspector-generating-actions",children:[t.jsxs("button",{type:"button",className:"inspector-generation-action",disabled:s||!c,onClick:()=>{c&&l(c)},children:[t.jsx(Ss,{size:13,"aria-hidden":"true"}),"Retry"]}),t.jsxs("button",{type:"button",className:"inspector-generation-action danger",disabled:a,onClick:()=>{u()},children:[t.jsx(Ns,{size:13,"aria-hidden":"true"}),"Delete"]})]}):typeof m=="function"&&typeof d=="number"?t.jsxs("button",{type:"button",className:"inspector-generation-action danger",onClick:()=>m(d),children:[t.jsx(Is,{size:13,"aria-hidden":"true"}),"Cancel run"]}):null,e[6]=s,e[7]=d,e[8]=a,e[9]=f,e[10]=m,e[11]=u,e[12]=l,e[13]=c,e[14]=j):j=e[14];let v;e[15]!==S||e[16]!==j?(v=t.jsxs("div",{className:"inspector-media-generating-status",children:[S,j]}),e[15]=S,e[16]=j,e[17]=v):v=e[17];let N;e[18]!==n.kind||e[19]!==n.message?(N=n.kind==="failed"&&t.jsxs("p",{className:"inspector-media-generating-error",role:"alert",children:[t.jsx(Ee,{size:13,"aria-hidden":"true"}),t.jsx("span",{children:n.message})]}),e[18]=n.kind,e[19]=n.message,e[20]=N):N=e[20];let I;return e[21]!==v||e[22]!==N?(I=t.jsxs(t.Fragment,{children:[v,N]}),e[21]=v,e[22]=N,e[23]=I):I=e[23],I}function ai(i){const e=U.c(53),{kind:n,address:r,artifactId:o,state:s,cells:a,edges:c,cellAssets:d,artifactAssets:l,busy:m,deleting:u,cancelJobId:f,onSelectSource:h,onRunProducer:x,onCancelJob:y,onDelete:S,onInspectGenerationRequest:j,onDownloadHar:v,onOpenSettings:N}=i,I=s.kind==="failed",C=s.kind==="failed"?null:s,w=Qn(C?.startedAt??null),A=s.producerCellId;let M;e[0]!==a||e[1]!==A?(M=A?a.find(me=>me.id===A)??null:null,e[0]=a,e[1]=A,e[2]=M):M=e[2];const T=M,b=T?.model??null,R=C?.startedAt??null,g=T?.provider??C?.provider??null,L=C?.runId??null,D=f??null,F=C?.providerArtifactId??o,W=T?.prompt??C?.prompt??null;let _;e[3]!==b||e[4]!==s.kind||e[5]!==R||e[6]!==g||e[7]!==L||e[8]!==D||e[9]!==F||e[10]!==W?(_={runKind:s.kind,startedAt:R,provider:g,model:b,runId:L,jobNumber:D,providerArtifactId:F,writtenPrompt:W},e[3]=b,e[4]=s.kind,e[5]=R,e[6]=g,e[7]=L,e[8]=D,e[9]=F,e[10]=W,e[11]=_):_=e[11];const B=_;let E;e[12]!==I||e[13]!==n?(E=t.jsx(ti,{kind:n,failed:I}),e[12]=I,e[13]=n,e[14]=E):E=e[14];let q;e[15]!==d||e[16]!==a||e[17]!==c||e[18]!==h||e[19]!==A?(q=A&&t.jsx(ii,{producerId:A,cells:a,edges:c,cellAssets:d,onSelectSource:h}),e[15]=d,e[16]=a,e[17]=c,e[18]=h,e[19]=A,e[20]=q):q=e[20];let Q;e[21]!==h||e[22]!==T?(Q=T&&t.jsx(on,{producer:T,onSelectSource:h}),e[21]=h,e[22]=T,e[23]=Q):Q=e[23];let J;e[24]!==q||e[25]!==Q||e[26]!==E?(J=t.jsxs("div",{className:"inspector-media-generating-preview",children:[E,q,Q]}),e[24]=q,e[25]=Q,e[26]=E,e[27]=J):J=e[27];let O;e[28]!==m||e[29]!==f||e[30]!==u||e[31]!==w||e[32]!==b||e[33]!==y||e[34]!==S||e[35]!==x||e[36]!==A||e[37]!==s?(O=t.jsx(ri,{state:s,model:b,elapsed:w,busy:m,deleting:u,producerCellId:A,cancelJobId:f,onRunProducer:x,onCancelJob:y,onDelete:S}),e[28]=m,e[29]=f,e[30]=u,e[31]=w,e[32]=b,e[33]=y,e[34]=S,e[35]=x,e[36]=A,e[37]=s,e[38]=O):O=e[38];const le=`@${r} ${s.kind}`;let te;e[39]!==le?(te=t.jsx("span",{className:"sr-only",children:le}),e[39]=le,e[40]=te):te=e[40];let $;e[41]!==l||e[42]!==B||e[43]!==v||e[44]!==j||e[45]!==N||e[46]!==O||e[47]!==te?($=t.jsx(us,{facts:B,inspect:j,onDownloadHar:v,onOpenSettings:N,artifactAssets:l,header:O,footer:te}),e[41]=l,e[42]=B,e[43]=v,e[44]=j,e[45]=N,e[46]=O,e[47]=te,e[48]=$):$=e[48];let re;return e[49]!==s.kind||e[50]!==J||e[51]!==$?(re=t.jsxs("div",{className:"inspector-media-generating","data-generation":s.kind,children:[J,$]}),e[49]=s.kind,e[50]=J,e[51]=$,e[52]=re):re=e[52],re}function li(i){const e=U.c(105),{kind:n,cell:r,cells:o,edges:s,asset:a,cellAssets:c,versionAssets:d,busy:l,deleting:m,mediaInsightWork:u,generationState:f,cancelJobId:h,onSetInput:x,onRun:y,onCancelJob:S,onSelectSource:j,onDelete:v,onOpenFullscreen:N,onTranscribeAsset:I,onLoadTranscriptJson:C,onDownloadTranscriptSrt:w,bookId:A,assetTools:M,artifactAssets:T,onInspectGenerationRequest:b,onDownloadGenerationHar:R,onOpenSettings:g}=i;let L;e[0]!==r.slot?(L=Ye(r.slot),e[0]=r.slot,e[1]=L):L=e[1];const D=L;let F;e[2]!==r||e[3]!==o||e[4]!==s?(F=wn(r,o,s),e[2]=r,e[3]=o,e[4]=s,e[5]=F):F=e[5];const W=F,_=r.type==="audio"||(r.type==="image"||r.type==="video")&&r.inputs?.mediaRole!=="generate-image-output"&&r.inputs?.mediaRole!=="generate-video-output"?_t(r.inputs,r.outputArtifactId):[],B=_.join(":"),E=r.outputArtifactId??_.at(-1)??"",[q,Q]=K.useState(null);if(f.kind!=="ready"){const ae=r.outputArtifactId??null;let Re;return e[6]!==D||e[7]!==T||e[8]!==l||e[9]!==h||e[10]!==c||e[11]!==o||e[12]!==m||e[13]!==s||e[14]!==f||e[15]!==n||e[16]!==S||e[17]!==v||e[18]!==R||e[19]!==b||e[20]!==g||e[21]!==y||e[22]!==j||e[23]!==ae?(Re=t.jsx("div",{className:"inspector-body inspector-media-body",children:t.jsx(ai,{kind:n,address:D,artifactId:ae,state:f,cells:o,edges:s,cellAssets:c,busy:l,deleting:m,cancelJobId:h,artifactAssets:T,onSelectSource:j,onRunProducer:y,onCancelJob:S,onDelete:v,onInspectGenerationRequest:b,onDownloadHar:R,onOpenSettings:g})}),e[6]=D,e[7]=T,e[8]=l,e[9]=h,e[10]=c,e[11]=o,e[12]=m,e[13]=s,e[14]=f,e[15]=n,e[16]=S,e[17]=v,e[18]=R,e[19]=b,e[20]=g,e[21]=y,e[22]=j,e[23]=ae,e[24]=Re):Re=e[24],Re}const J=q?.cellId===r.id&&q.currentArtifactId===E&&q.versionKey===B?q.artifactId:E,O=new Map((d??[]).map(ci));a&&O.set(a.artifactId,a);const le=O.has(J),te=_.includes(J)&&le?J:E,$=_.length>0?O.get(te)??a:a,re=new Set(O.keys());let me;e[25]!==r.id||e[26]!==E||e[27]!==Q||e[28]!==B?(me=ae=>{Q({artifactId:ae,cellId:r.id,currentArtifactId:E,versionKey:B})},e[25]=r.id,e[26]=E,e[27]=Q,e[28]=B,e[29]=me):me=e[29];const fe=me,Y=$?u?.[$.artifactId]??Ft:Ft,X=n==="image"||n==="video",he=_.length>1&&!!$;let k;e[30]!==D||e[31]!==X||e[32]!==N||e[33]!==$?(k=$?t.jsx(mt,{asset:$,address:D,allowFullscreen:X,overlayMetadata:!1,onOpenFullscreen:N}):t.jsxs("div",{className:"inspector-media-empty",children:[t.jsx("span",{children:"Output pending"}),t.jsx("p",{children:"Connect a source and rerun its producer to populate this preview."})]}),e[30]=D,e[31]=X,e[32]=N,e[33]=$,e[34]=k):k=e[34];const Z=k,ge=he&&$?t.jsx(sn,{artifactIds:_,availableArtifactIds:re,currentArtifactId:r.outputArtifactId,selectedArtifactId:te,outputLabel:Jt(n),onSelect:fe}):null;let se;e[35]!==M||e[36]!==A||e[37]!==$?(se=$?t.jsx(Ws,{bookId:A,assetTools:M,asset:$}):null,e[35]=M,e[36]=A,e[37]=$,e[38]=se):se=e[38];const G=se,ee=!!($?.transcript?.plain||$?.transcript?.elevenlabs);let ne;e[39]!==l||e[40]!==ee||e[41]!==Y||e[42]!==w||e[43]!==C||e[44]!==I||e[45]!==$?(ne=$&&kn($.type)?ee?t.jsx(ns,{artifactId:$.artifactId,transcript:$.transcript??null,busy:l,transcribing:Y.transcribing,error:Y.error,onTranscribe:I?()=>I($.artifactId):void 0,onLoadTranscriptJson:C?ae=>C($.artifactId,ae):void 0,onDownloadTranscriptSrt:w?()=>w($.artifactId):void 0}):t.jsxs("div",{className:"inspector-media-insights",children:[I&&t.jsxs("button",{type:"button",className:"inspector-generation-action",disabled:l||Y.transcribing,onClick:()=>I($.artifactId),children:[t.jsx(fs,{size:13,"aria-hidden":"true"}),Y.transcribing?"Transcribing…":"Transcribe"]}),Y.error&&t.jsxs("p",{className:"inspector-insight-error",role:"alert",children:[t.jsx(Ee,{size:12,"aria-hidden":"true"}),t.jsx("span",{children:Y.error})]})]}):null,e[39]=l,e[40]=ee,e[41]=Y,e[42]=w,e[43]=C,e[44]=I,e[45]=$,e[46]=ne):ne=e[46];const V=ne;let ce;e[47]!==l||e[48]!==r||e[49]!==c||e[50]!==o||e[51]!==s||e[52]!==j||e[53]!==x||e[54]!==W?(ce=W?t.jsx(on,{producer:W,onSelectSource:j}):t.jsx(xt,{cell:r,cells:o,edges:s,busy:l,cellAssets:c,onSetInput:x}),e[47]=l,e[48]=r,e[49]=c,e[50]=o,e[51]=s,e[52]=j,e[53]=x,e[54]=W,e[55]=ce):ce=e[55];const Fe=ce,Ve=$??null;let oe;e[56]!==n||e[57]!==Ve?(oe=Ht(n,Ve),e[56]=n,e[57]=Ve,e[58]=oe):oe=e[58];const Te=String(oe);let we;e[59]!==Te?(we={"--media-aspect":Te},e[59]=Te,e[60]=we):we=e[60];const De=we,ze=`inspector-media-row-${n}`,Ue=he?"":"inspector-media-row-single-version";let je;e[61]!==ze||e[62]!==Ue?(je=["inspector-media-content","inspector-compact-media-content","inspector-media-row-content",ze,Ue].filter(Boolean),e[61]=ze,e[62]=Ue,e[63]=je):je=e[63];const ke=je.join(" ");let be;e[64]!==Z?(be=t.jsx("div",{className:"inspector-media-row-track inspector-media-row-preview",children:Z}),e[64]=Z,e[65]=be):be=e[65];const He=he&&t.jsx("div",{className:"inspector-media-row-track inspector-media-row-versions",children:t.jsx(Xs,{kind:n,artifactIds:_,assetsById:O,currentArtifactId:r.outputArtifactId,selectedArtifactId:te,onSelect:fe})});let ye;e[66]!==D||e[67]!==r.inputs||e[68]!==n||e[69]!==$?(ye=$&&t.jsx(Ys,{kind:n,address:D,asset:$,inputs:r.inputs}),e[66]=D,e[67]=r.inputs,e[68]=n,e[69]=$,e[70]=ye):ye=e[70];let ve;e[71]!==M||e[72]!==A||e[73]!==l||e[74]!==m||e[75]!==n||e[76]!==$?(ve=$&&t.jsx(ss,{bookId:A,artifactId:$.artifactId,kind:n,busy:l||m,call:M},`${A}:${$.artifactId}`),e[71]=M,e[72]=A,e[73]=l,e[74]=m,e[75]=n,e[76]=$,e[77]=ve):ve=e[77];let Ie;e[78]!==ye||e[79]!==ve?(Ie=t.jsxs("div",{className:"inspector-media-summary",children:[ye,ve]}),e[78]=ye,e[79]=ve,e[80]=Ie):Ie=e[80];let Ae;e[81]!==G||e[82]!==Fe||e[83]!==ge?(Ae=t.jsxs("div",{className:"inspector-media-row-track inspector-media-row-details",children:[ge,G,Fe]}),e[81]=G,e[82]=Fe,e[83]=ge,e[84]=Ae):Ae=e[84];let Ce;e[85]!==r.inputs?(Ce=t.jsx(is,{inputs:r.inputs}),e[85]=r.inputs,e[86]=Ce):Ce=e[86];let Se;e[87]!==V||e[88]!==Ce?(Se=t.jsxs("div",{className:"inspector-media-row-track inspector-media-row-actions",children:[Ce,V]}),e[87]=V,e[88]=Ce,e[89]=Se):Se=e[89];let Me;e[90]!==l||e[91]!==m||e[92]!==v?(Me=t.jsx(jt,{busy:l,deleting:m,onDelete:v}),e[90]=l,e[91]=m,e[92]=v,e[93]=Me):Me=e[93];let de;e[94]!==Ie||e[95]!==Ae||e[96]!==Se||e[97]!==Me?(de=t.jsxs("div",{className:"inspector-media-row-meta",children:[Ie,Ae,Se,Me]}),e[94]=Ie,e[95]=Ae,e[96]=Se,e[97]=Me,e[98]=de):de=e[98];let $e;return e[99]!==ke||e[100]!==be||e[101]!==He||e[102]!==de||e[103]!==De?($e=t.jsx("div",{className:"inspector-body inspector-media-body",children:t.jsxs("div",{className:ke,style:De,children:[be,He,de]})}),e[99]=ke,e[100]=be,e[101]=He,e[102]=de,e[103]=De,e[104]=$e):$e=e[104],$e}function ci(i){return[i.artifactId,i]}function gt(i){const e=U.c(40),{label:n,summary:r,className:o,value:s,loadValue:a,ariaLabel:c,artifactAssets:d}=i,[l,m]=K.useState(!1),[u,f]=K.useState(s),[h,x]=K.useState(!1),[y,S]=K.useState(null);let j,v,N,I,C;if(e[0]!==c||e[1]!==d||e[2]!==o||e[3]!==n||e[4]!==a||e[5]!==h||e[6]!==l||e[7]!==u||e[8]!==r){const M=pt(u);let T;e[14]!==o?(T=["inspector-analysis-json-disclosure",o].filter(Boolean),e[14]=o,e[15]=T):T=e[15],j=T.join(" "),v=h,e[16]!==a||e[17]!==h||e[18]!==u?(N=L=>{const D=L.currentTarget.open;m(D),!(!D||u!==void 0||!a||h)&&(x(!0),S(null),a().then(F=>f(F)).catch(F=>{S(F instanceof Error?F.message:String(F))}).finally(()=>x(!1)))},e[16]=a,e[17]=h,e[18]=u,e[19]=N):N=e[19];let b;e[20]===Symbol.for("react.memo_cache_sentinel")?(b=t.jsx(Xt,{size:12,"aria-hidden":"true"}),e[20]=b):b=e[20];let R;e[21]!==n?(R=t.jsx("span",{children:n}),e[21]=n,e[22]=R):R=e[22];let g;e[23]!==r?(g=r&&t.jsx("code",{className:"inspector-json-summary",children:r}),e[23]=r,e[24]=g):g=e[24],e[25]!==R||e[26]!==g?(I=t.jsxs("summary",{children:[b,R,g]}),e[25]=R,e[26]=g,e[27]=I):I=e[27],C=l&&u!==void 0&&t.jsxs(t.Fragment,{children:[(M.promptLeaks.length>0||M.urlPlaceholders.length>0)&&t.jsxs("div",{className:"inspector-payload-mentions",children:[M.promptLeaks.map(pi),M.urlPlaceholders.map(di)]}),t.jsx("div",{className:"inspector-analysis-json-scroll",tabIndex:0,children:t.jsx(es,{value:u,ariaLabel:c,artifactAssets:d})})]}),e[0]=c,e[1]=d,e[2]=o,e[3]=n,e[4]=a,e[5]=h,e[6]=l,e[7]=u,e[8]=r,e[9]=j,e[10]=v,e[11]=N,e[12]=I,e[13]=C}else j=e[9],v=e[10],N=e[11],I=e[12],C=e[13];let w;e[28]!==y||e[29]!==h||e[30]!==l||e[31]!==u?(w=l&&u===void 0&&t.jsx("div",{className:"inspector-analysis-json-status",role:"status",children:h?"Loading complete JSON…":y??"Complete JSON is unavailable for this run."}),e[28]=y,e[29]=h,e[30]=l,e[31]=u,e[32]=w):w=e[32];let A;return e[33]!==j||e[34]!==v||e[35]!==N||e[36]!==I||e[37]!==C||e[38]!==w?(A=t.jsxs("details",{className:j,"aria-busy":v,onToggle:N,children:[I,C,w]}),e[33]=j,e[34]=v,e[35]=N,e[36]=I,e[37]=C,e[38]=w,e[39]=A):A=e[39],A}function di(i){return t.jsxs("span",{className:"inspector-payload-mention placeholder",title:i.path,children:[t.jsx(Qt,{size:11,"aria-hidden":"true"}),t.jsx("code",{children:i.reference}),"resolves at dispatch"]},`${i.path}:${i.url}`)}function pi(i){return t.jsxs("span",{className:"inspector-payload-mention leak",title:i.message,children:[t.jsx(Ee,{size:11,"aria-hidden":"true"}),t.jsx("code",{children:i.token}),i.message]},`${i.token}:${i.code}`)}function ui(i){return i.replace(/^notebook_/,"").replace(/^legacy_/,"").replaceAll("_"," ")}function mi(i){return i.type==="json_schema"?i.strict?"Strict JSON schema":"JSON schema":i.type==="json_object"?"JSON object":i.type==="text"?"Text":i.type.replaceAll("_"," ")}function fi(i){const e=U.c(3),{analysisInfo:n}=i,r=Kt(n.outputJson),o=n.llmExchanges?.length?n.llmExchanges.map(yi):r,s=K.useRef(null),a=()=>{if(!n.outputUrl)return Promise.reject(new Error("Complete JSON is unavailable for this run."));if(!s.current){const f=fetch(n.outputUrl).then(gi).then(hi);s.current=f.catch(h=>{throw s.current=null,h})}return s.current},c=(f,h)=>async()=>{const y=(await a())[f];if(!y)throw new Error("The saved LLM exchange could not be found.");return y[h]};if(o.length===0)return null;let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=t.jsx("span",{children:"LLM exchange"}),e[0]=d):d=e[0];const l="inspector-analysis-llm-calls",m=o.map((f,h)=>{const x=ui(f.stage),y=String(h+1).padStart(2,"0");return t.jsxs("article",{className:"inspector-analysis-llm-call",children:[t.jsxs("header",{children:[t.jsx("span",{children:y}),t.jsx("strong",{children:x})]}),t.jsxs("dl",{className:"inspector-analysis-llm-meta",children:[t.jsxs("div",{children:[t.jsx("dt",{children:"Provider"}),t.jsx("dd",{children:f.provider})]}),t.jsxs("div",{children:[t.jsx("dt",{children:"Model"}),t.jsx("dd",{children:f.model})]}),f.responseFormat&&t.jsxs("div",{className:"inspector-analysis-llm-format",children:[t.jsx("dt",{children:"Response format"}),t.jsxs("dd",{children:[t.jsxs("span",{children:[t.jsx(Xt,{size:11,"aria-hidden":"true"}),mi(f.responseFormat)]}),f.responseFormat.name&&t.jsx("code",{children:f.responseFormat.name})]})]})]}),!f.complete&&t.jsx("p",{className:"inspector-analysis-llm-incomplete",children:"This older run retained summary payloads only. Re-run the Analyze cell to record the complete provider exchange."}),t.jsxs("div",{className:"inspector-analysis-json-disclosures",children:[t.jsx(gt,{label:"LLM input",value:f.input,loadValue:f.input===void 0?c(h,"input"):void 0,ariaLabel:`LLM input JSON for ${x}`}),t.jsx(gt,{label:"LLM response",value:f.response,loadValue:f.response===void 0?c(h,"response"):void 0,ariaLabel:`LLM response JSON for ${x}`})]})]},`${f.stage}-${h}`)});let u;return e[1]!==m?(u=t.jsx("div",{className:l,children:m}),e[1]=m,e[2]=u):u=e[2],t.jsxs("section",{className:"inspector-analysis-llm","aria-label":"LLM exchanges",children:[t.jsxs("header",{className:"inspector-analysis-llm-heading",children:[d,t.jsxs("code",{children:[o.length," ",o.length===1?"call":"calls"]})]}),u]})}function hi(i){const e=Kt(i);if(e.length===0)throw new Error("The saved analysis has no recorded LLM exchange.");return e}async function gi(i){if(!i.ok)throw new Error(`Unable to load complete JSON (${i.status})`);return i.json()}function yi(i){return{...i,complete:!0,input:void 0,response:void 0}}function xi(i){const e=U.c(16),{cell:n,cells:r,edges:o,asset:s,cellAssets:a,versionAssets:c,busy:d,deleting:l,onSetInput:m,onDelete:u}=i,f=_t(n.inputs,n.outputArtifactId),h=f.join(":"),x=n.outputArtifactId??f.at(-1)??"",[y,S]=K.useState(null),j=y?.cellId===n.id&&y.currentArtifactId===x&&y.versionKey===h?y.artifactId:x,v=new Map((c??[]).map(vi));s&&v.set(s.artifactId,s);const N=f.includes(j)&&v.has(j)?j:x,C=(v.get(N)??s)?.analysisInfo,w=C?.shots.slice().sort(bi)??[],A="inspector-body inspector-analysis-body",M="inspector-analysis-content",T=f.length>1&&t.jsx(sn,{artifactIds:f,availableArtifactIds:new Set(v.keys()),currentArtifactId:n.outputArtifactId,selectedArtifactId:N,outputLabel:"Analysis",onSelect:D=>{S({artifactId:D,cellId:n.id,currentArtifactId:x,versionKey:h})}}),b=C?t.jsxs(t.Fragment,{children:[t.jsx(fi,{analysisInfo:C},N),t.jsx("ol",{className:"inspector-analysis-shots",children:w.map(ji)})]}):t.jsxs("div",{className:"inspector-media-empty",children:[t.jsx("span",{children:"Analysis pending"}),t.jsx("p",{children:"Run the connected Analyze cell to populate normalized shots."})]});let R;e[0]!==d||e[1]!==n||e[2]!==a||e[3]!==r||e[4]!==o||e[5]!==m?(R=t.jsx(xt,{cell:n,cells:r,edges:o,busy:d,cellAssets:a,onSetInput:m}),e[0]=d,e[1]=n,e[2]=a,e[3]=r,e[4]=o,e[5]=m,e[6]=R):R=e[6];let g;e[7]!==d||e[8]!==l||e[9]!==u?(g=t.jsx(jt,{busy:d,deleting:l,onDelete:u}),e[7]=d,e[8]=l,e[9]=u,e[10]=g):g=e[10];let L;return e[11]!==T||e[12]!==b||e[13]!==R||e[14]!==g?(L=t.jsx("div",{className:A,children:t.jsxs("div",{className:M,children:[T,b,R,g]})}),e[11]=T,e[12]=b,e[13]=R,e[14]=g,e[15]=L):L=e[15],L}function ji(i){return t.jsxs("li",{children:[t.jsx("span",{className:"inspector-analysis-shot-number",children:String(i.ordinal).padStart(2,"0")}),t.jsxs("div",{children:[t.jsx("strong",{children:i.label}),t.jsxs("time",{children:[Je(i.startSeconds)," – ",Je(i.endSeconds)," · ",Je(i.durationSeconds)]})]})]},i.ordinal)}function bi(i,e){return i.ordinal-e.ordinal}function vi(i){return[i.artifactId,i]}function Si({headerActionHost:i,notebookId:e,bookId:n,assetTools:r,sourceVisible:o,cell:s,cells:a,edges:c,asset:d,cellAssets:l,artifactAssets:m,status:u,error:f,busy:h,deleting:x,onUpdate:y,onSetInput:S,onRun:j,onDelete:v,onOpenFullscreen:N,onPreviewPayload:I,initialGenerationPreview:C,onSelectSource:w,generationActions:A=[],mentionAssets:M=[],voiceCatalog:T}){const b=K.useId(),R=K.useContext(os),[g,L]=K.useState(()=>{const p=ks(s,A,lt(s.id,a,c));return!Ge(s.type)||p.generationMode!=="r2v"?p:{...p,prompt:qe(p.prompt,ue(s.id,a,c,"i2v"),ue(s.id,a,c,p.generationMode))}}),[D,F]=K.useState(!1),W=()=>{T&&T.ensureLoaded().catch(()=>{})},[_,B]=K.useState(null),[E,q]=K.useState("idle"),Q=K.useRef(null),J=K.useRef(null),O=K.useRef(0),[le,te]=K.useState(g.prompt.length),[$,re]=K.useState(0),[me,fe]=K.useState(!1),[Y,X]=K.useState({error:null,loading:!1,value:void 0}),he=s.type==="prompt"||s.type==="analyze"||s.type==="generate_video"||s.type==="generate_image"||s.type==="generate_audio",k=s.type==="generate_video"||s.type==="generate_image"||s.type==="generate_audio",Z=Ge(s.type)?s.type:null,ge={provider:g.provider,model:g.model,operation:g.operation,tool:g.tool},se=Z?lt(s.id,a,c):[],G=s.tool==="edit_image_subjects",ee=G?A.filter(p=>p.tool===s.tool).map(p=>({...p,inputContract:{modes:p.inputContract.modes.filter(P=>P.id===s.inputs?.generationMode)}})):A,ne=Z?Mn(ee,Z,se,G):[],V=Z?Qe(ee,Z,ge):null,ce=!!(V&&Vt(V,se)),Fe=V?$n(V,se):[],Ve=new Set(Fe.map(p=>p.id)),oe=V?Xe(V,se,g.generationMode):"",Te=!!(V&&Pn(V,oe,se)),we=V?.inputContract.modes??[],De=we.find(p=>p.id===oe),ze=De?Tn(De,se):null,Ue=V?Dn(V,oe,s.id,a,c):[],je=V?.controls??[],ke=A.flatMap(p=>p.controls),be=zt(je,g.generationSettings)??Rn(g.model,g.generationSettings,c.filter(p=>p.target===s.id).map(p=>({type:a.find(P=>P.id===p.source)?.type??"",targetInput:p.targetInput,asset:l?.get(p.source)??null}))),ye=ce&&Te&&be===null,ve=V&&!ce&&!ne.some(p=>p.id===V.id)?[V,...ne]:ne,Ie=V?.id??g.tool,Ae=K.useMemo(()=>Ln(a,c,s.id),[s.id,a,c]),Ce=Hs(s.id,a,c,oe),Se=g.prompt.slice(0,le),de=(k?En(Ce,M,Se):Gn(M,a,Se,Ae)).map(p=>({type:"mention",value:p.value,label:p.label,description:p.description,caption:p.caption,thumbnailSrc:p.thumbnailUrl,mediaKind:p.mediaKind??void 0,empty:p.empty,colorScheme:"amber"})),$e=me&&de.length>0,ae=On(k?{...s,provider:g.provider,model:g.model,operation:g.operation,tool:g.tool}:s,u),Re=s.type==="character"||k||s.type==="extract_audio",an=en(s.type),Le=Ms(s,g,je),Pe=$s(s,g)&&(!k||ye),tt=k?"Generate":ae?Fn(s.type,ae.label):null,xe=(an||k)&&!!tt,Be=f??"This action failed, but no error details were recorded.",St=_?.error===Be?_.state:"idle",ln=St==="copied"?"Copied":St==="failed"?"Retry copy":"Copy",cn=E==="copied"?"Copied":E==="failed"?"Retry copy":"Copy",nt=(p,P=c)=>{const z=Z?Qe(ee,Z,p):null,H=lt(s.id,a,P);return{prompt:p.prompt,provider:p.provider,model:p.model,operation:p.operation,tool:p.tool,inputs:tn(s,{...p,generationMode:z?Xe(z,H,p.generationMode):p.generationMode,generationSettings:Hn(z?.controls??[],p.generationSettings)},ke)}},Nt=(p,P=c)=>{const z=nt(p,P);return JSON.stringify([{...z,inputs:{generationMode:z.inputs.generationMode,generationSettings:z.inputs.generationSettings}},P.filter(H=>H.target===s.id).map(H=>[H.source,H.targetInput]).sort()])},It=Nt(g),[dn]=K.useState(It),Ke=Y.key!==void 0?Y:C??Y,At=(Y.key??dn)!==It,Ct=async(p=g,P=c)=>{if(!I)throw new Error("Payload preview is unavailable");const z=++O.current,H=Nt(p,P),ie=Z?Qe(A,Z,p):null,pe=zt(ie?.controls??[],p.generationSettings);if(pe)throw O.current===z&&X({key:H,error:pe,loading:!1,value:void 0}),new Error(pe);X({key:H,error:null,loading:!0,value:void 0});try{const Ne=await I(s.id,nt(p,P));return O.current===z&&X({key:H,error:null,loading:!1,value:Ne}),Ne}catch(Ne){throw O.current===z&&X({key:H,error:Ne instanceof Error?Ne.message:String(Ne),loading:!1,value:void 0}),Ne}},st=Vn((p=g,P=c)=>{k&&I&&Ct(p,P).catch(()=>{})},s.id),_e=st.run,wt=p=>{O.current+=1,X(P=>({...P,loading:!1})),k&&I&&st.schedule({...g,prompt:p})},it=(p,P)=>{q("idle"),L(z=>({...z,prompt:p})),te(P),re(0),fe(!0),wt(p)},pn=p=>{q("idle"),L(P=>({...P,prompt:p})),te(p.length),fe(!1),wt(p)},kt=zn({call:r,bookId:n,surface:k?Un(s.type):null,prompt:g.prompt,onApply:pn}),Mt=p=>{const z=g.prompt.slice(0,le).lastIndexOf("@");if(z<0)return;const H=g.prompt.slice(0,z),ie=g.prompt.slice(le),pe=!ie||/^\s/u.test(ie)?"":" ",Ne=`${H}${p.value}${pe}${ie}`,at=H.length+p.value.length+pe.length;it(Ne,at),fe(!1),requestAnimationFrame(()=>{J.current?.focus({preventScroll:!0}),J.current?.setSelectionRange(at,at)})},ot=(p,P)=>{L(z=>({...z,[p]:P}))},un=p=>{const P=ve.find(ie=>ie.id===p);if(!P)return;s.type==="generate_audio"&&P.controls.some(ie=>ie.name==="voice_id")&&W();const z=Xe(P,se,G?g.generationMode:""),H={...g,...qn(P),generationMode:z,prompt:qe(g.prompt,ue(s.id,a,c,oe),ue(s.id,a,c,z)),generationSettings:{}};L(H),_e(H)},mn=(p,P)=>{const z={...g.generationSettings};P===void 0?delete z[p]:z[p]=P;const H={...g,generationSettings:z};L(H),_e(H)},fn=async()=>{try{await navigator.clipboard.writeText(Be),B({error:Be,state:"copied"})}catch{B({error:Be,state:"failed"})}},hn=async()=>{try{await navigator.clipboard.writeText(g.prompt),q("copied")}catch{q("failed")}},gn=async()=>{if(!(!Le||!Pe)){F(!0);try{await y(Bt(s,{...g,generationMode:oe},je,ke))}finally{F(!1)}}},$t=async()=>{if(!(!xe||h||D||ae?.disabled||!Pe||k&&Y.loading)){F(!0);try{if(k)try{st.cancel();const p=await Ct();if(pt(p).promptLeaks.length>0)return}catch{return}await Kn({cellId:s.id,dirty:Le,valid:Pe,patch:Bt(s,{...g,generationMode:oe},je,ke),onUpdate:y,onRun:j})}finally{F(!1)}}},Pt=c.filter(p=>p.target===s.id),yn=new Map(ue(s.id,a,c,oe).map(p=>[`${p.sourceCellId}:${p.targetInput}`,p.token])),Tt=(p,P,z=Ze(P),H)=>{const ie=a.find(pe=>pe.id===p);return ie?[{cellId:ie.id,address:Ye(ie.slot),type:ie.type,targetInput:P,targetLabel:z,...H?{mention:H}:{},asset:l?.get(ie.id)??null}]:[]},rt=Pt.flatMap(p=>Tt(p.source,p.targetInput,Ze(Bn(oe,"image",p.targetInput)),yn.get(`${p.source}:${p.targetInput}`))),xn=Ue.flatMap(p=>Tt(p.sourceCellId,p.targetInput,Ze(p.target))),Dt=V??{id:g.tool,tool:g.tool,provider:g.provider,providerLabel:g.provider,model:g.model,operation:g.operation,title:g.tool||"No compatible models",cellTypes:Z?[Z]:[],isDefault:!1,defaultPriority:0,controls:[],inputContract:{modes:[]}},Rt=ve.map(p=>Vt(p,se)?p:{...p,providerLabel:`${p.providerLabel} · incompatible`});V||Rt.unshift(Dt);const jn={action:Dt,cell:{...s,...nt(g)},connections:Pt.map(p=>({sourceCellId:p.source,targetInput:p.targetInput})),sourceCellIds:rt.map(p=>p.cellId),sourceAddresses:rt.map(p=>p.address)},Lt=async(p,P)=>{const z=c.filter(pe=>pe.target!==s.id||pe.targetInput!==p),H=P?[...z,{id:p,source:P,target:s.id,targetInput:p}]:z,ie={...g,prompt:qe(g.prompt,ue(s.id,a,c,oe),ue(s.id,a,H,oe))};await S(p,P),L(ie),_e(ie,H)},Et=he?t.jsxs("section",{className:"inspector-prompt-field",children:[t.jsxs("header",{className:"inspector-prompt-header",children:[t.jsx("h3",{children:"Prompt"}),k&&t.jsx(rs,{history:kt,disabled:h||D}),t.jsxs("button",{type:"button",className:`inspector-prompt-copy${E==="copied"?" copied":""}`,"aria-label":E==="copied"?"Prompt copied":E==="failed"?"Retry copying prompt":"Copy prompt",title:E==="copied"?"Prompt copied":E==="failed"?"Retry copying prompt":"Copy prompt",disabled:!g.prompt,onClick:()=>{hn()},children:[E==="copied"?t.jsx(Qt,{size:12}):t.jsx(hs,{size:12}),t.jsx("span",{"aria-live":"polite",children:cn})]})]}),t.jsxs("div",{className:"inspector-prompt-editor",ref:Q,children:[$e&&t.jsx(as,{items:de,selectedIndex:$,onSelect:Mt,onHover:re,anchorRef:Q,preferAbove:!1}),t.jsx("textarea",{ref:J,"aria-label":"Prompt",className:"inspector-prompt-textarea",value:g.prompt,disabled:k&&(h||D),"aria-invalid":k&&!At&&pt(Ke.value).promptLeaks.length>0,rows:k?3:8,onChange:p=>it(p.target.value,p.target.selectionStart),onClick:p=>te(p.currentTarget.selectionStart),onSelect:p=>te(p.currentTarget.selectionStart),onBlur:()=>fe(!1),onKeyDown:p=>{if(!$e){k&&kt.handlePromptKeyDown(p);return}if(p.key==="ArrowDown"){p.preventDefault(),re(P=>(P+1)%de.length);return}if(p.key==="ArrowUp"){p.preventDefault(),re(P=>(P-1+de.length)%de.length);return}if(p.key==="Enter"||p.key==="Tab"){p.preventDefault(),Mt(de[$]);return}p.key==="Escape"&&(p.preventDefault(),fe(!1))}})]})]}):null,Gt=h||D||!!ae?.disabled||!Pe||k&&Y.loading||!xe&&Le,{onKeyDown:bn}=ls({applyFormId:b,applyDisabled:Gt,applyScopeSelector:".composer-notebook-dock",busy:h||D,enabled:k&&!!R,onCancel:()=>R?.hide()}),Ot=tt&&(ae||k)?t.jsx("section",{className:k&&i?"confirm-sheet-actions inspector-generation-header-actions":"inspector-cell-actions","aria-label":"Primary cell action",children:t.jsxs("button",{type:"button",className:k&&i?"confirm-sheet-apply":"inspector-run-action","aria-busy":xe&&D,"aria-keyshortcuts":k?"Meta+Enter Control+Enter":void 0,title:ae?.disabled?"A run is already in progress for this cell":k&&!ye?"Check the generation type and required settings":!xe&&Le?"Save changes before running":k?"Generate (⌘Enter / Ctrl+Enter)":void 0,onClick:()=>{if(xe){$t();return}j(s.id)},disabled:Gt,children:[xe&&D?k?"Generating…":"Applying…":tt,k&&!D&&t.jsx("kbd",{"aria-hidden":"true",children:"⌘↵"})]})}):null,vn=!k&&Le?t.jsxs("div",{className:`inspector-dirty-notice${Pe?"":" invalid"}`,role:"status",children:[t.jsx(Ee,{size:14}),t.jsx("span",{children:Pe?xe?"Changes apply when this action runs":"Unsaved changes":xe?"Check timing values before running":"Check timing values before saving"})]}):null;return t.jsxs("div",{className:k?"generation-cell-inspector":"inspector-body inspector-executable-body",onKeyDown:bn,children:[k&&i?Sn.createPortal(Ot,i):null,d&&Re&&!k&&t.jsx(mt,{asset:d,address:Ye(s.slot),allowFullscreen:d.type==="image"||d.type==="video"||d.type==="final",onOpenFullscreen:N}),!k&&t.jsx(xt,{cell:s,cells:a,edges:c,busy:h,cellAssets:l,onSetInput:S}),t.jsxs("form",{id:b,className:k?"generation-cell-form":"inspector-cell-form","aria-busy":D,onSubmit:p=>{if(p.preventDefault(),xe){$t();return}gn()},children:[k?t.jsx(ms,{actions:Rt,busy:h||D,draft:jn,modes:we,compatibleModeIds:Ve,sourceVisible:o,notebookId:e,doltArtifactAssets:m,preview:Ke.value,previewError:Ke.error,previewLoading:Ke.loading,previewStale:At,sources:rt,sourceOptions:xn,voiceCatalog:T,promptEditor:Et,inputFooter:d?t.jsxs("div",{className:"generation-cell-output",children:[t.jsx("span",{className:"confirm-section-label",children:"Output"}),t.jsx(mt,{asset:d,address:Ye(s.slot),allowFullscreen:d.type==="image"||d.type==="video"||d.type==="final",onOpenFullscreen:N})]}):void 0,onActionChange:un,onAddSource:(p,P)=>{P&&Lt(P,p)},onRemoveSource:(p,P)=>{P&&Lt(P,null)},onSelectSource:p=>w?.(p),onModeChange:p=>{const P={...g,generationMode:p,prompt:qe(g.prompt,ue(s.id,a,c,oe),ue(s.id,a,c,p))};L(P),_e(P)},onPromptChange:p=>it(p,p.length),onRefreshPreview:()=>_e(),onSettingChange:mn}):Et,s.type==="split_video"&&(s.operation==="split_at_points"||s.operation==="split_ranges")&&t.jsxs("div",{className:"inspector-field-pair",children:[t.jsxs("label",{children:["Cut points",t.jsx("input",{type:"text",value:Array.isArray(s.inputs?.cutPointsSeconds)?s.inputs.cutPointsSeconds.join(", "):"",readOnly:!0})]}),t.jsxs("label",{children:["Chunks",t.jsx("input",{type:"text",value:Array.isArray(s.inputs?.cutPointsSeconds)?String(s.inputs.cutPointsSeconds.length+1):"",readOnly:!0})]})]}),s.type==="split_video"&&s.operation!=="split_at_points"&&s.operation!=="split_ranges"&&t.jsxs("div",{className:"inspector-field-pair",children:[t.jsxs("label",{children:["Start seconds",t.jsx("input",{type:"number",min:"0",step:"0.01",value:g.startSeconds,onChange:p=>ot("startSeconds",p.target.value)})]}),t.jsxs("label",{children:["End seconds",t.jsx("input",{type:"number",min:"0",step:"0.01",value:g.endSeconds,onChange:p=>ot("endSeconds",p.target.value)})]})]}),s.type==="splice"&&g.operation==="splice_video"&&t.jsxs("label",{children:["Overlap seconds",t.jsx("input",{type:"number",min:"0",step:"0.01",value:g.overlap,onChange:p=>ot("overlap",p.target.value)})]}),k&&!g.tool&&!g.model&&t.jsx("span",{className:"workspace-notice",children:"No generation model matches the current inputs."}),k&&Ie&&!ye&&t.jsxs("div",{className:"inspector-generation-warning",role:"status",children:[t.jsx(Ee,{size:14}),t.jsx("span",{children:V?ze??(ce?Te?be??"Complete the required generation settings before running.":"This generation type does not match the current inputs. Choose a compatible type or change the connections.":"This model does not accept the current inputs. Choose a compatible model or change the connections."):"This saved action is unavailable. Choose a supported model."})]}),vn,!xe&&!k&&t.jsxs("button",{type:"submit",className:"inspector-save-button",disabled:h||D||!Le||!Pe,children:[t.jsx(gs,{size:15}),t.jsx("span",{children:D?"Saving…":"Save changes"})]})]}),k&&i?null:Ot,(u==="error"||f)&&t.jsxs("section",{className:"inspector-run-error",role:"alert","aria-label":"Cell run error",children:[t.jsx(Ee,{size:16,"aria-hidden":"true"}),t.jsxs("div",{className:"inspector-run-error-content",children:[t.jsxs("div",{className:"inspector-run-error-header",children:[t.jsx("strong",{children:"Run failed"}),t.jsx("button",{type:"button","aria-label":"Copy run error",title:"Copy run error",onClick:()=>{fn()},children:t.jsx("span",{"aria-live":"polite",children:ln})})]}),t.jsx("p",{children:Be})]})]}),!k&&t.jsx(jt,{busy:h,deleting:x,onDelete:v})]})}function bt(i){const e=typeof i=="number"?i:Date.parse(i);if(!Number.isFinite(e))return null;const n=Math.max(0,Math.round((Date.now()-e)/1e3));if(n<5)return"just now";if(n<60)return`${n}s ago`;const r=Math.floor(n/60);if(r<60)return`${r}m ago`;const o=Math.floor(r/60);if(o<24)return`${o}h ago`;const s=Math.floor(o/24);return s<7?`${s}d ago`:new Date(e).toLocaleDateString()}function vt(i){const e=typeof i=="number"?i:Date.parse(i);return Number.isFinite(e)?new Date(e).toLocaleString():void 0}function Ni(i){return i==="dispatched"||i==="awaiting_provider"}function Ii(i,e){if(!e||!An(e.status??""))return null;if(e.runId){const n=i.find(r=>r.runId===e.runId);if(n)return n.attemptId}return i.find(n=>Ni(n.status))?.attemptId??null}function rn(i){const e=U.c(24),{revisions:n,loading:r,error:o}=i;let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=t.jsxs("span",{children:[t.jsx(Wt,{size:14,"aria-hidden":"true"}),"History"]}),e[0]=s):s=e[0];const a=n.length===1?"":"s";let c;e[1]!==n.length||e[2]!==a?(c=t.jsxs("header",{className:"inspector-source-meta",children:[s,t.jsxs("code",{children:[n.length," revision",a]})]}),e[1]=n.length,e[2]=a,e[3]=c):c=e[3];let d;e[4]!==r?(d=r&&t.jsx("p",{className:"inspector-analysis-json-status",role:"status",children:"Loading asset history…"}),e[4]=r,e[5]=d):d=e[5];let l;e[6]!==o?(l=o&&t.jsx("p",{className:"inspector-run-error",role:"alert",children:o}),e[6]=o,e[7]=l):l=e[7];let m;e[8]!==o||e[9]!==r||e[10]!==n.length?(m=!r&&!o&&n.length===0&&t.jsx("p",{className:"inspector-analysis-json-status",children:"No revisions recorded for this asset."}),e[8]=o,e[9]=r,e[10]=n.length,e[11]=m):m=e[11];let u;if(e[12]!==n){let x;e[14]!==n.length?(x=(y,S)=>t.jsxs("li",{children:[t.jsx("span",{className:"inspector-history-index",children:n.length-S}),t.jsxs("div",{children:[t.jsxs("header",{children:[t.jsx("strong",{children:y.operation?.replaceAll("_"," ")??"Asset revision"}),t.jsx("code",{title:y.hash,children:y.hash.slice(0,8)})]}),t.jsx("p",{children:y.message}),t.jsxs("small",{children:[t.jsx("time",{dateTime:y.date,title:vt(y.date),children:bt(y.date)??y.date}),y.author?` · ${y.author}`:""]})]})]},y.hash),e[14]=n.length,e[15]=x):x=e[15],u=n.map(x),e[12]=n,e[13]=u}else u=e[13];let f;e[16]!==u?(f=t.jsx("ol",{className:"inspector-history",children:u}),e[16]=u,e[17]=f):f=e[17];let h;return e[18]!==c||e[19]!==d||e[20]!==l||e[21]!==m||e[22]!==f?(h=t.jsxs("section",{className:"inspector-generations","aria-label":"Asset history",children:[c,d,l,m,f]}),e[18]=c,e[19]=d,e[20]=l,e[21]=m,e[22]=f,e[23]=h):h=e[23],h}function Ai(i){const e=U.c(45),{attempts:n,currentExecution:r,loading:o,error:s,artifactAssets:a,onLoadPayload:c,onDownloadHar:d,onOpenSettings:l}=i;let m;e[0]!==n||e[1]!==r?(m=Ii(n,r),e[0]=n,e[1]=r,e[2]=m):m=e[2];const u=m,f=n.find(wi)?.har?.mode;let h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsxs("span",{children:[t.jsx(Wt,{size:14,"aria-hidden":"true"}),"Generations"]}),e[3]=h):h=e[3];const x=n.length===1?"":"s";let y;e[4]!==n.length||e[5]!==x?(y=t.jsxs("code",{children:[n.length," attempt",x]}),e[4]=n.length,e[5]=x,e[6]=y):y=e[6];let S;e[7]!==f?(S=f?{mode:f,hasCapture:!1}:null,e[7]=f,e[8]=S):S=e[8];let j;e[9]!==l||e[10]!==S?(j=t.jsx(Ut,{generationId:null,status:S,onOpenSettings:l}),e[9]=l,e[10]=S,e[11]=j):j=e[11];let v;e[12]!==y||e[13]!==j?(v=t.jsxs("header",{className:"inspector-source-meta",children:[h,y,j]}),e[12]=y,e[13]=j,e[14]=v):v=e[14];let N;e[15]!==o?(N=o&&t.jsx("p",{className:"inspector-analysis-json-status",role:"status",children:"Loading generation history…"}),e[15]=o,e[16]=N):N=e[16];let I;e[17]!==s?(I=s&&t.jsx("p",{className:"inspector-run-error",role:"alert",children:s}),e[17]=s,e[18]=I):I=e[18];let C;e[19]!==n.length||e[20]!==s||e[21]!==o?(C=!o&&!s&&n.length===0&&t.jsx("p",{className:"inspector-analysis-json-status",children:"No generation attempts recorded for this cell."}),e[19]=n.length,e[20]=s,e[21]=o,e[22]=C):C=e[22];let w;if(e[23]!==a||e[24]!==n||e[25]!==r?.status||e[26]!==u||e[27]!==d||e[28]!==c){let T;e[30]!==a||e[31]!==n.length||e[32]!==r?.status||e[33]!==u||e[34]!==d||e[35]!==c?(T=(b,R)=>{const g=n.length-R,L=b.artifactId?a.get(b.artifactId):void 0,D=L??(b.mediaUrl||b.thumbnailUrl?{type:b.mediaUrl&&!b.thumbnailUrl?"video":"image",mediaUrl:b.mediaUrl,thumbnailUrl:b.thumbnailUrl,duration:null}:null),F=b.transitions.at(-1),W=u===b.attemptId,_=b.artifactId??b.providerArtifactId;return t.jsxs("li",{className:["inspector-generation-attempt",W?"inspector-generation-attempt-live":""].filter(Boolean).join(" "),children:[t.jsxs("div",{className:"inspector-generation-attempt-head",children:[D?t.jsx("div",{className:"inspector-generation-thumb",children:t.jsx(Yn,{asset:D})}):t.jsx(yt,{asset:L,kindHint:"generate_image"}),t.jsxs("div",{className:"inspector-generation-facts",children:[t.jsxs("div",{className:"inspector-generation-attempt-title",children:[t.jsxs("strong",{children:["Attempt ",g]}),t.jsx("span",{className:`inspector-generation-status inspector-generation-status-${b.status}`,children:b.status}),W&&t.jsx("span",{className:"inspector-generation-live",role:"status",children:r?.status??"running"})]}),t.jsx("span",{className:"inspector-generation-meta",title:vt(b.createdAt),children:[Cn(b.tool),b.model,bt(b.createdAt)].filter(Boolean).join(" · ")}),F&&t.jsxs("code",{className:"inspector-generation-commit",title:F.commitHash,children:["commit ",F.commitHash.slice(0,8)]}),(b.resolvedPrompt||b.prompt)&&t.jsx("p",{title:b.resolvedPrompt??b.prompt??void 0,children:(b.resolvedPrompt??b.prompt??"").slice(0,160)}),b.transitions.length>0&&t.jsx("ol",{className:"inspector-generation-timeline","aria-label":`Attempt ${g} status timeline`,children:b.transitions.map(Ci)}),b.error&&t.jsx("p",{className:"inspector-generation-error",role:b.status==="failed"?"alert":void 0,children:b.error}),b.providerTask&&t.jsx(Zn,{task:b.providerTask}),t.jsx(Ut,{generationId:b.attemptId,status:b.har,captureOffHint:!1,onDownload:d})]})]}),(b.payload!==void 0||b.payloadAvailable&&c)&&t.jsx(gt,{label:"Payload",value:b.payload,loadValue:b.payload===void 0&&_&&c?()=>c(_):void 0,ariaLabel:`Generation payload for attempt ${g}`,artifactAssets:a})]},b.attemptId)},e[30]=a,e[31]=n.length,e[32]=r?.status,e[33]=u,e[34]=d,e[35]=c,e[36]=T):T=e[36],w=n.map(T),e[23]=a,e[24]=n,e[25]=r?.status,e[26]=u,e[27]=d,e[28]=c,e[29]=w}else w=e[29];let A;e[37]!==w?(A=t.jsx("ol",{className:"inspector-generations-list",children:w}),e[37]=w,e[38]=A):A=e[38];let M;return e[39]!==C||e[40]!==A||e[41]!==v||e[42]!==N||e[43]!==I?(M=t.jsxs("section",{className:"inspector-generations","aria-label":"Generation attempts",children:[v,N,I,C,A]}),e[39]=C,e[40]=A,e[41]=v,e[42]=N,e[43]=I,e[44]=M):M=e[44],M}function Ci(i,e){return t.jsxs("li",{children:[t.jsx("span",{className:`inspector-generation-timeline-dot inspector-generation-timeline-dot-${i.status}`,"aria-hidden":"true"}),t.jsx("span",{children:i.status}),t.jsx("time",{dateTime:i.commitDate,title:vt(i.commitDate),children:bt(i.commitDate)})]},`${i.commitHash}:${e}`)}function wi(i){return i.har}function ki(i){const e=U.c(14),{notebookId:n,cell:r,artifactAssets:o,history:s}=i,a=!!r.outputArtifactId,c=a?"inspector-body inspector-source-body inspector-source-split":"inspector-body inspector-source-body";let d;e[0]!==r.id||e[1]!==s?.error||e[2]!==s?.loading||e[3]!==s?.revisions||e[4]!==a?(d=a&&t.jsx("div",{className:"inspector-source-pane inspector-source-history-pane",children:t.jsx(rn,{revisions:s?.revisions??[],loading:s?.loading??!1,error:s?.error??null},r.id)}),e[0]=r.id,e[1]=s?.error,e[2]=s?.loading,e[3]=s?.revisions,e[4]=a,e[5]=d):d=e[5];let l;e[6]!==o||e[7]!==r||e[8]!==n?(l=t.jsx("div",{className:"inspector-source-pane inspector-source-dolt-pane",children:t.jsx(ts,{notebookId:n,cell:r,artifactAssets:o},r.id)}),e[6]=o,e[7]=r,e[8]=n,e[9]=l):l=e[9];let m;return e[10]!==c||e[11]!==d||e[12]!==l?(m=t.jsxs("div",{className:c,children:[d,l]}),e[10]=c,e[11]=d,e[12]=l,e[13]=m):m=e[13],m}function Li(i){const e=U.c(110),{headerActionHost:n,notebookId:r,cell:o,cells:s,edges:a,asset:c,cellAssets:d,versionAssets:l,status:m,error:u,busy:f,deleting:h,sourceVisible:x,historyVisible:y,generationsVisible:S,generationActions:j,mediaInsightWork:v,onUpdate:N,onSetInput:I,onRun:C,onDelete:w,onOpenFullscreen:A,onPreviewPayload:M,initialGenerationPreview:T,onSelectSource:b,onLoadGenerationPayload:R,onInspectGenerationRequest:g,onDownloadGenerationHar:L,onOpenSettings:D,onTranscribeAsset:F,onLoadTranscriptJson:W,onDownloadTranscriptSrt:_,generations:B,history:E,mentionAssets:q,voiceCatalog:Q,bookId:J,assetTools:O,queuedCellIds:le,runErrors:te,jobs:$,onCancelJob:re}=i,me=y===void 0?!1:y,fe=S===void 0?!1:S;let Y;e[0]!==c||e[1]!==d||e[2]!==l?(Y=Os(c,d,l),e[0]=c,e[1]=d,e[2]=l,e[3]=Y):Y=e[3];const X=Y;let he;e[4]!==o||e[5]!==s||e[6]!==a||e[7]!==u||e[8]!==$||e[9]!==le||e[10]!==te?(he=Nn({cell:o,cells:s,edges:a,queuedCellIds:le,runErrors:te,error:u,jobs:$}),e[4]=o,e[5]=s,e[6]=a,e[7]=u,e[8]=$,e[9]=le,e[10]=te,e[11]=he):he=e[11];const k=he;if(x&&!Ge(o.type)){let G;return e[12]!==X||e[13]!==o||e[14]!==E||e[15]!==r?(G=t.jsx(ki,{notebookId:r,cell:o,artifactAssets:X,history:E}),e[12]=X,e[13]=o,e[14]=E,e[15]=r,e[16]=G):G=e[16],G}if(me){let G;e[17]!==E?.revisions?(G=E?.revisions??[],e[17]=E?.revisions,e[18]=G):G=e[18];const ee=E?.loading??!1,ne=E?.error??null;let V;return e[19]!==o.id||e[20]!==G||e[21]!==ee||e[22]!==ne?(V=t.jsx("div",{className:"inspector-body inspector-source-body",children:t.jsx(rn,{revisions:G,loading:ee,error:ne},o.id)}),e[19]=o.id,e[20]=G,e[21]=ee,e[22]=ne,e[23]=V):V=e[23],V}if(fe){let G;e[24]!==B?.attempts?(G=B?.attempts??[],e[24]=B?.attempts,e[25]=G):G=e[25];const ee=B?.currentExecution??null,ne=B?.loading??!1,V=B?.error??null;let ce;return e[26]!==X||e[27]!==o.id||e[28]!==L||e[29]!==R||e[30]!==D||e[31]!==G||e[32]!==ee||e[33]!==ne||e[34]!==V?(ce=t.jsx("div",{className:"inspector-body inspector-source-body",children:t.jsx(Ai,{attempts:G,currentExecution:ee,loading:ne,error:V,artifactAssets:X,onLoadPayload:R,onDownloadHar:L,onOpenSettings:D},o.id)}),e[26]=X,e[27]=o.id,e[28]=L,e[29]=R,e[30]=D,e[31]=G,e[32]=ee,e[33]=ne,e[34]=V,e[35]=ce):ce=e[35],ce}if(o.type==="analysis"){let G;return e[36]!==c||e[37]!==f||e[38]!==o||e[39]!==d||e[40]!==s||e[41]!==h||e[42]!==a||e[43]!==w||e[44]!==I||e[45]!==N||e[46]!==l?(G=t.jsx(xi,{cell:o,cells:s,edges:a,asset:c,cellAssets:d,versionAssets:l,busy:f,deleting:h,onUpdate:N,onSetInput:I,onDelete:w}),e[36]=c,e[37]=f,e[38]=o,e[39]=d,e[40]=s,e[41]=h,e[42]=a,e[43]=w,e[44]=I,e[45]=N,e[46]=l,e[47]=G):G=e[47],G}let Z;e[48]!==o.type?(Z=In(o.type),e[48]=o.type,e[49]=Z):Z=e[49];const ge=Z;if(ge){let G;e[50]!==k.jobId||e[51]!==k.kind||e[52]!==$?(G=k.kind==="queued"||k.kind==="generating"?($??[]).find(ne=>ne.operationId===k.jobId&&typeof ne.id=="number")?.id:void 0,e[50]=k.jobId,e[51]=k.kind,e[52]=$,e[53]=G):G=e[53];let ee;return e[54]!==X||e[55]!==c||e[56]!==O||e[57]!==J||e[58]!==f||e[59]!==o||e[60]!==d||e[61]!==s||e[62]!==h||e[63]!==ge||e[64]!==a||e[65]!==k||e[66]!==v||e[67]!==re||e[68]!==w||e[69]!==L||e[70]!==_||e[71]!==g||e[72]!==W||e[73]!==A||e[74]!==D||e[75]!==C||e[76]!==b||e[77]!==I||e[78]!==F||e[79]!==N||e[80]!==G||e[81]!==l?(ee=t.jsx(li,{kind:ge,cell:o,cells:s,edges:a,asset:c,cellAssets:d,versionAssets:l,busy:f,deleting:h,mediaInsightWork:v,generationState:k,cancelJobId:G,onUpdate:N,onSetInput:I,onRun:C,onCancelJob:re,onSelectSource:b,onDelete:w,onOpenFullscreen:A,onTranscribeAsset:F,onLoadTranscriptJson:W,onDownloadTranscriptSrt:_,bookId:J,assetTools:O,artifactAssets:X,onInspectGenerationRequest:g,onDownloadGenerationHar:L,onOpenSettings:D}),e[54]=X,e[55]=c,e[56]=O,e[57]=J,e[58]=f,e[59]=o,e[60]=d,e[61]=s,e[62]=h,e[63]=ge,e[64]=a,e[65]=k,e[66]=v,e[67]=re,e[68]=w,e[69]=L,e[70]=_,e[71]=g,e[72]=W,e[73]=A,e[74]=D,e[75]=C,e[76]=b,e[77]=I,e[78]=F,e[79]=N,e[80]=G,e[81]=l,e[82]=ee):ee=e[82],ee}let se;return e[83]!==X||e[84]!==c||e[85]!==O||e[86]!==J||e[87]!==f||e[88]!==o||e[89]!==d||e[90]!==s||e[91]!==h||e[92]!==a||e[93]!==u||e[94]!==j||e[95]!==n||e[96]!==T||e[97]!==q||e[98]!==r||e[99]!==w||e[100]!==A||e[101]!==M||e[102]!==C||e[103]!==b||e[104]!==I||e[105]!==N||e[106]!==x||e[107]!==m||e[108]!==Q?(se=t.jsx(Si,{headerActionHost:n,notebookId:r,bookId:J,assetTools:O,artifactAssets:X,sourceVisible:x,cell:o,cells:s,edges:a,asset:c,cellAssets:d,status:m,error:u,busy:f,deleting:h,onUpdate:N,onSetInput:I,onRun:C,onDelete:w,onOpenFullscreen:A,onPreviewPayload:M,initialGenerationPreview:T,onSelectSource:b,generationActions:j,mentionAssets:q,voiceCatalog:Q}),e[83]=X,e[84]=c,e[85]=O,e[86]=J,e[87]=f,e[88]=o,e[89]=d,e[90]=s,e[91]=h,e[92]=a,e[93]=u,e[94]=j,e[95]=n,e[96]=T,e[97]=q,e[98]=r,e[99]=w,e[100]=A,e[101]=M,e[102]=C,e[103]=b,e[104]=I,e[105]=N,e[106]=x,e[107]=m,e[108]=Q,e[109]=se):se=e[109],se}export{Li as N};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as M,a as G,j as t}from"./vendor-react-Dj7D1fD4.js";import{b as se}from"./ui-jRPWsNUw.js";import{da as te,db as le,dc as oe,dd as ne}from"./videobook-0DOLlhG2.js";import{b as ae,X as ie,ad as re,aj as ce,ak as de,L as je,al as be,i as he,k as me,am as ue,R as fe,C as pe}from"./vendor-icons-CGqhCIXV.js";const Z=10,xe={review:he,failed:be,running:je,queued:de,done:ce,cancelled:re,omitted:ie},ge={continue:"Continue",retry:"Retry",switch:"Switch model",omit:"Omit",cancel:"Cancel"},Ne={retry:fe,cancel:ue},we=new Set(["continue","retry"]),ve=[{id:"all",label:"All",count:null},{id:"attention",label:"Attention",count:"attention"},{id:"active",label:"Active",count:"active"},{id:"finished",label:"Finished",count:"finished"}];function ee(u){return new Date(u).toLocaleTimeString()}function ye(u){const e=M.c(14),{filter:s,active:j,count:a,onSelect:m}=u;let b;e[0]!==s.id||e[1]!==m?(b=()=>m(s.id),e[0]=s.id,e[1]=m,e[2]=b):b=e[2];let o;e[3]!==s.count||e[4]!==s.id?(o=s.count&&t.jsx("span",{className:`jobs-filter-dot jobs-filter-dot-${s.id}`,"aria-hidden":"true"}),e[3]=s.count,e[4]=s.id,e[5]=o):o=e[5];let l;e[6]!==a?(l=a!==null&&t.jsx("span",{className:"jobs-filter-count",children:a}),e[6]=a,e[7]=l):l=e[7];let n;return e[8]!==j||e[9]!==s.label||e[10]!==b||e[11]!==o||e[12]!==l?(n=t.jsxs("button",{type:"button",className:"jobs-filter","aria-pressed":j,onClick:b,children:[o,s.label,l]}),e[8]=j,e[9]=s.label,e[10]=b,e[11]=o,e[12]=l,e[13]=n):n=e[13],n}function Ce(u){const e=M.c(15),{band:s,hidden:j,showAll:a,onToggleShowAll:m}=u,b=s.rows.some(Se),o=`jobs-band-header jobs-band-header-${s.id}${b?" jobs-band-has-failed":""}`;let l;e[0]!==s.label?(l=t.jsx("span",{className:"jobs-band-label",children:s.label}),e[0]=s.label,e[1]=l):l=e[1];let n;e[2]!==s.rows.length?(n=t.jsx("span",{className:"jobs-band-count",children:s.rows.length}),e[2]=s.rows.length,e[3]=n):n=e[3];let i;e[4]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx("span",{className:"jobs-band-rule","aria-hidden":"true"}),e[4]=i):i=e[4];let r;e[5]!==s.rows.length||e[6]!==j||e[7]!==m||e[8]!==a?(r=(j>0||a)&&s.rows.length>Z&&t.jsx("button",{type:"button",className:"jobs-band-more",onClick:m,children:a?`showing all ${s.rows.length} · Show fewer`:`showing ${s.rows.length-j} of ${s.rows.length} · Show all`}),e[5]=s.rows.length,e[6]=j,e[7]=m,e[8]=a,e[9]=r):r=e[9];let c;return e[10]!==o||e[11]!==l||e[12]!==n||e[13]!==r?(c=t.jsxs("div",{className:o,children:[l,n,i,r]}),e[10]=o,e[11]=l,e[12]=n,e[13]=r,e[14]=c):c=e[14],c}function Se(u){return u.tone==="failed"}function ke(u){const e=M.c(17),{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}=u,o=s.tone==="failed"&&s.errorDetail!==null;let l;e[0]!==j||e[1]!==m||e[2]!==s?(l=s.actions.map(c=>{const p=Ne[c];return t.jsxs("button",{type:"button",className:we.has(c)?"jobs-action jobs-action-primary":"jobs-action",disabled:j,onClick:()=>m(s,c),children:[p&&t.jsx(p,{size:12,"aria-hidden":"true"}),ge[c]]},c)}),e[0]=j,e[1]=m,e[2]=s,e[3]=l):l=e[3];let n;e[4]!==a||e[5]!==o||e[6]!==b||e[7]!==s.key?(n=o&&t.jsxs("button",{type:"button",className:"jobs-action","aria-expanded":a,onClick:()=>b(s.key),children:["Details",t.jsx(pe,{size:12,"aria-hidden":"true"})]}),e[4]=a,e[5]=o,e[6]=b,e[7]=s.key,e[8]=n):n=e[8];let i;e[9]!==o||e[10]!==s.actions.length||e[11]!==s.duration?(i=s.actions.length===0&&!o&&s.duration&&t.jsx("span",{className:"jobs-duration",children:s.duration}),e[9]=o,e[10]=s.actions.length,e[11]=s.duration,e[12]=i):i=e[12];let r;return e[13]!==l||e[14]!==n||e[15]!==i?(r=t.jsxs("div",{className:"jobs-cell jobs-cell-actions",children:[l,n,i]}),e[13]=l,e[14]=n,e[15]=i,e[16]=r):r=e[16],r}function Ae(u){const e=M.c(67),{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}=u,o=xe[s.tone],l=`jobs-row jobs-row-${s.tone}`,n=s.tone==="running"?"jobs-spin":void 0;let i;e[0]!==o||e[1]!==n?(i=t.jsx(o,{size:14,className:n,"aria-hidden":"true"}),e[0]=o,e[1]=n,e[2]=i):i=e[2];let r;e[3]!==s.statusLabel||e[4]!==i?(r=t.jsxs("div",{className:"jobs-cell jobs-cell-status",children:[i,s.statusLabel]}),e[3]=s.statusLabel,e[4]=i,e[5]=r):r=e[5];let c;e[6]!==s.title?(c=t.jsx("span",{children:s.title}),e[6]=s.title,e[7]=c):c=e[7];let p;e[8]!==s.detail?(p=s.detail&&t.jsx("code",{children:s.detail}),e[8]=s.detail,e[9]=p):p=e[9];let x;e[10]!==c||e[11]!==p?(x=t.jsxs("div",{className:"jobs-cell jobs-cell-job",children:[c,p]}),e[10]=c,e[11]=p,e[12]=x):x=e[12];const X=s.target.tag?"jobs-tag":"jobs-tag jobs-tag-book",I=s.target.tag??"BOOK";let D;e[13]!==X||e[14]!==I?(D=t.jsx("code",{className:X,children:I}),e[13]=X,e[14]=I,e[15]=D):D=e[15];let k;e[16]!==s.target.label?(k=s.target.label&&t.jsx("span",{children:s.target.label}),e[16]=s.target.label,e[17]=k):k=e[17];let _;e[18]!==D||e[19]!==k?(_=t.jsxs("div",{className:"jobs-cell jobs-cell-target",children:[D,k]}),e[18]=D,e[19]=k,e[20]=_):_=e[20];let N;e[21]!==s.errorCode?(N=s.errorCode&&t.jsx("code",{className:"jobs-error-code",children:s.errorCode}),e[21]=s.errorCode,e[22]=N):N=e[22];let g;e[23]!==s.note?(g=s.note&&t.jsxs("span",{className:"jobs-summary-note",children:[" · ",s.note]}),e[23]=s.note,e[24]=g):g=e[24];let w;e[25]!==s.summary||e[26]!==g?(w=t.jsxs("span",{className:"jobs-summary-text",children:[s.summary,g]}),e[25]=s.summary,e[26]=g,e[27]=w):w=e[27];let h;e[28]!==N||e[29]!==w?(h=t.jsxs("div",{className:"jobs-summary-line",children:[N,w]}),e[28]=N,e[29]=w,e[30]=h):h=e[30];let v;e[31]!==s.live?(v=s.live&&t.jsx("div",{className:"jobs-progress","aria-hidden":"true",children:t.jsx("span",{})}),e[31]=s.live,e[32]=v):v=e[32];let f;e[33]!==s.providerTask?(f=s.providerTask&&t.jsx(se,{task:s.providerTask}),e[33]=s.providerTask,e[34]=f):f=e[34];let y;e[35]!==h||e[36]!==v||e[37]!==f?(y=t.jsxs("div",{className:"jobs-cell jobs-cell-summary",children:[h,v,f]}),e[35]=h,e[36]=v,e[37]=f,e[38]=y):y=e[38];let A;e[39]!==s.attempt?(A=t.jsx("div",{className:"jobs-cell jobs-cell-attempt",children:s.attempt}),e[39]=s.attempt,e[40]=A):A=e[40];let C;e[41]!==s.timestamp?(C=new Date(s.timestamp).toISOString(),e[41]=s.timestamp,e[42]=C):C=e[42];let J;e[43]!==s.timestamp?(J=ee(s.timestamp),e[43]=s.timestamp,e[44]=J):J=e[44];let S;e[45]!==C||e[46]!==J?(S=t.jsx("div",{className:"jobs-cell jobs-cell-time",children:t.jsx("time",{dateTime:C,children:J})}),e[45]=C,e[46]=J,e[47]=S):S=e[47];let T;e[48]!==j||e[49]!==a||e[50]!==m||e[51]!==b||e[52]!==s?(T=t.jsx(ke,{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}),e[48]=j,e[49]=a,e[50]=m,e[51]=b,e[52]=s,e[53]=T):T=e[53];let E;e[54]!==a||e[55]!==s.errorDetail?(E=a&&s.errorDetail&&t.jsxs("div",{className:"jobs-row-error",children:[t.jsx("span",{children:"Error"}),t.jsx("pre",{children:s.errorDetail})]}),e[54]=a,e[55]=s.errorDetail,e[56]=E):E=e[56];let $;return e[57]!==l||e[58]!==_||e[59]!==y||e[60]!==A||e[61]!==S||e[62]!==T||e[63]!==E||e[64]!==r||e[65]!==x?($=t.jsxs("article",{className:l,children:[r,x,_,y,A,S,T,E]}),e[57]=l,e[58]=_,e[59]=y,e[60]=A,e[61]=S,e[62]=T,e[63]=E,e[64]=r,e[65]=x,e[66]=$):$=e[66],$}function Te(u,e){const s=new Set(u);return s.has(e)?s.delete(e):s.add(e),s}function $e(u){const e=M.c(56),{bookName:s,jobs:j,plans:a,assets:m,cells:b,now:o,busy:l,onRefresh:n,onCancelJob:i,onRetryJob:r,onContinuePlan:c,onRevisePlan:p}=u,[x,X]=G.useState("all"),[I,D]=G.useState(!1),[k,_]=G.useState(Ie);let N;e[0]!==m||e[1]!==b||e[2]!==j||e[3]!==o||e[4]!==a?(N=te(le({jobs:j,plans:a,cells:b,assets:m,now:o})),e[0]=m,e[1]=b,e[2]=j,e[3]=o,e[4]=a,e[5]=N):N=e[5];const g=N;let w;e[6]!==g?(w=oe(g),e[6]=g,e[7]=w):w=e[7];const h=w;let v;e[8]!==g||e[9]!==x?(v=ne(g,x),e[8]=g,e[9]=x,e[10]=v):v=e[10];const f=v;let y;e[11]!==i||e[12]!==c||e[13]!==r||e[14]!==p?(y=(d,R)=>{if(d.source.kind==="job"){R==="cancel"&&i(d.source.jobId),R==="retry"&&r(d.source.jobId);return}R==="continue"&&c(d.source.planId),(R==="retry"||R==="switch"||R==="omit")&&p(d.source.planId,R)},e[11]=i,e[12]=c,e[13]=r,e[14]=p,e[15]=y):y=e[15];const A=y;let C;e[16]===Symbol.for("react.memo_cache_sentinel")?(C=d=>{_(R=>Te(R,d))},e[16]=C):C=e[16];const J=C;let S;e[17]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx("h1",{children:"Jobs"}),e[17]=S):S=e[17];const T=s??"No book selected",E=h.total,$=h.total===1?"job":"jobs";let O;e[18]!==o?(O=ee(o),e[18]=o,e[19]=O):O=e[19];let L;e[20]!==h.total||e[21]!==O||e[22]!==T||e[23]!==$?(L=t.jsxs("span",{className:"jobs-header-meta",children:[T," · ",E," ",$," · updated ",O]}),e[20]=h.total,e[21]=O,e[22]=T,e[23]=$,e[24]=L):L=e[24];let F;e[25]!==h||e[26]!==x?(F=ve.map(d=>t.jsx(ye,{filter:d,active:x===d.id,count:d.count?h[d.count]:null,onSelect:X},d.id)),e[25]=h,e[26]=x,e[27]=F):F=e[27];let B;e[28]!==F?(B=t.jsx("div",{className:"jobs-filters","aria-label":"Filter jobs",children:F}),e[28]=F,e[29]=B):B=e[29];let P;e[30]!==L||e[31]!==B?(P=t.jsxs("div",{className:"jobs-header-title",children:[S,L,B]}),e[30]=L,e[31]=B,e[32]=P):P=e[32];let U;e[33]===Symbol.for("react.memo_cache_sentinel")?(U=t.jsx(me,{size:15}),e[33]=U):U=e[33];let z;e[34]!==l||e[35]!==n?(z=t.jsxs("button",{type:"button",className:"jobs-refresh",disabled:l,onClick:n,children:[U,"Refresh"]}),e[34]=l,e[35]=n,e[36]=z):z=e[36];let q;e[37]!==P||e[38]!==z?(q=t.jsxs("header",{children:[P,z]}),e[37]=P,e[38]=z,e[39]=q):q=e[39];let K;e[40]!==h.total?(K=h.total===0&&t.jsxs("div",{className:"jobs-empty",children:[t.jsx(ae,{size:16,"aria-hidden":"true"}),t.jsx("strong",{children:"No jobs recorded"}),t.jsx("span",{children:"Run a cell or a notebook to queue work."})]}),e[40]=h.total,e[41]=K):K=e[41];let H;e[42]!==h.total||e[43]!==f.length?(H=h.total>0&&f.length===0&&t.jsx("div",{className:"jobs-empty",children:t.jsx("span",{children:"No jobs match this filter."})}),e[42]=h.total,e[43]=f.length,e[44]=H):H=e[44];let V;e[45]!==l||e[46]!==k||e[47]!==A||e[48]!==I||e[49]!==f?(V=f.length>0&&t.jsx("div",{className:"jobs-list-scroll",children:t.jsxs("div",{className:"jobs-list",children:[t.jsxs("div",{className:"jobs-columns","aria-hidden":"true",children:[t.jsx("span",{children:"Status"}),t.jsx("span",{children:"Job"}),t.jsx("span",{children:"Target"}),t.jsx("span",{children:"Progress / result"}),t.jsx("span",{className:"jobs-columns-attempt",children:"Try"}),t.jsx("span",{children:"Enqueued"}),t.jsx("span",{children:"Actions"})]}),f.map(d=>{const Q=d.id==="finished"&&!I?d.rows.slice(0,Z):d.rows;return t.jsxs("div",{className:"jobs-band",children:[t.jsx(Ce,{band:d,hidden:d.rows.length-Q.length,showAll:d.id==="finished"&&I,onToggleShowAll:()=>D(Re)}),Q.map(Y=>t.jsx(Ae,{row:Y,busy:l,expanded:k.has(Y.key),onAction:A,onToggleDetails:J},Y.key))]},d.id)})]})}),e[45]=l,e[46]=k,e[47]=A,e[48]=I,e[49]=f,e[50]=V):V=e[50];let W;return e[51]!==q||e[52]!==K||e[53]!==H||e[54]!==V?(W=t.jsxs("section",{className:"workspace-screen jobs-screen",children:[q,K,H,V]}),e[51]=q,e[52]=K,e[53]=H,e[54]=V,e[55]=W):W=e[55],W}function Re(u){return!u}function Ie(){return new Set}export{$e as J};
|
|
1
|
+
import{c as M,a as G,j as t}from"./vendor-react-Dj7D1fD4.js";import{b as se}from"./ui-z5r-p0K9.js";import{db as te,dc as le,dd as oe,de as ne}from"./videobook-CsW453sb.js";import{b as ae,X as ie,ad as re,aj as ce,ak as de,L as je,al as be,i as he,k as me,am as ue,R as fe,C as pe}from"./vendor-icons-CGqhCIXV.js";const Z=10,xe={review:he,failed:be,running:je,queued:de,done:ce,cancelled:re,omitted:ie},ge={continue:"Continue",retry:"Retry",switch:"Switch model",omit:"Omit",cancel:"Cancel"},Ne={retry:fe,cancel:ue},we=new Set(["continue","retry"]),ve=[{id:"all",label:"All",count:null},{id:"attention",label:"Attention",count:"attention"},{id:"active",label:"Active",count:"active"},{id:"finished",label:"Finished",count:"finished"}];function ee(u){return new Date(u).toLocaleTimeString()}function ye(u){const e=M.c(14),{filter:s,active:j,count:a,onSelect:m}=u;let b;e[0]!==s.id||e[1]!==m?(b=()=>m(s.id),e[0]=s.id,e[1]=m,e[2]=b):b=e[2];let o;e[3]!==s.count||e[4]!==s.id?(o=s.count&&t.jsx("span",{className:`jobs-filter-dot jobs-filter-dot-${s.id}`,"aria-hidden":"true"}),e[3]=s.count,e[4]=s.id,e[5]=o):o=e[5];let l;e[6]!==a?(l=a!==null&&t.jsx("span",{className:"jobs-filter-count",children:a}),e[6]=a,e[7]=l):l=e[7];let n;return e[8]!==j||e[9]!==s.label||e[10]!==b||e[11]!==o||e[12]!==l?(n=t.jsxs("button",{type:"button",className:"jobs-filter","aria-pressed":j,onClick:b,children:[o,s.label,l]}),e[8]=j,e[9]=s.label,e[10]=b,e[11]=o,e[12]=l,e[13]=n):n=e[13],n}function Ce(u){const e=M.c(15),{band:s,hidden:j,showAll:a,onToggleShowAll:m}=u,b=s.rows.some(Se),o=`jobs-band-header jobs-band-header-${s.id}${b?" jobs-band-has-failed":""}`;let l;e[0]!==s.label?(l=t.jsx("span",{className:"jobs-band-label",children:s.label}),e[0]=s.label,e[1]=l):l=e[1];let n;e[2]!==s.rows.length?(n=t.jsx("span",{className:"jobs-band-count",children:s.rows.length}),e[2]=s.rows.length,e[3]=n):n=e[3];let i;e[4]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx("span",{className:"jobs-band-rule","aria-hidden":"true"}),e[4]=i):i=e[4];let r;e[5]!==s.rows.length||e[6]!==j||e[7]!==m||e[8]!==a?(r=(j>0||a)&&s.rows.length>Z&&t.jsx("button",{type:"button",className:"jobs-band-more",onClick:m,children:a?`showing all ${s.rows.length} · Show fewer`:`showing ${s.rows.length-j} of ${s.rows.length} · Show all`}),e[5]=s.rows.length,e[6]=j,e[7]=m,e[8]=a,e[9]=r):r=e[9];let c;return e[10]!==o||e[11]!==l||e[12]!==n||e[13]!==r?(c=t.jsxs("div",{className:o,children:[l,n,i,r]}),e[10]=o,e[11]=l,e[12]=n,e[13]=r,e[14]=c):c=e[14],c}function Se(u){return u.tone==="failed"}function ke(u){const e=M.c(17),{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}=u,o=s.tone==="failed"&&s.errorDetail!==null;let l;e[0]!==j||e[1]!==m||e[2]!==s?(l=s.actions.map(c=>{const p=Ne[c];return t.jsxs("button",{type:"button",className:we.has(c)?"jobs-action jobs-action-primary":"jobs-action",disabled:j,onClick:()=>m(s,c),children:[p&&t.jsx(p,{size:12,"aria-hidden":"true"}),ge[c]]},c)}),e[0]=j,e[1]=m,e[2]=s,e[3]=l):l=e[3];let n;e[4]!==a||e[5]!==o||e[6]!==b||e[7]!==s.key?(n=o&&t.jsxs("button",{type:"button",className:"jobs-action","aria-expanded":a,onClick:()=>b(s.key),children:["Details",t.jsx(pe,{size:12,"aria-hidden":"true"})]}),e[4]=a,e[5]=o,e[6]=b,e[7]=s.key,e[8]=n):n=e[8];let i;e[9]!==o||e[10]!==s.actions.length||e[11]!==s.duration?(i=s.actions.length===0&&!o&&s.duration&&t.jsx("span",{className:"jobs-duration",children:s.duration}),e[9]=o,e[10]=s.actions.length,e[11]=s.duration,e[12]=i):i=e[12];let r;return e[13]!==l||e[14]!==n||e[15]!==i?(r=t.jsxs("div",{className:"jobs-cell jobs-cell-actions",children:[l,n,i]}),e[13]=l,e[14]=n,e[15]=i,e[16]=r):r=e[16],r}function Ae(u){const e=M.c(67),{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}=u,o=xe[s.tone],l=`jobs-row jobs-row-${s.tone}`,n=s.tone==="running"?"jobs-spin":void 0;let i;e[0]!==o||e[1]!==n?(i=t.jsx(o,{size:14,className:n,"aria-hidden":"true"}),e[0]=o,e[1]=n,e[2]=i):i=e[2];let r;e[3]!==s.statusLabel||e[4]!==i?(r=t.jsxs("div",{className:"jobs-cell jobs-cell-status",children:[i,s.statusLabel]}),e[3]=s.statusLabel,e[4]=i,e[5]=r):r=e[5];let c;e[6]!==s.title?(c=t.jsx("span",{children:s.title}),e[6]=s.title,e[7]=c):c=e[7];let p;e[8]!==s.detail?(p=s.detail&&t.jsx("code",{children:s.detail}),e[8]=s.detail,e[9]=p):p=e[9];let x;e[10]!==c||e[11]!==p?(x=t.jsxs("div",{className:"jobs-cell jobs-cell-job",children:[c,p]}),e[10]=c,e[11]=p,e[12]=x):x=e[12];const X=s.target.tag?"jobs-tag":"jobs-tag jobs-tag-book",I=s.target.tag??"BOOK";let D;e[13]!==X||e[14]!==I?(D=t.jsx("code",{className:X,children:I}),e[13]=X,e[14]=I,e[15]=D):D=e[15];let k;e[16]!==s.target.label?(k=s.target.label&&t.jsx("span",{children:s.target.label}),e[16]=s.target.label,e[17]=k):k=e[17];let _;e[18]!==D||e[19]!==k?(_=t.jsxs("div",{className:"jobs-cell jobs-cell-target",children:[D,k]}),e[18]=D,e[19]=k,e[20]=_):_=e[20];let N;e[21]!==s.errorCode?(N=s.errorCode&&t.jsx("code",{className:"jobs-error-code",children:s.errorCode}),e[21]=s.errorCode,e[22]=N):N=e[22];let g;e[23]!==s.note?(g=s.note&&t.jsxs("span",{className:"jobs-summary-note",children:[" · ",s.note]}),e[23]=s.note,e[24]=g):g=e[24];let w;e[25]!==s.summary||e[26]!==g?(w=t.jsxs("span",{className:"jobs-summary-text",children:[s.summary,g]}),e[25]=s.summary,e[26]=g,e[27]=w):w=e[27];let h;e[28]!==N||e[29]!==w?(h=t.jsxs("div",{className:"jobs-summary-line",children:[N,w]}),e[28]=N,e[29]=w,e[30]=h):h=e[30];let v;e[31]!==s.live?(v=s.live&&t.jsx("div",{className:"jobs-progress","aria-hidden":"true",children:t.jsx("span",{})}),e[31]=s.live,e[32]=v):v=e[32];let f;e[33]!==s.providerTask?(f=s.providerTask&&t.jsx(se,{task:s.providerTask}),e[33]=s.providerTask,e[34]=f):f=e[34];let y;e[35]!==h||e[36]!==v||e[37]!==f?(y=t.jsxs("div",{className:"jobs-cell jobs-cell-summary",children:[h,v,f]}),e[35]=h,e[36]=v,e[37]=f,e[38]=y):y=e[38];let A;e[39]!==s.attempt?(A=t.jsx("div",{className:"jobs-cell jobs-cell-attempt",children:s.attempt}),e[39]=s.attempt,e[40]=A):A=e[40];let C;e[41]!==s.timestamp?(C=new Date(s.timestamp).toISOString(),e[41]=s.timestamp,e[42]=C):C=e[42];let J;e[43]!==s.timestamp?(J=ee(s.timestamp),e[43]=s.timestamp,e[44]=J):J=e[44];let S;e[45]!==C||e[46]!==J?(S=t.jsx("div",{className:"jobs-cell jobs-cell-time",children:t.jsx("time",{dateTime:C,children:J})}),e[45]=C,e[46]=J,e[47]=S):S=e[47];let T;e[48]!==j||e[49]!==a||e[50]!==m||e[51]!==b||e[52]!==s?(T=t.jsx(ke,{row:s,busy:j,expanded:a,onAction:m,onToggleDetails:b}),e[48]=j,e[49]=a,e[50]=m,e[51]=b,e[52]=s,e[53]=T):T=e[53];let E;e[54]!==a||e[55]!==s.errorDetail?(E=a&&s.errorDetail&&t.jsxs("div",{className:"jobs-row-error",children:[t.jsx("span",{children:"Error"}),t.jsx("pre",{children:s.errorDetail})]}),e[54]=a,e[55]=s.errorDetail,e[56]=E):E=e[56];let $;return e[57]!==l||e[58]!==_||e[59]!==y||e[60]!==A||e[61]!==S||e[62]!==T||e[63]!==E||e[64]!==r||e[65]!==x?($=t.jsxs("article",{className:l,children:[r,x,_,y,A,S,T,E]}),e[57]=l,e[58]=_,e[59]=y,e[60]=A,e[61]=S,e[62]=T,e[63]=E,e[64]=r,e[65]=x,e[66]=$):$=e[66],$}function Te(u,e){const s=new Set(u);return s.has(e)?s.delete(e):s.add(e),s}function $e(u){const e=M.c(56),{bookName:s,jobs:j,plans:a,assets:m,cells:b,now:o,busy:l,onRefresh:n,onCancelJob:i,onRetryJob:r,onContinuePlan:c,onRevisePlan:p}=u,[x,X]=G.useState("all"),[I,D]=G.useState(!1),[k,_]=G.useState(Ie);let N;e[0]!==m||e[1]!==b||e[2]!==j||e[3]!==o||e[4]!==a?(N=te(le({jobs:j,plans:a,cells:b,assets:m,now:o})),e[0]=m,e[1]=b,e[2]=j,e[3]=o,e[4]=a,e[5]=N):N=e[5];const g=N;let w;e[6]!==g?(w=oe(g),e[6]=g,e[7]=w):w=e[7];const h=w;let v;e[8]!==g||e[9]!==x?(v=ne(g,x),e[8]=g,e[9]=x,e[10]=v):v=e[10];const f=v;let y;e[11]!==i||e[12]!==c||e[13]!==r||e[14]!==p?(y=(d,R)=>{if(d.source.kind==="job"){R==="cancel"&&i(d.source.jobId),R==="retry"&&r(d.source.jobId);return}R==="continue"&&c(d.source.planId),(R==="retry"||R==="switch"||R==="omit")&&p(d.source.planId,R)},e[11]=i,e[12]=c,e[13]=r,e[14]=p,e[15]=y):y=e[15];const A=y;let C;e[16]===Symbol.for("react.memo_cache_sentinel")?(C=d=>{_(R=>Te(R,d))},e[16]=C):C=e[16];const J=C;let S;e[17]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx("h1",{children:"Jobs"}),e[17]=S):S=e[17];const T=s??"No book selected",E=h.total,$=h.total===1?"job":"jobs";let O;e[18]!==o?(O=ee(o),e[18]=o,e[19]=O):O=e[19];let L;e[20]!==h.total||e[21]!==O||e[22]!==T||e[23]!==$?(L=t.jsxs("span",{className:"jobs-header-meta",children:[T," · ",E," ",$," · updated ",O]}),e[20]=h.total,e[21]=O,e[22]=T,e[23]=$,e[24]=L):L=e[24];let F;e[25]!==h||e[26]!==x?(F=ve.map(d=>t.jsx(ye,{filter:d,active:x===d.id,count:d.count?h[d.count]:null,onSelect:X},d.id)),e[25]=h,e[26]=x,e[27]=F):F=e[27];let B;e[28]!==F?(B=t.jsx("div",{className:"jobs-filters","aria-label":"Filter jobs",children:F}),e[28]=F,e[29]=B):B=e[29];let P;e[30]!==L||e[31]!==B?(P=t.jsxs("div",{className:"jobs-header-title",children:[S,L,B]}),e[30]=L,e[31]=B,e[32]=P):P=e[32];let U;e[33]===Symbol.for("react.memo_cache_sentinel")?(U=t.jsx(me,{size:15}),e[33]=U):U=e[33];let z;e[34]!==l||e[35]!==n?(z=t.jsxs("button",{type:"button",className:"jobs-refresh",disabled:l,onClick:n,children:[U,"Refresh"]}),e[34]=l,e[35]=n,e[36]=z):z=e[36];let q;e[37]!==P||e[38]!==z?(q=t.jsxs("header",{children:[P,z]}),e[37]=P,e[38]=z,e[39]=q):q=e[39];let K;e[40]!==h.total?(K=h.total===0&&t.jsxs("div",{className:"jobs-empty",children:[t.jsx(ae,{size:16,"aria-hidden":"true"}),t.jsx("strong",{children:"No jobs recorded"}),t.jsx("span",{children:"Run a cell or a notebook to queue work."})]}),e[40]=h.total,e[41]=K):K=e[41];let H;e[42]!==h.total||e[43]!==f.length?(H=h.total>0&&f.length===0&&t.jsx("div",{className:"jobs-empty",children:t.jsx("span",{children:"No jobs match this filter."})}),e[42]=h.total,e[43]=f.length,e[44]=H):H=e[44];let V;e[45]!==l||e[46]!==k||e[47]!==A||e[48]!==I||e[49]!==f?(V=f.length>0&&t.jsx("div",{className:"jobs-list-scroll",children:t.jsxs("div",{className:"jobs-list",children:[t.jsxs("div",{className:"jobs-columns","aria-hidden":"true",children:[t.jsx("span",{children:"Status"}),t.jsx("span",{children:"Job"}),t.jsx("span",{children:"Target"}),t.jsx("span",{children:"Progress / result"}),t.jsx("span",{className:"jobs-columns-attempt",children:"Try"}),t.jsx("span",{children:"Enqueued"}),t.jsx("span",{children:"Actions"})]}),f.map(d=>{const Q=d.id==="finished"&&!I?d.rows.slice(0,Z):d.rows;return t.jsxs("div",{className:"jobs-band",children:[t.jsx(Ce,{band:d,hidden:d.rows.length-Q.length,showAll:d.id==="finished"&&I,onToggleShowAll:()=>D(Re)}),Q.map(Y=>t.jsx(Ae,{row:Y,busy:l,expanded:k.has(Y.key),onAction:A,onToggleDetails:J},Y.key))]},d.id)})]})}),e[45]=l,e[46]=k,e[47]=A,e[48]=I,e[49]=f,e[50]=V):V=e[50];let W;return e[51]!==q||e[52]!==K||e[53]!==H||e[54]!==V?(W=t.jsxs("section",{className:"workspace-screen jobs-screen",children:[q,K,H,V]}),e[51]=q,e[52]=K,e[53]=H,e[54]=V,e[55]=W):W=e[55],W}function Re(u){return!u}function Ie(){return new Set}export{$e as J};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as d,b as Lt,j as t,c as _t}from"./vendor-react-Dj7D1fD4.js";import{ef as Ut,bx as Pt,b$ as $t,bw as ye}from"./videobook-0DOLlhG2.js";import{S as Ke,r as Ht,s as Ot,t as Kt,v as qt,w as Vt,x as Wt}from"./ui-jRPWsNUw.js";import{X as Gt,aq as Xt,c as qe,ar as Zt,as as Yt,D as Jt,f as Qt,k as Ve,m as We,W as ei,a as Ge,w as ti,F as ii}from"./vendor-icons-CGqhCIXV.js";import"./vendor-BFupLz37.js";import"./vendor-mcp-DQEeVZH0.js";import"./vendor-remotion-CH1HXrlc.js";import"./vendor-flow-CKiuzaeM.js";const ie=[{label:"0.5×",value:"1/2",numerator:1,denominator:2},{label:"0.75×",value:"3/4",numerator:3,denominator:4},{label:"1×",value:"1/1",numerator:1,denominator:1},{label:"1.5×",value:"3/2",numerator:3,denominator:2},{label:"2×",value:"2/1",numerator:2,denominator:1}],ai=[{value:"media",label:"Media"},{value:"music",label:"Music"},{value:"autocut",label:"Auto-cut"}],ni=20,si=60;function ri(s){return[...s.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])')].filter(l=>l.getClientRects().length>0&&!l.closest("[hidden], [inert]"))}function x(s){return s.timelineStartFrame+s.durationFrames}const ae=$t;function Xe(s){return Math.max(ni,Math.min(si,Math.round(s)))}function li(s,l){const c=[...s].reverse().find(h=>h.frame<l),r=s.find(h=>h.frame>l);return{previous:c?.frame??null,next:r?.frame??null}}function oi(s,l){return l?s.clips.filter(c=>c.trackId===l).sort((c,r)=>c.timelineStartFrame-r.timelineStartFrame||c.clipId.localeCompare(r.clipId)):[]}function ci(s){if(!s||s.source.kind!=="timed")return"1/1";const l=s;return`${l.speed.numerator}/${l.speed.denominator}`}function di(s,l){if(s.source.kind!=="timed")return s.durationFrames;const c=s,r=c.source.range.durationTicks*c.source.range.timeBase.numerator/c.source.range.timeBase.denominator;return Math.max(1,Math.ceil(r*l))}function ui(s){const[l,c]=s.split("/").map(Number);if(!l||!c)return s;const r=l/c;return Number.isInteger(r)?`${r}×`:`${parseFloat(r.toFixed(2))}×`}function mi(s,l){const c=s.findIndex(r=>r.clipId===l.clipId);return c>=0?s[c+1]:void 0}function Ze(s,l,c){const r=l.findIndex(o=>o.clipId===s.clipId),h=r>0?l[r-1]:void 0,f=r>=0?l[r+1]:void 0;return{left:s.timelineStartFrame-(h?x(h):0),right:(f?f.timelineStartFrame:c)-x(s)}}function pi(s,l,c){if(s.source.kind!=="timed")return{before:s.timelineStartFrame,after:Number.MAX_SAFE_INTEGER};const r=s,h=r.speed.numerator/r.speed.denominator,f=r.source.range.timeBase.numerator/r.source.range.timeBase.denominator,o=r.source.range.startTick*f,w=(r.source.range.startTick+r.source.range.durationTicks)*f,ne=l?.duration??w,U=Math.floor(o*c/h),P=Math.floor(Math.max(0,ne-w)*c/h);return r.reverse?{before:P,after:U}:{before:U,after:P}}function fi(s){return/\.(avif|bmp|gif|jpe?g|png|webp)(?:$|\?)/i.test(s)}function bi(s){const l=_t.c(5),{asset:c}=s,r=c.thumbnailUrl??(c.mediaUrl&&fi(c.mediaUrl)?c.mediaUrl:null);if(r){let f;return l[0]!==r?(f=t.jsx("img",{src:r,alt:""}),l[0]=r,l[1]=f):f=l[1],f}if(c.mediaUrl){let f;return l[2]!==c.mediaUrl?(f=t.jsx("video",{src:c.mediaUrl,muted:!0,playsInline:!0,preload:"metadata",onLoadedMetadata:vi}),l[2]=c.mediaUrl,l[3]=f):f=l[3],f}let h;return l[4]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsx(ii,{size:24}),l[4]=h):h=l[4],h}function vi(s){const l=s.currentTarget;l.duration>0&&(l.currentTime=Math.min(.12,l.duration*.15))}function hi(s,l){return s.status==="ready"||s.status==="applying"||s.status==="applied"?s.timelineLimitFrame:Math.max(1,...l.clips.map(x))}function wi({sequence:s,assets:l,audioArtifactId:c,setup:r,returnFocus:h,assembly:f,rhythm:o,address:w,initialFrame:ne=0,onFrameUpdate:U,onExport:P,onPlanDraft:Ye,onApplyDraft:Je,onApplySetup:Qe,onClose:se,onCommit:et,onCreateTrack:tt,onRefreshAssets:it,onRestore:Se,onReviewSetup:ke}){const $=d.useRef(null),at=d.useEffectEvent(se),[L,re]=d.useState(r.status!=="timeline"),[nt,Ie]=d.useState(34),[le,Ce]=d.useState({mode:"beats",fallback:"off"}),[st,we]=d.useState(!1),M=d.useRef(null),Ne=d.useRef(null),Me=d.useRef(null),[F,rt]=d.useState(ne),Fe=d.useCallback(e=>{rt(e),U(e)},[U]),[u,oe]=d.useState(null),[ce,lt]=d.useState(""),[C,q]=d.useState([]),ot=f.selectedClipId,N=f.selectClip,[Ee,E]=d.useState(null),[b,g]=d.useState(null),[Re,p]=d.useState(null),[de,V]=d.useState([]),[ue,W]=d.useState([]),[me,T]=d.useState(null),[G,H]=d.useState(()=>Ut(r.status)),O=l.find(e=>e.artifactId===(o.master?.source.artifactId??c)),S=[...s.tracks].sort((e,i)=>e.ordinal-i.ordinal).find(e=>e.kind==="video")??null,y=oi(s,S?.trackId??null),a=y.find(e=>e.clipId===ot)??null,X=d.useMemo(()=>new Map(l.map(e=>[e.artifactId,e])),[l]),Z=me?X.get(me):void 0,ct=d.useMemo(()=>l.flatMap(e=>e.mediaUrl?[{artifactId:e.artifactId,mediaUrl:e.mediaUrl}]:[]),[l]),pe=d.useMemo(()=>{const e=ce.trim().toLowerCase();return l.filter(i=>(i.type==="video"||i.type==="final")&&i.status==="ready"&&i.mediaUrl&&(!e||i.label.toLowerCase().includes(e)||i.artifactId.toLowerCase().includes(e)))},[l,ce]),v=o.master?o.master.timelineStartFrame+o.master.durationFrames:hi(r,s),j=s.frameRate.numerator/s.frameRate.denominator,fe=Math.max(0,...y.map(x)),Be=Math.max(0,fe-v),be=(r.status==="ready"||r.status==="applied"||r.status==="timeline")&&S!==null&&S.enabled&&!S.locked,_=a?Ee?.clipId===a.clipId?Ee:{clipId:a.clipId,startFrame:a.timelineStartFrame,endFrame:x(a)}:null,ve=a?X.get(a.source.artifactId):void 0,Te=a?pi(a,ve,j):{before:0,after:0},Y=a?y.findIndex(e=>e.clipId===a.clipId):-1,he=a?mi(y,a)?.timelineStartFrame??v:v,Ae=a?Ze(a,y,v):{left:0,right:0},dt=Y>0,ut=Y>=0&&Y<y.length-1,mt=dt||Ae.left>0,pt=ut||Ae.right>0,ft=!!(a&&he>x(a)),De=a?Math.max(0,a.timelineStartFrame-Te.before):0,ze=a?Math.min(v,x(a)+Te.after):v,J=ci(a),bt=ie.some(e=>e.value===J)?[...ie]:[{label:ui(J),value:J},...ie],Le=li(o.mapped,F),R=o.mapped.length>0,A=o.mapped.some(e=>e.bar),vt=o.analysis?.barSource==="estimated"&&!o.rhythm.settings.correction,K=o.status==="queued"||o.status==="analyzing",xe=le.mode==="bars"&&!A?le.fallback:le.mode,B=xe==="beats"&&!R||xe==="bars"&&!A?"off":xe,_e=[{value:"off",label:"Off"},{value:"beats",label:"Beats",disabled:!R,title:R?"Snap edits to beats":"Analyze beats or set a beat grid first"},{value:"bars",label:"Bars",disabled:!R,title:A?"Snap edits to bar starts":"Set up bar starts to enable bar snapping"}];function Q(e="beats"){N(null),re(!0),H("music"),e==="beats"&&we(!!o.master),Ce({mode:e,fallback:B}),e==="bars"&&requestAnimationFrame(()=>{const i=$.current?.querySelector('input[name="beats-per-bar"]');i?.focus(),i?.scrollIntoView({block:"nearest"})})}function Ue(e){if(e==="bars"&&!A){Q(e);return}Ce({mode:e,fallback:"off"})}d.useEffect(()=>{const e=$.current;e?.showModal(),e?.querySelector(".music-video-close")?.focus();const i=n=>{if(n.isComposing||n.keyCode===229||!(n.target instanceof Element)||n.target.closest("dialog")!==e)return;if(n.key==="Escape"){n.preventDefault(),at();return}if(n.key!=="Tab"||!e)return;const m=ri(e),I=m[0],D=m[m.length-1];n.shiftKey&&document.activeElement===I?(n.preventDefault(),D?.focus()):!n.shiftKey&&document.activeElement===D&&(n.preventDefault(),I?.focus())};return document.addEventListener("keydown",i),()=>{document.removeEventListener("keydown",i),e?.close(),Pt(h)}},[h]);const k=async(e,i)=>{if(b||u)return!1;if(!S)return p("Create a main video track before editing clips"),!1;if(r.status!=="ready"&&r.status!=="applied"&&r.status!=="timeline")return p("Wait for the soundtrack duration before editing clips"),!1;g(e),p(null);try{const n=await et(i,s);return V(m=>[...m,{beforeRevision:n.beforeRevision,afterRevision:n.sequence.revision}]),W([]),E(null),!0}catch(n){return p(n instanceof Error?n.message:String(n)),!1}finally{g(null)}},ee=e=>{const i=Math.max(0,Math.min(Math.max(v,...s.clips.map(x))-1,Math.round(e)));T(null),Fe(i),M.current?.seekTo(i)},ht=e=>{T(null),N(e.clipId),s.tracks.find(i=>i.trackId===e.trackId)?.kind==="audio"&&H("music"),E({clipId:e.clipId,startFrame:e.timelineStartFrame,endFrame:x(e)}),ee(e.timelineStartFrame)},xt=e=>{T(e),N(null),q(i=>i.includes(e)?i.filter(n=>n!==e):[...i,e])},gt=async()=>{!S||C.length===0||!await k("Adding clips",{kind:"append_clips",track_id:S.trackId,artifact_ids:C,timeline_limit_frame:o.master?v:Math.max(v,fe+C.reduce((i,n)=>i+Math.ceil((X.get(n)?.duration??0)*j),0)),fit:"source",visual_fit:"fit"})||(q([]),T(null))},jt=async e=>{S&&await k("Reordering clips",{kind:"reorder_clips",track_id:S.trackId,clip_ids:e,timeline_limit_frame:v})},yt=async e=>{if(!a||!S)return;const i=y.findIndex(z=>z.clipId===a.clipId),n=i+e;if(n>=0&&n<y.length){const z=y.map(zt=>zt.clipId),[Oe]=z.splice(i,1);if(!Oe)return;z.splice(n,0,Oe),await jt(z);return}const m=Ze(a,y,v),I=Math.max(1,Math.round(j)),D=e<0?-Math.min(I,m.left):Math.min(I,m.right);D!==0&&await k("Moving clip",{kind:"move",clip_id:a.clipId,track_id:S.trackId,timeline_start_frame:a.timelineStartFrame+D})},St=async()=>{if(!a||he<=x(a))return;const e=he-a.timelineStartFrame;if(a.source.kind!=="timed"){await k("Stretching clip",{kind:"trim",clip_id:a.clipId,timeline_start_frame:a.timelineStartFrame,duration_frames:e,edge:"end",ripple:!1,timeline_limit_frame:v});return}const i=a,n=di(a,j);await k("Stretching clip",{kind:"speed",clip_id:a.clipId,numerator:n,denominator:e,reverse:i.reverse,audio_policy:"mute",ripple:!1,timeline_limit_frame:v})},te=async(e,i,n)=>{if(!(!a||n<=i)&&!(i===a.timelineStartFrame&&n===x(a))){if(B!=="off"&&(e==="start"?i=ye(i,o.mapped,B):n=ye(n,o.mapped,B)),n<=i){p("Choose distinct beat boundaries or turn snapping off");return}await k("Trimming clip",{kind:"trim",clip_id:a.clipId,timeline_start_frame:i,duration_frames:n-i,edge:e,ripple:!1,timeline_limit_frame:v})}},ge=async()=>{if(!a||F<=a.timelineStartFrame||F>=x(a)){p("Place the playhead inside the selected clip before cutting");return}const e=ye(F,o.mapped,B);if(e<=a.timelineStartFrame||e>=x(a)){p("Choose a beat inside the selected clip, or turn snapping off");return}await k("Cutting clip",{kind:"split",clip_id:a.clipId,split_frame:e}),N(null)},Pe=async()=>{a&&(await k("Deleting clip",{kind:"delete",clip_id:a.clipId,ripple:!1}),N(null))},kt=async e=>{if(!a||a.source.kind!=="timed")return;const i=ie.find(z=>z.value===e),[n,m]=e.split("/").map(Number),I=i??(n&&m?{numerator:n,denominator:m}:null);if(!I)return;const D=a;await k("Retiming clip",{kind:"speed",clip_id:a.clipId,numerator:I.numerator,denominator:I.denominator,reverse:D.reverse,audio_policy:"mute",ripple:!1,timeline_limit_frame:v})},$e=async()=>{const e=de[de.length-1];if(!(!e||b)){g("Undoing edit"),p(null);try{await Se(e.beforeRevision,s.revision),V(i=>i.slice(0,-1)),W(i=>[...i,e]),N(null),E(null)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},He=async()=>{const e=ue[ue.length-1];if(!(!e||b)){g("Redoing edit"),p(null);try{await Se(e.afterRevision,s.revision),W(i=>i.slice(0,-1)),V(i=>[...i,e]),N(null),E(null)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},It=(e,i)=>{if(e==="split"&&ge(),e==="delete"&&Pe(),e==="undo"&&$e(),e==="redo"&&He(),e==="search"&&(re(!0),H("media"),requestAnimationFrame(()=>Ne.current?.focus())),e==="zoom-in"&&$.current?.querySelector('[aria-label="Zoom timeline in"]')?.click(),e==="zoom-out"&&$.current?.querySelector('[aria-label="Zoom timeline out"]')?.click(),e==="mark-in"&&a){const n=_?.endFrame??x(a);i<n&&(E({clipId:a.clipId,startFrame:i,endFrame:n}),te("start",i,n))}if(e==="mark-out"&&a){const n=_?.startFrame??a.timelineStartFrame;i>n&&(E({clipId:a.clipId,startFrame:n,endFrame:i}),te("end",n,i))}},Ct=async()=>{if(!(r.status!=="ready"||b)){g("Applying soundtrack"),p(null);try{await Qe()}catch(e){p(e instanceof Error?e.message:String(e))}finally{g(null)}}},wt=async e=>{if(!b){g("Creating soundtrack track"),p(null);try{const i=await tt(e);e==="audio"&&await ke(i)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},Nt=e=>{if(e.defaultPrevented||e.nativeEvent.isComposing||e.nativeEvent.keyCode===229||e.target.closest('input, textarea, select, [contenteditable="true"], .canonical-player'))return;if(M.current){M.current.handleKeyDown(e);return}const n=Me.current,m=e.key.toLowerCase();!n||m!==" "&&m!=="k"||(e.preventDefault(),n.paused?n.play().catch(()=>{}):n.pause())},Mt=async e=>{if(!b){g("Planning draft"),p(null),M.current?.pause();try{const i=await Ye(e,s);oe(i),T(null),ee(e.start_frame)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},Ft=async()=>{if(!(!u||b||u.uncovered.length)){g("Applying draft"),p(null),M.current?.pause();try{const e=await Je(u);V(i=>[...i,{beforeRevision:e.beforeRevision,afterRevision:e.sequence.revision}]),W([]),oe(null),N(null)}catch(e){p(e instanceof Error?e.message:String(e))}finally{g(null)}}},je=!be||!!b||!!u,Et=e=>{if(e.button!==0)return;const i=e.currentTarget;i.setPointerCapture(e.pointerId);const n=I=>{Ie(Xe((window.innerHeight-I.clientY)/window.innerHeight*100))},m=()=>{i.removeEventListener("pointermove",n),i.removeEventListener("pointerup",m),i.removeEventListener("pointercancel",m)};i.addEventListener("pointermove",n),i.addEventListener("pointerup",m),i.addEventListener("pointercancel",m)},Rt=e=>{const i=e.key==="ArrowUp"?2:e.key==="ArrowDown"?-2:0;i&&(e.preventDefault(),e.stopPropagation(),Ie(n=>Xe(n+i)))},Bt=()=>{M.current?.pause(),oe(null)},Tt=C.flatMap(e=>{const i=X.get(e);return i?[i]:[]}),At=A?vt?` · Estimated ${o.analysis?.beatsPerBar}-beat bars`:"":" · Bars not set",Dt=K?"Analyzing beats…":R?`${o.mapped.length} beats${o.analysis?.lowConfidence&&!o.rhythm.settings.correction?" · Review timing":""}${At}`:o.status==="no-beats"?"Analysis complete · No reliable beats found · Set a beat grid":o.master?"Analyze the soundtrack to enable snapping":"Choose a soundtrack for snapping";return Lt.createPortal(t.jsxs("dialog",{className:"music-video-editor timeline-preview-fullscreen","aria-label":w?`Timeline preview ${w}`:"Music video editor",style:{"--music-timeline-height":`${nt}dvh`},onCancel:e=>{e.preventDefault(),se()},ref:$,tabIndex:-1,onKeyDown:Nt,children:[t.jsxs("header",{className:"music-video-editor-header",children:[t.jsx("button",{className:"music-video-close mv-icon",type:"button",onClick:se,"aria-label":w?"Close timeline preview":"Close music video editor",children:t.jsx(Gt,{size:20})}),t.jsxs("div",{className:"music-video-title",children:[t.jsxs("h1",{children:[w?t.jsxs(t.Fragment,{children:["Timeline ",t.jsx("code",{children:w})]}):O?.label??"Music video",u&&t.jsx("span",{className:"mv-draft-badge",children:"Draft preview"})]}),t.jsxs("p",{children:[s.width,"×",s.height," · ",parseFloat(j.toFixed(2))," fps · ",ae(v,j)]})]}),t.jsxs("div",{className:"music-video-header-actions",children:[t.jsxs("button",{type:"button",className:"mv-quiet mv-tools-toggle","aria-pressed":L,"aria-label":L?"Hide tools":"Show tools",onClick:()=>re(e=>!e),children:[t.jsx(Xt,{size:16})," ",t.jsx("span",{children:L?"Hide tools":"Show tools"})]}),u?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mv-draft-note",children:"Nothing changes until you apply."}),t.jsx("button",{type:"button",disabled:!!b,onClick:Bt,children:"Discard draft"}),t.jsxs("button",{type:"button",className:"mv-apply",disabled:!!b||u.uncovered.length>0,onClick:()=>{Ft()},children:[t.jsx(qe,{size:16})," Apply draft"]})]}):t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",className:"mv-quiet",disabled:!!b||de.length===0,onClick:()=>{$e()},children:[t.jsx(Zt,{size:16})," Undo"]}),t.jsxs("button",{type:"button",className:"mv-quiet",disabled:!!b||ue.length===0,onClick:()=>{He()},children:[t.jsx(Yt,{size:16})," Redo"]}),t.jsxs("button",{type:"button",className:"mv-primary",onClick:P,children:[t.jsx(Jt,{size:16})," Export"]})]})]})]}),t.jsxs("main",{className:["music-video-editor-main",L?"":"tools-hidden",a||u?"inspecting":""].filter(Boolean).join(" "),children:[t.jsxs("aside",{className:"music-video-library","aria-label":"Library",hidden:!L,children:[t.jsx("div",{className:"music-video-library-tabs",role:"tablist","aria-label":"Library views",children:ai.map(e=>t.jsx("button",{type:"button",role:"tab",id:`mv-tab-${e.value}`,"aria-controls":`mv-panel-${e.value}`,"aria-selected":G===e.value,onClick:()=>H(e.value),children:e.label},e.value))}),t.jsxs("section",{className:"music-video-source-panel",role:"tabpanel",id:"mv-panel-media","aria-labelledby":"mv-tab-media",hidden:G!=="media",children:[t.jsxs("div",{className:"mv-panel-head",children:[t.jsxs("label",{className:"music-video-search",children:[t.jsx(Qt,{size:15}),t.jsx("input",{ref:Ne,value:ce,onChange:e=>lt(e.target.value),placeholder:"Search this book","aria-label":"Search source clips"})]}),t.jsx("button",{type:"button",className:"mv-icon","aria-label":"Refresh media",title:"Refresh media",onClick:()=>{it().catch(e=>p(String(e)))},children:t.jsx(Ve,{size:15})})]}),t.jsxs("div",{className:"mv-panel-meta",children:[t.jsxs("span",{children:[C.length," of ",pe.length," selected"]}),C.length>0&&t.jsx("button",{type:"button",className:"mv-link",onClick:()=>q([]),children:"Clear"})]}),t.jsxs("div",{className:"music-video-source-list",children:[pe.map(e=>{const i=C.indexOf(e.artifactId),n=me===e.artifactId;return t.jsxs("button",{type:"button",className:[i>=0?"selected":"",n?"previewing":""].filter(Boolean).join(" "),"aria-pressed":i>=0,"aria-label":e.label,onClick:()=>xt(e.artifactId),children:[t.jsxs("span",{className:"music-video-source-thumb",children:[t.jsx(bi,{asset:e}),i>=0&&t.jsx("i",{children:i+1}),e.duration!==null&&t.jsx("small",{children:ae(Math.round(e.duration*j),j)})]}),t.jsx("span",{className:"music-video-source-name",title:e.label,children:e.label})]},e.artifactId)}),pe.length===0&&t.jsx("p",{children:"No ready video sources match this search."})]}),t.jsxs("footer",{className:"mv-panel-foot",children:[t.jsxs("button",{type:"button",className:"mv-primary music-video-add-selected",disabled:je||C.length===0,onClick:()=>{gt()},children:[t.jsx(We,{size:15})," Add ",C.length||""," to end"]}),t.jsxs("button",{type:"button",disabled:C.length===0,onClick:()=>H("autocut"),children:[t.jsx(ei,{size:15})," Auto-cut…"]})]})]}),t.jsxs("section",{className:"mv-music-panel",role:"tabpanel",id:"mv-panel-music","aria-labelledby":"mv-tab-music",hidden:G!=="music",children:[t.jsxs("div",{className:"music-video-setup-card","data-status":r.status,children:[t.jsxs("span",{className:"mv-kicker",children:[t.jsx(Ge,{size:13})," Soundtrack",O?` · ${O.label}`:""]}),r.status==="loading"&&t.jsx("p",{children:"Building the exact canonical setup plan…"}),r.status==="needs-audio-track"&&t.jsxs(t.Fragment,{children:[t.jsx("p",{children:r.message}),t.jsxs("button",{type:"button",className:"mv-primary",disabled:!!b,onClick:()=>{wt("audio")},children:[t.jsx(We,{size:15})," Create soundtrack track"]})]}),(r.status==="ready"||r.status==="applying")&&t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:r.summary}),t.jsxs("p",{children:[r.operationCount," atomic operations · ends at ",ae(r.timelineLimitFrame,j)]}),r.warnings.map(e=>t.jsx("small",{children:e},e)),t.jsxs("button",{type:"button",className:"mv-primary",disabled:!!b,onClick:()=>{Ct()},children:[t.jsx(Ge,{size:15})," Apply soundtrack"]})]}),r.status==="applied"&&t.jsxs("strong",{className:"music-video-applied",children:[t.jsx(qe,{size:15})," Soundtrack applied"]}),r.status==="error"&&t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"music-video-error",children:r.message}),t.jsxs("button",{type:"button",disabled:!!b,onClick:()=>{ke()},children:[t.jsx(Ve,{size:15})," Review again"]})]})]}),t.jsxs("div",{className:"mv-control",children:[t.jsx("span",{children:"Snap edits to"}),t.jsx(Ke,{label:"Snap to music",options:_e,value:B,onChange:Ue}),t.jsx("p",{className:"mv-hint",children:"Hold Alt while dragging to ignore snapping."})]}),t.jsx(Ht,{rhythm:o,sequence:s,assets:l,frame:F,correctionsOpen:st,onCorrectionsOpenChange:we})]}),t.jsx("section",{className:"mv-autocut-panel",role:"tabpanel",id:"mv-panel-autocut","aria-labelledby":"mv-tab-autocut",hidden:G!=="autocut",children:t.jsx(Ot,{sources:Tt,trackId:S?.trackId??null,startFrame:o.master?.timelineStartFrame??0,endFrame:v,fps:j,hasBars:A,busy:!!b,draft:u,onPlan:e=>{Mt(e)},onOrder:q})})]}),t.jsxs("section",{className:"music-video-preview-panel timeline-preview-body","aria-label":"Program monitor",children:[t.jsx("div",{className:"mv-monitor",children:Z?.mediaUrl?t.jsxs("div",{className:"music-video-source-preview",children:[t.jsx("video",{ref:Me,src:Z.mediaUrl,controls:!0,autoPlay:!0,muted:!0,playsInline:!0},Z.artifactId),t.jsxs("p",{children:[t.jsxs("span",{children:["Source · ",Z.label]}),t.jsx("button",{type:"button",onClick:()=>T(null),children:"Show sequence"})]})]}):t.jsx(Kt,{ref:M,sequence:u?.sequence??s,assets:ct,onFrameUpdate:Fe,initialFrame:F,presentation:"preview",allowFullscreen:!1,editingEnabled:!u,onKeyboardAction:It})}),t.jsx(qt,{frame:F,durationFrames:Math.max(v,fe),fps:j,previousBeat:Le.previous,nextBeat:Le.next,onTogglePlay:()=>{T(null),M.current?.togglePlay()},onSeek:ee})]}),t.jsxs("aside",{className:"music-video-inspector","aria-label":"Inspector",hidden:!L,children:[a&&!u&&t.jsx("button",{type:"button",className:"mv-link mv-back",onClick:()=>N(null),children:"← Back to library"}),u?t.jsxs("div",{className:"mv-draft-summary",children:[t.jsx("span",{className:"mv-kicker",children:"Draft review"}),t.jsx("strong",{children:u.plan.summary}),t.jsxs("p",{children:[u.shots.length," shots · replaces ",u.preview.diff.removedClipIds.length," clips"]}),u.uncovered.length>0&&t.jsx("p",{className:"music-video-error",children:"Gaps remain, so the draft can't be applied. Allow repeated footage or add sources in Auto-cut."}),u.warnings.map(e=>t.jsx("small",{children:e},e)),t.jsx("p",{className:"mv-hint",children:"The full shot list is in Auto-cut."})]}):a&&_?t.jsx(Vt,{clip:a,label:ve?.label??"Clip",thumbnailUrl:ve?.thumbnailUrl??null,index:Y+1,count:y.length,fps:j,trimStart:_.startFrame,trimEnd:_.endFrame,trimMin:De,trimMax:Math.max(_.endFrame,ze),speed:J,speedOptions:bt,retimable:a.source.kind==="timed",busy:!!b,editsDisabled:je,canMoveEarlier:mt,canMoveLater:pt,canStretch:ft,onTrim:(e,i,n)=>{E({clipId:a.clipId,startFrame:i,endFrame:n}),te(e,i,n)},onSpeed:e=>{kt(e)},onFit:e=>{k("Fitting clip",{kind:"transform",clip_id:a.clipId,fit:e})},onSplit:()=>{ge()},onStretch:()=>{St()},onMove:e=>{yt(e)},onDelete:()=>{Pe()}}):t.jsxs("div",{className:"mv-sequence-summary",children:[t.jsx("span",{className:"mv-kicker",children:"Sequence"}),t.jsxs("dl",{children:[t.jsx("dt",{children:"Frame"}),t.jsxs("dd",{children:[s.width," × ",s.height]}),t.jsx("dt",{children:"Rate"}),t.jsxs("dd",{children:[parseFloat(j.toFixed(2))," fps"]}),t.jsx("dt",{children:"Length"}),t.jsx("dd",{children:ae(v,j)}),t.jsx("dt",{children:"Clips"}),t.jsx("dd",{children:y.length})]}),y.length>0?t.jsx("p",{children:"Select a clip on the timeline to trim, retime or delete it."}):t.jsxs("ol",{className:"mv-steps",children:[t.jsx("li",{children:"Pick footage in Media"}),t.jsx("li",{children:"Choose a soundtrack in Music"}),t.jsx("li",{children:"Auto-cut, or add clips and trim by hand"})]})]})]}),t.jsxs("section",{className:"music-video-timeline-panel","aria-label":"Music video timeline",children:[t.jsx("button",{type:"button",className:"mv-resize-handle","aria-label":"Resize timeline",title:"Drag to resize the timeline (↑/↓)",onPointerDown:Et,onKeyDown:Rt}),t.jsx(Wt,{sequence:u?.sequence??s,assets:l,assembly:f,disabled:!!b||!!u,frame:F,address:w??"",onSeek:ee,onSelectClip:ht,onExport:P,presentation:"preview",onMoveClip:be?(e,i)=>{k("Moving clip",{kind:"move",clip_id:e.clipId,track_id:e.trackId,timeline_start_frame:i})}:void 0,onRemoveClip:e=>{k("Removing clip",{kind:"remove_clip",clip_id:e.clipId,ripple:!1})},onTrimClip:be?(e,i,n,m)=>{e.clipId===a?.clipId&&(E({clipId:e.clipId,startFrame:n,endFrame:m}),te(i,n,m))}:void 0,trimBounds:a?{min:De,max:Math.max(x(a),ze)}:void 0,rhythm:{masterClipId:o.master?.clipId??null,markers:o.mapped,analysis:o.analysis,snap:B},toolbar:t.jsxs(t.Fragment,{children:[t.jsx("span",{children:"Snap"}),t.jsx(Ke,{label:"Snap to music",options:_e,value:B,onChange:Ue}),!o.master&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>Q(),children:"Choose soundtrack"}),o.master&&!R&&!K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>{o.analyze(!!o.analysis)},children:o.analysis?"Analyze again":"Analyze beats"}),K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>{o.cancel()},children:"Cancel analysis"}),o.master&&!R&&o.analysis&&!K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>Q(),children:"Set beat grid"}),R&&!A&&t.jsx("button",{type:"button",disabled:o.busy||K,onClick:()=>Q("bars"),children:"Set bars"}),t.jsxs("button",{type:"button",disabled:je||!a,title:"Split the selected clip at the playhead (S)",onClick:()=>{ge()},children:[t.jsx(ti,{size:14})," Split"]}),o.master&&t.jsxs("span",{className:"music-master-name",title:O?.label,children:["♪ ",O?.label??"Soundtrack"]}),t.jsx("span",{role:"status",children:Dt})]})}),Be>0&&t.jsxs("p",{children:[Be," frames beyond soundtrack"]})]})]}),t.jsxs("footer",{className:"music-video-status","aria-live":"polite",children:[t.jsx("span",{children:b??(u?"Draft ready · review it, then apply or discard":"Saved")}),(Re||o.error)&&t.jsx("strong",{role:"alert",children:Re||o.error}),t.jsx("span",{className:"mv-shortcuts",children:"Space play · J/L shuttle · ←/→ frame · I/O trim · S split · Delete · ⌘Z undo"})]})]}),document.body)}export{wi as MusicVideoEditor};
|
|
1
|
+
import{a as d,b as Lt,j as t,c as _t}from"./vendor-react-Dj7D1fD4.js";import{eg as Ut,by as Pt,c0 as $t,bx as ye}from"./videobook-CsW453sb.js";import{S as Ke,s as Ht,t as Ot,v as Kt,w as qt,x as Vt,y as Wt}from"./ui-z5r-p0K9.js";import{X as Gt,aq as Xt,c as qe,ar as Zt,as as Yt,D as Jt,f as Qt,k as Ve,m as We,W as ei,a as Ge,w as ti,F as ii}from"./vendor-icons-CGqhCIXV.js";import"./vendor-D8XcMav4.js";import"./vendor-mcp-D_C3EZPv.js";import"./vendor-remotion-CH1HXrlc.js";import"./vendor-flow-nqTFQmTh.js";const ie=[{label:"0.5×",value:"1/2",numerator:1,denominator:2},{label:"0.75×",value:"3/4",numerator:3,denominator:4},{label:"1×",value:"1/1",numerator:1,denominator:1},{label:"1.5×",value:"3/2",numerator:3,denominator:2},{label:"2×",value:"2/1",numerator:2,denominator:1}],ai=[{value:"media",label:"Media"},{value:"music",label:"Music"},{value:"autocut",label:"Auto-cut"}],ni=20,si=60;function ri(s){return[...s.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])')].filter(l=>l.getClientRects().length>0&&!l.closest("[hidden], [inert]"))}function x(s){return s.timelineStartFrame+s.durationFrames}const ae=$t;function Xe(s){return Math.max(ni,Math.min(si,Math.round(s)))}function li(s,l){const c=[...s].reverse().find(h=>h.frame<l),r=s.find(h=>h.frame>l);return{previous:c?.frame??null,next:r?.frame??null}}function oi(s,l){return l?s.clips.filter(c=>c.trackId===l).sort((c,r)=>c.timelineStartFrame-r.timelineStartFrame||c.clipId.localeCompare(r.clipId)):[]}function ci(s){if(!s||s.source.kind!=="timed")return"1/1";const l=s;return`${l.speed.numerator}/${l.speed.denominator}`}function di(s,l){if(s.source.kind!=="timed")return s.durationFrames;const c=s,r=c.source.range.durationTicks*c.source.range.timeBase.numerator/c.source.range.timeBase.denominator;return Math.max(1,Math.ceil(r*l))}function ui(s){const[l,c]=s.split("/").map(Number);if(!l||!c)return s;const r=l/c;return Number.isInteger(r)?`${r}×`:`${parseFloat(r.toFixed(2))}×`}function mi(s,l){const c=s.findIndex(r=>r.clipId===l.clipId);return c>=0?s[c+1]:void 0}function Ze(s,l,c){const r=l.findIndex(o=>o.clipId===s.clipId),h=r>0?l[r-1]:void 0,f=r>=0?l[r+1]:void 0;return{left:s.timelineStartFrame-(h?x(h):0),right:(f?f.timelineStartFrame:c)-x(s)}}function pi(s,l,c){if(s.source.kind!=="timed")return{before:s.timelineStartFrame,after:Number.MAX_SAFE_INTEGER};const r=s,h=r.speed.numerator/r.speed.denominator,f=r.source.range.timeBase.numerator/r.source.range.timeBase.denominator,o=r.source.range.startTick*f,w=(r.source.range.startTick+r.source.range.durationTicks)*f,ne=l?.duration??w,U=Math.floor(o*c/h),P=Math.floor(Math.max(0,ne-w)*c/h);return r.reverse?{before:P,after:U}:{before:U,after:P}}function fi(s){return/\.(avif|bmp|gif|jpe?g|png|webp)(?:$|\?)/i.test(s)}function bi(s){const l=_t.c(5),{asset:c}=s,r=c.thumbnailUrl??(c.mediaUrl&&fi(c.mediaUrl)?c.mediaUrl:null);if(r){let f;return l[0]!==r?(f=t.jsx("img",{src:r,alt:""}),l[0]=r,l[1]=f):f=l[1],f}if(c.mediaUrl){let f;return l[2]!==c.mediaUrl?(f=t.jsx("video",{src:c.mediaUrl,muted:!0,playsInline:!0,preload:"metadata",onLoadedMetadata:vi}),l[2]=c.mediaUrl,l[3]=f):f=l[3],f}let h;return l[4]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsx(ii,{size:24}),l[4]=h):h=l[4],h}function vi(s){const l=s.currentTarget;l.duration>0&&(l.currentTime=Math.min(.12,l.duration*.15))}function hi(s,l){return s.status==="ready"||s.status==="applying"||s.status==="applied"?s.timelineLimitFrame:Math.max(1,...l.clips.map(x))}function wi({sequence:s,assets:l,audioArtifactId:c,setup:r,returnFocus:h,assembly:f,rhythm:o,address:w,initialFrame:ne=0,onFrameUpdate:U,onExport:P,onPlanDraft:Ye,onApplyDraft:Je,onApplySetup:Qe,onClose:se,onCommit:et,onCreateTrack:tt,onRefreshAssets:it,onRestore:Se,onReviewSetup:ke}){const $=d.useRef(null),at=d.useEffectEvent(se),[L,re]=d.useState(r.status!=="timeline"),[nt,Ie]=d.useState(34),[le,Ce]=d.useState({mode:"beats",fallback:"off"}),[st,we]=d.useState(!1),M=d.useRef(null),Ne=d.useRef(null),Me=d.useRef(null),[F,rt]=d.useState(ne),Fe=d.useCallback(e=>{rt(e),U(e)},[U]),[u,oe]=d.useState(null),[ce,lt]=d.useState(""),[C,q]=d.useState([]),ot=f.selectedClipId,N=f.selectClip,[Ee,E]=d.useState(null),[b,g]=d.useState(null),[Re,p]=d.useState(null),[de,V]=d.useState([]),[ue,W]=d.useState([]),[me,T]=d.useState(null),[G,H]=d.useState(()=>Ut(r.status)),O=l.find(e=>e.artifactId===(o.master?.source.artifactId??c)),S=[...s.tracks].sort((e,i)=>e.ordinal-i.ordinal).find(e=>e.kind==="video")??null,y=oi(s,S?.trackId??null),a=y.find(e=>e.clipId===ot)??null,X=d.useMemo(()=>new Map(l.map(e=>[e.artifactId,e])),[l]),Z=me?X.get(me):void 0,ct=d.useMemo(()=>l.flatMap(e=>e.mediaUrl?[{artifactId:e.artifactId,mediaUrl:e.mediaUrl}]:[]),[l]),pe=d.useMemo(()=>{const e=ce.trim().toLowerCase();return l.filter(i=>(i.type==="video"||i.type==="final")&&i.status==="ready"&&i.mediaUrl&&(!e||i.label.toLowerCase().includes(e)||i.artifactId.toLowerCase().includes(e)))},[l,ce]),v=o.master?o.master.timelineStartFrame+o.master.durationFrames:hi(r,s),j=s.frameRate.numerator/s.frameRate.denominator,fe=Math.max(0,...y.map(x)),Be=Math.max(0,fe-v),be=(r.status==="ready"||r.status==="applied"||r.status==="timeline")&&S!==null&&S.enabled&&!S.locked,_=a?Ee?.clipId===a.clipId?Ee:{clipId:a.clipId,startFrame:a.timelineStartFrame,endFrame:x(a)}:null,ve=a?X.get(a.source.artifactId):void 0,Te=a?pi(a,ve,j):{before:0,after:0},Y=a?y.findIndex(e=>e.clipId===a.clipId):-1,he=a?mi(y,a)?.timelineStartFrame??v:v,Ae=a?Ze(a,y,v):{left:0,right:0},dt=Y>0,ut=Y>=0&&Y<y.length-1,mt=dt||Ae.left>0,pt=ut||Ae.right>0,ft=!!(a&&he>x(a)),De=a?Math.max(0,a.timelineStartFrame-Te.before):0,ze=a?Math.min(v,x(a)+Te.after):v,J=ci(a),bt=ie.some(e=>e.value===J)?[...ie]:[{label:ui(J),value:J},...ie],Le=li(o.mapped,F),R=o.mapped.length>0,A=o.mapped.some(e=>e.bar),vt=o.analysis?.barSource==="estimated"&&!o.rhythm.settings.correction,K=o.status==="queued"||o.status==="analyzing",xe=le.mode==="bars"&&!A?le.fallback:le.mode,B=xe==="beats"&&!R||xe==="bars"&&!A?"off":xe,_e=[{value:"off",label:"Off"},{value:"beats",label:"Beats",disabled:!R,title:R?"Snap edits to beats":"Analyze beats or set a beat grid first"},{value:"bars",label:"Bars",disabled:!R,title:A?"Snap edits to bar starts":"Set up bar starts to enable bar snapping"}];function Q(e="beats"){N(null),re(!0),H("music"),e==="beats"&&we(!!o.master),Ce({mode:e,fallback:B}),e==="bars"&&requestAnimationFrame(()=>{const i=$.current?.querySelector('input[name="beats-per-bar"]');i?.focus(),i?.scrollIntoView({block:"nearest"})})}function Ue(e){if(e==="bars"&&!A){Q(e);return}Ce({mode:e,fallback:"off"})}d.useEffect(()=>{const e=$.current;e?.showModal(),e?.querySelector(".music-video-close")?.focus();const i=n=>{if(n.isComposing||n.keyCode===229||!(n.target instanceof Element)||n.target.closest("dialog")!==e)return;if(n.key==="Escape"){n.preventDefault(),at();return}if(n.key!=="Tab"||!e)return;const m=ri(e),I=m[0],D=m[m.length-1];n.shiftKey&&document.activeElement===I?(n.preventDefault(),D?.focus()):!n.shiftKey&&document.activeElement===D&&(n.preventDefault(),I?.focus())};return document.addEventListener("keydown",i),()=>{document.removeEventListener("keydown",i),e?.close(),Pt(h)}},[h]);const k=async(e,i)=>{if(b||u)return!1;if(!S)return p("Create a main video track before editing clips"),!1;if(r.status!=="ready"&&r.status!=="applied"&&r.status!=="timeline")return p("Wait for the soundtrack duration before editing clips"),!1;g(e),p(null);try{const n=await et(i,s);return V(m=>[...m,{beforeRevision:n.beforeRevision,afterRevision:n.sequence.revision}]),W([]),E(null),!0}catch(n){return p(n instanceof Error?n.message:String(n)),!1}finally{g(null)}},ee=e=>{const i=Math.max(0,Math.min(Math.max(v,...s.clips.map(x))-1,Math.round(e)));T(null),Fe(i),M.current?.seekTo(i)},ht=e=>{T(null),N(e.clipId),s.tracks.find(i=>i.trackId===e.trackId)?.kind==="audio"&&H("music"),E({clipId:e.clipId,startFrame:e.timelineStartFrame,endFrame:x(e)}),ee(e.timelineStartFrame)},xt=e=>{T(e),N(null),q(i=>i.includes(e)?i.filter(n=>n!==e):[...i,e])},gt=async()=>{!S||C.length===0||!await k("Adding clips",{kind:"append_clips",track_id:S.trackId,artifact_ids:C,timeline_limit_frame:o.master?v:Math.max(v,fe+C.reduce((i,n)=>i+Math.ceil((X.get(n)?.duration??0)*j),0)),fit:"source",visual_fit:"fit"})||(q([]),T(null))},jt=async e=>{S&&await k("Reordering clips",{kind:"reorder_clips",track_id:S.trackId,clip_ids:e,timeline_limit_frame:v})},yt=async e=>{if(!a||!S)return;const i=y.findIndex(z=>z.clipId===a.clipId),n=i+e;if(n>=0&&n<y.length){const z=y.map(zt=>zt.clipId),[Oe]=z.splice(i,1);if(!Oe)return;z.splice(n,0,Oe),await jt(z);return}const m=Ze(a,y,v),I=Math.max(1,Math.round(j)),D=e<0?-Math.min(I,m.left):Math.min(I,m.right);D!==0&&await k("Moving clip",{kind:"move",clip_id:a.clipId,track_id:S.trackId,timeline_start_frame:a.timelineStartFrame+D})},St=async()=>{if(!a||he<=x(a))return;const e=he-a.timelineStartFrame;if(a.source.kind!=="timed"){await k("Stretching clip",{kind:"trim",clip_id:a.clipId,timeline_start_frame:a.timelineStartFrame,duration_frames:e,edge:"end",ripple:!1,timeline_limit_frame:v});return}const i=a,n=di(a,j);await k("Stretching clip",{kind:"speed",clip_id:a.clipId,numerator:n,denominator:e,reverse:i.reverse,audio_policy:"mute",ripple:!1,timeline_limit_frame:v})},te=async(e,i,n)=>{if(!(!a||n<=i)&&!(i===a.timelineStartFrame&&n===x(a))){if(B!=="off"&&(e==="start"?i=ye(i,o.mapped,B):n=ye(n,o.mapped,B)),n<=i){p("Choose distinct beat boundaries or turn snapping off");return}await k("Trimming clip",{kind:"trim",clip_id:a.clipId,timeline_start_frame:i,duration_frames:n-i,edge:e,ripple:!1,timeline_limit_frame:v})}},ge=async()=>{if(!a||F<=a.timelineStartFrame||F>=x(a)){p("Place the playhead inside the selected clip before cutting");return}const e=ye(F,o.mapped,B);if(e<=a.timelineStartFrame||e>=x(a)){p("Choose a beat inside the selected clip, or turn snapping off");return}await k("Cutting clip",{kind:"split",clip_id:a.clipId,split_frame:e}),N(null)},Pe=async()=>{a&&(await k("Deleting clip",{kind:"delete",clip_id:a.clipId,ripple:!1}),N(null))},kt=async e=>{if(!a||a.source.kind!=="timed")return;const i=ie.find(z=>z.value===e),[n,m]=e.split("/").map(Number),I=i??(n&&m?{numerator:n,denominator:m}:null);if(!I)return;const D=a;await k("Retiming clip",{kind:"speed",clip_id:a.clipId,numerator:I.numerator,denominator:I.denominator,reverse:D.reverse,audio_policy:"mute",ripple:!1,timeline_limit_frame:v})},$e=async()=>{const e=de[de.length-1];if(!(!e||b)){g("Undoing edit"),p(null);try{await Se(e.beforeRevision,s.revision),V(i=>i.slice(0,-1)),W(i=>[...i,e]),N(null),E(null)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},He=async()=>{const e=ue[ue.length-1];if(!(!e||b)){g("Redoing edit"),p(null);try{await Se(e.afterRevision,s.revision),W(i=>i.slice(0,-1)),V(i=>[...i,e]),N(null),E(null)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},It=(e,i)=>{if(e==="split"&&ge(),e==="delete"&&Pe(),e==="undo"&&$e(),e==="redo"&&He(),e==="search"&&(re(!0),H("media"),requestAnimationFrame(()=>Ne.current?.focus())),e==="zoom-in"&&$.current?.querySelector('[aria-label="Zoom timeline in"]')?.click(),e==="zoom-out"&&$.current?.querySelector('[aria-label="Zoom timeline out"]')?.click(),e==="mark-in"&&a){const n=_?.endFrame??x(a);i<n&&(E({clipId:a.clipId,startFrame:i,endFrame:n}),te("start",i,n))}if(e==="mark-out"&&a){const n=_?.startFrame??a.timelineStartFrame;i>n&&(E({clipId:a.clipId,startFrame:n,endFrame:i}),te("end",n,i))}},Ct=async()=>{if(!(r.status!=="ready"||b)){g("Applying soundtrack"),p(null);try{await Qe()}catch(e){p(e instanceof Error?e.message:String(e))}finally{g(null)}}},wt=async e=>{if(!b){g("Creating soundtrack track"),p(null);try{const i=await tt(e);e==="audio"&&await ke(i)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},Nt=e=>{if(e.defaultPrevented||e.nativeEvent.isComposing||e.nativeEvent.keyCode===229||e.target.closest('input, textarea, select, [contenteditable="true"], .canonical-player'))return;if(M.current){M.current.handleKeyDown(e);return}const n=Me.current,m=e.key.toLowerCase();!n||m!==" "&&m!=="k"||(e.preventDefault(),n.paused?n.play().catch(()=>{}):n.pause())},Mt=async e=>{if(!b){g("Planning draft"),p(null),M.current?.pause();try{const i=await Ye(e,s);oe(i),T(null),ee(e.start_frame)}catch(i){p(i instanceof Error?i.message:String(i))}finally{g(null)}}},Ft=async()=>{if(!(!u||b||u.uncovered.length)){g("Applying draft"),p(null),M.current?.pause();try{const e=await Je(u);V(i=>[...i,{beforeRevision:e.beforeRevision,afterRevision:e.sequence.revision}]),W([]),oe(null),N(null)}catch(e){p(e instanceof Error?e.message:String(e))}finally{g(null)}}},je=!be||!!b||!!u,Et=e=>{if(e.button!==0)return;const i=e.currentTarget;i.setPointerCapture(e.pointerId);const n=I=>{Ie(Xe((window.innerHeight-I.clientY)/window.innerHeight*100))},m=()=>{i.removeEventListener("pointermove",n),i.removeEventListener("pointerup",m),i.removeEventListener("pointercancel",m)};i.addEventListener("pointermove",n),i.addEventListener("pointerup",m),i.addEventListener("pointercancel",m)},Rt=e=>{const i=e.key==="ArrowUp"?2:e.key==="ArrowDown"?-2:0;i&&(e.preventDefault(),e.stopPropagation(),Ie(n=>Xe(n+i)))},Bt=()=>{M.current?.pause(),oe(null)},Tt=C.flatMap(e=>{const i=X.get(e);return i?[i]:[]}),At=A?vt?` · Estimated ${o.analysis?.beatsPerBar}-beat bars`:"":" · Bars not set",Dt=K?"Analyzing beats…":R?`${o.mapped.length} beats${o.analysis?.lowConfidence&&!o.rhythm.settings.correction?" · Review timing":""}${At}`:o.status==="no-beats"?"Analysis complete · No reliable beats found · Set a beat grid":o.master?"Analyze the soundtrack to enable snapping":"Choose a soundtrack for snapping";return Lt.createPortal(t.jsxs("dialog",{className:"music-video-editor timeline-preview-fullscreen","aria-label":w?`Timeline preview ${w}`:"Music video editor",style:{"--music-timeline-height":`${nt}dvh`},onCancel:e=>{e.preventDefault(),se()},ref:$,tabIndex:-1,onKeyDown:Nt,children:[t.jsxs("header",{className:"music-video-editor-header",children:[t.jsx("button",{className:"music-video-close mv-icon",type:"button",onClick:se,"aria-label":w?"Close timeline preview":"Close music video editor",children:t.jsx(Gt,{size:20})}),t.jsxs("div",{className:"music-video-title",children:[t.jsxs("h1",{children:[w?t.jsxs(t.Fragment,{children:["Timeline ",t.jsx("code",{children:w})]}):O?.label??"Music video",u&&t.jsx("span",{className:"mv-draft-badge",children:"Draft preview"})]}),t.jsxs("p",{children:[s.width,"×",s.height," · ",parseFloat(j.toFixed(2))," fps · ",ae(v,j)]})]}),t.jsxs("div",{className:"music-video-header-actions",children:[t.jsxs("button",{type:"button",className:"mv-quiet mv-tools-toggle","aria-pressed":L,"aria-label":L?"Hide tools":"Show tools",onClick:()=>re(e=>!e),children:[t.jsx(Xt,{size:16})," ",t.jsx("span",{children:L?"Hide tools":"Show tools"})]}),u?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mv-draft-note",children:"Nothing changes until you apply."}),t.jsx("button",{type:"button",disabled:!!b,onClick:Bt,children:"Discard draft"}),t.jsxs("button",{type:"button",className:"mv-apply",disabled:!!b||u.uncovered.length>0,onClick:()=>{Ft()},children:[t.jsx(qe,{size:16})," Apply draft"]})]}):t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",className:"mv-quiet",disabled:!!b||de.length===0,onClick:()=>{$e()},children:[t.jsx(Zt,{size:16})," Undo"]}),t.jsxs("button",{type:"button",className:"mv-quiet",disabled:!!b||ue.length===0,onClick:()=>{He()},children:[t.jsx(Yt,{size:16})," Redo"]}),t.jsxs("button",{type:"button",className:"mv-primary",onClick:P,children:[t.jsx(Jt,{size:16})," Export"]})]})]})]}),t.jsxs("main",{className:["music-video-editor-main",L?"":"tools-hidden",a||u?"inspecting":""].filter(Boolean).join(" "),children:[t.jsxs("aside",{className:"music-video-library","aria-label":"Library",hidden:!L,children:[t.jsx("div",{className:"music-video-library-tabs",role:"tablist","aria-label":"Library views",children:ai.map(e=>t.jsx("button",{type:"button",role:"tab",id:`mv-tab-${e.value}`,"aria-controls":`mv-panel-${e.value}`,"aria-selected":G===e.value,onClick:()=>H(e.value),children:e.label},e.value))}),t.jsxs("section",{className:"music-video-source-panel",role:"tabpanel",id:"mv-panel-media","aria-labelledby":"mv-tab-media",hidden:G!=="media",children:[t.jsxs("div",{className:"mv-panel-head",children:[t.jsxs("label",{className:"music-video-search",children:[t.jsx(Qt,{size:15}),t.jsx("input",{ref:Ne,value:ce,onChange:e=>lt(e.target.value),placeholder:"Search this book","aria-label":"Search source clips"})]}),t.jsx("button",{type:"button",className:"mv-icon","aria-label":"Refresh media",title:"Refresh media",onClick:()=>{it().catch(e=>p(String(e)))},children:t.jsx(Ve,{size:15})})]}),t.jsxs("div",{className:"mv-panel-meta",children:[t.jsxs("span",{children:[C.length," of ",pe.length," selected"]}),C.length>0&&t.jsx("button",{type:"button",className:"mv-link",onClick:()=>q([]),children:"Clear"})]}),t.jsxs("div",{className:"music-video-source-list",children:[pe.map(e=>{const i=C.indexOf(e.artifactId),n=me===e.artifactId;return t.jsxs("button",{type:"button",className:[i>=0?"selected":"",n?"previewing":""].filter(Boolean).join(" "),"aria-pressed":i>=0,"aria-label":e.label,onClick:()=>xt(e.artifactId),children:[t.jsxs("span",{className:"music-video-source-thumb",children:[t.jsx(bi,{asset:e}),i>=0&&t.jsx("i",{children:i+1}),e.duration!==null&&t.jsx("small",{children:ae(Math.round(e.duration*j),j)})]}),t.jsx("span",{className:"music-video-source-name",title:e.label,children:e.label})]},e.artifactId)}),pe.length===0&&t.jsx("p",{children:"No ready video sources match this search."})]}),t.jsxs("footer",{className:"mv-panel-foot",children:[t.jsxs("button",{type:"button",className:"mv-primary music-video-add-selected",disabled:je||C.length===0,onClick:()=>{gt()},children:[t.jsx(We,{size:15})," Add ",C.length||""," to end"]}),t.jsxs("button",{type:"button",disabled:C.length===0,onClick:()=>H("autocut"),children:[t.jsx(ei,{size:15})," Auto-cut…"]})]})]}),t.jsxs("section",{className:"mv-music-panel",role:"tabpanel",id:"mv-panel-music","aria-labelledby":"mv-tab-music",hidden:G!=="music",children:[t.jsxs("div",{className:"music-video-setup-card","data-status":r.status,children:[t.jsxs("span",{className:"mv-kicker",children:[t.jsx(Ge,{size:13})," Soundtrack",O?` · ${O.label}`:""]}),r.status==="loading"&&t.jsx("p",{children:"Building the exact canonical setup plan…"}),r.status==="needs-audio-track"&&t.jsxs(t.Fragment,{children:[t.jsx("p",{children:r.message}),t.jsxs("button",{type:"button",className:"mv-primary",disabled:!!b,onClick:()=>{wt("audio")},children:[t.jsx(We,{size:15})," Create soundtrack track"]})]}),(r.status==="ready"||r.status==="applying")&&t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:r.summary}),t.jsxs("p",{children:[r.operationCount," atomic operations · ends at ",ae(r.timelineLimitFrame,j)]}),r.warnings.map(e=>t.jsx("small",{children:e},e)),t.jsxs("button",{type:"button",className:"mv-primary",disabled:!!b,onClick:()=>{Ct()},children:[t.jsx(Ge,{size:15})," Apply soundtrack"]})]}),r.status==="applied"&&t.jsxs("strong",{className:"music-video-applied",children:[t.jsx(qe,{size:15})," Soundtrack applied"]}),r.status==="error"&&t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"music-video-error",children:r.message}),t.jsxs("button",{type:"button",disabled:!!b,onClick:()=>{ke()},children:[t.jsx(Ve,{size:15})," Review again"]})]})]}),t.jsxs("div",{className:"mv-control",children:[t.jsx("span",{children:"Snap edits to"}),t.jsx(Ke,{label:"Snap to music",options:_e,value:B,onChange:Ue}),t.jsx("p",{className:"mv-hint",children:"Hold Alt while dragging to ignore snapping."})]}),t.jsx(Ht,{rhythm:o,sequence:s,assets:l,frame:F,correctionsOpen:st,onCorrectionsOpenChange:we})]}),t.jsx("section",{className:"mv-autocut-panel",role:"tabpanel",id:"mv-panel-autocut","aria-labelledby":"mv-tab-autocut",hidden:G!=="autocut",children:t.jsx(Ot,{sources:Tt,trackId:S?.trackId??null,startFrame:o.master?.timelineStartFrame??0,endFrame:v,fps:j,hasBars:A,busy:!!b,draft:u,onPlan:e=>{Mt(e)},onOrder:q})})]}),t.jsxs("section",{className:"music-video-preview-panel timeline-preview-body","aria-label":"Program monitor",children:[t.jsx("div",{className:"mv-monitor",children:Z?.mediaUrl?t.jsxs("div",{className:"music-video-source-preview",children:[t.jsx("video",{ref:Me,src:Z.mediaUrl,controls:!0,autoPlay:!0,muted:!0,playsInline:!0},Z.artifactId),t.jsxs("p",{children:[t.jsxs("span",{children:["Source · ",Z.label]}),t.jsx("button",{type:"button",onClick:()=>T(null),children:"Show sequence"})]})]}):t.jsx(Kt,{ref:M,sequence:u?.sequence??s,assets:ct,onFrameUpdate:Fe,initialFrame:F,presentation:"preview",allowFullscreen:!1,editingEnabled:!u,onKeyboardAction:It})}),t.jsx(qt,{frame:F,durationFrames:Math.max(v,fe),fps:j,previousBeat:Le.previous,nextBeat:Le.next,onTogglePlay:()=>{T(null),M.current?.togglePlay()},onSeek:ee})]}),t.jsxs("aside",{className:"music-video-inspector","aria-label":"Inspector",hidden:!L,children:[a&&!u&&t.jsx("button",{type:"button",className:"mv-link mv-back",onClick:()=>N(null),children:"← Back to library"}),u?t.jsxs("div",{className:"mv-draft-summary",children:[t.jsx("span",{className:"mv-kicker",children:"Draft review"}),t.jsx("strong",{children:u.plan.summary}),t.jsxs("p",{children:[u.shots.length," shots · replaces ",u.preview.diff.removedClipIds.length," clips"]}),u.uncovered.length>0&&t.jsx("p",{className:"music-video-error",children:"Gaps remain, so the draft can't be applied. Allow repeated footage or add sources in Auto-cut."}),u.warnings.map(e=>t.jsx("small",{children:e},e)),t.jsx("p",{className:"mv-hint",children:"The full shot list is in Auto-cut."})]}):a&&_?t.jsx(Vt,{clip:a,label:ve?.label??"Clip",thumbnailUrl:ve?.thumbnailUrl??null,index:Y+1,count:y.length,fps:j,trimStart:_.startFrame,trimEnd:_.endFrame,trimMin:De,trimMax:Math.max(_.endFrame,ze),speed:J,speedOptions:bt,retimable:a.source.kind==="timed",busy:!!b,editsDisabled:je,canMoveEarlier:mt,canMoveLater:pt,canStretch:ft,onTrim:(e,i,n)=>{E({clipId:a.clipId,startFrame:i,endFrame:n}),te(e,i,n)},onSpeed:e=>{kt(e)},onFit:e=>{k("Fitting clip",{kind:"transform",clip_id:a.clipId,fit:e})},onSplit:()=>{ge()},onStretch:()=>{St()},onMove:e=>{yt(e)},onDelete:()=>{Pe()}}):t.jsxs("div",{className:"mv-sequence-summary",children:[t.jsx("span",{className:"mv-kicker",children:"Sequence"}),t.jsxs("dl",{children:[t.jsx("dt",{children:"Frame"}),t.jsxs("dd",{children:[s.width," × ",s.height]}),t.jsx("dt",{children:"Rate"}),t.jsxs("dd",{children:[parseFloat(j.toFixed(2))," fps"]}),t.jsx("dt",{children:"Length"}),t.jsx("dd",{children:ae(v,j)}),t.jsx("dt",{children:"Clips"}),t.jsx("dd",{children:y.length})]}),y.length>0?t.jsx("p",{children:"Select a clip on the timeline to trim, retime or delete it."}):t.jsxs("ol",{className:"mv-steps",children:[t.jsx("li",{children:"Pick footage in Media"}),t.jsx("li",{children:"Choose a soundtrack in Music"}),t.jsx("li",{children:"Auto-cut, or add clips and trim by hand"})]})]})]}),t.jsxs("section",{className:"music-video-timeline-panel","aria-label":"Music video timeline",children:[t.jsx("button",{type:"button",className:"mv-resize-handle","aria-label":"Resize timeline",title:"Drag to resize the timeline (↑/↓)",onPointerDown:Et,onKeyDown:Rt}),t.jsx(Wt,{sequence:u?.sequence??s,assets:l,assembly:f,disabled:!!b||!!u,frame:F,address:w??"",onSeek:ee,onSelectClip:ht,onExport:P,presentation:"preview",onMoveClip:be?(e,i)=>{k("Moving clip",{kind:"move",clip_id:e.clipId,track_id:e.trackId,timeline_start_frame:i})}:void 0,onRemoveClip:e=>{k("Removing clip",{kind:"remove_clip",clip_id:e.clipId,ripple:!1})},onTrimClip:be?(e,i,n,m)=>{e.clipId===a?.clipId&&(E({clipId:e.clipId,startFrame:n,endFrame:m}),te(i,n,m))}:void 0,trimBounds:a?{min:De,max:Math.max(x(a),ze)}:void 0,rhythm:{masterClipId:o.master?.clipId??null,markers:o.mapped,analysis:o.analysis,snap:B},toolbar:t.jsxs(t.Fragment,{children:[t.jsx("span",{children:"Snap"}),t.jsx(Ke,{label:"Snap to music",options:_e,value:B,onChange:Ue}),!o.master&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>Q(),children:"Choose soundtrack"}),o.master&&!R&&!K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>{o.analyze(!!o.analysis)},children:o.analysis?"Analyze again":"Analyze beats"}),K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>{o.cancel()},children:"Cancel analysis"}),o.master&&!R&&o.analysis&&!K&&t.jsx("button",{type:"button",disabled:o.busy,onClick:()=>Q(),children:"Set beat grid"}),R&&!A&&t.jsx("button",{type:"button",disabled:o.busy||K,onClick:()=>Q("bars"),children:"Set bars"}),t.jsxs("button",{type:"button",disabled:je||!a,title:"Split the selected clip at the playhead (S)",onClick:()=>{ge()},children:[t.jsx(ti,{size:14})," Split"]}),o.master&&t.jsxs("span",{className:"music-master-name",title:O?.label,children:["♪ ",O?.label??"Soundtrack"]}),t.jsx("span",{role:"status",children:Dt})]})}),Be>0&&t.jsxs("p",{children:[Be," frames beyond soundtrack"]})]})]}),t.jsxs("footer",{className:"music-video-status","aria-live":"polite",children:[t.jsx("span",{children:b??(u?"Draft ready · review it, then apply or discard":"Saved")}),(Re||o.error)&&t.jsx("strong",{role:"alert",children:Re||o.error}),t.jsx("span",{className:"mv-shortcuts",children:"Space play · J/L shuttle · ←/→ frame · I/O trim · S split · Delete · ⌘Z undo"})]})]}),document.body)}export{wi as MusicVideoEditor};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.post-inspector{padding:24px;display:grid;gap:22px;max-width:900px;margin:auto;width:100%;box-sizing:border-box;overflow:auto;color:var(--text-primary,#d9e4ed)}.post-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.post-heading h2{margin:4px 0;font-size:22px}.post-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.13em;color:#8dabbf}.post-status{text-transform:capitalize;border:1px solid #3e596b;padding:5px 10px;border-radius:99px;font-size:12px}.post-status-posted,.post-status-ready{color:#9ae2bd;border-color:#46765c}.post-status-failed,.post-status-needs_reconciliation,.post-error{color:#f5aa99}.post-media{width:100%;max-height:320px;object-fit:contain;background:#080d13;border-radius:8px}.post-source,.post-receipt{display:grid;gap:6px;padding:14px;border:1px solid #2d4352;border-radius:8px}.post-source button,.post-lineage button{justify-self:start}.post-inspector form{display:grid;gap:12px}.post-inspector label{display:grid;gap:6px;font-size:12px;color:#a6bccb}.post-inspector input,.post-inspector select,.post-inspector textarea{box-sizing:border-box;width:100%;border:1px solid #344d60;border-radius:5px;background:#111d29;color:#e0eaf1;padding:9px;font:inherit}.post-inspector textarea{resize:vertical}.post-inspector :disabled{opacity:.55}.post-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.post-inspector button{border:1px solid #405d70;background:#192d3d;color:#d8eaf6;padding:8px 12px;border-radius:5px;cursor:pointer;font:inherit;font-size:12px}.post-inspector form>button{justify-self:start}.post-inspector p{font-size:13px;line-height:1.5;margin:4px 0}.post-inspector small{display:block;color:#93aabc;font-size:11px;line-height:1.5}.post-inspector h3{font-size:15px;margin:0 0 10px}.post-delivery,.post-results{display:grid;gap:12px;padding-top:18px;border-top:1px solid #2c4252}.post-delivery button{justify-self:start}.post-receipt span{overflow-wrap:anywhere}.post-inspector a{color:#8bc7ef;text-decoration:none}.post-metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.post-metric-grid>div{background:#142332;border:1px solid #294154;padding:12px;border-radius:6px}.post-metric-grid strong{font-size:23px;display:block;font-weight:500}.post-metric-grid span{font-size:11px;color:#a3b9c9;text-transform:capitalize}.post-metric-inputs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.post-inspector summary{cursor:pointer;font-size:13px;margin:8px 0}.post-history p,.post-lineage>div{padding:10px 0;border-bottom:1px solid #233c4f}.post-history span{display:block}.post-lineage p{white-space:pre-wrap;max-height:160px;overflow:auto}.post-delete{justify-self:start;color:#f2aca0!important}.post-badge{display:inline-flex;align-items:center;margin-left:6px;min-height:18px;padding:0 7px;border:1px solid #46765c;border-radius:99px;color:#9ae2bd;font-size:10px;letter-spacing:.04em;text-transform:none}@media(max-width:700px){.post-inspector{padding:16px}.post-fields{grid-template-columns:1fr}}.post-tile{display:flex;flex:1;min-height:0;flex-direction:column}.post-tile-media{position:relative;flex:1;min-height:0;overflow:hidden;background:#010503}.post-tile-media img,.post-tile-media video{display:block;width:100%;height:100%;object-fit:cover}.post-tile-overlay{position:absolute;display:flex;gap:4px;align-items:center;padding:1px 5px;border-radius:3px;background:#010503c7;color:#d5f8e4;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:var(--cell-label-font-size);font-variant-numeric:tabular-nums;line-height:1.4}.post-tile-overlay-top{top:6px;left:8px;padding:0;background:none}.post-tile-overlay-start{bottom:6px;left:8px}.post-tile-overlay-end{right:8px;bottom:6px}.post-tile-overlay .post-badge{gap:3px;margin:0;background:#010503c7}.post-tile-body{display:grid;gap:3px;padding:8px 12px 6px;min-width:0}.post-tile-caption{overflow:hidden;color:#d5f8e4;font-size:calc(12px * var(--notebook-detail-scale, 1));line-height:1.6;text-overflow:ellipsis;white-space:nowrap}.post-tile-caption-empty{color:var(--muted);font-style:italic}.post-tile-stats{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:#8fb7a1;font-size:var(--cell-label-font-size)}.post-tile-stats strong{color:#d5f8e4;font-size:calc(13px * var(--notebook-detail-scale, 1));font-weight:600}.post-tile-hint{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:var(--cell-label-font-size)}.post-tile-hint-action{color:var(--green)}.cell-status-needs_link{border-color:#f0c27a73;color:#f0c27a;background:#f0c27a14}.cell-status-posted{border-color:#72e7aa6b;color:var(--green)}.pane-resize-handle{display:grid;width:100%;height:8px;min-height:8px;place-items:center;cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none;border-top:1px solid var(--line)}.pane-resize-handle:after{content:"";width:36px;height:2px;border-radius:2px;background:#6c987e}.pane-resize-handle:hover,.pane-resize-handle:focus-visible{outline:0;background:#72e7aa24}.pane-resize-handle:focus-visible:after{background:var(--green)}.pane-resize-handle-top{position:absolute;top:-5px;z-index:150}.confirm-sheet>.pane-resize-handle-bottom{grid-row:4}.command-composer[data-resizable-review=true]{height:var(--composer-review-height, min(660px, 75dvh))}.command-composer[data-resizable-review=true]>.command-composer-dock-body{flex:1 1 0;overflow:hidden}.command-composer[data-resizable-review=true] .command-composer-dock-body>.confirm-sheet{flex:0 1 var(--confirm-review-height, 76%);min-height:min(180px,60%);max-height:calc(100% - 36px);grid-template-rows:40px minmax(0,1fr) auto 8px}.command-composer[data-resizable-review=true] .command-composer-dock-body>.composer-history-panel{flex:1 1 0;max-height:none}.command-composer[data-resizable-review=true] .composer-history{max-height:none}.command-composer[data-resizable-review=true] .confirm-sheet-body>.confirm-generation{grid-template-rows:minmax(0,1fr)}.command-composer[data-resizable-review=true] .confirm-generation>.confirm-section{min-height:0;overflow:auto;scrollbar-width:thin}@media(max-width:900px){.command-composer[data-resizable-review=true] .confirm-sheet-body>.confirm-generation{grid-template-rows:auto}.command-composer[data-resizable-review=true] .confirm-generation>.confirm-section{overflow:visible}.command-composer[data-resizable-review=true] .confirm-generation>.generation-review-source-section,.command-composer[data-resizable-review=true] .confirm-generation>.generation-review-dolt-section{min-height:240px}}@media(max-width:600px){.command-composer[data-resizable-review=true] .command-composer-dock-body>.confirm-sheet{grid-template-rows:auto minmax(0,1fr) auto 8px}}.command-composer-dock-body>.composer-history-panel{flex:0 1 auto;min-height:0;max-height:min(248px,30dvh);overflow:hidden}.command-composer:has(.confirm-sheet) .command-composer-dock-body>.composer-history-panel{max-height:min(140px,20dvh)}.composer-history-panel{position:relative;display:flex;flex-direction:column;min-width:0}.voice-captions,.composer-history{flex:1 1 auto;min-height:0;max-height:min(180px,22dvh);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.voice-captions[hidden],.composer-history[hidden]{display:none!important}.composer-history-text{min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.composer-history-entry[data-role=user]{border-left-color:var(--green);background:#72e7aa09}.composer-history-entry[data-role=user] .composer-history-kind{color:var(--green)}.composer-history-entry[data-role=assistant]{border-left-color:#789d8b}.voice-captions-empty{color:#6f9a80}.voice-captions em{color:#6f9a80;font:inherit}.voice-captions-latest{align-self:center;flex:0 0 auto;height:32px;margin:8px 0 0;padding:0 12px;border:1px solid rgba(114,231,170,.26);border-radius:2px;background:transparent;color:#cfead9;font:inherit;font-size:11px;cursor:pointer}@media(max-height:500px){.command-composer-dock-body>.confirm-sheet{min-height:88px;max-height:min(42dvh,calc(100dvh - 8rem))}.command-composer:has(.confirm-sheet) .command-composer-dock-body>.composer-history-panel,.command-composer-dock-body>.composer-history-panel{max-height:min(104px,24dvh)}.voice-captions,.composer-history{max-height:min(52px,16dvh)}.command-composer:has(.confirm-sheet) .confirm-sheet-foot{grid-template-columns:minmax(0,1fr) auto;gap:8px}}.command-composer .composer-history{grid-auto-rows:max-content;gap:8px}.chat-turn{display:flex;flex-direction:column;gap:6px;width:min(100%,680px);padding:0;min-width:0}.command-composer .composer-history .chat-bubble{display:block;width:fit-content;max-width:min(100%,680px);align-self:flex-start;justify-self:start;min-height:0;margin:0;padding:8px 12px;border:1px solid rgba(114,231,170,.14);border-radius:14px;color:var(--ink);font:inherit;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;animation:chat-message-enter .16s ease-out both}.command-composer .composer-history .chat-bubble-user{border-bottom-left-radius:4px;background:#72e7aa21}.command-composer .composer-history .chat-bubble-assistant{align-self:flex-start;border-bottom-left-radius:4px;background:#72e7aa09}.chat-bubble .composer-history-kind{display:block;font-size:11px;opacity:.7}.command-composer .composer-history .chat-feedback{display:flex;align-items:flex-start;gap:8px}.chat-feedback-content{min-width:0}.command-composer .composer-history .chat-feedback.command-result-error,.command-composer .composer-history .chat-voice-error{border-color:#f3a0a04d;color:var(--danger)}.chat-voice-activity>p{margin:0}.voice-fallback{margin:4px 0 0;color:#dfd3a1}.voice-fallback>summary{cursor:pointer}.voice-fallback>p{margin:4px 0 0;overflow-wrap:anywhere}.voice-resume{display:inline-flex;align-items:center;gap:7px;min-height:32px;margin:4px 0 0;padding:4px 8px;border:1px solid rgba(114,231,170,.26);border-radius:6px;background:transparent;color:#cfead9;font:inherit;font-size:12px;cursor:pointer}.voice-resume:focus-visible{outline:2px solid var(--green);outline-offset:2px}.chat-turn-details{min-width:0}.chat-turn-details>summary{width:fit-content;padding:4px 8px;color:#9fc0ad;cursor:pointer;font-size:12px}.chat-turn-details>summary:focus-visible{outline:2px solid var(--green);outline-offset:2px}.chat-turn-status{display:inline-flex;align-items:center;gap:8px}.chat-turn[data-status=failed] .chat-turn-status{color:var(--danger)}.chat-turn[data-status=review] .chat-turn-status{color:#e3b869}.chat-turn[data-status=completed] .chat-turn-status{color:var(--green)}.chat-turn-work{display:grid;gap:6px;margin-top:4px}.chat-turn-work>p{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin:0;padding:6px 12px;font-size:12px}.command-composer .composer-history .mcp-call{width:min(100%,680px);min-width:0;justify-self:start}.command-composer .composer-history .mcp-call-head{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:2px 12px;min-height:44px;margin:0;padding:8px 12px;border:1px solid rgba(95,196,214,.2);border-radius:12px;background:#5fc4d60b}.command-composer .composer-history .mcp-call-head:hover,.command-composer .composer-history .mcp-call-head[aria-expanded=true]{background:#5fc4d617}.command-composer .composer-history .mcp-call-channel{grid-column:1;grid-row:1;font-size:11px}.command-composer .composer-history .mcp-call-name{grid-column:1 / -1;grid-row:2;white-space:normal;overflow-wrap:anywhere}.command-composer .composer-history .mcp-call-trail{grid-column:2;grid-row:1;gap:6px;font-size:11px}.command-composer .composer-history .mcp-call-failed .mcp-call-head{border-color:#f3a0a04d}.composer-history-panel>.voice-captions-latest{position:absolute;right:16px;bottom:8px;z-index:2;margin:0;background:var(--panel)}.chat-working-dots{display:inline-flex;align-items:center;gap:3px;height:12px}.chat-working-dots i{width:4px;height:4px;border-radius:50%;background:currentColor;animation:chat-working-dot 1s ease-in-out infinite}.chat-working-dots i:nth-child(2){animation-delay:.12s}.chat-working-dots i:nth-child(3){animation-delay:.24s}@keyframes chat-message-enter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes chat-working-dot{0%,60%,to{opacity:.45;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@media(prefers-reduced-motion:reduce){.command-composer .composer-history .chat-bubble,.chat-working-dots i{animation:none}}.command-editor-mount{min-width:0}.command-rich-input{min-width:0;min-height:36px;max-height:min(180px,28dvh);overflow-y:auto;overflow-wrap:anywhere;padding:8px 0;outline:none;color:#bce6cf;font-size:13px;line-height:1.6;white-space:pre-wrap;cursor:text;caret-color:var(--green)}.command-rich-input[data-empty=true]:before{float:left;height:0;color:#6e9880;pointer-events:none;content:attr(data-placeholder)}.command-rich-input[aria-disabled=true]{opacity:.6;cursor:default}.composer-reference-chip{display:inline-flex;align-items:center;vertical-align:middle;gap:5px;max-width:100%;margin:0 2px;padding:2px 6px 2px 2px;border:1px solid rgba(114,231,170,.35);border-radius:5px;background:#103421;color:#c4ead5;line-height:1.25;white-space:nowrap}.composer-reference-chip.ProseMirror-selectednode{outline:2px solid var(--green);outline-offset:1px}.composer-reference-chip .inspector-source-thumb{display:inline-grid;place-items:center;flex:0 0 24px;width:24px;height:24px;min-width:0;overflow:hidden;border-radius:3px}.composer-reference-chip img{width:100%;height:100%;object-fit:cover}.composer-reference-address{font-size:12px}.command-line-shell{grid-template-areas:"actions editor mode send";grid-template-columns:32px minmax(0,1fr) auto auto}.command-line-shell>.composer-mode-switch{grid-area:mode}.command-line-shell>.command-suggestions{z-index:150}.command-actions-controls{grid-area:actions;display:flex;align-items:center;gap:4px}.command-actions-toggle,.command-actions-close{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:36px;padding:6px;border:1px solid var(--line);color:#bce6cf;background:transparent;font-size:11px;cursor:pointer}.command-actions-controls>.command-actions-toggle,.command-actions-controls>.command-actions-close{width:32px;height:32px;min-height:32px;padding:0;border-color:#72e7aa38;border-radius:2px;color:#a8cdb7}.command-actions-toggle[aria-expanded=true]{border-color:var(--green);color:var(--control-fg-hover);background:#103421}.command-actions-toggle:disabled{opacity:.5;cursor:default}.command-actions-toggle[hidden]{display:none}.command-actions-toggle:focus-visible,.command-actions-close:focus-visible{outline:2px solid var(--green);outline-offset:2px}.command-editor-mount{grid-area:editor}.command-send{grid-area:send}.command-composer-dock-body>.composer-actions-panel{position:static;display:flex;flex:0 1 auto;flex-direction:column;min-height:min(180px,28dvh);border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none;max-height:min(420px,52dvh);overflow:hidden;padding:10px 20px}.composer-actions-panel>header{display:flex;align-items:center;flex-wrap:wrap;flex:0 0 auto;gap:8px;padding:0 2px 8px;border-bottom:1px solid var(--line)}.composer-actions-panel>header>strong{font-size:13px}.composer-actions-panel>header label{display:flex;align-items:center;gap:6px;min-width:0;font-size:11px}.composer-actions-panel>header select{max-width:150px;min-width:0;min-height:32px;background:#071a10;color:#bce6cf;border:1px solid var(--line)}.composer-actions-panel>header>span{margin-left:auto}.command-composer-dock-body>.command-suggestions.composer-actions-panel>header>button{display:grid;grid-template-columns:none;width:32px;min-height:32px;padding:6px}.composer-actions-panel .workspace-actions-list{min-height:0;overflow-y:auto;margin-top:5px}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:start}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button.active{color:var(--control-fg-hover);background:var(--control-bg-active)}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button>span{display:grid;gap:3px;white-space:normal}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button strong{color:#c4ead5;font-size:13px}.composer-actions-panel .workspace-actions-list small,.composer-actions-panel .workspace-actions-list code{font-size:11px;overflow-wrap:anywhere}.composer-actions-panel .composer-action-unavailable{grid-column:1 / -1;color:#e3b869}.composer-actions-panel p{font-size:11px;margin:8px 4px;color:#a6c5b3}.composer-actions-panel .composer-actions-help{flex:0 0 auto;margin:8px 4px 0}.command-composer .command-line-shell>.command-suggestions button.composer-reference-suggestion{grid-template-columns:40px minmax(0,1fr);align-items:center}.composer-reference-suggestion .inspector-source-thumb{width:40px;height:40px}.command-suggestions .composer-reference-copy{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;white-space:normal}.composer-reference-copy>small{flex:1 1 100%;font-size:10px}.command-suggestions .composer-reference-copy>span{white-space:normal;overflow-wrap:anywhere}.workspace-preview-composer-host>.command-composer,.notebook-media-composer-host>.command-composer{position:relative;inset:auto;margin:0}.workspace-preview-composer-host{min-width:0;padding:12px}.notebook-media-composer-host.actions-only{right:28px}@media(max-width:600px){.command-line-shell{grid-template-areas:"editor editor editor" "actions mode send";grid-template-columns:32px minmax(0,1fr) auto;padding-top:5px;padding-bottom:6px}.command-composer-dock-bar{padding-left:9px;padding-right:4px}.command-line-shell,.command-result,.confirm-sheet-head,.confirm-sheet-body,.confirm-sheet-foot,.composer-history{padding-left:9px;padding-right:11px}.composer-history-entry{grid-template-columns:62px minmax(0,1fr) auto;gap:8px;padding-left:8px;padding-right:8px}.mcp-call-trail{gap:4px}.command-composer-dock-body>.composer-actions-panel{padding-left:12px;padding-right:12px}.command-line-shell>.composer-mode-switch{justify-self:end}.command-composer-dock-body>.composer-actions-panel .workspace-actions-list>button{grid-template-columns:minmax(0,1fr);gap:4px}.composer-actions-panel>header label{font-size:0}.composer-actions-panel>header select{max-width:110px;font-size:11px}.notebook-media-composer-host.actions-only{right:12px;left:12px;bottom:12px}}@media(max-width:420px){.command-line-shell:has(>.composer-mode-switch){gap:6px}.command-line-shell>.composer-mode-switch{justify-self:stretch;min-width:0}.composer-mode-switch>.composer-mode-cell-live{flex:1 1 auto}}@media(max-height:500px){.command-composer-dock-body>.composer-actions-panel{max-height:min(280px,48dvh)}.composer-actions-panel .composer-actions-help{display:none}}@media(pointer:coarse){.composer-history-entry{min-height:44px}}.composer-mode-switch{position:relative;display:flex;align-items:stretch;min-width:0;height:32px}.command-composer .command-line-shell>.composer-mode-switch:has(.composer-engine-menu){z-index:150}.composer-mode-cell{position:relative;display:flex;align-items:center;gap:8px;min-width:0;height:100%;box-sizing:border-box;border:1px solid rgba(114,231,170,.26);color:#7fa992;background:transparent;font:inherit;font-size:11px;letter-spacing:.08em;cursor:pointer;transition:color .16s ease,border-color .16s ease,background .16s ease}.composer-mode-cell:first-child{border-radius:2px 0 0 2px}.composer-mode-cell:last-of-type{border-radius:0 2px 2px 0}.composer-mode-cell:only-of-type{border-radius:2px}.composer-mode-cell+.composer-mode-cell{margin-left:-1px}.composer-mode-cell-idle{flex:0 0 auto;justify-content:center;width:32px;padding:0}.composer-mode-cell-idle:not(:disabled):hover,.composer-mode-cell-idle:not(:disabled):focus-visible{border-color:var(--control-border-hover);color:var(--control-fg);background:var(--control-bg-hover)}.composer-mode-cell-live{z-index:1;padding:0 11px;border-color:var(--green);color:var(--control-fg-hover);background:#103421}.composer-mode-cell-live[data-voice-phase]{color:#8fffb8;background:#0b2b1b}.composer-mode-cell-live[data-voice-phase=review]{border-color:#f2dcaa9e;color:#f2dcaa;background:#3c2e108c}.composer-mode-cell-idle[data-voice-phase=error]{border-color:#f07e7e80;color:#ffae9f}.composer-mode-cell:focus-visible{z-index:2;outline:2px solid var(--green);outline-offset:2px}.composer-mode-cell:disabled{opacity:.5;cursor:default}.composer-mode-name{flex:0 0 auto}.composer-mode-divider{flex:0 0 auto;opacity:.45}.composer-mode-engine{min-width:0;max-width:132px;overflow:hidden;font-size:12px;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}.composer-mode-meter{display:flex;flex:0 0 auto;align-items:flex-end;gap:2px;height:12px}.composer-mode-meter>span{width:2px;border-radius:1px;background:currentColor;transform:scaleY(calc(.3 + var(--voice-level, 0) * .7));transform-origin:bottom;transition:transform 90ms linear}.composer-mode-meter>span:nth-child(1){height:6px}.composer-mode-meter>span:nth-child(2){height:12px}.composer-mode-meter>span:nth-child(3){height:9px}.composer-mode-connecting{flex:0 0 auto;animation:composer-mode-connect-spin 1s linear infinite}@keyframes composer-mode-connect-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.composer-mode-meter>span{transition:none}.composer-mode-connecting{animation:none}}.composer-engine-menu{position:absolute;right:0;bottom:calc(100% + 8px);z-index:30;width:min(336px,calc(100vw - 32px));margin:0;padding:6px 0;border:1px solid var(--line-bright);border-radius:2px;background:#04120c;box-shadow:0 -14px 30px #0000009e;list-style:none}.composer-engine-group{padding:7px 14px 5px;color:#7fa992;font-size:10px;letter-spacing:.12em;text-transform:uppercase}.composer-engine-group:not(:first-child){margin-top:5px;padding-top:11px;border-top:1px solid var(--line)}.composer-engine-item{display:flex;align-items:flex-start;gap:10px;width:100%;box-sizing:border-box;padding:8px 14px;border:0;color:var(--ink);background:transparent;font:inherit;text-align:left;cursor:pointer}.composer-engine-item[aria-checked=true]{background:#2f7f5233}.composer-engine-item:hover,.composer-engine-item:focus-visible{outline:0;color:var(--row-fg-hover);background:var(--row-bg-hover)}.composer-engine-check{display:grid;flex:0 0 auto;place-items:center;width:13px;margin-top:2px;color:var(--green)}.composer-engine-copy{display:flex;flex:1 1 auto;flex-direction:column;gap:3px;min-width:0}.composer-engine-head{display:flex;align-items:baseline;gap:12px}.composer-engine-head>strong{color:var(--control-fg-hover);font-size:12px;font-weight:500}.composer-engine-head>small{margin-left:auto;color:#7fa992;font-size:10px}.composer-engine-note{color:#8fb9a1;font-size:10px;line-height:1.55}@media(max-width:600px){.composer-mode-cell-live{gap:6px;padding:0 9px}.composer-mode-divider,.composer-mode-engine{display:none}}.provider-task-link{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0;font-size:11px}.provider-task-link a{display:inline-flex;align-items:center;gap:4px;color:inherit}.provider-task-link code{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.provider-task-link button{display:inline-flex;align-items:center;border:0;background:transparent;color:inherit;cursor:pointer;padding:4px}.generation-har-actions{display:inline-flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0;font-size:11px}.generation-har-actions button{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 6px;border:1px solid var(--line);border-radius:4px;background:transparent;color:var(--muted);cursor:pointer;font:inherit}.generation-har-actions button:hover,.generation-har-actions button:focus-visible{border-color:var(--control-border-hover);color:var(--control-fg-hover)}.generation-har-actions button:disabled{cursor:default;opacity:.5}.generation-har-actions a{color:var(--muted)}.generation-har-actions a:hover,.generation-har-actions a:focus-visible{color:var(--control-fg-hover)}.generation-har-error{color:var(--danger);overflow-wrap:anywhere}.insert-video-editor{padding:12px;border:1px solid #355b43;background:#09170f;gap:12px!important;font-size:12px;color:#bad1c0}.insert-video-editor header,.insert-video-track-heading{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 12px}.insert-video-editor header strong{color:#a1e6b7}.insert-video-editor p{margin:0;line-height:1.5}.insert-video-editor header span,.insert-video-track-heading span,.insert-video-field small{color:#95ad9d}.insert-video-visuals{display:grid;grid-template-columns:170px minmax(0,1fr);gap:12px;align-items:start}.insert-video-visuals:not(:has(video)){grid-template-columns:minmax(0,1fr)}.insert-video-monitor{display:grid;min-width:0;gap:6px}.insert-video-monitor video{width:100%;height:100px;min-width:0;object-fit:contain;background:#030805}.insert-video-playhead{display:flex;flex-wrap:wrap;align-items:flex-start;gap:5px;font-size:10px}.insert-video-playhead>span{flex-basis:100%}.insert-video-editor button{padding:5px 8px;min-height:28px;font:inherit;text-align:left;border:1px solid #3f694e;background:#14291b;color:#b7dfc3;cursor:pointer}.insert-video-editor button:disabled{opacity:.45;cursor:default}.insert-video-editor :focus-visible{outline:2px solid #a1e6b7;outline-offset:2px}.insert-video-tracks{display:grid;gap:7px}.insert-video-track{display:flex;min-width:0;height:38px;overflow:hidden;border:1px solid #365643;background:#050e09}.insert-video-track-content{display:flex;min-width:0}.insert-video-segment{display:flex;flex-basis:0;min-width:0;align-items:center;justify-content:center;overflow:hidden;border-right:1px solid #08150c}.insert-video-segment>span{padding:0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.insert-video-segment.kept{background:#234632;color:#c7e5d1}.insert-video-segment.removed{color:#e6b18b;background:repeating-linear-gradient(135deg,#452d21,#452d21 6px,#352219 6px 12px)}.insert-video-segment.new{background:#384d67;color:#dbebff}.insert-video-track-empty{align-self:center;padding:0 8px;color:#95ad9d;font-size:11px}.insert-video-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:10px}.insert-video-legend span:before{content:"";display:inline-block;width:8px;height:8px;margin-right:5px;background:#3e7854}.insert-video-legend .removed:before{background:#ad7852}.insert-video-legend .new:before{background:#7198c9}.insert-video-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.insert-video-field{display:flex;flex-direction:column;align-items:stretch;gap:6px}.insert-video-field label{display:grid;gap:6px}.insert-video-time-input{display:flex;min-width:0;gap:4px}.insert-video-time-input button{margin:0;align-self:stretch}.insert-video-field label small{font-size:10px}.insert-video-field input[type=number]{box-sizing:border-box;width:100%;min-width:0;padding:7px;font:inherit;color:#dbebdf;background:#061009;border:1px solid #42634d}.insert-video-field input[type=range]{width:100%;min-width:0;margin:0;accent-color:#91dba7}.insert-video-field>small{font-size:10px;line-height:1.4}.insert-video-field button{align-self:flex-start;margin-top:auto}.insert-video-error{color:#ffb2a8}.insert-video-summary{color:#a6dfb7}.confirm-generation:has(.insert-video-editor)[data-view=form]{grid-template-columns:136px minmax(0,2fr) minmax(0,1fr) 144px}@media(max-width:1180px){.confirm-generation:has(.insert-video-editor)[data-view=form]{grid-template-columns:120px minmax(0,2fr) minmax(0,1fr)}}@media(max-width:900px){.confirm-generation:has(.insert-video-editor)[data-view=form]{grid-template-columns:minmax(0,1fr)}}@media(max-width:520px){.insert-video-fields,.insert-video-visuals,.insert-video-monitor{grid-template-columns:minmax(0,1fr)}.insert-video-playhead{flex-direction:row;flex-wrap:wrap;justify-content:flex-start}.insert-video-playhead>span{flex-basis:100%}}.prompt-history-controls{position:relative;display:inline-flex;align-items:center;gap:6px;margin-left:auto;min-width:0}.prompt-history-status{overflow:hidden;color:var(--cyan);font-size:9px;letter-spacing:.12em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.prompt-history-steppers{display:inline-flex}.prompt-history-steppers>.prompt-history-icon+.prompt-history-icon{margin-left:-1px}.prompt-history-icon,.prompt-history-toggle,.prompt-history-segment{display:inline-flex;height:22px;min-height:0;align-items:center;justify-content:center;gap:5px;padding:0 7px;border:1px solid var(--line);color:#8fbba1;background:transparent;font:inherit;font-size:9px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;cursor:pointer}.prompt-history-icon{width:24px;padding:0}.prompt-history-icon:hover:not(:disabled),.prompt-history-icon:focus-visible:not(:disabled),.prompt-history-toggle:hover:not(:disabled),.prompt-history-toggle:focus-visible:not(:disabled),.prompt-history-segment:hover,.prompt-history-segment:focus-visible{border-color:var(--control-border-hover);color:var(--control-fg-hover);background:var(--control-bg-hover)}.prompt-history-icon:disabled,.prompt-history-toggle:disabled{opacity:.35;cursor:default}.prompt-history-toggle[aria-expanded=true],.prompt-history-segment[aria-pressed=true],.prompt-history-icon[aria-pressed=true]{border-color:var(--control-border-active);color:var(--control-fg-hover);background:var(--control-bg-active)}.prompt-history-count{color:#6fa184;letter-spacing:0}.prompt-history-popover{position:absolute;z-index:30;top:calc(100% + 6px);right:0;display:flex;width:min(540px,80vw);max-height:min(360px,60vh);flex-direction:column;border:1px solid var(--line-bright);background:#040f0afa;box-shadow:0 18px 40px #0009;text-transform:none;letter-spacing:0}.prompt-history-head{display:grid;gap:8px;padding:10px 10px 8px;border-bottom:1px solid var(--line)}.prompt-history-title{display:flex;align-items:center;gap:8px}.prompt-history-title>.prompt-history-icon{margin-left:auto}.prompt-history-faint{color:#557764;font-size:9px}.prompt-history-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.prompt-history-search{display:flex;flex:1 1 160px;min-width:0;height:26px;align-items:center;gap:6px;padding:0 8px;border:1px solid var(--line);color:#6fa184;background:#010905e6}.prompt-history-search>input{flex:1;min-width:0;min-height:0;padding:0;border:0;color:#d5f8e4;background:transparent;font:inherit;font-size:11px;outline:none}.prompt-history-search:focus-within{border-color:var(--green)}.prompt-history-segments{display:inline-flex}.prompt-history-segments>.prompt-history-segment+.prompt-history-segment{margin-left:-1px}.prompt-history-list{min-height:0;margin:0;padding:0;overflow:auto;list-style:none;scrollbar-width:thin}.prompt-history-row{display:flex;align-items:flex-start;gap:8px;padding:6px 10px;border-bottom:1px solid rgba(101,190,145,.12)}.prompt-history-row[data-active],.prompt-history-row:hover{background:var(--row-bg-hover)}.prompt-history-row>.prompt-history-icon{flex:0 0 auto;margin-top:2px}.prompt-history-use{display:grid;flex:1 1 auto;min-width:0;gap:4px;padding:2px 0;border:0;color:inherit;background:transparent;font:inherit;text-align:left;cursor:pointer}.prompt-history-use:focus-visible{outline:2px solid var(--green);outline-offset:2px}.prompt-history-text{display:-webkit-box;overflow:hidden;color:#d5f8e4;font-size:11px;line-height:1.5;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.prompt-history-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#6e9880;font-size:9px;letter-spacing:.06em;text-transform:uppercase}.prompt-history-surface{padding:1px 5px;border:1px solid rgba(114,231,170,.4);color:var(--green)}.prompt-history-empty{padding:22px 12px;color:#6e9880;font-size:11px;text-align:center}.prompt-history-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 10px;border-top:1px solid var(--line);color:#6e9880;font-size:9px}.prompt-history-foot kbd{padding:1px 4px;border:1px solid rgba(101,190,145,.3);border-radius:2px;color:#8fbba1;font:inherit;font-size:9px}.workspace-actions-dialog{position:fixed;inset:0;width:min(760px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 32px);margin:auto;padding:0;overflow:hidden;color:var(--ink);background:var(--surface);border:1px solid var(--line-bright);border-radius:12px;box-shadow:0 24px 90px #000b;font-size:12px}.workspace-actions-dialog[open]{display:flex;flex-direction:column}.workspace-actions-dialog::backdrop{background:#0009;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.workspace-actions-dialog>header,.workspace-actions-filter,.workspace-action-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.workspace-actions-dialog>header{flex:none;padding:8px 16px;border-bottom:1px solid var(--line)}.workspace-actions-dialog h2,.workspace-actions-dialog h3{font-weight:600;font-size:15px}.workspace-actions-dialog button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:7px 11px;color:var(--control-fg);background:var(--control-bg);border:1px solid var(--control-border);border-radius:5px}.workspace-actions-dialog>header button{width:40px;height:40px}.workspace-actions-dialog button:hover,.workspace-actions-dialog button:focus-visible,.workspace-actions-dialog [aria-selected=true]{color:var(--control-fg-hover);background:var(--control-bg-hover);border-color:var(--control-border-hover)}.workspace-actions-dialog button:disabled{opacity:.5;cursor:default}.workspace-actions-search{display:flex;align-items:center;gap:10px;margin:16px 16px 8px}.workspace-actions-dialog input,.workspace-actions-dialog select,.workspace-actions-dialog textarea{width:100%;min-width:0;padding:9px 10px;color:var(--ink);background:var(--surface-deep);border:1px solid var(--line-bright);border-radius:5px;font:inherit}.workspace-actions-dialog input:focus,.workspace-actions-dialog select:focus,.workspace-actions-dialog textarea:focus{outline:2px solid var(--green);outline-offset:1px}.workspace-actions-filter{flex:none;padding:0 16px 12px}.workspace-actions-filter label{display:flex;align-items:center;gap:10px}.workspace-actions-filter select{width:auto}.workspace-actions-filter>span{white-space:nowrap;color:var(--muted)}.workspace-actions-list{min-height:0;max-height:60dvh;overflow:auto;padding:0 10px 12px}.workspace-actions-list button{display:flex;flex-direction:column;align-items:stretch;width:100%;gap:5px;margin-top:4px;padding:10px;text-align:left;border-color:transparent;background:transparent}.workspace-actions-list button>span{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.workspace-actions-list small,.workspace-action-hint{color:var(--muted);font-size:11px;line-height:1.5}.workspace-actions-dialog code{overflow-wrap:anywhere;color:var(--green);font-size:11px}.workspace-action-form{min-height:0;overflow-y:auto;padding:16px}.workspace-action-heading{margin:16px 0 8px}.workspace-action-fields{display:grid;gap:16px;margin:20px 0}.workspace-action-field>label{display:block;margin-bottom:5px;font-weight:600}.workspace-action-hint{margin:4px 0 7px;overflow-wrap:anywhere}.workspace-action-field fieldset{display:grid;min-width:0;gap:12px;padding:12px;border:1px solid var(--line);border-radius:5px}.workspace-action-field>select+fieldset{margin-top:8px}.workspace-action-array-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.workspace-action-fixed{display:flex;justify-content:space-between;gap:12px}.workspace-action-review,.workspace-action-result{padding:12px;margin:12px 0;border:1px solid var(--line-bright);border-radius:5px;overflow-wrap:anywhere}.workspace-action-error{color:var(--danger);padding:8px 0}.workspace-action-result-fields>div{padding:8px 0;border-bottom:1px solid var(--line)}.workspace-action-result-fields dt{color:var(--muted);font-size:11px}.workspace-action-result-fields dd{margin-top:4px}.workspace-action-result-list{display:grid;gap:8px;list-style:decimal;padding-left:20px}.workspace-action-form footer{position:sticky;bottom:-16px;display:flex;flex-wrap:wrap;gap:10px;padding:12px 0;background:var(--surface);border-top:1px solid var(--line)}@media(max-width:600px){.workspace-actions-dialog{max-height:calc(100dvh - 20px)}.workspace-actions-list button>span,.workspace-action-heading{flex-direction:column;align-items:flex-start;gap:4px}.workspace-actions-filter{flex-wrap:wrap}}.workspace-preview-content{display:grid;gap:16px;overflow:auto;padding:16px;min-height:0}.workspace-preview-content>img,.workspace-preview-content>video{max-width:100%;max-height:65dvh;margin:auto}.workspace-preview-content label{display:grid;gap:8px}.workspace-action-linked-results{list-style:none;padding:0;display:grid;gap:12px}.workspace-action-linked-results li{display:grid;gap:8px;padding:12px;border:1px solid var(--line);overflow-wrap:anywhere}.workspace-action-linked-results li>div{display:flex;flex-wrap:wrap;gap:8px}.workspace-crop-preview{display:grid;gap:10px}.workspace-crop-ratios{display:flex;flex-wrap:wrap;gap:8px}.workspace-crop-frame{position:relative;overflow:hidden;width:min(100%,440px);margin:auto;background:#000;cursor:move;touch-action:none}.workspace-crop-frame>img,.workspace-crop-frame>video{width:100%;height:100%;object-fit:contain;display:block}.workspace-crop-region{position:absolute;box-shadow:0 0 0 999px #0009;border:2px solid var(--green);pointer-events:none}.workspace-action-variants label{display:grid;gap:8px;padding-top:8px}.topbar-tools{grid-column:3;grid-row:1;display:flex;align-items:center;gap:12px;min-width:0;margin-right:var(--app-gutter)}.topbar-tools .header-navigation{margin-right:0}.book-usage{min-width:0;font-variant-numeric:tabular-nums}.book-usage-trigger{display:flex;align-items:center;justify-content:center;gap:8px;height:34px;padding:0 12px;border:1px solid var(--line);border-radius:6px;background:#0b1710;color:var(--ink);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer}.book-usage-trigger:hover{background:#13261a;border-color:var(--control-border-hover)}.book-usage-trigger:disabled{opacity:.5;cursor:default}.book-usage-trigger small,.book-usage-divider{color:#8eaa98;font-size:11px}.book-usage-indicator{width:5px;height:5px;border-radius:50%;background:#d8b875;flex:0 0 auto}.book-usage-popover{position:fixed;inset:auto 12px auto auto;width:min(390px,calc(100vw - 24px));margin:0;padding:18px;overflow-y:auto;overscroll-behavior:contain;border:1px solid #385044;border-radius:10px;background:#08120d;color:#dbe9df;box-shadow:0 16px 60px #0009;font-family:inherit;font-size:12px;line-height:1.5;font-variant-numeric:tabular-nums}.book-usage-popover>header{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:18px}.book-usage-popover h2{margin:0;font-size:15px;font-weight:600}.book-usage-popover header p{margin:3px 0 0;color:#8eaa98;font-size:11px;overflow-wrap:anywhere}.book-usage-popover button{color:inherit;background:transparent;border:0;cursor:pointer}.book-usage-popover header button{width:32px;height:32px;font-size:23px}.book-usage-popover button:focus-visible,.book-usage-popover summary:focus-visible{outline:2px solid #7fc69b;outline-offset:3px}.book-usage-totals{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:14px}.book-usage-totals small{display:block;font-size:10px;color:#8eaa98;text-transform:uppercase;letter-spacing:.06em}.book-usage-totals strong{font-size:24px;font-weight:500}.book-usage-facts{margin:0 0 14px;font-size:11px}.book-usage-facts>div{display:flex;justify-content:space-between;gap:12px;margin-top:5px}.book-usage-facts dt{color:#8eaa98}.book-usage-facts dd{margin:0;text-align:right}.book-usage-notice,.book-usage-pending{padding:10px;border-radius:5px;background:#292316;color:#dbc18e;font-size:11px}.book-usage-notice button{text-decoration:underline}.book-usage-pending{background:#112419;color:#a4cdb2}.book-usage-breakdown details{border-top:1px solid #21372a}.book-usage-breakdown summary{display:flex;justify-content:space-between;gap:12px;padding:10px 0;cursor:pointer;font-size:12px}.book-usage-breakdown summary>span:first-child:before{content:"›";display:inline-block;width:14px;color:#8eaa98}.book-usage-breakdown details[open] summary>span:first-child:before{content:"⌄"}.book-usage-model,.book-usage-recent>div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;font-size:11px}.book-usage-model>div,.book-usage-recent>div>div{min-width:0}.book-usage-model strong,.book-usage-recent strong{display:block;overflow-wrap:anywhere;font-size:11px;font-weight:500}.book-usage-model small,.book-usage-recent small{display:block;color:#8eaa98;font-size:10px}.book-usage-model>span,.book-usage-recent>div>span{flex-shrink:0}.book-usage-recent{margin-top:12px;border-top:1px solid #21372a}.book-usage-recent h3{margin:14px 0 4px;color:#8eaa98;font-size:11px;font-weight:500}.book-usage-empty{color:#8eaa98;font-size:12px}.book-usage-popover footer{margin-top:16px;border-top:1px solid #21372a;padding-top:12px;color:#8eaa98;font-size:10px}@media(max-width:1280px){.topbar-tools{grid-column:2}}@media(max-width:560px){.topbar-tools{grid-row:2;grid-column:1;justify-content:space-between;gap:4px;height:48px;margin:0;padding:0 8px;border-top:1px solid var(--line)}.topbar-tools .header-navigation{border:0;width:auto;flex:0 0 auto;gap:0}.topbar-tools .header-navigation button{width:44px;flex:0 0 44px}.book-usage-trigger{gap:5px;padding:0 7px;font-size:11px}.book-usage-trigger small{font-size:10px}.book-usage-totals strong{font-size:21px}}.app-shell.app-screen-settings{grid-template-rows:auto minmax(0,1fr) auto}.app-screen-settings>.command-composer{position:relative;inset:auto;grid-row:3;grid-column:1 / -1;margin:12px var(--app-gutter);transform:none}.workspace-screen.settings-screen{padding:20px 24px;scroll-padding:16px;font-family:system-ui,sans-serif}.settings-screen>header{align-items:center;gap:16px;padding-bottom:16px}.settings-screen h1{margin:0 0 4px;font-size:28px;letter-spacing:-.03em}.settings-screen header p{font-size:13px;color:#86a795}.settings-refresh{display:flex;align-items:center;flex-wrap:wrap;gap:12px;color:#86a795;font-size:12px}.settings-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(340px,1fr);align-items:start;gap:16px;margin-top:16px}.settings-panel,.settings-secondary,.settings-credentials,.settings-credential-copy{min-width:0}.settings-secondary{display:grid;gap:16px}.settings-panel{border:1px solid var(--line);padding:16px;background:#05120ce0;color:#a6c5b3;font-size:13px;overflow-wrap:anywhere}.settings-panel-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px}.settings-panel-heading h2{margin:0;color:#c4ead5;font-size:17px;font-weight:500}.settings-panel-heading>span,.settings-section-summary,.settings-details summary>span,.settings-key-editor small{color:#86a795;font-size:12px}.settings-section-summary{margin:6px 0 14px}.settings-credentials{display:grid;gap:12px}.settings-providers .settings-credentials{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.settings-credential{min-width:0;border:1px solid var(--line);padding:12px}.settings-credential-summary{display:flex;align-items:center;gap:10px}.settings-key-status{flex:0 0 7px;height:7px;border-radius:50%;background:#81958a}.settings-key-configured{background:var(--green)}.settings-key-placeholder{background:#e3b869}.settings-credential-copy{display:flex;flex-wrap:wrap;align-items:baseline;flex:1;gap:4px 8px}.settings-credential-copy strong{flex:1 1 100%;font-size:13px;font-weight:500;color:#c4ead5}.settings-key-caption,.settings-key-source,.settings-key-value{color:#86a795;font-size:12px;overflow-wrap:anywhere}.settings-key-value{max-width:100%;font-family:monospace}.settings-key-source{flex:1 1 100%}.settings-screen button{min-height:40px;padding:8px 10px;border:1px solid var(--line);color:#bce6cf;background:#2470491f;font-size:12px;cursor:pointer}.settings-screen button:disabled{opacity:.5;cursor:default}.settings-screen :is(button,input,summary,a):focus-visible{outline:2px solid var(--green);outline-offset:3px}.settings-key-editor{display:grid;gap:8px;margin-top:12px}.settings-key-editor input{min-height:40px;min-width:0;width:100%;padding:8px;border:1px solid var(--line);color:#c4ead5;background:#031009;font-size:14px}.settings-key-actions{display:flex;flex-wrap:wrap;gap:8px}.settings-key-actions>button[type=submit]{border-color:var(--green)}.settings-screen .x-connection-card{min-width:0;padding:12px 0;gap:10px;border:0;background:transparent;flex-wrap:wrap}.settings-screen .x-connection-card>div{min-width:0;flex:1 1 180px}.settings-screen .x-connection-card :is(strong,p){font-size:12px}.settings-details{border-top:1px solid var(--line);margin-top:12px;padding-top:4px}.settings-details summary{padding:10px 0;cursor:pointer;color:#b6dfc8}.settings-details summary>span{display:inline-block;margin-left:8px}.settings-storage-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}.settings-storage-summary dt{color:#86a795;font-size:12px}.settings-storage-summary dd{margin:4px 0 0;color:#c4ead5;text-transform:capitalize}.settings-details pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px}.settings-error{color:#ffb8b8;font-size:13px;overflow-wrap:anywhere}.settings-feedback{color:#bce6cf;font-size:12px}@media(max-width:1000px){.settings-layout{grid-template-columns:minmax(0,1fr)}}@media(max-width:600px){.workspace-screen.settings-screen{padding:16px 12px}.settings-screen>header{align-items:flex-start}.settings-providers .settings-credentials{grid-template-columns:minmax(0,1fr)}.settings-screen button{min-height:44px}}.notebook-timeline{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--panel, #151a18);color:var(--text);box-sizing:border-box;font-size:calc(11px * var(--notebook-detail-scale, 1))}.react-flow__node-timeline.selected .notebook-timeline{border-color:var(--green)}.notebook-timeline-header{display:flex;align-items:center;gap:12px;padding:5px 10px;min-height:32px;border-bottom:1px solid var(--line);cursor:grab}.notebook-timeline-header code{color:var(--muted)}.timeline-toolbar{display:flex;align-items:center;gap:8px;margin-left:auto}.notebook-timeline button{font:inherit;cursor:pointer}.timeline-toolbar button,.timeline-track-label button{display:inline-flex;align-items:center;justify-content:center;color:inherit;background:transparent;border:1px solid var(--line);border-radius:4px;padding:3px 8px}.notebook-timeline button:disabled{opacity:.4;cursor:default}.notebook-timeline button:focus-visible{outline:2px solid var(--green);outline-offset:-2px}.timeline-assembly{flex:1;display:flex;flex-direction:column;min-height:0}.timeline-ruler-row,.timeline-track{display:grid;grid-template-columns:var(--timeline-label-width, 200px) minmax(0,1fr);flex-shrink:0}.timeline-ruler-row{height:28px;color:var(--muted)}.timeline-ruler-row>span{padding:3px 10px}.timeline-ruler{position:relative;overflow:hidden;cursor:crosshair}.timeline-ruler span{position:absolute;top:4px;border-left:1px solid var(--line);padding-left:5px;white-space:nowrap}.timeline-track{height:36px;border-bottom:1px solid var(--line);box-sizing:border-box}.timeline-track-video{background:#72e7aa0d}.timeline-assembly>.timeline-track-video{height:72px}.timeline-track-label{display:flex;gap:6px;align-items:center;padding:2px 8px;border-right:1px solid var(--line);overflow:hidden}.timeline-track-label>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-track-label button{padding:3px;flex-shrink:0}.timeline-track-lane{overflow:hidden;position:relative;cursor:crosshair}.timeline-clip{position:absolute;top:3px;bottom:3px;display:flex;align-items:center;gap:6px;padding:0 5px;overflow:hidden;background:#27483d;color:#e0f5eb;border:1px solid #598674;border-radius:3px;box-sizing:border-box}.timeline-track-audio .timeline-clip{background:#283d55;border-color:#547599}.timeline-clip.selected{border-color:#e4ffb5;box-shadow:inset 0 0 0 1px #e4ffb5}.timeline-clip img{width:40px;height:26px;object-fit:contain;background:var(--surface-deep);flex-shrink:0}.timeline-assembly>.timeline-track-video .timeline-clip img{width:84px;height:56px;max-height:100%}.timeline-clip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-playhead{position:absolute;top:0;bottom:0;width:2px;background:#e4ffb5;pointer-events:none}.timeline-empty-lane{display:block;color:var(--muted);padding:4px 12px}.timeline-audio-viewport{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.timeline-audio-content{position:relative}.timeline-horizontal{height:14px;flex-shrink:0;overflow-x:auto;margin-left:var(--timeline-label-width, 200px)}.timeline-error{color:#ffb5a8;padding:3px 10px}.timeline-source-picker{color:var(--text);background:var(--panel, #151a18);border:1px solid var(--line);border-radius:8px;width:min(560px,calc(100vw - 32px));max-height:min(640px,80dvh);padding:16px}.timeline-source-picker::backdrop{background:#0009}.timeline-source-picker header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.timeline-source-picker input{width:100%;box-sizing:border-box;margin-bottom:12px}.timeline-source-list{display:grid;gap:8px;max-height:50dvh;overflow:auto}.timeline-source-list button{display:flex;align-items:center;gap:12px;text-align:left;min-height:54px}.timeline-source-list button>span{flex:1}.timeline-source-list img{width:64px;height:42px;object-fit:contain}.timeline-waveform{position:absolute;inset:3px 0;width:100%;height:calc(100% - 6px);pointer-events:none;fill:#96cceb;opacity:.58}.timeline-clip>span{position:relative;z-index:1;text-shadow:0 1px 3px #07111d}.timeline-track-audio .timeline-clip>span{align-self:flex-start;padding-top:3px}.timeline-beat{position:absolute;inset-block:0;width:1px;background:#a9cdbf55;pointer-events:none}.timeline-beat.bar{width:2px;background:#f7d776a6}.timeline-beat.manual{border-left:1px dashed #a7ddc8;background:transparent}.timeline-clip.timeline-master{border-color:#83c8e4}.timeline-playhead{z-index:2}.notebook-timeline-preview .timeline-clip{touch-action:pan-y}.timeline-waveform path{fill:none;stroke:#96cceb;stroke-width:1.2px;vector-effect:non-scaling-stroke}@media(max-width:560px){.music-video-editor .notebook-timeline-header{gap:4px;padding:4px 6px}.music-video-editor .timeline-toolbar{gap:2px}.music-video-editor .timeline-toolbar button{font-size:10px;padding:3px 4px;min-height:24px}.music-video-editor .timeline-assembly>.timeline-track-video{height:60px}}.timeline-trim-handle{position:absolute;top:0;bottom:0;z-index:2;width:8px;background:var(--green, #72e7aa);cursor:ew-resize;touch-action:none}.timeline-trim-handle.start{left:0}.timeline-trim-handle.end{right:0}.timeline-trim-handle:after{content:"";position:absolute;top:50%;left:3px;width:2px;height:16px;margin-top:-8px;border-radius:1px;background:#03140b}.timeline-preview-fullscreen{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;overflow:hidden;border:0;color:var(--ink);background:var(--surface-deep);grid-template-rows:48px minmax(0,1fr) clamp(220px,28dvh,320px);grid-template-columns:minmax(0,1fr)}.timeline-preview-fullscreen[open]{display:grid}.timeline-preview-fullscreen::backdrop{background:var(--surface-deep)}.timeline-preview-fullscreen-header,.timeline-preview-fullscreen-actions{display:flex;align-items:center;gap:12px;min-width:0}.timeline-preview-fullscreen-header{justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line);background:var(--panel)}.timeline-preview-fullscreen-actions>button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--line);border-radius:5px;color:var(--ink);background:var(--control-bg);font-size:11px;cursor:pointer}.timeline-preview-fullscreen-actions>button:hover,.timeline-preview-fullscreen-actions>button:focus-visible{border-color:var(--green);color:var(--control-fg-hover);background:var(--control-bg-hover)}.timeline-preview-fullscreen .timeline-preview-body{height:auto;padding:0}.timeline-preview-fullscreen-tracks{min-width:0;min-height:0}.notebook-timeline-preview{--timeline-label-width: 160px;width:100%;height:100%;font-size:11px;border:0;border-top:1px solid var(--line);border-radius:0}.notebook-timeline-preview .notebook-timeline-header{min-height:40px;flex-wrap:wrap;cursor:default}.notebook-timeline-preview .timeline-toolbar{flex-wrap:wrap;gap:6px}.notebook-timeline-preview .timeline-toolbar button{min-height:28px}@media(max-width:560px){.timeline-preview-fullscreen{grid-template-rows:48px minmax(0,1fr) min(300px,42dvh)}.timeline-preview-fullscreen-header{padding:0 12px}.timeline-preview-fullscreen-actions>button{width:32px;padding:0}.timeline-preview-fullscreen-actions>button>span{display:none}.notebook-timeline-preview{--timeline-label-width: 100px}.notebook-timeline-preview .notebook-timeline-header{gap:6px}.notebook-timeline-preview .timeline-toolbar{width:100%;margin-left:0;gap:4px}.notebook-timeline-preview .timeline-toolbar button{padding:3px 6px}}@media(max-height:500px){.timeline-preview-fullscreen{grid-template-rows:40px minmax(0,1fr) 170px}.notebook-timeline-preview .timeline-assembly>.timeline-track-video{height:48px}.notebook-timeline-preview .timeline-assembly>.timeline-track-video .timeline-clip img{width:54px;height:36px}}.timeline-preview-label{margin-left:4px;color:var(--green);font-size:9px;letter-spacing:.12em;text-transform:uppercase}.timeline-preview-format{display:flex;align-items:center;gap:14px;margin-right:6px;color:var(--ink);font-size:10px;font-variant-numeric:tabular-nums;letter-spacing:.02em;white-space:nowrap}.timeline-preview-format>span{color:var(--muted)}.timeline-preview-body{min-height:0;overflow:hidden;background:#000}.timeline-preview-fullscreen .canonical-player-preview{width:100%;height:100%;min-height:0;grid-template-rows:minmax(0,1fr) auto;margin:0;border:0;background:transparent}.timeline-preview-stage{display:grid;min-width:0;min-height:0;place-items:center}.timeline-preview-screen{overflow:hidden;background:#000}.timeline-preview-screen button{width:28px;height:28px!important;justify-content:center;padding:0!important;border-radius:4px;color:var(--ink)}.timeline-preview-screen button:hover{background:var(--row-bg-hover)!important;color:var(--control-fg-hover)}.timeline-preview-screen button svg{width:16px;height:16px}.timeline-preview-screen button:focus-visible{outline:2px solid var(--green);outline-offset:2px}.timeline-preview-screen button[aria-label="Play video"],.timeline-preview-screen button[aria-label="Pause video"]{color:var(--green)}.timeline-preview-fullscreen .canonical-player footer{align-items:center;gap:12px;min-height:34px;padding:8px 16px;font-variant-numeric:tabular-nums;letter-spacing:.02em}.timeline-preview-fullscreen .canonical-player-frame{color:var(--ink)}.timeline-preview-buffering{animation:timeline-preview-spin 1s linear infinite}@keyframes timeline-preview-spin{to{transform:rotate(360deg)}}@media(max-width:560px){.timeline-preview-format,.timeline-preview-fullscreen .canonical-player-shortcuts{display:none}}@media(prefers-reduced-motion:reduce){.timeline-preview-buffering{animation:none}}@media(max-height:500px){.timeline-preview-fullscreen .canonical-player footer{display:none}}
|