allyhub 0.5.0 → 0.6.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.
Files changed (125) hide show
  1. package/dist/commands/render.js +1 -1
  2. package/dist/commands/sheet.js +7 -7
  3. package/dist/commands/slides.js +1 -1
  4. package/dist/node_modules/@allyhub-next/audio/package.json +1 -1
  5. package/dist/node_modules/@allyhub-next/browser/package.json +1 -1
  6. package/dist/node_modules/@allyhub-next/build/package.json +1 -1
  7. package/dist/node_modules/@allyhub-next/chart/package.json +1 -1
  8. package/dist/node_modules/@allyhub-next/check/package.json +1 -1
  9. package/dist/node_modules/@allyhub-next/cloud/package.json +1 -1
  10. package/dist/node_modules/@allyhub-next/components/package.json +1 -1
  11. package/dist/node_modules/@allyhub-next/dev-server/dist/exports.js +1 -1
  12. package/dist/node_modules/@allyhub-next/dev-server/package.json +1 -1
  13. package/dist/node_modules/@allyhub-next/doc/package.json +1 -1
  14. package/dist/node_modules/@allyhub-next/export/dist/export.d.ts +2 -2
  15. package/dist/node_modules/@allyhub-next/export/dist/export.js +4 -4
  16. package/dist/node_modules/@allyhub-next/export/dist/names.d.ts +1 -1
  17. package/dist/node_modules/@allyhub-next/export/package.json +1 -1
  18. package/dist/node_modules/@allyhub-next/formats/dist/data/sheet.d.ts +179 -0
  19. package/dist/node_modules/@allyhub-next/formats/dist/data/sheet.js +1 -1
  20. package/dist/node_modules/@allyhub-next/formats/dist/data/slides.d.ts +303 -11
  21. package/dist/node_modules/@allyhub-next/formats/dist/data/slides.js +1 -1
  22. package/dist/node_modules/@allyhub-next/formats/dist/index.d.ts +1 -0
  23. package/dist/node_modules/@allyhub-next/formats/dist/index.js +1 -1
  24. package/dist/node_modules/@allyhub-next/formats/dist/items.js +1 -1
  25. package/dist/node_modules/@allyhub-next/formats/dist/schemas.d.ts +135 -3
  26. package/dist/node_modules/@allyhub-next/formats/dist/zip.d.ts +17 -0
  27. package/dist/node_modules/@allyhub-next/formats/dist/zip.js +2 -0
  28. package/dist/node_modules/@allyhub-next/formats/package.json +1 -1
  29. package/dist/node_modules/@allyhub-next/measure/package.json +1 -1
  30. package/dist/node_modules/@allyhub-next/media/package.json +1 -1
  31. package/dist/node_modules/@allyhub-next/model/package.json +1 -1
  32. package/dist/node_modules/@allyhub-next/project/package.json +1 -1
  33. package/dist/node_modules/@allyhub-next/protocol/dist/editor.d.ts +10 -0
  34. package/dist/node_modules/@allyhub-next/protocol/dist/editor.js +1 -1
  35. package/dist/node_modules/@allyhub-next/protocol/dist/notes.d.ts +2 -0
  36. package/dist/node_modules/@allyhub-next/protocol/dist/notes.js +1 -1
  37. package/dist/node_modules/@allyhub-next/protocol/package.json +1 -1
  38. package/dist/node_modules/@allyhub-next/registry/package.json +1 -1
  39. package/dist/node_modules/@allyhub-next/render/dist/exports.d.ts +2 -11
  40. package/dist/node_modules/@allyhub-next/render/dist/exports.js +2 -2
  41. package/dist/node_modules/@allyhub-next/render/dist/page.d.ts +1 -9
  42. package/dist/node_modules/@allyhub-next/render/package.json +1 -1
  43. package/dist/node_modules/@allyhub-next/runtime/package.json +1 -1
  44. package/dist/node_modules/@allyhub-next/runtimes/package.json +1 -1
  45. package/dist/node_modules/@allyhub-next/scaffold/package.json +1 -1
  46. package/dist/node_modules/@allyhub-next/scenery/package.json +1 -1
  47. package/dist/node_modules/@allyhub-next/scenery-host/package.json +1 -1
  48. package/dist/node_modules/@allyhub-next/sheet/dist/api/capabilities.js +1 -1
  49. package/dist/node_modules/@allyhub-next/sheet/dist/api/index.d.ts +1 -0
  50. package/dist/node_modules/@allyhub-next/sheet/dist/api/index.js +1 -1
  51. package/dist/node_modules/@allyhub-next/sheet/dist/api/page.d.ts +83 -0
  52. package/dist/node_modules/@allyhub-next/sheet/dist/api/page.js +2 -0
  53. package/dist/node_modules/@allyhub-next/sheet/dist/api/workbook.d.ts +40 -1
  54. package/dist/node_modules/@allyhub-next/sheet/dist/api/workbook.js +1 -1
  55. package/dist/node_modules/@allyhub-next/sheet/dist/check.js +1 -1
  56. package/dist/node_modules/@allyhub-next/sheet/dist/structure.js +1 -1
  57. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/charts.d.ts +2 -0
  58. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/charts.js +1 -1
  59. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/import.d.ts +3 -0
  60. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/import.js +1 -1
  61. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/read.d.ts +2 -1
  62. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/read.js +1 -1
  63. package/dist/node_modules/@allyhub-next/sheet/dist/xlsx/write.js +1 -1
  64. package/dist/node_modules/@allyhub-next/sheet/package.json +1 -1
  65. package/dist/node_modules/@allyhub-next/site/package.json +1 -1
  66. package/dist/node_modules/@allyhub-next/slides-core/dist/api.d.ts +64 -7
  67. package/dist/node_modules/@allyhub-next/slides-core/dist/api.js +2 -2
  68. package/dist/node_modules/@allyhub-next/slides-core/dist/capabilities.js +1 -1
  69. package/dist/node_modules/@allyhub-next/slides-core/dist/chart-api.d.ts +23 -0
  70. package/dist/node_modules/@allyhub-next/slides-core/dist/chart-api.js +1 -1
  71. package/dist/node_modules/@allyhub-next/slides-core/dist/chart-file.js +1 -1
  72. package/dist/node_modules/@allyhub-next/slides-core/dist/enums.d.ts +20 -0
  73. package/dist/node_modules/@allyhub-next/slides-core/dist/enums.js +1 -1
  74. package/dist/node_modules/@allyhub-next/slides-core/dist/index.d.ts +1 -0
  75. package/dist/node_modules/@allyhub-next/slides-core/dist/index.js +1 -1
  76. package/dist/node_modules/@allyhub-next/slides-core/dist/model.d.ts +37 -1
  77. package/dist/node_modules/@allyhub-next/slides-core/dist/office.d.ts +10 -0
  78. package/dist/node_modules/@allyhub-next/slides-core/dist/office.js +1 -1
  79. package/dist/node_modules/@allyhub-next/slides-core/dist/preset.d.ts +5 -0
  80. package/dist/node_modules/@allyhub-next/slides-core/dist/preset.js +2 -0
  81. package/dist/node_modules/@allyhub-next/slides-core/dist/resolve.d.ts +7 -2
  82. package/dist/node_modules/@allyhub-next/slides-core/dist/resolve.js +1 -1
  83. package/dist/node_modules/@allyhub-next/slides-core/package.json +1 -1
  84. package/dist/node_modules/@allyhub-next/slides-pptx/dist/charts.js +1 -1
  85. package/dist/node_modules/@allyhub-next/slides-pptx/dist/import.js +1 -1
  86. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read.d.ts +2 -1
  87. package/dist/node_modules/@allyhub-next/slides-pptx/dist/read.js +2 -2
  88. package/dist/node_modules/@allyhub-next/slides-pptx/dist/shapes.d.ts +6 -1
  89. package/dist/node_modules/@allyhub-next/slides-pptx/dist/shapes.js +1 -1
  90. package/dist/node_modules/@allyhub-next/slides-pptx/dist/text.d.ts +11 -0
  91. package/dist/node_modules/@allyhub-next/slides-pptx/dist/text.js +1 -1
  92. package/dist/node_modules/@allyhub-next/slides-pptx/dist/write.js +2 -2
  93. package/dist/node_modules/@allyhub-next/slides-pptx/dist/xml.d.ts +10 -4
  94. package/dist/node_modules/@allyhub-next/slides-pptx/dist/xml.js +2 -2
  95. package/dist/node_modules/@allyhub-next/slides-pptx/package.json +1 -1
  96. package/dist/node_modules/@allyhub-next/slides-runtime/dist/draw.d.ts +3 -0
  97. package/dist/node_modules/@allyhub-next/slides-runtime/dist/draw.js +2 -2
  98. package/dist/node_modules/@allyhub-next/slides-runtime/dist/edit.js +1 -1
  99. package/dist/node_modules/@allyhub-next/slides-runtime/package.json +1 -1
  100. package/dist/node_modules/@allyhub-next/stage/dist/graphics.js +1 -1
  101. package/dist/node_modules/@allyhub-next/stage/package.json +1 -1
  102. package/dist/node_modules/@allyhub-next/stage-page/dist/page.js +19 -19
  103. package/dist/node_modules/@allyhub-next/stage-page/package.json +1 -1
  104. package/dist/node_modules/@allyhub-next/video-core/package.json +1 -1
  105. package/editor-web/assets/dist-BW2s9FMO.js +4 -0
  106. package/editor-web/assets/{dist-CuW84oPe.js → dist-C-6JmebI.js} +22 -22
  107. package/editor-web/assets/dist-CCYMLMKN.js +6 -0
  108. package/editor-web/assets/dist-CHzurjMx.js +33 -0
  109. package/editor-web/assets/{dist-Yi3sy7Ea.js → dist-DF7H1dxw.js} +1 -1
  110. package/editor-web/assets/dist-Da5AUSKX.js +2 -0
  111. package/editor-web/assets/index-CovQYWvD.js +69 -0
  112. package/editor-web/assets/minus-BrvjaJyO.js +1 -0
  113. package/editor-web/assets/react-DV5fPdiH.js +101 -0
  114. package/editor-web/assets/{textarea-CvxipnGW.js → textarea-B0vCGdZI.js} +2 -2
  115. package/editor-web/assets/{trash-2-Bq1Dt8XG.js → trash-2-B0dvc1cZ.js} +1 -1
  116. package/editor-web/assets/{undo-2-Djhvu4xt.js → undo-2-A1EPubPO.js} +1 -1
  117. package/editor-web/index.html +2 -2
  118. package/package.json +2 -2
  119. package/editor-web/assets/dist-Cg2PdedY.js +0 -6
  120. package/editor-web/assets/dist-CxAS_vp7.js +0 -2
  121. package/editor-web/assets/dist-DCVaj9i1.js +0 -4
  122. package/editor-web/assets/dist-DGVUuVPB.js +0 -33
  123. package/editor-web/assets/index-pwRfZ2Jv.js +0 -69
  124. package/editor-web/assets/minus-BizJdinJ.js +0 -1
  125. package/editor-web/assets/react-D54s6gwK.js +0 -101
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{Ct as t,Ot as n,Rt as r,a as i,jt as a,kt as o,n as s,o as c,r as l,rn as u,s as d}from"./react-D54s6gwK.js";import{S as ee,r as f}from"./dist-Cg2PdedY.js";var te=n(`corner-up-left`,[[`path`,{d:`M20 20v-7a4 4 0 0 0-4-4H4`,key:`1nkjon`}],[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}]]),p=n(`zoom-in`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`line`,{x1:`21`,x2:`16.65`,y1:`21`,y2:`16.65`,key:`13gj7c`}],[`line`,{x1:`11`,x2:`11`,y1:`8`,y2:`14`,key:`1vmskp`}],[`line`,{x1:`8`,x2:`14`,y1:`11`,y2:`11`,key:`durymu`}]]),m=e(u(),1),h=o(),ne=a({en:{title:`3D scenery`,loading:`Loading the scenery`,loadFailed:`The scenery did not load`,zoomIn:`Zoom in`,back:`Back`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},"zh-cn":{title:`3D 布景`,loading:`正在加载布景`,loadFailed:`布景没能加载`,zoomIn:`放大`,back:`返回`,size:(e,t,n)=>`${e} × ${t} × ${n} 米`},"zh-tw":{title:`3D 布景`,loading:`正在載入布景`,loadFailed:`布景無法載入`,zoomIn:`放大`,back:`返回`,size:(e,t,n)=>`${e} × ${t} × ${n} 公尺`},ja:{title:`3D セット`,loading:`セットを読み込み中`,loadFailed:`セットを読み込めませんでした`,zoomIn:`ズームイン`,back:`戻る`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},ko:{title:`3D 세트`,loading:`세트를 불러오는 중`,loadFailed:`세트를 불러오지 못했습니다`,zoomIn:`확대`,back:`뒤로`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},es:{title:`Decorado 3D`,loading:`Cargando el decorado`,loadFailed:`El decorado no se cargó`,zoomIn:`Acercar`,back:`Atrás`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},fr:{title:`Décor 3D`,loading:`Chargement du décor`,loadFailed:`Le décor ne s’est pas chargé`,zoomIn:`Zoomer`,back:`Retour`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},de:{title:`3D-Kulisse`,loading:`Kulisse wird geladen`,loadFailed:`Die Kulisse wurde nicht geladen`,zoomIn:`Heranzoomen`,back:`Zurück`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},it:{title:`Scenografia 3D`,loading:`Caricamento della scenografia`,loadFailed:`Impossibile caricare la scenografia`,zoomIn:`Ingrandisci`,back:`Indietro`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},pt:{title:`Cenário 3D`,loading:`Carregando o cenário`,loadFailed:`O cenário não carregou`,zoomIn:`Aproximar`,back:`Voltar`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},ru:{title:`3D-декорация`,loading:`Загрузка декорации`,loadFailed:`Декорация не загрузилась`,zoomIn:`Приблизить`,back:`Назад`,size:(e,t,n)=>`${e} × ${t} × ${n} м`},tr:{title:`3D dekor`,loading:`Dekor yükleniyor`,loadFailed:`Dekor yüklenmedi`,zoomIn:`Yakınlaştır`,back:`Geri`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},vi:{title:`Bối cảnh 3D`,loading:`Đang tải bối cảnh`,loadFailed:`Không tải được bối cảnh`,zoomIn:`Phóng to`,back:`Quay lại`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},th:{title:`ฉาก 3D`,loading:`กำลังโหลดฉาก`,loadFailed:`โหลดฉากไม่สำเร็จ`,zoomIn:`ซูมเข้า`,back:`ย้อนกลับ`,size:(e,t,n)=>`${e} × ${t} × ${n} ม.`},hi:{title:`3D सेट`,loading:`सेट लोड हो रहा है`,loadFailed:`सेट लोड नहीं हुआ`,zoomIn:`ज़ूम इन`,back:`वापस`,size:(e,t,n)=>`${e} × ${t} × ${n} मी`}}),g=8;function _(e,t,n,r=8){let i={left:n.left+g,top:n.top+g},a={left:Math.max(i.left,n.right-g-t.width),top:Math.max(i.top,n.bottom-g-t.height)},o=e=>Math.max(i.left,Math.min(e,a.left)),s=e=>Math.max(i.top,Math.min(e,a.top)),c=o(e.left),l=e.bottom+r;if(l<=a.top)return{left:c,top:l};let u=e.top-r-t.height;if(u>=i.top)return{left:c,top:u};let d=e.right+r;return{left:d<=a.left?d:o(e.left-r-t.width),top:s((e.top+e.bottom)/2-t.height/2)}}var v=e=>e>=1?e.toFixed(2):e>=.1?e.toFixed(3):e.toFixed(4),re=1500,y={width:300,height:56},b=e=>[e[0],e[1],e[2]],x=e=>Array.isArray(e)&&e.length===3&&e.every(e=>typeof e==`number`);function S(e){if(typeof e!=`object`||!e)return;let t=e;if(t.allyhub===!0){if(t.type===`error`)return{type:`error`,message:typeof t.message==`string`?t.message:``};if(t.type===`scenery`&&typeof t.event==`object`)return{type:`scenery`,event:t.event}}}function C({className:e}){return(0,h.jsxs)(`div`,{className:`flex size-full min-h-0 flex-col`,children:[(0,h.jsx)(f,{}),(0,h.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,h.jsx)(w,{...e===void 0?{}:{className:e}})})]})}function w({className:e}){let n=s(),a=l(),o=ne.of(a?.locale),u=a?.item,f=u?.dir,g=u?.entry,C=(0,m.useRef)(null),w=(0,m.useRef)(null),T=(0,m.useRef)(void 0),[E,ie]=(0,m.useState)({n:0}),[D,O]=(0,m.useState)(),[k,A]=(0,m.useState)(),j=c(k),[M,N]=(0,m.useState)(),[P,F]=(0,m.useState)(),[I,L]=(0,m.useState)([]),[R,z]=(0,m.useState)(null),[B,V]=(0,m.useState)({hover:null,select:null}),[H,U]=(0,m.useState)(!1);(0,m.useEffect)(()=>{if(f===void 0)return;let e=!0,t=E.from;return r(n,`scenery/viewer`,{item:f,...t?{camera:{position:b(t.position),target:b(t.target)}}:{}}).then(t=>{e&&(O({n:E.n,url:t.url}),A(t.probe))},t=>{e&&F({n:E.n,message:t instanceof Error?t.message:String(t)})}),()=>{e=!1}},[n,f,E]),(0,m.useEffect)(()=>{if(f===void 0)return;let e,t=!0,r=n.on(`files/changed`,t=>{if(t.watch!==e)return;let n=T.current;ie(e=>({n:e.n+1,...n?{from:n}:{}}))});return n[`files/watch`]({paths:[f,`components`,`assets`]}).then(r=>{t?e=r.watch:n[`files/unwatch`]({watch:r.watch})},()=>void 0),()=>{t=!1,r(),e!==void 0&&n[`files/unwatch`]({watch:e})}},[n,f]);let W=(0,m.useCallback)(e=>{C.current?.contentWindow?.postMessage({allyhub:!0,command:e},`*`)},[]),G=(0,m.useRef)([]),K=(0,m.useRef)(new Map),q=(0,m.useRef)(!1);i({freeze:()=>Promise.resolve({key:`${f??``}@${String(E.n)}@${JSON.stringify(T.current??null)}`,what:`The 3D scene ${f??``}`,...g===void 0?{}:{source:{path:g}}}),pictures:()=>new Promise(e=>{let t=C.current?.getBoundingClientRect();G.current.push(n=>{e(t?[{rect:{x:t.x,y:t.y,width:t.width,height:t.height},mime:n.slice(5,n.indexOf(`;`)),data:n.slice(n.indexOf(`,`)+1)}]:[])}),q.current&&W({type:`shot`})}),locate:async e=>{let t=C.current?.getBoundingClientRect(),n=await Promise.all(ee(e).map(({x:e,y:n})=>new Promise(r=>{let i=crypto.randomUUID(),a=setTimeout(()=>{K.current.delete(i),r(null)},re);K.current.set(i,e=>{clearTimeout(a),r(e)}),W({type:`pick`,id:i,x:e-(t?.x??0),y:n-(t?.y??0)})})));return[...new Set(n.flatMap(e=>e?[e.path.join(` > `)]:[]))].map(e=>({name:`the object ${e}`,...g===void 0?{}:{source:{path:g}}}))}});let J=(0,m.useRef)(null);(0,m.useEffect)(()=>{J.current=R},[R]),(0,m.useEffect)(()=>{let e=e=>{if(!D||e.source!==C.current?.contentWindow)return;let t=S(e.data);if(!t)return;if(t.type===`error`){F({n:D.n,message:t.message});return}let n=t.event;switch(n.type){case`ready`:N(D.n),L(n.cameras),q.current=!0,G.current.forEach(()=>{W({type:`shot`})}),J.current&&W({type:`select`,path:J.current.path});return;case`select`:z(n.object);return;case`camera`:{let e=n.camera;x(e.target)&&(T.current={position:e.position,target:e.target,...e.lens===void 0?{}:{lens:e.lens}}),U(n.framed);return}case`place`:V({hover:n.hover,select:n.select});return;case`shot`:G.current.shift()?.(n.picture);return;case`picked`:K.current.get(n.id)?.(n.object),K.current.delete(n.id);return;default:return}};return window.addEventListener(`message`,e),()=>{window.removeEventListener(`message`,e)}},[W,n,D]);let ae=(0,m.useCallback)(()=>{R&&W({type:`select`,path:null}),z(null)},[W,R]),[Y,oe]=(0,m.useState)({width:0,height:0});(0,m.useEffect)(()=>{let e=w.current;if(!e)return;let t=new ResizeObserver(()=>{oe({width:e.clientWidth,height:e.clientHeight})});return t.observe(e),()=>{t.disconnect()}},[]);let X=R?B.select:null,Z=R&&X?_({left:X.x,top:X.y,right:X.x+X.width,bottom:X.y+X.height},y,{left:0,top:0,right:Y.width,bottom:Y.height}):void 0,Q=D!==void 0&&M===D.n,$=P?.n===E.n?P.message:void 0;return(0,h.jsxs)(`div`,{ref:w,"data-testid":`scenery-viewer`,className:t(`bg-paper relative size-full overflow-hidden`,e),onKeyDown:e=>{e.key===`Escape`&&R&&ae()},children:[D&&j!==void 0&&(0,h.jsx)(`iframe`,{ref:C,src:D.url,title:o.title,...j?{sandbox:`allow-scripts`}:{},"data-testid":`scenery-frame`,...Q?{"data-ready":``}:{},className:t(`absolute inset-0 size-full border-0 transition-opacity`,Q?`opacity-100`:`opacity-0`)},D.n),!Q&&$===void 0&&(0,h.jsx)(`p`,{className:`text-lead absolute inset-0 grid place-items-center text-sm`,children:o.loading}),$!==void 0&&(0,h.jsxs)(`div`,{role:`alert`,className:`absolute inset-x-6 top-6 text-sm`,"data-testid":`scenery-error`,children:[(0,h.jsx)(`p`,{className:`text-problem-text`,children:o.loadFailed}),$&&(0,h.jsx)(`p`,{className:`text-lead mt-1 font-mono text-xs`,children:$})]}),Q&&B.hover&&(0,h.jsx)(`div`,{"aria-hidden":!0,className:`border-pencil pointer-events-none absolute rounded-sm border border-dashed`,style:{left:B.hover.x,top:B.hover.y,width:B.hover.width,height:B.hover.height}}),Q&&R&&B.select&&(0,h.jsx)(`div`,{"aria-hidden":!0,className:`border-pencil pointer-events-none absolute rounded-sm border-2`,style:{left:B.select.x,top:B.select.y,width:B.select.width,height:B.select.height}}),Q&&(0,h.jsxs)(`div`,{className:`pointer-events-none absolute inset-x-3 bottom-3 flex flex-wrap items-center gap-1.5`,children:[I.map(e=>(0,h.jsx)(d,{size:`sm`,variant:`outline`,className:`bg-card pointer-events-auto`,"data-testid":`scenery-camera`,onClick:()=>{W({type:`camera`,name:e})},children:e},e)),H&&(0,h.jsxs)(d,{size:`sm`,variant:`outline`,className:`bg-card pointer-events-auto ml-auto`,"data-testid":`scenery-back`,onClick:()=>{W({type:`back`})},children:[(0,h.jsx)(te,{size:14}),o.back]})]}),Z&&R&&(0,h.jsxs)(`div`,{role:`dialog`,"aria-label":R.path.join(` › `),"data-testid":`scenery-card`,className:`bg-card animate-set-in shadow-overlay absolute z-10 flex items-start gap-2 rounded-lg border p-3`,style:{left:Z.left,top:Z.top,width:y.width},children:[(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`p`,{className:`truncate text-sm font-semibold`,children:R.path.join(` › `)}),(0,h.jsx)(`p`,{className:`text-lead text-xs`,children:o.size(v(R.size[0]),v(R.size[1]),v(R.size[2]))})]}),(0,h.jsxs)(d,{size:`sm`,variant:`ghost`,"data-testid":`scenery-zoom`,onClick:()=>{W({type:`frame`,path:R.path})},children:[(0,h.jsx)(p,{size:14}),o.zoomIn]})]})]})}export{C as SceneryViewer};
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{Bt as t,Pt as n,Ut as r,Vt as i,Xt as a,a as o,g as s,gn as c,n as l,o as u,r as d}from"./react-DV5fPdiH.js";import{C as ee,r as f}from"./dist-CCYMLMKN.js";var p=t(`corner-up-left`,[[`path`,{d:`M20 20v-7a4 4 0 0 0-4-4H4`,key:`1nkjon`}],[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}]]),te=t(`zoom-in`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`line`,{x1:`21`,x2:`16.65`,y1:`21`,y2:`16.65`,key:`13gj7c`}],[`line`,{x1:`11`,x2:`11`,y1:`8`,y2:`14`,key:`1vmskp`}],[`line`,{x1:`8`,x2:`14`,y1:`11`,y2:`11`,key:`durymu`}]]),m=e(c(),1),h=i(),ne=r({en:{title:`3D scenery`,loading:`Loading the scenery`,loadFailed:`The scenery did not load`,zoomIn:`Zoom in`,back:`Back`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},"zh-cn":{title:`3D 布景`,loading:`正在加载布景`,loadFailed:`布景没能加载`,zoomIn:`放大`,back:`返回`,size:(e,t,n)=>`${e} × ${t} × ${n} 米`},"zh-tw":{title:`3D 布景`,loading:`正在載入布景`,loadFailed:`布景無法載入`,zoomIn:`放大`,back:`返回`,size:(e,t,n)=>`${e} × ${t} × ${n} 公尺`},ja:{title:`3D セット`,loading:`セットを読み込み中`,loadFailed:`セットを読み込めませんでした`,zoomIn:`ズームイン`,back:`戻る`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},ko:{title:`3D 세트`,loading:`세트를 불러오는 중`,loadFailed:`세트를 불러오지 못했습니다`,zoomIn:`확대`,back:`뒤로`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},es:{title:`Decorado 3D`,loading:`Cargando el decorado`,loadFailed:`El decorado no se cargó`,zoomIn:`Acercar`,back:`Atrás`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},fr:{title:`Décor 3D`,loading:`Chargement du décor`,loadFailed:`Le décor ne s’est pas chargé`,zoomIn:`Zoomer`,back:`Retour`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},de:{title:`3D-Kulisse`,loading:`Kulisse wird geladen`,loadFailed:`Die Kulisse wurde nicht geladen`,zoomIn:`Heranzoomen`,back:`Zurück`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},it:{title:`Scenografia 3D`,loading:`Caricamento della scenografia`,loadFailed:`Impossibile caricare la scenografia`,zoomIn:`Ingrandisci`,back:`Indietro`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},pt:{title:`Cenário 3D`,loading:`Carregando o cenário`,loadFailed:`O cenário não carregou`,zoomIn:`Aproximar`,back:`Voltar`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},ru:{title:`3D-декорация`,loading:`Загрузка декорации`,loadFailed:`Декорация не загрузилась`,zoomIn:`Приблизить`,back:`Назад`,size:(e,t,n)=>`${e} × ${t} × ${n} м`},tr:{title:`3D dekor`,loading:`Dekor yükleniyor`,loadFailed:`Dekor yüklenmedi`,zoomIn:`Yakınlaştır`,back:`Geri`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},vi:{title:`Bối cảnh 3D`,loading:`Đang tải bối cảnh`,loadFailed:`Không tải được bối cảnh`,zoomIn:`Phóng to`,back:`Quay lại`,size:(e,t,n)=>`${e} × ${t} × ${n} m`},th:{title:`ฉาก 3D`,loading:`กำลังโหลดฉาก`,loadFailed:`โหลดฉากไม่สำเร็จ`,zoomIn:`ซูมเข้า`,back:`ย้อนกลับ`,size:(e,t,n)=>`${e} × ${t} × ${n} ม.`},hi:{title:`3D सेट`,loading:`सेट लोड हो रहा है`,loadFailed:`सेट लोड नहीं हुआ`,zoomIn:`ज़ूम इन`,back:`वापस`,size:(e,t,n)=>`${e} × ${t} × ${n} मी`}}),g=8;function re(e,t,n,r=8){let i={left:n.left+g,top:n.top+g},a={left:Math.max(i.left,n.right-g-t.width),top:Math.max(i.top,n.bottom-g-t.height)},o=e=>Math.max(i.left,Math.min(e,a.left)),s=e=>Math.max(i.top,Math.min(e,a.top)),c=o(e.left),l=e.bottom+r;if(l<=a.top)return{left:c,top:l};let u=e.top-r-t.height;if(u>=i.top)return{left:c,top:u};let d=e.right+r;return{left:d<=a.left?d:o(e.left-r-t.width),top:s((e.top+e.bottom)/2-t.height/2)}}var _=e=>e>=1?e.toFixed(2):e>=.1?e.toFixed(3):e.toFixed(4),v=1500,y={width:300,height:56},b=e=>[e[0],e[1],e[2]],x=e=>Array.isArray(e)&&e.length===3&&e.every(e=>typeof e==`number`);function S(e){if(typeof e!=`object`||!e)return;let t=e;if(t.allyhub===!0){if(t.type===`error`)return{type:`error`,message:typeof t.message==`string`?t.message:``};if(t.type===`scenery`&&typeof t.event==`object`)return{type:`scenery`,event:t.event}}}function C({className:e}){return(0,h.jsxs)(`div`,{className:`flex size-full min-h-0 flex-col`,children:[(0,h.jsx)(f,{}),(0,h.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,h.jsx)(w,{...e===void 0?{}:{className:e}})})]})}function w({className:e}){let t=l(),r=d(),i=ne.of(r?.locale),c=r?.item,f=c?.dir,g=c?.entry,C=(0,m.useRef)(null),w=(0,m.useRef)(null),T=(0,m.useRef)(void 0),[E,ie]=(0,m.useState)({n:0}),[D,O]=(0,m.useState)(),[k,A]=(0,m.useState)(),j=u(k),[M,N]=(0,m.useState)(),[P,F]=(0,m.useState)(),[I,L]=(0,m.useState)([]),[R,z]=(0,m.useState)(null),[B,V]=(0,m.useState)({hover:null,select:null}),[H,U]=(0,m.useState)(!1);(0,m.useEffect)(()=>{if(f===void 0)return;let e=!0,n=E.from;return a(t,`scenery/viewer`,{item:f,...n?{camera:{position:b(n.position),target:b(n.target)}}:{}}).then(t=>{e&&(O({n:E.n,url:t.url}),A(t.probe))},t=>{e&&F({n:E.n,message:t instanceof Error?t.message:String(t)})}),()=>{e=!1}},[t,f,E]),(0,m.useEffect)(()=>{if(f===void 0)return;let e,n=!0,r=t.on(`files/changed`,t=>{if(t.watch!==e)return;let n=T.current;ie(e=>({n:e.n+1,...n?{from:n}:{}}))});return t[`files/watch`]({paths:[f,`components`,`assets`]}).then(r=>{n?e=r.watch:t[`files/unwatch`]({watch:r.watch})},()=>void 0),()=>{n=!1,r(),e!==void 0&&t[`files/unwatch`]({watch:e})}},[t,f]);let W=(0,m.useCallback)(e=>{C.current?.contentWindow?.postMessage({allyhub:!0,command:e},`*`)},[]),G=(0,m.useRef)([]),K=(0,m.useRef)(new Map),q=(0,m.useRef)(!1);o({freeze:()=>Promise.resolve({key:`${f??``}@${String(E.n)}@${JSON.stringify(T.current??null)}`,what:`The 3D scene ${f??``}`,...g===void 0?{}:{source:{path:g}}}),pictures:()=>new Promise(e=>{let t=C.current?.getBoundingClientRect();G.current.push(n=>{e(t?[{rect:{x:t.x,y:t.y,width:t.width,height:t.height},mime:n.slice(5,n.indexOf(`;`)),data:n.slice(n.indexOf(`,`)+1)}]:[])}),q.current&&W({type:`shot`})}),locate:async e=>{let t=C.current?.getBoundingClientRect(),n=await Promise.all(ee(e).map(({x:e,y:n})=>new Promise(r=>{let i=crypto.randomUUID(),a=setTimeout(()=>{K.current.delete(i),r(null)},v);K.current.set(i,e=>{clearTimeout(a),r(e)}),W({type:`pick`,id:i,x:e-(t?.x??0),y:n-(t?.y??0)})})));return[...new Set(n.flatMap(e=>e?[e.path.join(` > `)]:[]))].map(e=>({name:`the object ${e}`,...g===void 0?{}:{source:{path:g}}}))}});let J=(0,m.useRef)(null);(0,m.useEffect)(()=>{J.current=R},[R]),(0,m.useEffect)(()=>{let e=e=>{if(!D||e.source!==C.current?.contentWindow)return;let t=S(e.data);if(!t)return;if(t.type===`error`){F({n:D.n,message:t.message});return}let n=t.event;switch(n.type){case`ready`:N(D.n),L(n.cameras),q.current=!0,G.current.forEach(()=>{W({type:`shot`})}),J.current&&W({type:`select`,path:J.current.path});return;case`select`:z(n.object);return;case`camera`:{let e=n.camera;x(e.target)&&(T.current={position:e.position,target:e.target,...e.lens===void 0?{}:{lens:e.lens}}),U(n.framed);return}case`place`:V({hover:n.hover,select:n.select});return;case`shot`:G.current.shift()?.(n.picture);return;case`picked`:K.current.get(n.id)?.(n.object),K.current.delete(n.id);return;default:return}};return window.addEventListener(`message`,e),()=>{window.removeEventListener(`message`,e)}},[W,t,D]);let ae=(0,m.useCallback)(()=>{R&&W({type:`select`,path:null}),z(null)},[W,R]),[Y,oe]=(0,m.useState)({width:0,height:0});(0,m.useEffect)(()=>{let e=w.current;if(!e)return;let t=new ResizeObserver(()=>{oe({width:e.clientWidth,height:e.clientHeight})});return t.observe(e),()=>{t.disconnect()}},[]);let X=R?B.select:null,Z=R&&X?re({left:X.x,top:X.y,right:X.x+X.width,bottom:X.y+X.height},y,{left:0,top:0,right:Y.width,bottom:Y.height}):void 0,Q=D!==void 0&&M===D.n,$=P?.n===E.n?P.message:void 0;return(0,h.jsxs)(`div`,{ref:w,"data-testid":`scenery-viewer`,className:n(`bg-paper relative size-full overflow-hidden`,e),onKeyDown:e=>{e.key===`Escape`&&R&&ae()},children:[D&&j!==void 0&&(0,h.jsx)(`iframe`,{ref:C,src:D.url,title:i.title,...j?{sandbox:`allow-scripts`}:{},"data-testid":`scenery-frame`,...Q?{"data-ready":``}:{},className:n(`absolute inset-0 size-full border-0 transition-opacity`,Q?`opacity-100`:`opacity-0`)},D.n),!Q&&$===void 0&&(0,h.jsx)(`p`,{className:`text-lead absolute inset-0 grid place-items-center text-sm`,children:i.loading}),$!==void 0&&(0,h.jsxs)(`div`,{role:`alert`,className:`absolute inset-x-6 top-6 text-sm`,"data-testid":`scenery-error`,children:[(0,h.jsx)(`p`,{className:`text-problem-text`,children:i.loadFailed}),$&&(0,h.jsx)(`p`,{className:`text-lead mt-1 font-mono text-xs`,children:$})]}),Q&&B.hover&&(0,h.jsx)(`div`,{"aria-hidden":!0,className:`border-pencil pointer-events-none absolute rounded-sm border border-dashed`,style:{left:B.hover.x,top:B.hover.y,width:B.hover.width,height:B.hover.height}}),Q&&R&&B.select&&(0,h.jsx)(`div`,{"aria-hidden":!0,className:`border-pencil pointer-events-none absolute rounded-sm border-2`,style:{left:B.select.x,top:B.select.y,width:B.select.width,height:B.select.height}}),Q&&(0,h.jsxs)(`div`,{className:`pointer-events-none absolute inset-x-3 bottom-3 flex flex-wrap items-center gap-1.5`,children:[I.map(e=>(0,h.jsx)(s,{size:`sm`,variant:`outline`,className:`bg-card pointer-events-auto`,"data-testid":`scenery-camera`,onClick:()=>{W({type:`camera`,name:e})},children:e},e)),H&&(0,h.jsxs)(s,{size:`sm`,variant:`outline`,className:`bg-card pointer-events-auto ml-auto`,"data-testid":`scenery-back`,onClick:()=>{W({type:`back`})},children:[(0,h.jsx)(p,{size:14}),i.back]})]}),Z&&R&&(0,h.jsxs)(`div`,{role:`dialog`,"aria-label":R.path.join(` › `),"data-testid":`scenery-card`,className:`bg-card animate-set-in shadow-overlay absolute z-10 flex items-start gap-2 rounded-lg border p-3`,style:{left:Z.left,top:Z.top,width:y.width},children:[(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`p`,{className:`truncate text-sm font-semibold`,children:R.path.join(` › `)}),(0,h.jsx)(`p`,{className:`text-lead text-xs`,children:i.size(_(R.size[0]),_(R.size[1]),_(R.size[2]))})]}),(0,h.jsxs)(s,{size:`sm`,variant:`ghost`,"data-testid":`scenery-zoom`,onClick:()=>{W({type:`frame`,path:R.path})},children:[(0,h.jsx)(te,{size:14}),i.zoomIn]})]})]})}export{C as SceneryViewer};
@@ -0,0 +1,2 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-XKyaHtl9.js";import{At as n,Bt as r,C as i,Ct as a,Dt as o,Ht as s,Lt as c,Ot as l,Pt as u,Rt as d,S as f,St as p,Tt as m,Ut as h,Vt as g,Wt as _,Xt as v,a as y,b,g as x,gn as S,i as C,jt as w,n as T,o as E,pt as D,r as ee,vt as te,w as O,wt as k,x as ne,xt as A}from"./react-DV5fPdiH.js";import{S as re,_ as j,b as ie,d as ae,f as oe,g as se,m as ce,p as M,r as le,v as ue,w as de}from"./dist-CCYMLMKN.js";import{p as fe}from"./index-CovQYWvD.js";var pe=r(`audio-lines`,[[`path`,{d:`M2 10v3`,key:`1fnikh`}],[`path`,{d:`M6 6v11`,key:`11sgs0`}],[`path`,{d:`M10 3v18`,key:`yhl04a`}],[`path`,{d:`M14 8v7`,key:`3a1oy3`}],[`path`,{d:`M18 5v13`,key:`123xd1`}],[`path`,{d:`M22 10v3`,key:`154ddg`}]]),me=r(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),N=r(`music`,[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]),he=r(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),ge=r(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),P=t(S(),1),F=g(),I=Object.defineProperty,L=(e,t)=>I(e,`name`,{value:t,configurable:!0}),[_e,ve]=o(`Tooltip`,[O]),R=O(),z=`TooltipProvider`,ye=700,B=`tooltip.open`,[be,V]=_e(z),xe=L(e=>{let{__scopeTooltip:t,delayDuration:n=ye,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=P.useRef(!0),s=P.useRef(!1),c=P.useRef(0);return P.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,F.jsx)(be,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:P.useCallback(()=>{r<=0||(window.clearTimeout(c.current),o.current=!1)},[r]),onClose:P.useCallback(()=>{r<=0||(window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:s,onPointerInTransitChange:P.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),H=`Tooltip`,[Se,U]=_e(H),Ce=L(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:o,disableHoverableContent:s,delayDuration:c}=e,l=V(H,e.__scopeTooltip),u=R(t),[d,f]=P.useState(null),[p,m]=P.useState(void 0),h=A(),g=P.useRef(0),_=s??l.disableHoverableContent,v=c??l.delayDuration,y=P.useRef(!1),[x,S]=a({prop:r,defaultProp:i??!1,onChange:L(e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(B))):l.onClose(),o?.(e)},`onChange`),caller:H}),C=P.useMemo(()=>x?y.current?`delayed-open`:`instant-open`:`closed`,[x]),w=P.useCallback(()=>{window.clearTimeout(g.current),g.current=0,y.current=!1,S(!0)},[S]),T=P.useCallback(()=>{window.clearTimeout(g.current),g.current=0,S(!1)},[S]),E=P.useCallback(()=>{window.clearTimeout(g.current),g.current=window.setTimeout(()=>{y.current=!0,S(!0),g.current=0},v)},[v,S]);P.useEffect(()=>()=>{g.current&&=(window.clearTimeout(g.current),0)},[]);let D=p??h;return(0,F.jsx)(b,{...u,children:(0,F.jsx)(Se,{scope:t,contentId:D,setContentId:m,open:x,stateAttribute:C,trigger:d,onTriggerChange:f,onTriggerEnter:P.useCallback(()=>{l.isOpenDelayedRef.current?E():w()},[l.isOpenDelayedRef,E,w]),onTriggerLeave:P.useCallback(()=>{_?T():(window.clearTimeout(g.current),g.current=0)},[T,_]),onOpen:w,onClose:T,disableHoverableContent:_,children:n})})},`Tooltip`),we=`TooltipTrigger`,Te=P.forwardRef(L(function(e,t){let{__scopeTooltip:n,"aria-describedby":r,...i}=e,a=U(we,n),o=V(we,n),s=R(n),c=P.useRef(null),u=w(t,c,a.onTriggerChange),d=P.useRef(!1),f=P.useRef(!1),p=P.useCallback(()=>d.current=!1,[]);return P.useEffect(()=>()=>document.removeEventListener(`pointerup`,p),[p]),(0,F.jsx)(ne,{asChild:!0,...s,children:(0,F.jsx)(l.button,{"aria-describedby":a.open?ze(r,a.contentId):r,"data-state":a.stateAttribute,...i,ref:u,onPointerMove:m(e.onPointerMove,e=>{e.pointerType!==`touch`&&!f.current&&!o.isPointerInTransitRef.current&&(a.onTriggerEnter(),f.current=!0)}),onPointerLeave:m(e.onPointerLeave,()=>{a.onTriggerLeave(),f.current=!1}),onPointerDown:m(e.onPointerDown,()=>{a.open&&a.onClose(),d.current=!0,document.addEventListener(`pointerup`,p,{once:!0})}),onFocus:m(e.onFocus,()=>{d.current||a.onOpen()}),onBlur:m(e.onBlur,a.onClose),onClick:m(e.onClick,a.onClose)})})},`TooltipTrigger`)),Ee=`TooltipPortal`,[W,De]=_e(Ee,{forceMount:void 0}),Oe=L(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=U(Ee,t);return(0,F.jsx)(W,{scope:t,forceMount:n,children:(0,F.jsx)(p,{present:n||a.open,children:(0,F.jsx)(D,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),G=`TooltipContent`,ke=P.forwardRef(L(function(e,t){let n=De(G,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=U(G,e.__scopeTooltip);return(0,F.jsx)(p,{present:r||o.open,children:o.disableHoverableContent?(0,F.jsx)(je,{side:i,...a,ref:t}):(0,F.jsx)(K,{side:i,...a,ref:t})})},`TooltipContent`)),K=P.forwardRef(L(function(e,t){let n=U(G,e.__scopeTooltip),r=V(G,e.__scopeTooltip),i=P.useRef(null),a=w(t,i),[o,s]=P.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=P.useCallback(()=>{s(null),d(!1)},[d]),p=P.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Pe(r,Ne(r,n.getBoundingClientRect())),a=Fe(t.getBoundingClientRect()),o=Le([...i,...a]);s(o),d(!0)},[d]);return P.useEffect(()=>()=>f(),[f]),P.useEffect(()=>{if(c&&u){let e=L(e=>p(e,u),`handleTriggerLeave`),t=L(e=>p(e,c),`handleContentLeave`);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),P.useEffect(()=>{if(o){let e=L(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!Ie(n,o);r?f():i&&(f(),l())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,F.jsx)(je,{...e,ref:a})},`TooltipContentHoverable`)),Ae=n(`TooltipContent`),je=P.forwardRef(L(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":a,id:o,onEscapeKeyDown:s,onPointerDownOutside:c,...l}=e,u=U(G,n),d=R(n),{onClose:f}=u;P.useEffect(()=>(document.addEventListener(B,f),()=>document.removeEventListener(B,f)),[f]),P.useEffect(()=>{if(u.trigger){let e=L(e=>{e.target instanceof Node&&e.target.contains(u.trigger)&&f()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[u.trigger,f]);let{setContentId:p}=u;return k(()=>(p(o),()=>{p(void 0)}),[o,p]),(0,F.jsx)(te,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:f,children:(0,F.jsxs)(i,{"data-state":u.stateAttribute,role:a?void 0:`tooltip`,id:a?void 0:u.contentId,...d,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,F.jsx)(Ae,{children:r}),a?(0,F.jsx)(j,{id:u.contentId,role:`tooltip`,children:a}):null]})})},`TooltipContentImpl`)),Me=P.forwardRef(L(function(e,t){let{__scopeTooltip:n,...r}=e,i=R(n);return(0,F.jsx)(f,{...i,...r,ref:t})},`TooltipArrow`));function Ne(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}L(Ne,`getExitSideFromRect`);function Pe(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}L(Pe,`getPaddedExitPoints`);function Fe(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}L(Fe,`getPointsFromRect`);function Ie(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}L(Ie,`isPointInPolygon`);function Le(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),Re(t)}L(Le,`getHull`);function Re(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}L(Re,`getHullPresorted`);function ze(...e){let t=new Set;for(let n of e)if(typeof n==`string`)for(let e of String(n).trim().split(/\s+/))e&&t.add(e);return t.size>0?Array.from(t).join(` `):void 0}L(ze,`concatAriaDescribedby`);function Be({className:e,...t}){return(0,F.jsx)(`span`,{className:u(`text-muted-foreground font-mono text-micro leading-4 font-normal tracking-label uppercase`,e),...t})}function Ve({label:e,count:t=4,size:n=10,className:r}){return(0,F.jsx)(`span`,{role:`status`,"aria-label":e,className:u(`inline-flex items-end gap-[3px]`,r),children:Array.from({length:t},(e,t)=>(0,F.jsx)(`span`,{className:`bg-foreground animate-squares-drop block`,style:{width:n,height:n,animationDelay:`${String(t*120)}ms`}},t))})}function He({title:e,children:t,action:n,className:r}){return(0,F.jsxs)(`div`,{className:u(`animate-set-in flex flex-col items-center gap-5 px-6 py-16 text-center`,r),children:[(0,F.jsxs)(`div`,{className:`flex max-w-sm flex-col gap-1.5`,children:[(0,F.jsx)(`h2`,{className:`font-serif text-heading font-semibold`,children:e}),t?(0,F.jsx)(`div`,{className:`text-muted-foreground text-sm leading-relaxed`,children:t}):null]}),n]})}var Ue=e=>Number.isFinite(e)&&e>0?e:0,q=e=>{let t=Ue(e);return`${String(Math.floor(t/60))}:${String(Math.floor(t%60)).padStart(2,`0`)}`},J=e=>{let t=Ue(e);return`${String(Math.floor(t/60))}:${(t%60).toFixed(1).padStart(4,`0`)}`},Y=(e,t)=>Math.floor(e*t+1e-9)/t,We=e=>e.split(/[/\\]/u).at(-1)??e,Ge={loading:`Vorschau wird geladen`,loadFailed:`Die Vorschau wurde nicht geladen`,noVideo:`Das ist kein Video`,previewTitle:`Vorschau`,denoising:`Sprache wird entrauscht; Wiedergabe wie aufgenommen`,uncut:e=>`Noch keine Personenmaske für ${e}: Ebenen hinter der Person erscheinen davor`,play:`Abspielen`,pause:`Pause`,seek:`Springen`,prevPage:`Vorherige Seite`,nextPage:`Nächste Seite`,pageOf:(e,t)=>`Seite ${String(e)} von ${String(t)}`,timeOf:(e,t,n)=>`${e} von ${t}${n?`, ${n}`:``}`,hideTimeline:`Zeitleiste ausblenden`,showTimeline:`Zeitleiste einblenden`,rows:{scenes:`Szenen`,voice:`Sprache`,music:`Musik`,sound:`Ton`},noVoice:`Keine Sprache`,noMusic:`Keine Musik`,noCues:`Keine Soundeffekte`,ducked:`unter Sprache abgesenkt`,version:`Sprache`,close:`Schließen`,previewFailed:`Mit diesem Video ist etwas schiefgelaufen.`,previewFailedKept:`Bei der letzten Änderung ist etwas schiefgelaufen. Das ist die letzte Version, die funktioniert hat.`,problemsHere:e=>e===1?`1 Problem in dieser Version`:`${String(e)} Probleme in dieser Version`,levelError:`Muss behoben werden`,levelWarn:`Vorschlag`},Ke={loading:`Loading the preview`,loadFailed:`The preview did not load`,noVideo:`This is not a video`,previewTitle:`Preview`,denoising:`Denoising the speech; playing it as recorded`,uncut:e=>`No person matte for ${e} yet: layers behind the person show in front`,play:`Play`,pause:`Pause`,seek:`Seek`,prevPage:`Previous page`,nextPage:`Next page`,pageOf:(e,t)=>`Page ${String(e)} of ${String(t)}`,timeOf:(e,t,n)=>`${e} of ${t}${n?`, ${n}`:``}`,hideTimeline:`Hide timeline`,showTimeline:`Show timeline`,rows:{scenes:`Scenes`,voice:`Speech`,music:`Music`,sound:`Sound`},noVoice:`No speech`,noMusic:`No music`,noCues:`No sound cues`,ducked:`lowered under speech`,version:`Language`,close:`Close`,previewFailed:`Something went wrong with this video.`,previewFailedKept:`Something went wrong with the latest change. This is the last version that worked.`,problemsHere:e=>`${String(e)} problem${e===1?``:`s`} in this version`,levelError:`Must fix`,levelWarn:`Suggestion`},qe={loading:`Cargando la vista previa`,loadFailed:`La vista previa no se cargó`,noVideo:`Esto no es un video`,previewTitle:`Vista previa`,denoising:`Reduciendo el ruido de la voz; se reproduce tal como se grabó`,uncut:e=>`Aún no hay máscara de persona para ${e}: las capas detrás de la persona se ven delante`,play:`Reproducir`,pause:`Pausa`,seek:`Buscar`,prevPage:`Página anterior`,nextPage:`Página siguiente`,pageOf:(e,t)=>`Página ${String(e)} de ${String(t)}`,timeOf:(e,t,n)=>`${e} de ${t}${n?`, ${n}`:``}`,hideTimeline:`Ocultar la línea de tiempo`,showTimeline:`Mostrar la línea de tiempo`,rows:{scenes:`Escenas`,voice:`Voz`,music:`Música`,sound:`Sonido`},noVoice:`Sin voz`,noMusic:`Sin música`,noCues:`Sin efectos de sonido`,ducked:`bajada bajo la voz`,version:`Idioma`,close:`Cerrar`,previewFailed:`Algo salió mal con este video.`,previewFailedKept:`Algo salió mal con el último cambio. Esta es la última versión que funcionó.`,problemsHere:e=>e===1?`1 problema en esta versión`:`${String(e)} problemas en esta versión`,levelError:`Corregir`,levelWarn:`Sugerencia`},Je={loading:`Chargement de l’aperçu`,loadFailed:`L’aperçu ne s’est pas chargé`,noVideo:`Ce n’est pas une vidéo`,previewTitle:`Aperçu`,denoising:`Débruitage de la voix\xA0; lecture telle qu’enregistrée`,uncut:e=>`Pas encore de masque de personne pour ${e}\u00a0: les calques derrière la personne passent devant`,play:`Lire`,pause:`Pause`,seek:`Position`,prevPage:`Page précédente`,nextPage:`Page suivante`,pageOf:(e,t)=>`Page ${String(e)} sur ${String(t)}`,timeOf:(e,t,n)=>`${e} sur ${t}${n?`, ${n}`:``}`,hideTimeline:`Masquer la timeline`,showTimeline:`Afficher la timeline`,rows:{scenes:`Scènes`,voice:`Voix`,music:`Musique`,sound:`Son`},noVoice:`Pas de voix`,noMusic:`Pas de musique`,noCues:`Pas d’effets sonores`,ducked:`baissée sous la voix`,version:`Langue`,close:`Fermer`,previewFailed:`Un problème est survenu avec cette vidéo.`,previewFailedKept:`Un problème est survenu avec la dernière modification. Voici la dernière version qui fonctionnait.`,problemsHere:e=>e===1?`1 problème dans cette version`:`${String(e)} problèmes dans cette version`,levelError:`À corriger`,levelWarn:`Suggestion`},Ye=new Intl.PluralRules(`hi`),Xe=(e,t,n)=>`${String(e)} ${Ye.select(e)===`one`?t:n}`,Ze={loading:`प्रीव्यू लोड हो रहा है`,loadFailed:`प्रीव्यू लोड नहीं हुआ`,noVideo:`यह वीडियो नहीं है`,previewTitle:`प्रीव्यू`,denoising:`आवाज़ से शोर हटाया जा रहा है; तब तक रिकॉर्डिंग जैसी है वैसी चल रही है`,uncut:e=>`${e} के लिए अभी पर्सन मैट नहीं है: व्यक्ति के पीछे वाली लेयर आगे दिखती हैं`,play:`चलाएँ`,pause:`रोकें`,seek:`आगे-पीछे करें`,prevPage:`पिछला पेज`,nextPage:`अगला पेज`,pageOf:(e,t)=>`पेज ${String(e)} / ${String(t)}`,timeOf:(e,t,n)=>`${t} में से ${e}${n?`, ${n}`:``}`,hideTimeline:`टाइमलाइन छिपाएँ`,showTimeline:`टाइमलाइन दिखाएँ`,rows:{scenes:`सीन`,voice:`आवाज़`,music:`संगीत`,sound:`साउंड`},noVoice:`कोई आवाज़ नहीं`,noMusic:`कोई संगीत नहीं`,noCues:`कोई साउंड इफ़ेक्ट नहीं`,ducked:`बोलते समय धीमा`,version:`भाषा`,close:`बंद करें`,previewFailed:`इस वीडियो में कुछ गड़बड़ हो गई।`,previewFailedKept:`सबसे नए बदलाव में कुछ गड़बड़ हो गई। यह आखिरी चलने वाला वर्शन है।`,problemsHere:e=>`इस वर्शन में ${Xe(e,`समस्या`,`समस्याएँ`)}`,levelError:`ठीक करना ज़रूरी`,levelWarn:`सुझाव`},Qe={loading:`Caricamento dell'anteprima`,loadFailed:`L'anteprima non si è caricata`,noVideo:`Questo non è un video`,previewTitle:`Anteprima`,denoising:`Riduzione del rumore della voce; riprodotta così come è stata registrata`,uncut:e=>`Ancora nessuna maschera della persona per ${e}: i livelli dietro la persona appaiono davanti`,play:`Riproduci`,pause:`Pausa`,seek:`Vai a`,prevPage:`Pagina precedente`,nextPage:`Pagina successiva`,pageOf:(e,t)=>`Pagina ${String(e)} di ${String(t)}`,timeOf:(e,t,n)=>`${e} di ${t}${n?`, ${n}`:``}`,hideTimeline:`Nascondi la timeline`,showTimeline:`Mostra la timeline`,rows:{scenes:`Scene`,voice:`Voce`,music:`Musica`,sound:`Suono`},noVoice:`Nessuna voce`,noMusic:`Nessuna musica`,noCues:`Nessun effetto sonoro`,ducked:`abbassata sotto la voce`,version:`Lingua`,close:`Chiudi`,previewFailed:`Qualcosa è andato storto con questo video.`,previewFailedKept:`Qualcosa è andato storto con l'ultima modifica. Questa è l'ultima versione che funzionava.`,problemsHere:e=>e===1?`1 problema in questa versione`:`${String(e)} problemi in questa versione`,levelError:`Da correggere`,levelWarn:`Suggerimento`},$e={loading:`プレビューを読み込み中`,loadFailed:`プレビューを読み込めませんでした`,noVideo:`これは動画ではありません`,previewTitle:`プレビュー`,denoising:`音声のノイズを除去中。録音のまま再生しています`,uncut:e=>`${e} の人物マットはまだありません。人物の後ろのレイヤーが前に表示されます`,play:`再生`,pause:`一時停止`,seek:`再生位置`,prevPage:`前のページ`,nextPage:`次のページ`,pageOf:(e,t)=>`${String(e)} / ${String(t)} ページ`,timeOf:(e,t,n)=>`${e} / ${t}${n?`、${n}`:``}`,hideTimeline:`タイムラインを隠す`,showTimeline:`タイムラインを表示`,rows:{scenes:`シーン`,voice:`音声`,music:`音楽`,sound:`効果音`},noVoice:`音声なし`,noMusic:`音楽なし`,noCues:`効果音なし`,ducked:`音声の間は音量を下げる`,version:`言語`,close:`閉じる`,previewFailed:`この動画で問題が起きました。`,previewFailedKept:`最新の変更で問題が起きました。これは最後に正しく動いたバージョンです。`,problemsHere:e=>`このバージョンに ${String(e)} 件の問題`,levelError:`要修正`,levelWarn:`提案`},et={loading:`미리보기를 불러오는 중`,loadFailed:`미리보기를 불러오지 못했습니다`,noVideo:`동영상이 아닙니다`,previewTitle:`미리보기`,denoising:`음성의 잡음을 제거하는 중입니다. 녹음된 그대로 재생합니다`,uncut:e=>`${e}의 인물 매트가 아직 없습니다. 인물 뒤 레이어가 앞에 보입니다`,play:`재생`,pause:`일시정지`,seek:`재생 위치`,prevPage:`이전 페이지`,nextPage:`다음 페이지`,pageOf:(e,t)=>`${String(t)}페이지 중 ${String(e)}페이지`,timeOf:(e,t,n)=>`${e} / ${t}${n?`, ${n}`:``}`,hideTimeline:`타임라인 숨기기`,showTimeline:`타임라인 보기`,rows:{scenes:`장면`,voice:`음성`,music:`음악`,sound:`사운드`},noVoice:`음성 없음`,noMusic:`음악 없음`,noCues:`효과음 없음`,ducked:`음성 아래로 낮춤`,version:`언어`,close:`닫기`,previewFailed:`이 동영상에 문제가 생겼습니다.`,previewFailedKept:`최근 변경에서 문제가 생겼습니다. 마지막으로 정상 작동한 버전입니다.`,problemsHere:e=>`이 버전의 문제 ${String(e)}개`,levelError:`수정 필요`,levelWarn:`제안`},tt={loading:`Carregando a prévia`,loadFailed:`A prévia não carregou`,noVideo:`Isto não é um vídeo`,previewTitle:`Prévia`,denoising:`Removendo o ruído da fala; tocando como foi gravada`,uncut:e=>`Ainda não há máscara de pessoa para ${e}: as camadas atrás da pessoa aparecem na frente`,play:`Reproduzir`,pause:`Pausar`,seek:`Posição`,prevPage:`Página anterior`,nextPage:`Próxima página`,pageOf:(e,t)=>`Página ${String(e)} de ${String(t)}`,timeOf:(e,t,n)=>`${e} de ${t}${n?`, ${n}`:``}`,hideTimeline:`Ocultar a linha do tempo`,showTimeline:`Mostrar a linha do tempo`,rows:{scenes:`Cenas`,voice:`Fala`,music:`Música`,sound:`Som`},noVoice:`Sem fala`,noMusic:`Sem música`,noCues:`Sem efeitos sonoros`,ducked:`abaixada sob a fala`,version:`Idioma`,close:`Fechar`,previewFailed:`Algo deu errado com este vídeo.`,previewFailedKept:`Algo deu errado com a última alteração. Esta é a última versão que funcionou.`,problemsHere:e=>e===1?`1 problema nesta versão`:`${String(e)} problemas nesta versão`,levelError:`Corrigir`,levelWarn:`Sugestão`},nt=new Intl.PluralRules(`ru`),rt=(e,t,n,r)=>{let i=nt.select(e);return`${String(e)} ${i===`one`?t:i===`many`?r:n}`},it=h({en:Ke,"zh-cn":{loading:`正在加载预览`,loadFailed:`预览没能加载`,noVideo:`这不是视频`,previewTitle:`预览`,denoising:`正在降噪,先播原声`,uncut:e=>`${e} 还没有人像遮罩:人物后面的图层暂时画在人物前面`,play:`播放`,pause:`暂停`,seek:`进度`,prevPage:`上一页`,nextPage:`下一页`,pageOf:(e,t)=>`第 ${String(e)} 页,共 ${String(t)} 页`,timeOf:(e,t,n)=>`${e} / ${t}${n?`,${n}`:``}`,hideTimeline:`收起时间线`,showTimeline:`展开时间线`,rows:{scenes:`分段`,voice:`说话`,music:`音乐`,sound:`音效`},noVoice:`没有人说话`,noMusic:`没有音乐`,noCues:`没有音效`,ducked:`有人说话时压低`,version:`语言`,close:`关闭`,previewFailed:`这个视频出了点问题。`,previewFailedKept:`最新的改动出了点问题,这里是上一版正常的画面。`,problemsHere:e=>`这个版本有 ${String(e)} 个问题`,levelError:`必须改`,levelWarn:`建议`},"zh-tw":{loading:`正在載入預覽`,loadFailed:`預覽未能載入`,noVideo:`這不是影片`,previewTitle:`預覽`,denoising:`正在降噪,先播放原始錄音`,uncut:e=>`${e} 還沒有人像遮罩:人物後方的圖層暫時顯示在人物前面`,play:`播放`,pause:`暫停`,seek:`播放位置`,prevPage:`上一頁`,nextPage:`下一頁`,pageOf:(e,t)=>`第 ${String(e)} 頁,共 ${String(t)} 頁`,timeOf:(e,t,n)=>`${e} / ${t}${n?`,${n}`:``}`,hideTimeline:`收合時間軸`,showTimeline:`展開時間軸`,rows:{scenes:`段落`,voice:`語音`,music:`音樂`,sound:`音效`},noVoice:`沒有語音`,noMusic:`沒有音樂`,noCues:`沒有音效`,ducked:`有語音時降低音量`,version:`語言`,close:`關閉`,previewFailed:`這部影片出了點問題。`,previewFailedKept:`最新的修改出了點問題,這裡是上一個正常的版本。`,problemsHere:e=>`這個版本有 ${String(e)} 個問題`,levelError:`必須修正`,levelWarn:`建議`},ja:$e,ko:et,es:qe,fr:Je,de:Ge,it:Qe,pt:tt,ru:{loading:`Загрузка предпросмотра`,loadFailed:`Предпросмотр не загрузился`,noVideo:`Это не видео`,previewTitle:`Предпросмотр`,denoising:`Шумоподавление речи; пока звучит исходная запись`,uncut:e=>`Для ${e} ещё нет маски человека: слои за человеком показаны перед ним`,play:`Воспроизвести`,pause:`Пауза`,seek:`Перемотка`,prevPage:`Предыдущая страница`,nextPage:`Следующая страница`,pageOf:(e,t)=>`Страница ${String(e)} из ${String(t)}`,timeOf:(e,t,n)=>`${e} из ${t}${n?`, ${n}`:``}`,hideTimeline:`Скрыть таймлайн`,showTimeline:`Показать таймлайн`,rows:{scenes:`Сцены`,voice:`Речь`,music:`Музыка`,sound:`Звук`},noVoice:`Нет речи`,noMusic:`Нет музыки`,noCues:`Нет звуковых эффектов`,ducked:`приглушено под речью`,version:`Язык`,close:`Закрыть`,previewFailed:`С этим видео что-то пошло не так.`,previewFailedKept:`С последним изменением что-то пошло не так. Это последняя рабочая версия.`,problemsHere:e=>`${rt(e,`проблема`,`проблемы`,`проблем`)} в этой версии`,levelError:`Нужно исправить`,levelWarn:`Совет`},tr:{loading:`Önizleme yükleniyor`,loadFailed:`Önizleme yüklenmedi`,noVideo:`Bu bir video değil`,previewTitle:`Önizleme`,denoising:`Konuşmadaki gürültü temizleniyor; kaydedildiği gibi çalınıyor`,uncut:e=>`${e} için henüz kişi maskesi yok: kişinin arkasındaki katmanlar önde görünür`,play:`Oynat`,pause:`Duraklat`,seek:`Konum`,prevPage:`Önceki sayfa`,nextPage:`Sonraki sayfa`,pageOf:(e,t)=>`Sayfa ${String(e)} / ${String(t)}`,timeOf:(e,t,n)=>`${e} / ${t}${n?`, ${n}`:``}`,hideTimeline:`Zaman çizelgesini gizle`,showTimeline:`Zaman çizelgesini göster`,rows:{scenes:`Sahneler`,voice:`Konuşma`,music:`Müzik`,sound:`Ses`},noVoice:`Konuşma yok`,noMusic:`Müzik yok`,noCues:`Ses efekti yok`,ducked:`konuşmanın altında kısıldı`,version:`Dil`,close:`Kapat`,previewFailed:`Bu videoda bir şeyler ters gitti.`,previewFailedKept:`Son değişiklikte bir şeyler ters gitti. Bu, çalışan son sürüm.`,problemsHere:e=>`Bu sürümde ${String(e)} sorun var`,levelError:`Düzeltilmeli`,levelWarn:`Öneri`},vi:{loading:`Đang tải bản xem trước`,loadFailed:`Không tải được bản xem trước`,noVideo:`Đây không phải video`,previewTitle:`Xem trước`,denoising:`Đang khử nhiễu giọng nói; tạm phát như bản thu gốc`,uncut:e=>`Chưa có mặt nạ người cho ${e}: các lớp phía sau người hiện ở phía trước`,play:`Phát`,pause:`Tạm dừng`,seek:`Tua`,prevPage:`Trang trước`,nextPage:`Trang sau`,pageOf:(e,t)=>`Trang ${String(e)}/${String(t)}`,timeOf:(e,t,n)=>`${e} / ${t}${n?`, ${n}`:``}`,hideTimeline:`Ẩn dòng thời gian`,showTimeline:`Hiện dòng thời gian`,rows:{scenes:`Cảnh`,voice:`Lời nói`,music:`Nhạc`,sound:`Âm thanh`},noVoice:`Không có lời nói`,noMusic:`Không có nhạc`,noCues:`Không có hiệu ứng âm thanh`,ducked:`giảm âm lượng khi có lời nói`,version:`Ngôn ngữ`,close:`Đóng`,previewFailed:`Video này đã gặp sự cố.`,previewFailedKept:`Thay đổi mới nhất đã gặp sự cố. Đây là phiên bản chạy được gần nhất.`,problemsHere:e=>`${String(e)} vấn đề trong phiên bản này`,levelError:`Cần sửa`,levelWarn:`Gợi ý`},th:{loading:`กำลังโหลดตัวอย่าง`,loadFailed:`โหลดตัวอย่างไม่สำเร็จ`,noVideo:`นี่ไม่ใช่วิดีโอ`,previewTitle:`ตัวอย่าง`,denoising:`กำลังลดเสียงรบกวนของเสียงพูด ระหว่างนี้จะเล่นตามที่บันทึกไว้`,uncut:e=>`ยังไม่มีมาสก์บุคคลสำหรับ ${e}: เลเยอร์ที่อยู่หลังบุคคลจะแสดงอยู่ด้านหน้า`,play:`เล่น`,pause:`หยุดชั่วคราว`,seek:`เลื่อนตำแหน่ง`,prevPage:`หน้าก่อนหน้า`,nextPage:`หน้าถัดไป`,pageOf:(e,t)=>`หน้า ${String(e)} จาก ${String(t)}`,timeOf:(e,t,n)=>`${e} จาก ${t}${n?`, ${n}`:``}`,hideTimeline:`ซ่อนไทม์ไลน์`,showTimeline:`แสดงไทม์ไลน์`,rows:{scenes:`ฉาก`,voice:`เสียงพูด`,music:`เพลง`,sound:`เสียง`},noVoice:`ไม่มีเสียงพูด`,noMusic:`ไม่มีเพลง`,noCues:`ไม่มีเอฟเฟกต์เสียง`,ducked:`ลดเสียงลงขณะมีเสียงพูด`,version:`ภาษา`,close:`ปิด`,previewFailed:`วิดีโอนี้เกิดข้อผิดพลาด`,previewFailedKept:`การเปลี่ยนแปลงล่าสุดเกิดข้อผิดพลาด นี่คือเวอร์ชันล่าสุดที่ใช้ได้`,problemsHere:e=>`มีปัญหา ${String(e)} รายการในเวอร์ชันนี้`,levelError:`ต้องแก้ไข`,levelWarn:`คำแนะนำ`},hi:Ze});function X(){return it.of(ee()?.locale)}function at(e,t,n){let r=T(),[i,a]=(0,P.useState)(),o=JSON.stringify([e,t,...n]);return(0,P.useEffect)(()=>{if(t===void 0)return;let n=!0;return v(r,e,t).then(e=>{n&&a({key:o,data:e})},e=>{n&&a({key:o,error:e instanceof Error?e:Error(String(e))})}),()=>{n=!1}},[r,o]),{data:i?.data,error:i?.key===o?i.error:void 0}}function ot(){let[e,t]=(0,P.useState)(0);return C(`project/changed`,e=>{t(e.revision)}),e}function st(){let e=T(),[t,n]=(0,P.useState)();return(0,P.useEffect)(()=>{let t=!0;return v(e,`check/results`,{}).then(e=>{t&&n(t=>t??e)},()=>void 0),()=>{t=!1}},[e]),C(`check/changed`,n),t}function ct(e,t){let n=T(),[r,i]=(0,P.useState)();(0,P.useEffect)(()=>{let r=!0;return n[`storage/get`]({key:e}).then(n=>{r&&i({key:e,value:n.value===null?t:n.value})},()=>{r&&i({key:e,value:t})}),()=>{r=!1}},[n,e]);let a=(0,P.useCallback)(t=>{i({key:e,value:t}),n[`storage/set`]({key:e,value:t}).catch(()=>void 0)},[n,e]);return[r?.key===e?r.value:void 0,a]}async function lt(e,t){try{return(await e[`files/url`]({path:t})).url}catch{return}}function ut(e,t){return e.versions.find(e=>e.key===t)??e.versions[0]}function dt(e,t,n){return e.filter(e=>e.piece===t&&(e.combo===void 0||n.lang===void 0||e.combo.lang===n.lang))}function ft(e,t){try{return new Intl.DisplayNames([t],{type:`language`}).of(e)??e}catch{return e}}function pt(e){if(typeof e==`object`&&e&&e.allyhub===!0&&typeof e.type==`string`)return e}function mt(e,t){e?.postMessage({allyhub:!0,...t},`*`)}function ht({delayDuration:e=0,...t}){return(0,F.jsx)(xe,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function gt({...e}){return(0,F.jsx)(Ce,{"data-slot":`tooltip`,...e})}function _t({...e}){return(0,F.jsx)(Te,{"data-slot":`tooltip-trigger`,...e})}function vt({className:e,sideOffset:t=0,children:n,...r}){return(0,F.jsx)(Oe,{children:(0,F.jsxs)(ke,{"data-slot":`tooltip-content`,sideOffset:t,className:u(`z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,e),...r,children:[n,(0,F.jsx)(Me,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}function yt(e,t,n,r=4){let i=e.map(({x:e,width:n},r)=>{let i=e+n>t&&e-n>=0?`before`:`after`;return i===`after`?{i:r,side:i,from:e,to:e+n}:{i:r,side:i,from:e-n,to:e}}),a=[],o=e.map(()=>null);for(let e of[...i].sort((e,t)=>e.from-t.from||e.i-t.i)){let t=0;for(;t<n&&(a[t]??-1/0)+r>e.from;)t++;t!==n&&(a[t]=e.to,o[e.i]={lane:t,side:e.side})}return o}var bt=.01,xt=new Map;async function St(e){try{let t=await fetch(e);if(!t.ok)return;let n=await t.arrayBuffer(),r=await new OfflineAudioContext(1,1,44100).decodeAudioData(n),i=r.sampleRate/50,a=Math.ceil(r.length/i),o=new Float32Array(a),s=0;for(let e=0;e<r.numberOfChannels;e++){let t=r.getChannelData(e);for(let e=0;e<a;e++){let n=Math.min(t.length,Math.floor((e+1)*i)),r=o[e]??0;for(let a=Math.floor(e*i);a<n;a++){let e=Math.abs(t[a]??0);e>r&&(r=e)}o[e]=r,r>s&&(s=r)}}if(s<bt)return;let c=Float32Array.from(o).sort(),l=c[Math.floor(c.length*.95)]??s;return{duration:r.duration,data:o,max:l>0?l:s}}catch{return}}function Ct(e){let t=xt.get(e);return t||(t=St(e),xt.set(e,t)),t}function wt(e){let[t,n]=(0,P.useState)();(0,P.useEffect)(()=>{if(e===void 0)return;let t=!0;return Ct(e).then(r=>{t&&n({url:e,peaks:r})}),()=>{t=!1}},[e]);let r=t?.url===e?t:void 0;return{peaks:r?.peaks,settled:e===void 0||r!==void 0}}function Tt(e,t,n){let r=Math.max(0,Math.floor(t*50)),i=Math.min(e.data.length,Math.max(r+1,Math.ceil(n*50))),a=0;for(let t=r;t<i;t++){let n=e.data[t]??0;n>a&&(a=n)}return a}function Et(e,t){if(e.length===0)return 0;let n=e[0];if(!n||t<=n.t)return n?.db??0;for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n];if(r&&i&&t<=i.t)return i.t===r.t?i.db:r.db+(i.db-r.db)*(t-r.t)/(i.t-r.t)}return e.at(-1)?.db??0}function Dt(e,t,n){let r=new Map(t.map(e=>[e.key,e])),i=e.parts.flatMap(e=>{let t=e.speech;if(!t)return[];let n=r.get(e.key);return[{...n?.speechKey===void 0?{}:{key:n.speechKey},part:e.key,start:t.start,end:t.end,text:n?.spoken??``,file:t.file,from:t.from,speed:t.speed??1,...t.cuts?{cuts:t.cuts}:{}}]}),a=n?.music,o;if(a&&a.segments.length>0){let t=a.segments[0],n=a.segments.at(-1),r=Math.min(e.duration,a.until??(n?n.at+n.dur:e.duration)),i=[];for(let e=1;e<a.duck.length;e++){let t=a.duck[e-1],n=a.duck[e];if(t&&n&&t.db<0&&n.db<0){let e=i.at(-1);e&&Math.abs(e.end-t.t)<1e-9?e.end=n.t:i.push({start:t.t,end:n.t})}}o={file:a.file,start:t?.at??0,end:r,stretches:a.segments.map(e=>({at:e.at,from:e.from,dur:e.dur})),ducked:i,duck:a.duck,fadeIn:a.fadeIn,fadeOut:a.fadeOut}}return{cues:e.cues,speech:i,music:o}}function Ot(e,t){if(t<e.start||t>=e.end)return;let n=e.start,r=e.from;for(let i of e.cuts??[]){if(i.at>t)break;n=i.at,r=i.from}return r+(t-n)*e.speed}function kt(e,t){for(let n=e.stretches.length-1;n>=0;n--){let r=e.stretches[n];if(r&&t>=r.at&&t<r.at+r.dur)return r.from+(t-r.at)}}function At(e,t){let n=10**(Et(e.duck,t)/20);return e.fadeIn>0&&t-e.start<e.fadeIn&&(n*=Math.max(0,t-e.start)/e.fadeIn),e.fadeOut>0&&e.end-t<e.fadeOut&&(n*=Math.max(0,e.end-t)/e.fadeOut),Math.max(0,n)}function jt(e){let t=new Set((e.index??[]).filter(e=>e.matte).map(e=>e.file));return e.parts.flatMap(n=>{let r=(e.footage??[]).find(e=>e.part===n.key&&t.has(e.file));return r?[{part:n.key,file:r.file}]:[]})}var Mt={scenes:`text-track-scene`,voice:`text-track-voice`,music:`text-track-music`,sound:`text-track-sound`},Z={ruler:20,scenes:36,voice:40,music:32,sound:28};function Nt(e){return Z.ruler+1+Z.scenes+1+e.reduce((e,t)=>e+Z[t]+1,0)}var Pt=6;function Ft(e,t){let n=e=>e.join(` `).replace(/\s+([.,!?;:。,!?;:、])/g,`$1`).trim(),[r,...i]=e;if(r===t&&i.length>0){let e=n(i);if(/^[^a-z]/.test(e))return e}return n(e)}function It(e){return e<=60?{minor:1,major:5}:e<=180?{minor:1,major:10}:e<=600?{minor:5,major:30}:e<=1800?{minor:10,major:60}:{minor:60,major:300}}var Q=(e,t)=>`${String(e/Math.max(t,1e-6)*100)}%`;function Lt({title:e,mono:t=!1,time:n,line:r,children:i}){return(0,F.jsxs)(gt,{children:[(0,F.jsx)(_t,{asChild:!0,children:i}),(0,F.jsx)(vt,{side:`top`,sideOffset:6,className:`max-w-[20rem]`,children:(0,F.jsxs)(`span`,{className:`flex flex-col gap-0.5 text-left`,children:[(0,F.jsx)(`span`,{className:u(t&&`font-mono text-micro`),children:e}),(0,F.jsx)(`span`,{className:`font-mono text-micro tabular-nums opacity-70`,children:n}),r?(0,F.jsx)(`span`,{className:`opacity-80`,children:r}):null]})})]})}function Rt(e){let t=T(),[n,r]=(0,P.useState)();return(0,P.useEffect)(()=>{let n=!0;return lt(t,e).then(t=>{n&&r({file:e,url:t})}),()=>{n=!1}},[t,e]),n?.file===e?n.url:void 0}function zt({file:e,from:t,to:n,sample:r,alpha:i,className:a}){let o=(0,P.useRef)(null),{peaks:s,settled:c}=wt(Rt(e)),[l,d]=(0,P.useState)(!1);return(0,P.useEffect)(()=>{let e=o.current;if(!e||!s)return;let a=()=>{let a=window.devicePixelRatio||1,o=Math.round(e.clientWidth*a),c=Math.round(e.clientHeight*a);if(!o||!c)return;e.width=o,e.height=c;let l=e.getContext(`2d`);if(!l)return;l.fillStyle=getComputedStyle(e).color,l.globalAlpha=i;let u=1/Math.max(s.max,.05),f=n-t,p=c-2*Math.round(2*a);for(let e=0;e<o;e+=2){let n=r(t+e/o*f);if(!n)continue;let i=Tt(s,n.at,n.at+2/o*f)*u*n.gain,a=Math.max(1,Math.round(Math.min(1,i)**Bt*p));l.fillRect(e,Math.round((c-a)/2),1,a)}d(!0)};a();let c=new ResizeObserver(a);c.observe(e);let l=new MutationObserver(a);return l.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>{c.disconnect(),l.disconnect()}},[s,t,n,r,i]),(0,F.jsx)(`canvas`,{ref:o,"aria-hidden":!0,"data-wave":l?`ready`:c?`none`:`pending`,className:u(`pointer-events-none absolute inset-0 size-full opacity-0 transition-opacity data-[wave=ready]:opacity-100`,a)})}var Bt=.7,Vt=`focus-visible:outline-ring absolute inset-y-1 overflow-hidden rounded-xs border focus-visible:outline-1 focus-visible:outline-solid focus-visible:-outline-offset-1`;function Ht({line:e,duration:t,onSeek:n}){let r=(0,P.useCallback)(t=>{let n=Ot(e,t);return n===void 0?void 0:{at:n,gain:1}},[e]);return(0,F.jsx)(Lt,{title:e.text,time:`${J(e.start)} – ${J(e.end)} · ${We(e.file)}`,children:(0,F.jsxs)(`button`,{type:`button`,"data-sentence":e.key??e.part,"data-start":e.start.toFixed(4),className:u(Vt,`bg-track-voice/15 border-track-voice/60 hover:bg-track-voice/25 text-left`),style:{left:Q(e.start,t),width:Q(e.end-e.start,t)},onPointerDown:e=>{e.stopPropagation()},onClick:()=>{n(e.start)},children:[(0,F.jsx)(`span`,{className:`absolute inset-x-1.5 top-0 block h-[14px] truncate text-micro leading-[14px]`,children:e.text}),(0,F.jsx)(`span`,{className:`absolute inset-x-0 top-[14px] bottom-0`,children:(0,F.jsx)(zt,{file:e.file,from:e.start,to:e.end,sample:r,alpha:.7,className:`text-track-voice`})})]})})}var Ut=2,Wt=.75;function Gt({parts:e,duration:t}){let n=(0,P.useRef)(null),r=(0,P.useRef)(new Map),[i,a]=(0,P.useState)(0),[o,s]=(0,P.useState)(()=>new Map),c=e.flatMap(e=>(e.anchors??[]).map(t=>({id:`${e.key}@${t.name}`,part:e.key,anchor:t}))),l=c.map(e=>e.id).join(`
2
+ `);(0,P.useLayoutEffect)(()=>{let e=n.current;if(!e)return;let t=()=>{a(e.clientWidth);let t=new Map;for(let[e,n]of r.current)t.set(e,n.offsetWidth);s(e=>e.size===t.size&&[...t].every(([t,n])=>e.get(t)===n)?e:t)};t();let i=new ResizeObserver(t);i.observe(e);for(let e of r.current.values())i.observe(e);return()=>{i.disconnect()}},[l]);let u=yt(c.map(e=>({x:e.anchor.at/Math.max(t,1e-6)*i,width:o.get(e.id)??0})),i,Ut);return(0,F.jsx)(`div`,{ref:n,className:`pointer-events-none absolute inset-0`,children:c.map((e,n)=>(0,F.jsx)(Kt,{part:e.part,anchor:e.anchor,duration:t,place:u[n]??null,nameRef:t=>(r.current.set(e.id,t),()=>{r.current.delete(e.id)})},e.id))})}function Kt({part:e,anchor:t,duration:n,place:r,nameRef:i}){let{at:a,end:o}=t,s=(a,o)=>(0,F.jsx)(`span`,{"data-anchor":`${e}:${t.name}${a?`:end`:``}`,"data-time":o.toFixed(4),title:t.name,className:`before:bg-foreground/70 absolute inset-y-0 z-10 -ml-1 w-2 before:absolute before:inset-y-0 before:left-1/2 before:w-px`,style:{left:Q(o,n)},children:!a&&(0,F.jsx)(`span`,{ref:i,"data-anchor-lane":r?String(r.lane):void 0,className:u(`bg-background text-muted-foreground absolute rounded-xs px-0.5 font-mono text-micro leading-3 whitespace-nowrap`,r?.side===`before`?`right-1/2 mr-px`:`left-1/2 ml-px`,!r&&`invisible`),style:{bottom:`${String((r?.lane??0)*Wt)}rem`},children:t.name})},a?`end`:`at`);return(0,F.jsxs)(F.Fragment,{children:[o!==void 0&&o>a&&(0,F.jsx)(`span`,{className:`bg-foreground/50 pointer-events-none absolute bottom-0 z-10 h-px`,style:{left:Q(a,n),width:Q(o-a,n)}}),s(!1,a),o!==void 0&&s(!0,o)]})}function qt({music:e,duration:t,ducked:n}){let{start:r,end:i}=e,a=(0,P.useCallback)(t=>{let n=kt(e,t);return n===void 0?void 0:{at:n,gain:At(e,t)}},[e]),o=We(e.file);return(0,F.jsx)(Lt,{mono:!0,title:o,time:`${J(r)} – ${J(i)}`,line:e.ducked.length?n:void 0,children:(0,F.jsxs)(`div`,{"data-music":o,className:u(Vt,`bg-track-music/15 border-track-music/60`),style:{left:Q(r,t),width:Q(i-r,t)},children:[(0,F.jsx)(zt,{file:e.file,from:r,to:i,sample:a,alpha:.6,className:`text-track-music`}),(0,F.jsx)(`span`,{className:`bg-background/85 text-foreground absolute top-1/2 left-1.5 -translate-y-1/2 rounded-xs px-1 font-mono text-micro leading-[14px]`,children:o})]})})}var Jt=(0,P.memo)(function({timeline:e,texts:t,tracks:n,rows:r,current:i,second:a,onSeek:o}){let s=X(),{duration:c,parts:l}=e,d=e=>(0,F.jsx)(`span`,{className:`text-muted-foreground bg-background pointer-events-none absolute top-1/2 left-3 -translate-y-1/2 px-1 text-xs leading-4`,children:e}),f=n.speech,p=n.music?[n.music]:[],m=n.cues,h=e=>l.find(t=>t.key===e)?.title??e;return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`div`,{className:`relative border-t`,style:{height:Z.scenes+1},"data-row":`scenes`,children:l.map((e,n)=>{let r=e.key===i,s=e.title??e.key,l=t.find(t=>t.key===e.key),d=l?.spoken??Ft(l?.onScreen??[],s),f=(e.end-e.start)*a<56;return(0,F.jsx)(Lt,{title:(0,F.jsx)(`span`,{className:`font-serif text-dense`,children:s}),time:`${J(e.start)} – ${J(e.end)}`,line:d||void 0,children:(0,F.jsxs)(`button`,{type:`button`,"data-chapter":e.key,"data-start":e.start.toFixed(4),"aria-current":r?`true`:void 0,className:u(Vt,`flex items-center gap-1.5 px-2 text-left transition-colors`,r?`bg-track-scene/25 border-track-scene`:`bg-track-scene/10 border-track-scene/45 hover:bg-track-scene/20`),style:{left:Q(e.start,c),width:`calc(${Q(e.end-e.start,c)} - 1px)`},onPointerDown:e=>{e.stopPropagation()},onClick:()=>{o(e.start)},children:[(0,F.jsx)(`span`,{className:u(`font-mono text-micro tabular-nums`,r?`text-foreground/70`:`text-muted-foreground`),children:String(n+1)}),f?null:(0,F.jsx)(`span`,{className:u(`min-w-0 truncate font-serif text-xs`,r?`font-semibold`:`text-foreground/80`),children:s})]})},e.key)})}),r.includes(`voice`)?(0,F.jsxs)(`div`,{className:`relative border-t`,style:{height:Z.voice+1},"data-row":`voice`,children:[f.length>0?f.map(e=>(0,F.jsx)(Ht,{line:e,duration:c,onSeek:o},`${e.part}@${String(e.start)}`)):d(s.noVoice),(0,F.jsx)(Gt,{parts:l,duration:c})]}):null,r.includes(`music`)?(0,F.jsx)(`div`,{className:`relative border-t`,style:{height:Z.music+1},"data-row":`music`,children:p.length?p.map(e=>(0,F.jsx)(qt,{music:e,duration:c,ducked:s.ducked},`${e.file}@${String(e.start)}`)):d(s.noMusic)}):null,r.includes(`sound`)?(0,F.jsxs)(`div`,{className:`relative border-t`,style:{height:Z.sound+1},"data-row":`sound`,children:[(0,F.jsx)(`span`,{className:`bg-rule-strong absolute inset-x-0 top-1/2 h-px`}),m.length?m.map((e,t)=>(0,F.jsx)(Lt,{mono:!0,title:e.sound,time:`${J(e.t)} · ${h(e.part)}`,line:e.what,children:(0,F.jsx)(`span`,{"data-cue":e.sound,className:`absolute top-1/2 block size-[7px] -translate-y-1/2`,style:{left:Q(e.t,c)},children:(0,F.jsx)(`span`,{className:u(`bg-track-sound block size-full rotate-45`,e.t*a<5?`translate-x-[2px]`:`-translate-x-1/2`)})})},`${e.sound}@${String(e.t)}#${String(t)}`)):d(s.noCues)]}):null]})});function Yt({timeline:e,texts:t,tracks:n,rows:r,state:i,onSeek:a}){let o=X(),{duration:s,fps:c,parts:l}=e,d=Math.max(0,s-1/c),f=(0,P.useRef)(null),p=(0,P.useRef)(null),[m,h]=(0,P.useState)(0),[g,_]=(0,P.useState)(!1),[v,y]=(0,P.useState)();(0,P.useLayoutEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{h(e.clientWidth)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[]);let b=m>0&&m/s<Pt,x=b?Math.ceil(s*Pt):m,S=x/Math.max(s,1e-6),{t:C,playing:w}=i;(0,P.useEffect)(()=>{let e=p.current;if(!e)return;let t=t=>{let n=Math.min(Math.max(t,0),s)*S;e.style.transform=`translateX(${String(n)}px)`;let r=f.current;b&&w&&r&&(n<r.scrollLeft+24||n>r.scrollLeft+r.clientWidth-24)&&(r.scrollLeft=Math.max(0,n-r.clientWidth*.2))};if(t(C),!w)return;let n=performance.now(),r=requestAnimationFrame(function e(i){t(Math.min(C+(i-n)/1e3,d)),r=requestAnimationFrame(e)});return()=>{cancelAnimationFrame(r)}},[C,w,S,s,d,b]);let T=e=>{let t=e.currentTarget.getBoundingClientRect(),n=Math.min(t.width,Math.max(0,e.clientX-t.left))/Math.max(t.width,1)*s;return Math.min(Math.max(Y(n,c),0),d)},E=e=>{a(Math.min(Math.max(Y(e,c),0),d))},D=l.find(e=>i.t>=e.start&&i.t<e.end)??l.at(-1),{minor:ee,major:te}=It(s),O=[];for(let e=0;e<=s+1e-6;e+=ee)O.push(e);let k=(e,t)=>(0,F.jsxs)(`div`,{className:`flex items-center gap-1.5 overflow-hidden border-t pr-2 pl-3 max-[559px]:justify-center max-[559px]:px-0`,style:{height:Z[e]+1},"data-track":e,children:[(0,F.jsx)(`span`,{role:`img`,"aria-label":o.rows[e],className:u(`shrink-0 [&_svg]:size-3.5`,Mt[e]),children:t}),(0,F.jsx)(Be,{"aria-hidden":!0,className:`text-micro whitespace-nowrap max-[559px]:hidden`,children:o.rows[e]})]});return(0,F.jsx)(ht,{delayDuration:250,children:(0,F.jsxs)(`div`,{className:`flex border-t`,style:{height:Nt(r)+1},"data-testid":`timeline`,children:[(0,F.jsxs)(`div`,{className:`w-max min-w-20 shrink-0 border-r max-[559px]:w-10 max-[559px]:min-w-10`,children:[(0,F.jsx)(`div`,{style:{height:Z.ruler}}),k(`scenes`,(0,F.jsx)(fe,{})),r.includes(`voice`)?k(`voice`,(0,F.jsx)(me,{})):null,r.includes(`music`)?k(`music`,(0,F.jsx)(N,{})):null,r.includes(`sound`)?k(`sound`,(0,F.jsx)(pe,{})):null]}),(0,F.jsx)(`div`,{ref:f,className:u(`relative min-w-0 flex-1 overflow-y-hidden border-l border-transparent`,b?`overflow-x-auto`:`overflow-x-hidden`),"data-testid":`tracks`,children:(0,F.jsxs)(`div`,{className:`relative h-full cursor-pointer touch-none`,style:{width:x||`100%`},onPointerDown:e=>{e.currentTarget.setPointerCapture(e.pointerId),_(!0),a(T(e))},onPointerMove:e=>{let t=T(e);y(t),g&&a(t)},onPointerUp:()=>{_(!1)},onPointerCancel:()=>{_(!1)},onPointerLeave:()=>{y(void 0)},children:[(0,F.jsx)(`div`,{role:`slider`,tabIndex:0,"aria-label":o.seek,"aria-valuemin":0,"aria-valuemax":Math.round(s*100)/100,"aria-valuenow":Math.round(i.t*100)/100,"aria-valuetext":o.timeOf(q(i.t),q(s),D?.title??``),"data-testid":`scrubber`,className:`focus-visible:outline-ring relative outline-none focus-visible:outline-1 focus-visible:outline-solid focus-visible:-outline-offset-1`,style:{height:Z.ruler},onKeyDown:e=>{if(e.key===`ArrowLeft`)E(i.t-1);else if(e.key===`ArrowRight`)E(i.t+1);else if(e.key===`Home`)E(0);else if(e.key===`End`)E(d);else return;e.preventDefault()},children:O.map(e=>{let t=Math.abs(e/te-Math.round(e/te))<1e-6;return(0,F.jsxs)(`span`,{className:`absolute bottom-0`,style:{left:Q(e,s)},children:[(0,F.jsx)(`span`,{className:u(`absolute bottom-0 left-0 w-px`,t?`bg-lead-soft h-2`:`bg-rule-strong h-1`)}),t&&(s-e)*S>34?(0,F.jsx)(`span`,{className:`text-muted-foreground absolute bottom-[7px] left-1 font-mono text-micro leading-none tabular-nums`,children:q(e)}):null]},e)})}),(0,F.jsx)(Jt,{timeline:e,texts:t,tracks:n,rows:r,current:i.part??D?.key,second:S,onSeek:a}),v===void 0?null:(0,F.jsxs)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-y-0 left-0 z-10`,style:{transform:`translateX(${String(v*S)}px)`},"data-testid":`hover-guide`,children:[(0,F.jsx)(`span`,{className:`bg-foreground/25 absolute inset-y-0 left-0 w-px`}),(0,F.jsx)(`span`,{className:`bg-popover text-popover-foreground absolute top-0.5 left-1 rounded-xs border px-1 font-mono text-micro leading-[14px] tabular-nums`,children:q(v)})]}),(0,F.jsxs)(`div`,{ref:p,"aria-hidden":!0,className:`pointer-events-none absolute inset-y-0 left-0 z-20 will-change-transform`,"data-testid":`playhead`,children:[(0,F.jsx)(`span`,{className:`bg-foreground absolute inset-y-0 left-0 w-px`}),(0,F.jsx)(`svg`,{viewBox:`0 0 9 9`,className:`text-foreground absolute top-0 -left-1 size-[9px]`,children:(0,F.jsx)(`path`,{d:`M0 0h9v4L4.5 9 0 4z`,fill:`currentColor`})})]})]})})]})})}var Xt=48,Zt=[`voice`,`music`,`sound`],Qt=[`voice`],$t=[],en=160,tn=560,nn=1e3,rn=20,an=1500,on=15e3,sn=e=>({timeline:e.timeline,texts:e.text,tracks:Dt(e.timeline,e.text,e.mix),uncut:jt(e.timeline)});function cn({item:e,version:t,revision:n,width:r,height:i,start:a,overlay:o,onLoaded:s,onError:c,onState:l,ref:d}){let f=X(),p=T(),m=(0,P.useRef)(null),h=(0,P.useRef)(new Map),[g,_]=(0,P.useState)(),[b,x]=(0,P.useState)(),[S,C]=(0,P.useState)(),[w,D]=(0,P.useState)(),[te,O]=(0,P.useState)(!1),[k,ne]=(0,P.useState)(),A=E(k),[j,ie]=(0,P.useState)({t:a?.t??0,part:void 0,playing:!1}),[ae,oe]=(0,P.useState)(0),[se,ce]=(0,P.useState)(),[M=!0,le]=ct(`video-editor.timeline`,!0),ue=(0,P.useRef)(null),[fe,pe]=(0,P.useState)(0),me=(0,P.useRef)(1),N=(0,P.useRef)({shown:g,pending:b,play:j,view:S,onLoaded:s,onError:c,onState:l});(0,P.useEffect)(()=>{N.current={shown:g,pending:b,play:j,view:S,onLoaded:s,onError:c,onState:l}});let he=e=>e===void 0?void 0:m.current?.querySelector(`iframe[data-frame="${String(e.id)}"]`)?.contentWindow,I=e=>{mt(he(N.current.shown),e)};(0,P.useImperativeHandle)(d,()=>({seek:e=>{I({type:`seek`,t:e})},play:()=>{I({type:`play`})},pause:()=>{I({type:`pause`})}}));let L=n=>v(p,`video/stage`,{item:e,version:t,start:n,chrome:!1}).then(e=>(ne(e.probe),e.url)),_e=`${e}\n${t}`,ve=(0,P.useRef)(e);(0,P.useEffect)(()=>{let{shown:t,play:n}=N.current,r=ve.current===e;ve.current=e;let i={t:0},o=t?r?{t:n.t}:i:a??i,s=!0;return L(o).then(e=>{s&&(_({id:me.current++,src:e}),x(void 0),D(void 0))},e=>{if(!s)return;let t=e instanceof Error?e.message:String(e);D(t),N.current.onError?.(t)}),()=>{s=!1}},[_e]);let R=(0,P.useRef)(n);(0,P.useEffect)(()=>{if(n===R.current)return;R.current=n;let{shown:e,play:t,view:r}=N.current;if(!e)return;let i=r?.timeline.parts.find(e=>t.t>=e.start&&t.t<e.end),a=i?{t:t.t,part:i.key,offset:t.t-i.start,dur:i.end-i.start}:{t:t.t},o=!0;return L(a).then(e=>{o&&x({id:me.current++,src:e,from:t.t})},e=>{o&&N.current.onError?.(e instanceof Error?e.message:String(e))}),()=>{o=!1}},[n]),(0,P.useEffect)(()=>{if(!b)return;let e=setTimeout(()=>{x(void 0),N.current.onError?.(f.loadFailed)},on);return()=>{clearTimeout(e)}},[b,f.loadFailed]),(0,P.useEffect)(()=>{let e=e=>{let t=pt(e.data);if(!t)return;let{shown:n,pending:r}=N.current,i=[n,r].find(t=>t!==void 0&&he(t)===e.source);if(!i)return;let a=i.id===r?.id;if(t.type===`located`)h.current.get(t.id)?.(t.layers),h.current.delete(t.id);else if(t.type===`sound`)i.denoising=t.denoising,a||O(t.denoising);else if(t.type===`loaded`){let e={kind:t.kind,timeline:t.timeline,text:t.text,reads:t.reads,problems:t.problems,mix:t.mix};if(a){i.loaded=e;return}C(sn(e)),D(void 0),N.current.onLoaded?.(e)}else if(t.type===`error`)a?x(void 0):D(t.message),N.current.onError?.(t.message);else if(t.type===`time`){if(a){if(!i.loaded)return;_(i),x(void 0),oe(e=>e+1),O(i.denoising===!0),C(sn(i.loaded)),D(void 0),N.current.onLoaded?.(i.loaded);let t=N.current.play.t;if(i.from!==void 0&&Math.abs(t-i.from)>1e-6){mt(e.source,{type:`seek`,t});return}}let n={t:t.t,part:t.part,playing:t.playing};ce(i.id),ie(n),N.current.onState?.(n)}};return window.addEventListener(`message`,e),()=>{window.removeEventListener(`message`,e)}},[]);let z=S?.timeline,[ye,B]=z?[z.width,z.height]:[r,i],be=S?.uncut.find(e=>e.part===j.part);(0,P.useLayoutEffect)(()=>{let e=ue.current;if(!e)return;let t=()=>{pe(e.clientHeight)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[]);let V=z!==void 0,xe=j.playing;(0,P.useEffect)(()=>{if(!V)return;let e=e=>{if(e.key!==` `||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target;t instanceof HTMLElement&&(t.isContentEditable||t.closest(`input,textarea,select,button,a,[role=slider],[role=menuitem],[role=dialog]`))||(e.preventDefault(),mt(he(N.current.shown),{type:xe?`pause`:`play`}))};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[V,xe]);let H=e=>{I({type:`seek`,t:e})},Se=(e,t)=>(0,F.jsx)(`iframe`,{"data-frame":e.id,src:e.src,title:f.previewTitle,...A?{sandbox:`allow-scripts`}:{},allow:`autoplay`,"data-testid":t?`stage-pending`:`stage`,className:u(`absolute -inset-0.5 size-[calc(100%+4px)] border-0`,t&&`pointer-events-none opacity-0`)},e.id),U=z?`bg-background`:`bg-black`,Ce=(0,F.jsxs)(F.Fragment,{children:[g&&A!==void 0?Se(g,!1):null,b&&A!==void 0?Se(b,!0):null,z||w!==void 0?null:(0,F.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,F.jsx)(Ve,{label:f.loading,className:`[&>span]:bg-on-media/80`})}),te?(0,F.jsx)(`span`,{className:`bg-background/90 text-muted-foreground absolute top-2 right-2 rounded-sm px-2 py-0.5 font-mono text-micro`,"data-testid":`denoising`,children:f.denoising}):null,z?(0,F.jsx)(`span`,{"aria-hidden":!0,"data-testid":`play-affordance`,"data-shown":!j.playing&&j.t<.05?``:void 0,className:`bg-foreground/92 text-background pointer-events-none absolute top-1/2 left-1/2 flex size-14 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-md opacity-0 transition-opacity data-[shown]:opacity-100`,children:(0,F.jsx)(ge,{className:`size-6 translate-x-px fill-current`})}):null,be?(0,F.jsx)(`span`,{className:`bg-background/90 text-muted-foreground absolute top-2 left-2 max-w-[calc(100%-1rem)] rounded-sm px-2 py-0.5 font-mono text-micro`,"data-testid":`uncut`,children:f.uncut(be.file)}):null,o]}),we=se!==void 0&&se===g?.id,Te=async()=>{I({type:`pause`});let e=Date.now()+nn;for(;N.current.play.playing&&Date.now()<e;)await new Promise(e=>{setTimeout(e,rn)})},Ee=e=>{let t=m.current?.getBoundingClientRect();if(!t||t.width===0||t.height===0)return Promise.resolve([]);let n=crypto.randomUUID();return new Promise(r=>{let i=setTimeout(()=>{h.current.delete(n),r([])},an);h.current.set(n,e=>{clearTimeout(i),r(e)}),I({type:`locate`,id:n,mark:re(e,({x:e,y:n})=>({x:(e-t.x)/t.width,y:(n-t.y)/t.height}))})})},W=ee()?.item.entry;y({freeze:async()=>{await Te();let{t:n,part:r}=N.current.play;return{key:`${e}@${t}@${n.toFixed(3)}@${String(N.current.shown?.id??0)}`,what:`The video ${e}, version ${t}, at ${n.toFixed(2)} s${r===void 0?``:`, in the part ${r}`}`,...W===void 0?{}:{source:{path:W}}}},pictures:async()=>{let n=m.current?.getBoundingClientRect();if(!n)return[];let r=await v(p,`video/still`,{item:e,version:t,t:N.current.play.t}).catch(()=>void 0);return r?[{rect:{x:n.x,y:n.y,width:n.width,height:n.height},mime:r.image.mime,data:r.image.data}]:[]},locate:async e=>{let t=m.current?.getBoundingClientRect();return t&&de(e,t)?(await Ee(e)).map(e=>({name:`${e.name===void 0?`the ${e.layer} layer`:`layer ${JSON.stringify(e.name)}`} of part ${e.part}`,...W===void 0?{}:{source:{path:W}},...e.text===void 0?{}:{text:e.text}})):[...document.querySelectorAll(`[data-row]`)].filter(t=>de(e,t.getBoundingClientRect())).map(e=>({name:`the ${e.dataset.row??``} row of the timeline`}))}});let De=e=>fe-Xt-3-Nt(e)-1,Oe=[Zt,Qt].find(e=>De(e)>=en)??$t,G=z&&M?Nt(Oe)+1:0,ke=51+G,K=`min(100cqw - 2px, (100cqh - ${String(ke)}px) * ${String(ye/B)})`,Ae=G?`max(${K}, min(100cqw - 2px, ${String(tn)}px))`:K;return(0,F.jsx)(`div`,{className:`flex h-full min-h-0 flex-col gap-2`,"data-testid":`video-preview`,"data-t":j.t.toFixed(4),"data-ready":we?``:void 0,"data-swaps":ae,children:(0,F.jsx)(`div`,{ref:ue,className:`flex min-h-0 flex-1 flex-col items-center justify-start [container-type:size]`,children:(0,F.jsxs)(`div`,{className:`box-content overflow-hidden border`,style:{width:Ae},"data-testid":`player`,children:[(0,F.jsx)(`div`,{ref:m,className:u(`relative mx-auto overflow-hidden`,U),style:{width:K,height:`calc(${K} * ${String(B/ye)})`},children:Ce}),z?(0,F.jsx)(ln,{timeline:z,state:j,open:M,onOpen:le,onToggle:()=>{I({type:j.playing?`pause`:`play`})},onSeek:H}):(0,F.jsx)(`div`,{className:`h-12 border-t`}),z&&M?(0,F.jsx)(Yt,{timeline:z,texts:S.texts,tracks:S.tracks,rows:Oe,state:j,onSeek:H}):null]})})})}var $=2;function ln({timeline:e,state:t,open:n,onOpen:r,onToggle:i,onSeek:a}){let o=X(),{parts:s}=e,c=Math.max(0,s.findIndex((e,n)=>n===s.length-1||t.t<e.end)),l=s[c];return(0,F.jsxs)(`div`,{className:`relative flex h-12 items-center gap-3 border-t px-3`,"data-testid":`transport`,children:[(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(x,{size:`icon-sm`,className:`rounded-md`,"aria-label":t.playing?o.pause:o.play,"data-testid":`play`,onClick:i,children:t.playing?(0,F.jsx)(he,{className:`fill-current`}):(0,F.jsx)(ge,{className:`translate-x-px fill-current`})}),(0,F.jsxs)(`span`,{className:`shrink-0 font-mono text-xs tabular-nums`,"data-testid":`clock`,children:[q(Math.min(t.t,e.duration)),(0,F.jsxs)(`span`,{className:`text-muted-foreground`,children:[` / `,q(e.duration)]})]})]}),n?(0,F.jsx)(`span`,{className:`flex min-w-0 flex-1`,children:l?(0,F.jsxs)(`span`,{className:`text-muted-foreground max-w-[40%] truncate font-mono text-micro`,"data-testid":`scene-now`,children:[String(c+1),` · `,l.title??l.key]}):null}):(0,F.jsx)(un,{timeline:e,state:t,onSeek:a}),(0,F.jsx)(x,{size:`icon-sm`,variant:`ghost`,className:`text-muted-foreground -mr-1`,"aria-label":n?o.hideTimeline:o.showTimeline,title:n?o.hideTimeline:o.showTimeline,"aria-expanded":n,"data-testid":`timeline-toggle`,onClick:()=>{r(!n)},children:n?(0,F.jsx)(ie,{}):(0,F.jsx)(ue,{})})]})}function un({timeline:e,state:t,onSeek:n}){let r=X(),{duration:i,fps:a}=e,o=Math.max(0,i-1/a),s=e.parts.length?e.parts.map((e,t)=>({key:e.key,name:e.title??String(t+1),start:e.start,end:e.end})):[{key:``,name:``,start:0,end:i}],c=(s.length-1)*$,[l,u]=(0,P.useState)(),[d,f]=(0,P.useState)(),p=Math.min(l??t.t,i),m=e=>Math.max(0,s.findIndex((t,n)=>n===s.length-1||e<t.end)),h=s[m(p)],g=e=>{let t=e.currentTarget.getBoundingClientRect(),n=Math.min(t.width,Math.max(0,e.clientX-t.left)),r=Math.max(1,t.width-c),l=0,u=i;for(let e of s){let t=r*(e.end-e.start)/Math.max(i,1e-6);if(n<=l+t+$/2){let r=Math.min(1,Math.max(0,(n-l)/Math.max(t,1)));u=e.start+r*(e.end-e.start);break}l+=t+$}return{x:n,t:Math.min(Math.max(Y(u,a),0),o)}},_=e=>{n(Math.min(Math.max(Y(e,a),0),o))},v=d?s[m(d.t)]?.name:void 0;return(0,F.jsxs)(`div`,{role:`slider`,tabIndex:0,"aria-label":r.seek,"aria-valuemin":0,"aria-valuemax":Math.round(i*100)/100,"aria-valuenow":Math.round(p*100)/100,"aria-valuetext":r.timeOf(q(p),q(i),h?.name??``),"data-testid":`scrubber`,className:`group/scrub focus-visible:outline-ring relative h-6 min-w-0 flex-1 cursor-pointer touch-none rounded-sm outline-none focus-visible:outline-1 focus-visible:outline-solid focus-visible:-outline-offset-1`,onPointerDown:e=>{e.currentTarget.setPointerCapture(e.pointerId);let t=g(e);u(t.t),f(t),n(t.t)},onPointerMove:e=>{let t=g(e);f(t),l!==void 0&&t.t!==l&&(u(t.t),n(t.t))},onPointerUp:()=>{u(void 0)},onPointerCancel:()=>{u(void 0)},onPointerLeave:()=>{f(void 0)},onKeyDown:e=>{if(e.key===`ArrowLeft`)_(t.t-1);else if(e.key===`ArrowRight`)_(t.t+1);else if(e.key===`Home`)_(0);else if(e.key===`End`)_(o);else return;e.preventDefault()},children:[(0,F.jsx)(`div`,{className:`absolute inset-x-0 top-1/2 flex h-1 -translate-y-1/2 transition-[height] duration-100 group-hover/scrub:h-1.5`,style:{gap:$},children:s.map(e=>{let t=Math.max(e.end-e.start,1e-6),n=Math.min(1,Math.max(0,(p-e.start)/t));return(0,F.jsx)(`span`,{"data-chapter":e.key,className:`bg-rule-strong relative min-w-0 overflow-hidden`,style:{flexGrow:t,flexBasis:0},children:(0,F.jsx)(`span`,{className:`bg-foreground absolute inset-y-0 left-0`,style:{width:`${String(n*100)}%`}})},e.key)})}),(0,F.jsx)(`span`,{"aria-hidden":!0,className:`bg-foreground ring-background pointer-events-none absolute top-1/2 h-3 w-[3px] -translate-x-1/2 -translate-y-1/2 ring-1`,style:{left:`calc((100% - ${String(c)}px) * ${String(p/Math.max(i,1e-6))} + ${String(m(p)*$)}px)`}}),d?(0,F.jsxs)(`span`,{role:`tooltip`,"data-testid":`scrub-tip`,className:`bg-popover text-popover-foreground shadow-overlay pointer-events-none absolute bottom-full z-10 mb-1.5 flex max-w-[16rem] -translate-x-1/2 items-baseline gap-2 rounded-sm px-2 py-1 whitespace-nowrap`,style:{left:d.x},children:[v?(0,F.jsx)(`span`,{className:`truncate font-serif text-dense`,children:v}):null,(0,F.jsx)(`span`,{className:`text-muted-foreground font-mono text-micro tabular-nums`,children:q(d.t)})]}):null]})}var dn={error:0,warn:1};function fn(e){let t=new Set;return[...e].sort((e,t)=>dn[e.level]-dn[t.level]).filter(e=>{let n=`${e.code}\u0000${e.message}\u0000${e.where?.file??``}`;return!t.has(n)&&(t.add(n),!0)})}function pn({error:e,problems:t,compact:n}){let r=X(),[i,a]=(0,P.useState)(!1),o=fn(t);return e===void 0?o.length?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`button`,{type:`button`,className:`bg-background/90 text-foreground absolute bottom-2 left-2 z-20 flex items-center gap-1.5 rounded-sm px-2 py-1 font-mono text-micro`,onClick:()=>{a(!i)},"aria-expanded":i,"data-testid":`problems-chip`,children:[(0,F.jsx)(d,{className:u(`size-3.5`,o.some(e=>e.level===`error`)?`text-problem-text`:`text-caution-text`)}),r.problemsHere(o.length)]}),i?(0,F.jsxs)(`div`,{className:`bg-card absolute bottom-10 left-2 z-30 flex max-h-[60%] w-[min(420px,calc(100%-1rem))] flex-col rounded-md border shadow-[var(--allyhub-shadow-overlay)]`,"data-testid":`problems`,children:[(0,F.jsx)(`div`,{className:`flex items-center justify-end border-b px-1 py-1`,children:(0,F.jsx)(x,{size:`icon-xs`,variant:`ghost`,"aria-label":r.close,onClick:()=>{a(!1)},children:(0,F.jsx)(c,{})})}),(0,F.jsx)(`ul`,{className:`divide-y overflow-y-auto`,children:o.map((e,t)=>(0,F.jsxs)(`li`,{"data-code":e.code,className:`px-3 py-2 text-sm leading-relaxed`,children:[(0,F.jsxs)(`span`,{className:`text-muted-foreground mr-2 font-mono text-micro`,children:[e.level===`error`?r.levelError:r.levelWarn,` ·`,` `,e.code]}),e.message]},`${e.code}-${String(t)}`))})]}):null]}):null:(0,F.jsx)(`div`,{className:u(`z-20 overflow-auto text-left`,n?`bg-background/94 absolute inset-x-0 bottom-0 max-h-[45%] border-t px-4 py-3`:`bg-background/96 absolute inset-0 grid content-center justify-items-center p-5 text-center`),"data-testid":`stage-overlay`,"data-compact":n?`true`:void 0,role:`alert`,children:(0,F.jsxs)(`p`,{className:`flex items-center gap-1.5 text-sm`,children:[(0,F.jsx)(d,{className:`text-problem-text size-4`,"aria-hidden":!0}),n?r.previewFailedKept:r.previewFailed]})})}var mn=1200;function hn({item:e,piece:t,version:n,revision:r,problems:i}){let[a,o]=(0,P.useState)(),[s,c]=(0,P.useState)(),[l,u]=(0,P.useState)();(0,P.useEffect)(()=>{if(s===void 0)return;let e=setTimeout(()=>{u(s)},mn);return()=>{clearTimeout(e)}},[s]);let d=s!==void 0&&l===s?s:void 0,[f,p]=(0,P.useState)(n.key);f!==n.key&&(p(n.key),o(void 0),c(void 0));let m=[...i,...a?.problems??[]];return(0,F.jsx)(`div`,{className:`bg-paper size-full p-4 min-[560px]:p-6`,children:(0,F.jsx)(cn,{item:e,version:n.key,revision:r,width:t.width,height:t.height,overlay:(0,F.jsx)(pn,{error:d,problems:m,compact:a!==void 0}),onLoaded:e=>{o(e),c(void 0)},onError:c})})}function gn(e,t,n){let r=t.versions.filter(e=>n?.includes(e.key)!==!1).flatMap(n=>dt(e,t.piece,n)).filter(e=>e.level===`error`).map(e=>`${e.code}: ${e.message}`);return new Set(r).size}function _n(){let e=X(),t=ee(),n=t?.item.dir,r=s[_(t?.locale)],i=ot(),{data:a,error:o}=at(`video/versions`,n===void 0?void 0:{item:n},[i]),[c,l]=ct(`video-editor.version:${n??``}`,``),u=st(),d=a?ut(a,c):void 0,{data:f}=at(`video/timeline`,n===void 0||!d?void 0:{item:n,version:d.key},[i]);if(n===void 0||!a&&!o)return(0,F.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,F.jsx)(Ve,{label:e.loading})});if(!a||!d)return(0,F.jsx)(He,{title:e.noVideo,className:`h-full justify-center`,children:o?.message});let p=u?dt(u.problems,a.piece,d):[],m=e=>e.lang===void 0?e.key:ft(e.lang,r),h=a.kind===`video`?f?.timeline:void 0,g=a.kind===`video`&&f!==void 0&&!f.text.some(e=>e.spoken!==void 0);return(0,F.jsxs)(`div`,{className:`flex size-full min-h-0 flex-col`,"data-testid":`video-editor`,children:[(0,F.jsx)(le,{start:a.versions.length>1?(0,F.jsxs)(oe,{value:d.key,onValueChange:e=>{l(e)},children:[(0,F.jsx)(ae,{"aria-label":e.version,className:`max-w-[16rem]`,"data-testid":`version`,children:(0,F.jsx)(se,{})}),(0,F.jsx)(M,{position:`popper`,align:`start`,children:a.versions.map(e=>(0,F.jsx)(ce,{value:e.key,className:`text-xs`,title:e.key,children:m(e)},e.key))})]}):void 0,exports:{versions:a.versions.map(e=>({key:e.key,label:m(e)})),shown:d.key,facts:[`${String(a.width)} × ${String(a.height)}`,...h?[`${String(h.fps)} fps`,q(h.duration)]:[]].join(` · `),unavailable:g?{srt:e.noVoice}:{},check:{waiting:u?.status===`waiting`||u?.status===`running`,problems:e=>u?.status===`done`?gn(u.problems,a,e):0}}}),(0,F.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,F.jsx)(hn,{item:n,piece:a,version:d,revision:i,problems:p})})]})}var vn=e({VideoEditor:()=>_n});export{ut as a,ct as c,Ve as d,ge as f,ft as i,at as l,gn as n,st as o,pt as r,ot as s,vn as t,He as u};