human2ai 0.1.3 → 0.1.5

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 (171) hide show
  1. package/README.en.md +36 -4
  2. package/README.md +36 -4
  3. package/dist/cli/main.js +26 -0
  4. package/dist/cli/main.js.map +1 -1
  5. package/dist/database/style-library-repository.d.ts +14 -1
  6. package/dist/database/style-library-repository.js +59 -0
  7. package/dist/database/style-library-repository.js.map +1 -1
  8. package/dist/domain/composition/analysis.d.ts +3 -0
  9. package/dist/domain/composition/analysis.js +4 -0
  10. package/dist/domain/composition/analysis.js.map +1 -1
  11. package/dist/domain/composition/draft.d.ts +1 -0
  12. package/dist/domain/composition/draft.js +74 -3
  13. package/dist/domain/composition/draft.js.map +1 -1
  14. package/dist/domain/composition/frame.d.ts +1 -0
  15. package/dist/domain/composition/frame.js +6 -0
  16. package/dist/domain/composition/frame.js.map +1 -1
  17. package/dist/domain/composition/index.d.ts +4 -1
  18. package/dist/domain/composition/index.js +4 -1
  19. package/dist/domain/composition/index.js.map +1 -1
  20. package/dist/domain/composition/planning-intersections.d.ts +20 -0
  21. package/dist/domain/composition/planning-intersections.js +119 -0
  22. package/dist/domain/composition/planning-intersections.js.map +1 -0
  23. package/dist/domain/composition/planning.d.ts +25 -0
  24. package/dist/domain/composition/planning.js +152 -0
  25. package/dist/domain/composition/planning.js.map +1 -0
  26. package/dist/domain/composition/render.js +8 -0
  27. package/dist/domain/composition/render.js.map +1 -1
  28. package/dist/domain/composition/states.js +4 -1
  29. package/dist/domain/composition/states.js.map +1 -1
  30. package/dist/domain/composition/types.d.ts +46 -0
  31. package/dist/domain/spatial/camera-render-key.d.ts +7 -0
  32. package/dist/domain/spatial/camera-render-key.js +63 -0
  33. package/dist/domain/spatial/camera-render-key.js.map +1 -0
  34. package/dist/domain/spatial/lighting.js +3 -2
  35. package/dist/domain/spatial/lighting.js.map +1 -1
  36. package/dist/domain/spatial/model.d.ts +2 -0
  37. package/dist/domain/spatial/model.js +82 -27
  38. package/dist/domain/spatial/model.js.map +1 -1
  39. package/dist/domain/spatial/preview.d.ts +4 -0
  40. package/dist/domain/spatial/preview.js +23 -0
  41. package/dist/domain/spatial/preview.js.map +1 -0
  42. package/dist/domain/spatial/reference-lines.d.ts +12 -3
  43. package/dist/domain/spatial/reference-lines.js +37 -16
  44. package/dist/domain/spatial/reference-lines.js.map +1 -1
  45. package/dist/domain/spatial/render-inputs.d.ts +1 -1
  46. package/dist/domain/spatial/render-inputs.js +10 -2
  47. package/dist/domain/spatial/render-inputs.js.map +1 -1
  48. package/dist/domain/spatial/scene-cache.d.ts +13 -1
  49. package/dist/domain/spatial/scene-cache.js +88 -10
  50. package/dist/domain/spatial/scene-cache.js.map +1 -1
  51. package/dist/domain/spatial/scene-update.d.ts +6 -0
  52. package/dist/domain/spatial/scene-update.js +52 -0
  53. package/dist/domain/spatial/scene-update.js.map +1 -0
  54. package/dist/domain/spatial/scene.d.ts +3 -1
  55. package/dist/domain/spatial/scene.js +78 -20
  56. package/dist/domain/spatial/scene.js.map +1 -1
  57. package/dist/domain/style/model-input.d.ts +3 -0
  58. package/dist/domain/style/model-input.js +36 -0
  59. package/dist/domain/style/model-input.js.map +1 -0
  60. package/dist/domain/style/types.d.ts +7 -0
  61. package/dist/server/routes/spatial-sessions.js +28 -12
  62. package/dist/server/routes/spatial-sessions.js.map +1 -1
  63. package/dist/server/routes/style-library.js +39 -0
  64. package/dist/server/routes/style-library.js.map +1 -1
  65. package/dist/server/spatial-render-service.d.ts +21 -0
  66. package/dist/server/spatial-render-service.js +67 -0
  67. package/dist/server/spatial-render-service.js.map +1 -0
  68. package/dist/server/spatial-render-worker.d.ts +1 -0
  69. package/dist/server/spatial-render-worker.js +15 -0
  70. package/dist/server/spatial-render-worker.js.map +1 -0
  71. package/dist/server/spatial-render.d.ts +14 -2
  72. package/dist/server/spatial-render.js +38 -7
  73. package/dist/server/spatial-render.js.map +1 -1
  74. package/locales/en/common.json +73 -6
  75. package/migrations/0010_style_preview_models.sql +8 -0
  76. package/package.json +1 -1
  77. package/schemas/composition-draft.schema.json +457 -0
  78. package/skills/human2ai/SKILL.md +12 -4
  79. package/skills/human2ai/references/composition.md +192 -1
  80. package/skills/human2ai/references/spatial-modeling.md +20 -0
  81. package/web/out/404/index.html +1 -1
  82. package/web/out/404.html +1 -1
  83. package/web/out/__next.__PAGE__.txt +9 -9
  84. package/web/out/__next._full.txt +10 -10
  85. package/web/out/__next._tree.txt +6 -6
  86. package/web/out/_next/static/chunks/101.6ef34adad3e9815b.js +1 -0
  87. package/web/out/_next/static/chunks/130-930cfe062cda6fb5.js +1 -0
  88. package/web/out/_next/static/chunks/166-64abdc6456626378.js +1 -0
  89. package/web/out/_next/static/chunks/218.7b89674409b344b8.js +1 -0
  90. package/web/out/_next/static/chunks/{773-24ba65074da7fa71.js → 380-6a6a9517cf13350e.js} +50 -50
  91. package/web/out/_next/static/chunks/484.92b016222d6749f2.js +1 -0
  92. package/web/out/_next/static/chunks/653-6dfb97fec9a2d91b.js +1 -0
  93. package/web/out/_next/static/chunks/678-6a688c1f8589183c.js +1 -0
  94. package/web/out/_next/static/chunks/83607670-fd2f339702a222e4.js +1 -0
  95. package/web/out/_next/static/chunks/app/_not-found/page-527a4b0506fa60cb.js +1 -0
  96. package/web/out/_next/static/chunks/app/composition/page-945cb9644c513407.js +1 -0
  97. package/web/out/_next/static/chunks/app/{layout-3b5f82ced220ef42.js → layout-33fe456f6115412e.js} +1 -1
  98. package/web/out/_next/static/chunks/app/page-b027a8ffdb9dda66.js +1 -0
  99. package/web/out/_next/static/chunks/app/spatial/page-c52d564a39d3b592.js +1 -0
  100. package/web/out/_next/static/chunks/app/styles/page-87d77b1f3e8fdd21.js +1 -0
  101. package/web/out/_next/static/chunks/app/ui-sketch/page-69219e06cc93c28f.js +1 -0
  102. package/web/out/_next/static/chunks/{c3f2cda1-9e279dab137b7272.js → c3f2cda1-ef85a0897724e46b.js} +1 -1
  103. package/web/out/_next/static/chunks/main-app-4a71cca48ead7720.js +1 -0
  104. package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-6a956dd8904b8723.js +1 -0
  105. package/web/out/_next/static/chunks/webpack-c0280e9af5fc8cd3.js +1 -0
  106. package/web/out/_next/static/css/{ce1b4bb3ad3c6073.css → 0ab45995828642ec.css} +1 -1
  107. package/web/out/_next/static/css/0b43ff4a0439c97e.css +1 -0
  108. package/web/out/_next/static/css/0c7915cdb1509f9d.css +1 -0
  109. package/web/out/_next/static/css/4fb1bde9070d5094.css +5 -0
  110. package/web/out/_next/static/css/c39f5ecbfc8cb532.css +1 -0
  111. package/web/out/_next/static/css/{3b7982b41ed8eccd.css → d42ebb6745c15e30.css} +1 -1
  112. package/web/out/_next/static/css/d787350911847f22.css +1 -0
  113. package/web/out/_next/static/css/db78da93b4de5040.css +1 -0
  114. package/web/out/_not-found/__next._full.txt +6 -6
  115. package/web/out/_not-found/__next._not-found.__PAGE__.txt +5 -5
  116. package/web/out/_not-found/__next._tree.txt +3 -3
  117. package/web/out/_not-found/index.html +1 -1
  118. package/web/out/_not-found/index.txt +6 -6
  119. package/web/out/brand/h2a-1024.png +0 -0
  120. package/web/out/brand/h2a-128.png +0 -0
  121. package/web/out/brand/h2a-16.png +0 -0
  122. package/web/out/brand/h2a-256.png +0 -0
  123. package/web/out/brand/h2a-32.png +0 -0
  124. package/web/out/brand/h2a-48.png +0 -0
  125. package/web/out/brand/h2a-512.png +0 -0
  126. package/web/out/brand/h2a-64.png +0 -0
  127. package/web/out/brand/h2a.svg +10 -1
  128. package/web/out/composition/__next._full.txt +11 -11
  129. package/web/out/composition/__next._tree.txt +7 -7
  130. package/web/out/composition/__next.composition.__PAGE__.txt +10 -10
  131. package/web/out/composition/index.html +1 -1
  132. package/web/out/composition/index.txt +11 -11
  133. package/web/out/favicon.ico +0 -0
  134. package/web/out/icon.svg +10 -1
  135. package/web/out/index.html +1 -1
  136. package/web/out/index.txt +10 -10
  137. package/web/out/spatial/__next._full.txt +9 -9
  138. package/web/out/spatial/__next._tree.txt +5 -5
  139. package/web/out/spatial/__next.spatial.__PAGE__.txt +8 -8
  140. package/web/out/spatial/index.html +1 -1
  141. package/web/out/spatial/index.txt +9 -9
  142. package/web/out/styles/__next._full.txt +9 -9
  143. package/web/out/styles/__next._tree.txt +5 -5
  144. package/web/out/styles/__next.styles.__PAGE__.txt +8 -8
  145. package/web/out/styles/index.html +1 -1
  146. package/web/out/styles/index.txt +9 -9
  147. package/web/out/ui-sketch/__next._full.txt +10 -10
  148. package/web/out/ui-sketch/__next._tree.txt +6 -6
  149. package/web/out/ui-sketch/__next.ui-sketch.__PAGE__.txt +9 -9
  150. package/web/out/ui-sketch/index.html +1 -1
  151. package/web/out/ui-sketch/index.txt +10 -10
  152. package/web/out/_next/static/chunks/130-027b022c82d30077.js +0 -1
  153. package/web/out/_next/static/chunks/678-6f33e7277564a5df.js +0 -1
  154. package/web/out/_next/static/chunks/728-7597352c3a7eeaf9.js +0 -1
  155. package/web/out/_next/static/chunks/83607670-bc1279370476e59f.js +0 -1
  156. package/web/out/_next/static/chunks/app/_not-found/page-58bf95050b473956.js +0 -1
  157. package/web/out/_next/static/chunks/app/composition/page-30184e9c21352991.js +0 -1
  158. package/web/out/_next/static/chunks/app/page-d41d1cdb1d6ed018.js +0 -1
  159. package/web/out/_next/static/chunks/app/spatial/page-fc3c66e1f94ed210.js +0 -1
  160. package/web/out/_next/static/chunks/app/styles/page-194a16109270e08d.js +0 -1
  161. package/web/out/_next/static/chunks/app/ui-sketch/page-c28eeab67fea766e.js +0 -1
  162. package/web/out/_next/static/chunks/main-app-ec9e35d71481270a.js +0 -1
  163. package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-f62e60e5a6e74304.js +0 -1
  164. package/web/out/_next/static/chunks/webpack-fdd377b620f7ea99.js +0 -1
  165. package/web/out/_next/static/css/1f8501a43042a5a2.css +0 -1
  166. package/web/out/_next/static/css/2ed56cbf8f662d23.css +0 -5
  167. package/web/out/_next/static/css/81ae71f1d3e9a866.css +0 -1
  168. package/web/out/_next/static/css/96839f63fcc5e50d.css +0 -1
  169. package/web/out/_next/static/css/db96ae2e88545d96.css +0 -1
  170. /package/web/out/_next/static/{Wakl9xK54qWYuP4Hpi0W9 → Rem7hlT5iXtA-5codwSoe}/_buildManifest.js +0 -0
  171. /package/web/out/_next/static/{Wakl9xK54qWYuP4Hpi0W9 → Rem7hlT5iXtA-5codwSoe}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{6508:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(35465)}])},26553:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(73365),n=l(44760);function o({status:e,message:t}){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:`${e}: ${t}`}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:e}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:t})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},35465:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(73365),n=l(26553),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},44760:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[347,158,358],()=>e(e.s=6508)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[271],{2828:e=>{e.exports={page:"page_page__RhPIA",routeLoading:"page_routeLoading__5WzpA",workspaceLoading:"page_workspaceLoading__dL32T",panelLoading:"page_panelLoading__39zT6",deliveryNotice:"page_deliveryNotice__87isY",deliveryNoticeSuccess:"page_deliveryNoticeSuccess__OLl4_",deliveryNoticeWarning:"page_deliveryNoticeWarning__ovF85",deliveryNoticeError:"page_deliveryNoticeError__HVdjV",serviceError:"page_serviceError__r4EOT",workspace:"page_workspace__J9PVq",stage:"page_stage__k9VRj",workflow:"page_workflow__lR5mI",toolGroups:"page_toolGroups__F2p04",toolGroup:"page_toolGroup__35bzP",capacityTool:"page_capacityTool__glYiG",toolGroupTitle:"page_toolGroupTitle__nfj7N",toolAction:"page_toolAction__dN0J1",processingSemanticSwitch:"page_processingSemanticSwitch__08Z5N",overallNoteEditor:"page_overallNoteEditor__mEwiW",shapeToolIcon:"page_shapeToolIcon__rzrLe",circleToolIcon:"page_circleToolIcon__tFQky",triangleToolIcon:"page_triangleToolIcon__OZv0J",quadrilateralToolIcon:"page_quadrilateralToolIcon__FnduP",panel:"page_panel__MDuVE",panelIsLoading:"page_panelIsLoading__p_o3O",sectionHeading:"page_sectionHeading__Y673y",sectionHeadingActions:"page_sectionHeadingActions__NYnhA",aspectRatioSelector:"page_aspectRatioSelector__1_Iue",metrics:"page_metrics__2KOsi"}},6621:(e,i,o)=>{Promise.resolve().then(o.bind(o,83963))},78755:()=>{},83963:(e,i,o)=>{"use strict";o.r(i),o.d(i,{default:()=>Q});var t=o(73365),a=o(42614),n=o(11902),s=o(6915),r=o(28110),l=o(1521);let c={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M904 476H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z"}}]},name:"line",theme:"outlined"};var d=o(28630);function u(){return(u=Object.assign?Object.assign.bind():function(e){for(var i=1;i<arguments.length;i++){var o=arguments[i];for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])}return e}).apply(this,arguments)}let p=l.forwardRef((e,i)=>l.createElement(d.A,u({},e,{ref:i,icon:c})));var m=o(59030),g=o(28462),h=o(83499),f=o(17357),v=o(81271),w=o(51055),y=o(23139),b=o(16415),x=o(94946),S=o(29415),k=o(50052),j=o(67282);o(22392),o(78755);var C=o(46811);let _=["natural","sage","amber","rose","slate","sky","lavender","clay"];function I({items:e,"aria-label":i,value:o,defaultValue:a,onChange:n,colors:s={mode:"multicolor"},disabled:r=!1,className:c,style:d}){let u=new Set;for(let i of e){if(!i.label.trim()||u.has(i.key))throw Error("ExpandingSwitch 需要非空 label 和唯一 key。");u.add(i.key)}if(e.length&&void 0!==o&&!u.has(o))throw Error(`ExpandingSwitch value 不存在于 items:${o}`);let p=e.find(e=>!e.disabled)?.key??e[0]?.key,[m,g]=(0,l.useState)(a??p),[h,f]=(0,l.useState)(),[v,w]=(0,l.useState)(),[y,b]=(0,l.useState)(),x=(0,l.useRef)(null),S=(0,l.useRef)(new Map),k=(0,l.useRef)(!1),j=o??(void 0!==m&&u.has(m)?m:p),N=i=>!r&&e.some(e=>e.key===i&&!e.disabled),A=(N(h)?h:void 0)??(N(v)?v:void 0)??j,E=(N(v)?v:void 0)??(N(j)?j:e.find(e=>!e.disabled)?.key);function R(e){r||e.disabled||e.key===j||(void 0===o&&g(e.key),n?.(e.key,e))}if((0,l.useLayoutEffect)(()=>{let e=x.current;if(!e)return;let i=()=>{let i=Math.ceil(e.getBoundingClientRect().width);i>0&&b(i)};i();let o="u"<typeof ResizeObserver?void 0:new ResizeObserver(i);return o?.observe(e),window.addEventListener("resize",i),document.fonts?.addEventListener("loadingdone",i),()=>{o?.disconnect(),window.removeEventListener("resize",i),document.fonts?.removeEventListener("loadingdone",i)}},[e]),!e.length)return null;let T={...d,"--yisiui-expanding-switch-item-count":e.length,...y?{"--yisiui-expanding-switch-expanded-width":`${y}px`}:{},..."duotone"===s.mode?{"--yisiui-expanding-switch-selected-background":s.selectedBackground,"--yisiui-expanding-switch-unselected-background":s.unselectedBackground,"--yisiui-expanding-switch-selected-foreground":s.selectedForeground,"--yisiui-expanding-switch-unselected-foreground":s.unselectedForeground}:{}};return(0,t.jsxs)("div",{...(0,C.S)("expanding-switch","ExpandingSwitch"),className:["yisi-expanding-switch",c].filter(Boolean).join(" "),role:"radiogroup","aria-label":i,"aria-disabled":r||void 0,"data-color-mode":s.mode,style:T,onPointerLeave:()=>f(void 0),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||(w(void 0),k.current=!1)},children:[(0,t.jsx)("span",{ref:x,className:"yisi-expanding-switch-measure","aria-hidden":"true",children:e.map(e=>(0,t.jsx)("span",{children:e.label},e.key))}),(0,t.jsx)("div",{className:"yisi-expanding-switch-track",style:{gridTemplateColumns:e.map(e=>e.key===A?"max(var(--yisiui-expanding-switch-size), var(--yisiui-expanding-switch-expanded-width, 64px))":"var(--yisiui-expanding-switch-size)").join(" ")},children:e.map((i,o)=>{let a=i.key===A,n=i.key===j;return(0,t.jsxs)("button",{ref:e=>{e?S.current.set(i.key,e):S.current.delete(i.key)},type:"button",role:"radio","aria-label":i.label,"aria-checked":n,disabled:r||i.disabled,tabIndex:r||i.disabled||i.key!==E?-1:0,className:"yisi-expanding-switch-item","data-expanded":a,"data-palette":"multicolor"===s.mode?_[o%_.length]:void 0,onPointerEnter:e=>{"touch"!==e.pointerType&&(k.current=!0,w(void 0),f(N(i.key)?i.key:void 0))},onPointerDown:()=>{k.current=!0,w(void 0)},onPointerCancel:()=>f(void 0),onFocus:()=>{k.current||w(i.key)},onKeyDown:o=>(function(i,o){let t;k.current=!1,f(void 0),w(o.key);let a=e.filter(e=>!e.disabled);if(r||o.disabled||!a.length)return;let n=a.findIndex(e=>e.key===o.key),s="rtl"===getComputedStyle(i.currentTarget).direction;switch(i.key){case"ArrowRight":t=n+(s?-1:1);break;case"ArrowLeft":t=n+(s?1:-1);break;case"ArrowDown":t=n+1;break;case"ArrowUp":t=n-1;break;case"Home":t=0;break;case"End":t=a.length-1;break;default:return}i.preventDefault();let l=a[(t+a.length)%a.length];w(l.key),S.current.get(l.key)?.focus(),S.current.get(l.key)?.scrollIntoView({block:"nearest",inline:"nearest"}),R(l)})(o,i),onClick:()=>R(i),children:[(0,t.jsx)("span",{className:"yisi-expanding-switch-label","aria-hidden":"true",children:i.label}),null!=i.icon&&(0,t.jsx)("span",{className:"yisi-expanding-switch-icon","aria-hidden":"true",inert:a,children:i.icon})]},i.key)})})]})}var N=o(95948),A=o(13360),E=o(49762),R=o(24539),T=o(29717),L=o(8020),P=o(3693),F=o(60458),D=o(48197),M=o(31854),O=o(3742),H=o(55408),V=o(44040),$=o(52582),z=o(3500),B=o(21071),G=o(53130),q=o(46295),U=o(52003),W=o(2828),K=o.n(W);async function J(e){let i=await (0,F.Ht)(e);if("image-composition"!==i.sessionType)throw Error("SESSION_TYPE_MISMATCH");return{session:i,draftVersion:(await (0,F.he)(e)).at(-1)??null}}function Z(e){let i=function(e,i){let o=Math.abs(e),t=Math.abs(i);for(;0!==t;)[o,t]=[t,o%t];return o||1}(e.frame.width,e.frame.height);return{width:e.frame.width/i,height:e.frame.height/i}}function Y(e,i){return e instanceof F.wP?"DRAFT_REVISION_CONFLICT"===e.code?i("composition.session.revisionConflict",{revision:e.details.actualLatestRevision}):i("errors.serviceSync",{message:e.message}):e instanceof Error&&"SESSION_TYPE_MISMATCH"===e.message?i("composition.session.typeMismatch"):i("errors.serviceSync",{message:e instanceof Error?e.message:String(e)})}function Q(){let{t:e}=(0,L.Bd)();return(0,t.jsx)(l.Suspense,{fallback:(0,t.jsx)(N.G,{className:K().routeLoading,label:e("composition.session.loading"),rows:10}),children:(0,t.jsx)(X,{})})}function X(){let e=(0,T.useRouter)(),i=(0,T.useSearchParams)().get("session"),{t:o,i18n:c}=(0,L.Bd)(),d=(0,l.useCallback)((e,i)=>o((0,a.B)("composition",e),i),[o]),[u,C]=(0,l.useState)(P.mq),[_,W]=(0,l.useState)(null),[Q,X]=(0,l.useState)(!0),[ee,ei]=(0,l.useState)(!1),[eo,et]=(0,l.useState)(!0),[ea,en]=(0,l.useState)(1),[es,er]=(0,l.useState)({id:0,type:"fit-frame"}),[el,ec]=(0,l.useState)([]),[ed,eu]=(0,l.useState)([]),[ep,em]=(0,l.useState)(!1),eg=o("composition.planning",{returnObjects:!0}),[eh,ef]=(0,l.useState)({width:16,height:9}),[ev,ew]=(0,l.useState)(null),[ey,eb]=(0,l.useState)(null),[ex,eS]=(0,l.useState)(null),[ek,ej]=(0,l.useState)(null),[eC,e_]=(0,l.useState)(0),[eI,eN]=(0,l.useState)(),[eA,eE]=(0,l.useState)(!1),[eR,eT]=(0,l.useState)(!0),[eL,eP]=(0,l.useState)(!1),[eF,eD]=(0,l.useState)(null),[eM,eO]=(0,l.useState)(!1),[eH,eV]=(0,l.useState)(null),[e$,ez]=(0,l.useState)(!1),[eB,eG]=(0,l.useState)(!1),eq=(0,l.useRef)(0),eU=(0,l.useRef)(0),eW=(0,l.useRef)(null),eK=(0,l.useRef)(!1),eJ=(0,l.useRef)(null),eZ=(0,l.useRef)(null),eY=(0,M.t)(ev,e5,eC),eQ=(0,U.S)(u,({draft:e})=>{eq.current+=1,eW.current=null,C(e),eE(!0),W(null),eO(!1),ec([]),eu([]),ef(Z(e))},eR||eK.current),eX=function(e){let{t:i}=(0,L.Bd)(),o=(0,T.useRouter)(),a=(0,l.useRef)(e);a.current=e;let[n,s]=(0,l.useState)(!1),[r,c]=(0,l.useState)([]),[d,u]=(0,l.useState)(null),[p,m]=(0,l.useState)([]),[g,h]=(0,l.useState)(null),[f,v]=(0,l.useState)(0),[w,y]=(0,l.useState)(!1),[b,x]=(0,l.useState)(null),[k,j]=(0,l.useState)(new Set),[C,_]=(0,l.useState)(0);async function I(e,i,o,t){let a=await fetch((0,F.J_)(i,o.id,t||void 0),{cache:"no-store"});if(!a.ok)throw Error("SPATIAL_CAMERA_NOT_FOUND");return(0,F.FX)(e,new File([await a.blob()],`${o.id}.png`,{type:"image/png"}))}async function N(){let e=p.find(e=>e.id===g);if(d&&e&&!w){y(!0),x(null);try{let i=a.current.sessionId,o=await a.current.ensureSession(),t=await I(o,d,e,f);if(a.current.sessionId!==o&&a.current.sessionId!==i)return;a.current.updateDraft(i=>{var o;let a,n,s;return(o={sessionId:d,cameraId:e.id,revision:f,assetId:t.id,width:e.width,height:e.height},a=320*Math.min(1,o.width/o.height),(s=(n=(0,$.xB)(i,{width:a/z.cq.width,height:a*o.height/o.width/z.cq.height})).draft.images.find(e=>e.id===n.id)).assetId=o.assetId,s.cameraReference={sessionId:o.sessionId,cameraId:o.cameraId,renderedRevision:o.revision},{...n,draft:(0,$.M6)(n.draft)}).draft}),s(!1)}catch{x(i("spatial.loadFailed"))}finally{y(!1)}}}return(0,l.useEffect)(()=>{if(!n)return;let e=!1;return y(!0),x(null),(0,F.GW)().then(i=>{e||c(i.filter(e=>"spatial"===e.sessionType))}).catch(()=>{e||x(i("spatial.loadFailed"))}).finally(()=>{e||y(!1)}),()=>{e=!0}},[n,C,i]),(0,l.useEffect)(()=>{if(!n||!d)return;let e=!1;return y(!0),x(null),m([]),h(null),(0,F.n8)(d).then(i=>{if(e)return;let o=i.at(-1),t=o?.draft.cameras??(0,B.wY)().cameras;m(t),h(t[0]?.id??null),v(o?.revision??0)}).catch(()=>{e||x(i("spatial.loadFailed"))}).finally(()=>{e||y(!1)}),()=>{e=!0}},[d,n,C,i]),(0,l.useEffect)(()=>{let i=e.sessionId;if(!i)return;let o=!1,t=!1;j(new Set);let n=async()=>{if(!t){t=!0;try{let e=new Map;for(let i of a.current.draft.images)i.cameraReference&&e.set(`${i.cameraReference.sessionId}/${i.cameraReference.cameraId}`,i);let t=new Set;for(let[n,s]of e){if(o)return;let e=s.cameraReference;try{let r=(await (0,F.n8)(e.sessionId)).at(-1),l=r?.revision??0,c=(r?.draft??(0,B.wY)()).cameras.find(i=>i.id===e.cameraId);if(!c){t.add(n);continue}if(l===e.renderedRevision&&s.assetId)continue;let d=await I(i,e.sessionId,c,l);if(o)return;a.current.updateDraft(i=>(function(e,i){return(0,$.M6)({...e,images:e.images.map(e=>{let o=e.cameraReference;return o&&o.sessionId===i.sessionId&&o.cameraId===i.cameraId?{...e,assetId:i.assetId,height:e.width*z.cq.width*i.height/i.width/z.cq.height,cameraReference:{...o,renderedRevision:i.revision}}:e})})})(i,{sessionId:e.sessionId,cameraId:c.id,revision:l,assetId:d.id,width:c.width,height:c.height}),!1)}catch{t.add(n)}}o||j(t)}finally{t=!1}}};n();let s=window.setInterval(()=>void n(),2e3);return()=>{o=!0,clearInterval(s)}},[e.sessionId]),{openPicker:()=>{u(null),m([]),h(null),s(!0)},picker:(0,t.jsx)(O.A,{closable:{"aria-label":i("actions.cancel"),disabled:w},title:i("spatial.addReference"),open:n,onCancel:()=>!w&&s(!1),onOk:()=>void N(),confirmLoading:w,okButtonProps:{disabled:!g||w},okText:i("actions.create"),cancelText:i("actions.cancel"),destroyOnHidden:!0,children:(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[b&&(0,t.jsx)(H.A,{type:"error",message:b,action:(0,t.jsx)(S.J,{onClick:()=>_(e=>e+1),children:i("actions.retry")})}),(0,t.jsx)(V.A,{"aria-label":i("spatial.selectSpace"),placeholder:i("spatial.selectSpace"),value:d,loading:w,options:r.map(e=>({value:e.id,label:e.title})),notFoundContent:i("spatial.noSpaces"),onChange:u}),(0,t.jsx)(V.A,{"aria-label":i("spatial.selectCamera"),placeholder:i("spatial.selectCamera"),value:g,disabled:!d||w,options:p.map(e=>({value:e.id,label:e.name})),onChange:h}),d&&g&&(0,t.jsx)("img",{src:(0,F.J_)(d,g,f||void 0),alt:i("spatial.cameraView"),style:{width:"100%",maxHeight:260,objectFit:"contain"}})]})}),renderImageContent:n=>{let s=n.cameraReference,r=k.has(`${s.sessionId}/${s.cameraId}`);return(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,t.jsx)("strong",{children:i("spatial.reference")}),r&&(0,t.jsx)(H.A,{type:"warning",message:i("spatial.sourceMissing")}),n.assetId&&e.sessionId&&(0,t.jsx)("img",{src:(0,F.MZ)(e.sessionId,n.assetId),alt:i("spatial.cameraView"),style:{width:"100%",maxHeight:280,objectFit:"contain"}}),(0,t.jsx)(S.J,{disabled:r,onClick:()=>o.push(`/spatial?session=${encodeURIComponent(s.sessionId)}&camera=${encodeURIComponent(s.cameraId)}`),children:i("spatial.openSource")}),(0,t.jsx)(S.J,{disabled:!n.assetId,onClick:()=>a.current.updateDraft(e=>(function(e,i){let o=e.images.find(e=>e.id===i);if(!o?.cameraReference||!o.assetId)throw Error("COMPOSITION_CAMERA_REFERENCE_REQUIRED");let t=(0,$.xB)(e),{cameraReference:a,...n}=o,s={...n,id:t.id,x:o.x+24/z.cq.width,y:o.y+24/z.cq.height};return t.draft.images[t.draft.images.findIndex(e=>e.id===t.id)]=s,{...t,draft:(0,$.M6)(t.draft)}})(e,n.id).draft),children:i("spatial.snapshot")})]})}}}({draft:u,sessionId:ev,ensureSession:e5,updateDraft:e7}),e0=!eR,e1=(0,P.fQ)(u),e2=u.activeStateId??e1[0].id,e6=(0,P.VC)(u),e8=el.filter(e=>e!==b.jZ),e3=[{key:"scene-composition",label:o("composition.mode.scene"),icon:(0,t.jsx)(n.A,{"aria-hidden":"true"})},{key:"editorial-layout",label:o("composition.mode.editorial"),icon:(0,t.jsx)(s.A,{"aria-hidden":"true"})},...u.processingSemantic?[]:[{key:"unselected",label:o("composition.mode.placeholder"),disabled:!0}]];function e4(e){eO(!1),W(i=>i===e?null:e)}async function e5(){if(ev)return ev;let i=eZ.current??(0,F.$M)(o("composition.session.untitled"));eZ.current=i;try{let o=await i;return eJ.current=o.id,ew(o.id),eb(o.title),eS(o),ej(o.updatedAt),e.replace(`/composition?session=${encodeURIComponent(o.id)}`),o.id}finally{eZ.current===i&&(eZ.current=null)}}async function e9(e){let i=await e5();return(await (0,F.FX)(i,e)).id}function e7(e){let i=(0,P.M6)("function"==typeof e?e(eQ.current()):e);eQ.record(i)&&(eq.current+=1,eW.current=null,C(i),ef(Z(i)),eE(!0))}function ie(e){eu(e),ec([]),W(null)}function ii(e){er(i=>({id:i.id+1,type:e}))}function io(e){e7(e),W(null),ec([]),eu([]),eO(!1),ii("fit-frame")}async function it(){ez(!0);try{if(!navigator.clipboard?.writeText)throw Error(o("clipboard.promptUnsupported"));let e=await eY.readPromptLine();await navigator.clipboard.writeText((0,b.FU)(u,d,e)),eV({type:"success",message:o("clipboard.copied")})}catch(e){eV({type:"error",message:e instanceof Error&&e.message===o("clipboard.promptUnsupported")?e.message:o("clipboard.promptFailed")})}finally{ez(!1)}}async function ia(){eG(!0);try{let e=await (0,b.Nc)(u,ev?e=>(0,F.MZ)(ev,e):void 0);eV("downloaded"===e?{type:"warning",message:o("clipboard.previewDownloaded")}:{type:"success",message:o("clipboard.copied")})}catch{eV({type:"error",message:o("clipboard.previewFailed")})}finally{eG(!1)}}(0,l.useEffect)(()=>{if(!eH)return;let e=window.setTimeout(()=>eV(null),2e3);return()=>window.clearTimeout(e)},[eH]),(0,l.useEffect)(()=>{if(i&&i===eJ.current){eJ.current=null;return}if(W(null),eU.current+=1,eq.current=0,eK.current=!1,eW.current=null,eE(!1),!i){let e=(0,P.mq)();eQ.reset(e),C(e),X(!0),ei(!1),em(!1),en(1),ii("fit-frame"),ec([]),eu([]),ef({width:16,height:9}),ew(null),eb(null),eS(null),ej(null),e_(0),eN(void 0),eD(null),eT(!1);return}let e=!1;return eT(!0),X(!0),ei(!1),em(!1),en(1),ew(null),eb(null),eS(null),ej(null),eD(null),J(i).then(i=>{if(e)return;let o=i.draftVersion?.draft??(0,P.mq)();eQ.reset(o),C(o),ew(i.session.id),eb(i.session.title),eS(i.session),ej(i.draftVersion?.createdAt??i.session.updatedAt),e_(i.draftVersion?.revision??0),eN(i.draftVersion?.styleProcessing),ef(Z(o));let t=o.areas[0]?.id??o.focusPoints[0]?.id;ec(t?[t]:[]),eu([]),ii("fit-frame"),eE(!1),eD(null)}).catch(i=>{e||eD(Y(i,o))}).finally(()=>{e||eT(!1)}),()=>{e=!0}},[i,o]),(0,l.useEffect)(()=>{let e=eq.current;if(eK.current||eR||eL||!eA||eW.current===e)return;let i=eU.current,t=window.setTimeout(()=>{(async()=>{eP(!0),eD(null);try{let o=ev;if(!o&&(o=await e5(),i!==eU.current))return;let t=await (0,F.hU)(o,eC,u);if(i!==eU.current)return;eW.current=null,e_(t.revision),eN(t.styleProcessing),ej(t.createdAt),eq.current===e&&(C(t.draft),eE(!1))}catch(t){if(i!==eU.current)return;let e=t instanceof F.wP&&"DRAFT_REVISION_CONFLICT"===t.code?t.details.actualLatestRevision:null;"number"==typeof e&&Number.isInteger(e)?(eK.current=!0,eQ.reset(eQ.current()),e_(e)):eW.current=eq.current,eD(Y(t,o))}finally{eP(!1)}})()},800);return()=>window.clearTimeout(t)},[eA,u,eC,eR,e,eL,ev,o]),(0,l.useEffect)(()=>{if(!ev||eR||eA||eL)return;let e=!1,i=eq.current,t=async()=>{try{let o=(await (0,F.he)(ev)).at(-1);if(!e&&i===eq.current&&o&&o.revision>eC){eQ.reset(o.draft),C(o.draft),e_(o.revision),eN(o.styleProcessing),ej(o.createdAt),ef(Z(o.draft));let e=o.draft.areas[0]?.id??o.draft.focusPoints[0]?.id;ec(e?[e]:[]),eu([]),eW.current=null,eD(null)}}catch(i){e||eD(Y(i,o))}};t();let a=window.setInterval(()=>void t(),3e3);return()=>{e=!0,window.clearInterval(a)}},[eA,eC,eR,eL,ev,o]);let is=(0,t.jsxs)("label",{className:K().overallNoteEditor,children:[(0,t.jsx)("span",{children:o("composition.globalNote.title")}),(0,t.jsx)(A.A.TextArea,{name:"overallNote",autoFocus:!0,autoSize:{minRows:4,maxRows:8},value:u.overallNote,placeholder:o("composition.globalNote.placeholder"),"aria-label":o("composition.globalNote.ariaLabel"),disabled:!e0,onChange:e=>e7(i=>({...i,overallNote:e.target.value}))})]}),ir=(0,t.jsxs)("div",{className:K().toolGroups,role:"group","aria-label":o("canvas.tools.label"),"data-composition-tool-groups":!0,children:[(0,t.jsx)("div",{className:K().toolGroup,"data-composition-tool-group":"focus",children:(0,t.jsx)(k.u,{className:K().capacityTool,icon:(0,t.jsx)(r.A,{"aria-hidden":"true"}),label:o("composition.toolNames.focus"),description:o("composition.elementCapacity.compact",{current:u.focusPoints.length,limit:3}),"aria-label":o("composition.elementCapacity.ariaLabel",{label:o("composition.toolNames.focus"),current:u.focusPoints.length,limit:3}),disabled:!e0||u.focusPoints.length>=3,"aria-current":"focus"===_||void 0,textColor:"focus"===_?"color.action.primary":"color.text.primary",onClick:()=>e4("focus")})}),(0,t.jsx)("div",{className:K().toolGroup,"data-composition-tool-group":"direction",children:(0,t.jsx)(k.u,{className:K().capacityTool,icon:(0,t.jsx)(p,{rotate:-20,"aria-hidden":"true"}),label:o("composition.flow.label"),description:o("composition.elementCapacity.compact",{current:+!!u.directionLine,limit:1}),"aria-label":o("composition.elementCapacity.ariaLabel",{label:o("composition.flow.label"),current:+!!u.directionLine,limit:1}),disabled:!e0||!!u.directionLine,"aria-current":"direction"===_||void 0,textColor:"direction"===_?"color.action.primary":"color.text.primary",onClick:()=>e4("direction")})}),(0,t.jsxs)("div",{className:K().toolGroup,"data-composition-tool-group":"shapes",children:[(0,t.jsx)(k.u,{icon:(0,t.jsx)("span",{className:`${K().shapeToolIcon} ${K().circleToolIcon}`}),label:o("composition.toolNames.circle"),disabled:!e0,"aria-current":"circle"===_||void 0,textColor:"circle"===_?"color.action.primary":"color.text.primary",onClick:()=>e4("circle")}),(0,t.jsx)(k.u,{icon:(0,t.jsx)("span",{className:`${K().shapeToolIcon} ${K().triangleToolIcon}`}),label:o("composition.toolNames.triangle"),disabled:!e0,"aria-current":"triangle"===_||void 0,textColor:"triangle"===_?"color.action.primary":"color.text.primary",onClick:()=>e4("triangle")}),(0,t.jsx)(k.u,{icon:(0,t.jsx)("span",{className:`${K().shapeToolIcon} ${K().quadrilateralToolIcon}`}),label:o("composition.toolNames.quadrilateral"),disabled:!e0,"aria-current":"quadrilateral"===_||void 0,textColor:"quadrilateral"===_?"color.action.primary":"color.text.primary",onClick:()=>e4("quadrilateral")}),(0,t.jsx)(k.u,{icon:(0,t.jsx)(m.A,{"aria-hidden":"true"}),label:o("composition.toolNames.textRegion"),disabled:!e0,"aria-current":"text"===_||void 0,textColor:"text"===_?"color.action.primary":"color.text.primary",onClick:()=>e4("text")}),(0,t.jsx)(k.u,{icon:(0,t.jsx)(n.A,{"aria-hidden":"true"}),label:o("canvas.imageNode.label"),collapsedLabel:o("canvas.imageNode.add"),disabled:!e0,"aria-current":"image"===_||void 0,textColor:"image"===_?"color.action.primary":"color.text.primary",onClick:()=>e4("image")}),(0,t.jsx)(k.u,{icon:(0,t.jsx)(g.A,{"aria-hidden":"true"}),label:o("spatial.reference"),collapsedLabel:o("spatial.addReference"),disabled:!e0,onClick:eX.openPicker})]}),(0,t.jsx)("div",{className:K().toolGroup,"data-composition-tool-group":"overall-note",children:(0,t.jsx)(E.A,{content:is,trigger:"click",placement:"leftTop",open:e0&&eM,onOpenChange:e=>eO(e&&e0),children:(0,t.jsx)("span",{className:K().toolAction,children:(0,t.jsx)(k.u,{icon:(0,t.jsx)(h.A,{"aria-hidden":"true"}),label:o("notes.global.label"),disabled:!e0})})})}),(0,t.jsxs)("div",{className:K().toolGroup,"data-composition-tool-group":"copy",children:[(0,t.jsx)("span",{className:K().toolGroupTitle,children:o("clipboard.group")}),(0,t.jsx)(k.u,{icon:(0,t.jsx)(f.A,{"aria-hidden":"true"}),label:o("clipboard.copyPrompt"),loading:e$,disabled:eR,onClick:()=>void it()}),(0,t.jsx)(k.u,{icon:(0,t.jsx)(n.A,{"aria-hidden":"true"}),label:o("clipboard.copyPreview"),loading:eB,disabled:eR,onClick:()=>void ia()})]})]});return(0,t.jsx)(G.o,{currentSessionId:i,onCurrentSessionRename:eb,title:ey??o("composition.session.new"),rightPanelOpen:eo,onRightPanelOpenChange:et,rightPanel:(0,t.jsxs)("div",{className:`${K().panel} ${eR?K().panelIsLoading:""}`,"data-canvas-editor":!0,children:[eR?(0,t.jsx)(N.G,{className:K().panelLoading,label:o("composition.session.loading"),rows:8,compact:!0}):eo?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(b.J3,{primaryItem:{label:o("composition.mode.label"),value:(0,t.jsx)(I,{className:K().processingSemanticSwitch,value:u.processingSemantic??"unselected",items:e3,colors:{mode:"multicolor"},"aria-label":o("composition.mode.label"),disabled:!e0,onChange:e=>{("scene-composition"===e||"editorial-layout"===e)&&e7(i=>(0,P.ET)(i,e))}})},createdAt:ex?.createdAt??null,updatedAt:ek,nodeCount:u.areas.length+u.images.length+u.focusPoints.length+ +!!u.directionLine,agentCommand:ev?async()=>o("sessionDetails.agentCommand",{command:(0,q.m)(ev,window.location.origin)}):null,locale:c.resolvedLanguage??c.language,labels:{title:o("sessionDetails.title"),created:o("sessionDetails.created"),updated:o("sessionDetails.updated"),nodes:o("sessionDetails.nodes"),agent:o("sessionDetails.agent"),copyCommand:o("sessionDetails.copyCommand"),copying:o("sessionDetails.copying"),copied:o("clipboard.copied"),copyFailed:o("sessionDetails.copyFailed"),emptyValue:o("sessionDetails.emptyValue")}}),(0,t.jsx)(D.H,{controller:eY,category:"visual",processing:eI,disabled:eR||eL}),(0,t.jsxs)("section",{children:[(0,t.jsxs)("div",{className:K().sectionHeading,children:[(0,t.jsx)("h2",{children:o("canvas.tools.label")}),(0,t.jsx)("div",{className:K().sectionHeadingActions,children:(0,t.jsx)(R.A,{title:o("composition.clearCanvas"),children:(0,t.jsx)("span",{children:(0,t.jsx)(j.x,{type:"text",size:"small",icon:(0,t.jsx)(v.A,{"aria-hidden":"true"}),"aria-label":o("composition.clearCanvas"),title:o("composition.clearCanvasConfirmTitle"),description:o("composition.clearCanvasConfirmDescription"),confirmLabel:o("composition.clearCanvas"),cancelLabel:o("actions.cancel"),disabled:eR||eL||ep,onConfirm:function(){if(ep)return;let e=(0,P.mq)();eQ.record(e),W(null),eq.current+=1,eW.current=null,C(e),X(!0),ei(!1),em(!1),en(1),ii("fit-frame"),ec([]),eu([]),ef({width:16,height:9}),eE(!0),eD(null)},"data-composition-clear-canvas-action":!0,children:null})})})})]}),ir]})]}):null,(0,t.jsxs)("section",{children:[(0,t.jsxs)("div",{className:K().sectionHeading,children:[(0,t.jsx)("h2",{children:o("composition.frameRatio")}),(0,t.jsx)("div",{className:K().sectionHeadingActions,children:(0,t.jsx)(S.J,{mode:"icon-only",size:"small",icon:ee?(0,t.jsx)(w.A,{}):(0,t.jsx)(y.A,{}),iconLabel:ee?o("composition.unlockFrame"):o("composition.lockFrame"),title:ee?o("composition.unlockFrame"):o("composition.lockFrame"),"aria-pressed":ee,backgroundColor:ee?"color.action.primaryActive":"none",textColor:ee?"color.text.onPrimary":"color.text.secondary",disabled:!e0,onClick:()=>ei(e=>!e)})})]}),(0,t.jsx)("div",{className:K().aspectRatioSelector,children:(0,t.jsx)(x.h,{ratio:eh,disabled:!e0||ee,onRatioChange:e=>{(0,P.J2)(e.width,e.height)&&(ef(e),e7(i=>(0,P.oA)(i,(0,P.BI)(e.width,e.height))))},title:o("composition.aspectRatioTitle"),widthLabel:o("dimensions.width"),heightLabel:o("dimensions.height"),"aria-label":o("composition.frameRatio")})})]}),(0,t.jsx)(b.Cf,{draft:u,selectedIds:ed,onSelect:ie,showPlanning:Q,onShowPlanningChange:X,locked:ep,onLockedChange:e=>{em(e),eu([])},onDraftChange:e7,labels:eg,deleteLabel:o("actions.delete"),disabled:!e0}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{children:o("composition.areaOverview")}),(0,t.jsxs)("dl",{className:K().metrics,children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:o("composition.occupied")}),(0,t.jsxs)("dd",{children:[Math.round(100*e6.occupiedArea),"%"]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:o("composition.negativeSpace")}),(0,t.jsxs)("dd",{children:[Math.round(100*e6.negativeSpace),"%"]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:o("composition.currentSelection")}),(0,t.jsx)("dd",{children:e8.join(", ")||o("composition.none")})]})]})]})]}),children:(0,t.jsxs)("main",{className:K().page,"data-canvas-editor":!0,children:[eH?(0,t.jsx)("div",{className:`${K().deliveryNotice} ${"success"===eH.type?K().deliveryNoticeSuccess:"warning"===eH.type?K().deliveryNoticeWarning:K().deliveryNoticeError}`,role:"status",children:eH.message}):null,eF?(0,t.jsx)("p",{className:K().serviceError,role:"alert",children:eF}):null,(0,t.jsxs)("div",{className:K().workspace,children:[eX.picker,(0,t.jsxs)("section",{className:K().stage,"aria-label":o("composition.workspace"),children:[(0,t.jsx)(b.zr,{...eQ,labels:{undo:o("canvasHistory.undo"),redo:o("canvasHistory.redo"),label:o("canvasHistory.label")}}),eR?(0,t.jsx)(N.G,{className:K().workspaceLoading,label:o("composition.session.loading"),rows:10}):(0,t.jsx)(b.x8,{className:K().workflow,interactionResetKey:eQ.restoreToken,draft:u,status:"waiting",activeView:"draft",onViewChange:()=>void 0,stateControls:(0,t.jsx)(b.SM,{items:e1.map(e=>({id:e.id,label:e.name??o("uiSketch.states.defaultName",{number:e.number})})),value:e2,labels:{switch:o("canvasStates.switch"),add:o("uiSketch.views.enableMotion"),rename:o("actions.rename"),name:o("uiSketch.states.name"),new:o("uiSketch.states.new"),delete:o("uiSketch.states.delete"),cancel:o("actions.cancel"),reorderHint:o("uiSketch.states.reorderHint"),actions:e=>o("uiSketch.states.actions",{name:e}),deleteTitle:e=>o("uiSketch.states.deleteTitle",{name:e})},onChange:e=>io(i=>(0,P.KZ)(i,e)),onCreate:e=>{let i=crypto.randomUUID();io(o=>(0,P.wG)(o,e,i))},onRename:(e,i)=>e7(o=>(0,P.uK)(o,e,i)),onReorder:e=>e7(i=>(0,P.yU)(i,e)),onDelete:e=>io(i=>(0,P.PX)(i,e))}),showPlanning:Q,selectedPlanIds:ed,planningLocked:ep,onPlanSelectionChange:ie,planningLabels:eg,frameLocked:ee,canvasZoom:ea,canvasViewportAction:es,onCanvasZoomChange:en,canvasBackgroundPattern:"dots",showCanvasViewportControls:!eR,canvasViewportLabels:{zoomOut:o("composition.zoomOut"),zoomIn:o("composition.zoomIn"),currentZoom:o("composition.canvasZoom"),fitAll:o("composition.fitAll"),help:o("canvas.viewport.help"),interactionHelp:`${o("canvas.viewport.instructions")} ${o("composition.textRegion.cornerHelp")}`,sideActions:o("canvas.tools.label"),collapseSideActions:o("composition.collapseTools"),expandSideActions:o("composition.expandTools")},canvasLayerLabels:{bringToFront:o("canvasLayers.bringToFront"),bringForward:o("canvasLayers.bringForward"),sendBackward:o("canvasLayers.sendBackward"),sendToBack:o("canvasLayers.sendToBack")},directionControlLabels:[o("composition.flow.controlPoint",{number:1}),o("composition.flow.controlPoint",{number:2})],nodeEditorLabels:{title:o("canvasNodeEditor.title"),note:o("notes.element.label"),notePlaceholder:o("notes.element.nodePlaceholder"),shotScale:o("composition.depth.label"),shotScaleAuto:o("composition.depth.auto"),shotScaleForeground:o("composition.depth.foreground"),shotScaleMidground:o("composition.depth.midground"),shotScaleBackground:o("composition.depth.background"),deleteNode:o("actions.deleteNode"),confirmDeleteNode:o("confirmations.deleteNode"),cancelDelete:o("actions.keep"),shapeKind:o("canvasNodeEditor.shapeKind"),pointKind:o("canvasNodeEditor.pointKind"),lineKind:o("composition.flow.label"),textKind:o("composition.toolNames.textRegion"),imageKind:o("canvas.imageNode.label"),nodeDescription:o("canvas.node.nodeDescription"),originUser:o("canvas.node.originUser"),originAgent:o("canvas.node.originAgent"),originImport:o("canvas.node.originImport")},areaEditorLabels:{lightSource:o("composition.lightSource.toggle"),displayText:o("textContent.label"),cornerLabel:o("composition.textRegion.cornerLabel",{index:"{{index}}"}),displayTextPlaceholder:o("textContent.compositionPlaceholder"),visualWeight:o("visualWeight.label"),weightAuto:o("visualWeight.auto"),weightHigh:o("visualWeight.high"),weightMedium:o("visualWeight.medium"),weightLow:o("visualWeight.low"),weightDecorative:o("visualWeight.decorative")},imageEditorLabels:{content:o("canvas.imageEditor.content"),upload:o("canvas.imageEditor.upload"),download:o("canvas.imageEditor.download"),downloading:o("canvas.imageEditor.downloading"),downloadFailed:o("canvas.imageEditor.downloadFailed"),replace:o("canvas.imageEditor.replace"),uploading:o("canvas.imageEditor.uploading"),uploadFailed:o("canvas.imageEditor.uploadFailed"),fileTypes:o("canvas.imageEditor.fileTypes"),cropTitle:o("canvas.imageCrop.title"),cropLoadFailed:o("canvas.imageCrop.loadFailed"),svgSource:o("canvas.imageEditor.svgSource"),svgPaste:o("canvas.imageEditor.svgPaste"),svgApply:o("canvas.imageEditor.svgApply"),svgSaveFailed:o("canvas.imageEditor.svgSaveFailed"),svgCopy:o("canvas.imageEditor.svgCopy"),svgCopying:o("canvas.imageEditor.svgCopying"),svgCopyFailed:o("canvas.imageEditor.svgCopyFailed"),sourceLoading:o("canvas.imageEditor.sourceLoading"),sourceLoadFailed:o("canvas.imageEditor.sourceLoadFailed"),svgCopied:o("clipboard.copied"),cancel:o("actions.cancel"),retry:o("actions.retry")},resolveImageSource:ev?e=>(0,F.MZ)(ev,e):void 0,renderCameraReference:eX.renderImageContent,onImageUpload:e9,onReadImageFile:F.MT,canvasSideActions:eo?void 0:ir,canvasSideActionPanelWidth:180,canvasSideActionPanelDefaultCollapsed:!0,selectedIds:el,onDraftChange:e7,placementTool:_,onPlacementToolChange:W,onSelectionChange:e=>{ec(e),eu([])},labels:{draftView:o("composition.views.draft"),refinedView:o("composition.views.refined"),referenceView:o("composition.views.reference"),viewSwitch:o("composition.views.switch"),draftCanvas:o("composition.views.draftCanvas"),refinedCanvas:o("composition.views.refinedCanvas"),referenceCanvas:o("composition.views.referenceCanvas"),agentDecision:o("composition.workflow.agentDecision"),appliedMethods:o("composition.workflow.appliedMethods"),protectionAudit:o("composition.workflow.protectionAudit"),maximumFocusShift:o("composition.workflow.maximumFocusShift"),maximumAreaShift:o("composition.workflow.maximumAreaShift"),maximumRotationShift:o("composition.workflow.maximumRotationShift"),objective:o("composition.refinement.objective"),observations:o("composition.refinement.observations"),uncertainties:o("composition.refinement.uncertainties"),preserve:o("composition.refinement.preserve"),tradeoffs:o("composition.refinement.tradeoffs"),relations:o("composition.refinement.relations"),retained:o("composition.refinement.retained"),target:o("composition.refinement.target"),before:o("composition.refinement.before"),after:o("composition.refinement.after"),error:o("composition.refinement.error"),unmeasurable:o("composition.refinement.unmeasurable"),framePlacement:o("composition.refinement.framePlacement"),sizeRatio:o("composition.refinement.sizeRatio"),mirrorSymmetry:o("composition.refinement.mirrorSymmetry"),focusFlow:o("composition.refinement.focusFlow"),focusAnchor:o("composition.refinement.focusAnchor"),axisRelation:o("composition.refinement.axisRelation"),rotationAlignment:o("composition.refinement.rotationAlignment"),blockAlignment:o("composition.refinement.blockAlignment"),spacingRhythm:o("composition.refinement.spacingRhythm")}})]})]})]})})}}},e=>{e.O(0,[661,437,226,979,136,460,746,20,380,653,678,130,166,347,158,358],()=>e(e.s=6621)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{20894:()=>{},66393:(e,n,t)=>{Promise.resolve().then(t.t.bind(t,20894,23)),Promise.resolve().then(t.bind(t,66999)),Promise.resolve().then(t.bind(t,84954))},66999:(e,n,t)=>{"use strict";t.d(n,{YisiUiInspectorHost:()=>s});t(73365);t(98196),t(1521),t(27812);function s(){return null}},84954:(e,n,t)=>{"use strict";t.d(n,{AppI18nProvider:()=>l});var s=t(73365),i=t(1521),r=t(8020),u=t(91093);function l({children:e}){let[n]=(0,i.useState)(()=>(0,u.Gi)());return(0,i.useEffect)(()=>{function e(e){let t=(0,u.wl)(e);document.documentElement.lang=t,document.title=n.t("app.title",{lng:t})}return n.on("languageChanged",e),e(n.resolvedLanguage),()=>{n.off("languageChanged",e)}},[n]),(0,s.jsx)(r.xC,{i18n:n,children:e})}}},e=>{e.O(0,[661,611,20,678,347,158,358],()=>e(e.s=66393)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{20894:()=>{},38324:(e,n,t)=>{Promise.resolve().then(t.t.bind(t,20894,23)),Promise.resolve().then(t.bind(t,66999)),Promise.resolve().then(t.bind(t,84954))},66999:(e,n,t)=>{"use strict";t.d(n,{YisiUiInspectorHost:()=>s});t(73365);t(98196),t(1521),t(27812);function s(){return null}},84954:(e,n,t)=>{"use strict";t.d(n,{AppI18nProvider:()=>l});var s=t(73365),i=t(1521),r=t(8020),u=t(91093);function l({children:e}){let[n]=(0,i.useState)(()=>(0,u.Gi)());return(0,i.useEffect)(()=>{function e(e){let t=(0,u.wl)(e);document.documentElement.lang=t,document.title=n.t("app.title",{lng:t})}return n.on("languageChanged",e),e(n.resolvedLanguage),()=>{n.off("languageChanged",e)}},[n]),(0,s.jsx)(r.xC,{i18n:n,children:e})}}},e=>{e.O(0,[661,611,20,678,347,158,358],()=>e(e.s=38324)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{44729:()=>{},56845:(e,a,i)=>{"use strict";i.r(a),i.d(a,{default:()=>v});var t=i(73365),n=i(29717),l=i(1521),s=i(8020),r=i(53130),o=i(11902),c=i(6915),d=i(14766),p=i(62067),u=i(84092),h=i(67925),b=i(92449),_=i(29415);i(22392),i(44729);var m=i(46811);function y(e,a,i){for(let t=1;t<=e.length;t+=1){let n=(a+t*i+e.length)%e.length;if(!e[n].disabled)return n}return a}function k(e,a){for(let i of"first"===a?e.keys():[...e.keys()].reverse())if(!e[i].disabled)return i;return 0}function g({items:e,"aria-label":a,activeColor:i="var(--yisiui-color-action-link)",value:n,defaultValue:s,onChange:r,className:o,style:c}){if(e.length<2)throw Error("UnderlineTabSwitch 至少需要两个子项。");let d=new Set;for(let a of e){if(d.has(a.key))throw Error(`UnderlineTabSwitch 子项 key 必须唯一:${a.key}`);d.add(a.key)}if(void 0!==n&&!d.has(n))throw Error(`UnderlineTabSwitch value 不存在于 items:${n}`);if(void 0!==s&&!d.has(s))throw Error(`UnderlineTabSwitch defaultValue 不存在于 items:${s}`);let p=new Map(e.map(e=>[e.key,e])),u=e[0].key,[h,b]=(0,l.useState)(s??u),_=(0,l.useRef)([]),f=n??(p.has(h)?h:u);function x(e){let a=p.get(e);a&&!a.disabled&&(void 0===n&&b(e),r?.(e,a))}let j={...c,"--yisiui-underline-tab-switch-count":e.length,"--yisiui-underline-tab-switch-active-color":i};return(0,t.jsx)("div",{...(0,m.S)("underline-tab-switch","UnderlineTabSwitch","component"),className:["yisi-underline-tab-switch",o].filter(Boolean).join(" "),style:j,role:"tablist","aria-label":a,"aria-orientation":"horizontal",children:e.map((a,i)=>{let n=a.key===f;return(0,t.jsx)("button",{type:"button",ref:e=>{_.current[i]=e},className:["yisi-underline-tab-switch-item",n?"yisi-underline-tab-switch-item-active":""].filter(Boolean).join(" "),role:"tab","aria-selected":n,"aria-label":a.ariaLabel,"data-tab-key":a.key,disabled:a.disabled,tabIndex:n?0:-1,onClick:()=>x(a.key),onKeyDown:a=>{let t;return t=null,void("ArrowRight"===a.key||"ArrowDown"===a.key?t=y(e,i,1):"ArrowLeft"===a.key||"ArrowUp"===a.key?t=y(e,i,-1):"Home"===a.key?t=k(e,"first"):"End"===a.key&&(t=k(e,"last")),null===t||t===i||(a.preventDefault(),x(e[t].key),_.current[t]?.focus()))},children:(0,t.jsx)("span",{className:"yisi-underline-tab-switch-label",children:a.label})},a.key)})})}var f=i(71051),x=i.n(f);let j=[{kind:"composition",Icon:o.A},{kind:"ui-sketch",Icon:c.A},{kind:"spatial",Icon:d.A}];function w({productName:e,repositoryLabel:a,description:i,skillInstallation:n,labels:s,pending:r,errorMessage:o,onCreate:c}){let[d,m]=(0,l.useState)("agent"),y=(0,l.useRef)(null),k="agent"===d?n.agentPrompt:"npx skills add yisi-ai/human2ai --skill human2ai";return(0,t.jsx)("main",{className:x().page,children:(0,t.jsxs)("div",{className:x().content,children:[(0,t.jsxs)("header",{className:x().introduction,children:[(0,t.jsxs)("div",{className:x().brand,children:[(0,t.jsx)("img",{src:"/brand/h2a.svg",alt:"",width:64,height:64}),(0,t.jsx)("h1",{className:x().productName,children:e}),(0,t.jsx)(_.J,{className:x().repositoryLink,type:"link",mode:"icon-only",icon:(0,t.jsx)(p.A,{"aria-hidden":"true"}),href:"https://github.com/yisi-ai/human2ai",target:"_blank",rel:"noopener noreferrer",title:a,iconLabel:a})]}),(0,t.jsx)("p",{className:x().description,children:i})]}),(0,t.jsxs)("section",{className:x().installation,"aria-label":n.title,children:[(0,t.jsxs)("div",{className:x().installationHeader,children:[(0,t.jsx)("h2",{className:x().installationTitle,children:n.title}),(0,t.jsx)(g,{"aria-label":n.title,value:d,onChange:m,items:[{key:"agent",label:n.agentTab},{key:"cli",label:n.cliTab}]})]}),(0,t.jsxs)("div",{className:x().installationPanel,role:"tabpanel","aria-label":"agent"===d?n.agentTab:n.cliTab,tabIndex:0,children:[(0,t.jsx)("pre",{className:x().installationContent,children:(0,t.jsx)("code",{children:k})}),(0,t.jsx)("div",{className:x().installationActions,children:(0,t.jsx)(h.r,{className:x().installationCopy,size:"small",title:n.copy,label:n.copy,pendingLabel:n.copying,successLabel:n.copied,errorLabel:n.copyFailed,idleIcon:(0,t.jsx)(b.D,{ref:y,name:"copy",size:18}),onMouseEnter:()=>y.current?.play(),onFocus:()=>y.current?.play(),onAction:()=>navigator.clipboard.writeText(k)},d)})]})]}),o?(0,t.jsx)("p",{className:x().error,role:"alert",children:o}):null,(0,t.jsx)("div",{className:x().cards,"data-home-create-actions":!0,children:j.map(({kind:e,Icon:a})=>(0,t.jsx)(_.J,{className:x().workspaceEntry,disabled:!!r,"aria-busy":r===e,loading:r===e,onClick:()=>c(e),children:(0,t.jsxs)("span",{className:x().cardBody,children:[(0,t.jsx)(a,{className:x().cardIcon,"aria-hidden":"true"}),(0,t.jsxs)("span",{className:x().cardLabel,children:[(0,t.jsx)(u.A,{"aria-hidden":"true"}),s[e]]})]})},e))})]})})}var N=i(60458);function v(){let e=(0,n.useRouter)(),{t:a}=(0,s.Bd)(),i=(0,l.useRef)(!1),[o,c]=(0,l.useState)(null),[d,p]=(0,l.useState)(null);async function u(t){if(!i.current){i.current=!0,c(t),p(null);try{let i="composition"===t?await (0,N.$M)(a("composition.session.untitled")):"ui-sketch"===t?await (0,N.vh)(a("uiSketch.session.untitled")):await (0,N.DZ)(a("spatial.untitled"));e.push(`/${t}?session=${encodeURIComponent(i.id)}`)}catch{i.current=!1,c(null),p(a("errors.operationFailed"))}}}return(0,t.jsx)(r.o,{title:null,children:(0,t.jsx)(w,{productName:a("app.title"),repositoryLabel:a("app.repositoryLink",{productName:a("app.title")}),description:a("home.description"),skillInstallation:{title:a("home.skillInstallation.title"),agentTab:a("home.skillInstallation.agentTab"),cliTab:a("home.skillInstallation.cliTab"),agentPrompt:a("home.skillInstallation.agentPrompt"),copy:a("home.skillInstallation.copy"),copying:a("home.skillInstallation.copying"),copied:a("clipboard.copied"),copyFailed:a("home.skillInstallation.copyFailed")},labels:{composition:a("home.createComposition"),"ui-sketch":a("home.createUiSketch"),spatial:a("home.createSpatial")},pending:o,errorMessage:d,onCreate:u})})}},71051:e=>{e.exports={page:"page_page__556_G",content:"page_content___38fW",introduction:"page_introduction__joBo5",brand:"page_brand__7TV1Q",productName:"page_productName__oTfyG",repositoryLink:"page_repositoryLink__c58hH",description:"page_description__lvaOp",cards:"page_cards__IHl_z",workspaceEntry:"page_workspaceEntry__BbjSl",cardIcon:"page_cardIcon__syb4d",cardBody:"page_cardBody__X5bf8",cardLabel:"page_cardLabel__pQNrY",error:"page_error__JBrsB",installation:"page_installation__TjxjK",installationPanel:"page_installationPanel__RY1Ag",installationHeader:"page_installationHeader__LQKv8",installationTitle:"page_installationTitle__kS_O9",installationContent:"page_installationContent__Om5BT",installationActions:"page_installationActions__CTby6",installationCopy:"page_installationCopy__EQx1q"}},72608:(e,a,i)=>{Promise.resolve().then(i.bind(i,56845))}},e=>{e.O(0,[661,437,226,577,460,746,20,380,653,678,130,347,158,358],()=>e(e.s=72608)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[665],{31854:(e,t,r)=>{"use strict";r.d(t,{t:()=>a});var n=r(1521),s=r(8020),i=r(60458);function a(e,t,r){let{t:a}=(0,s.Bd)(),[o,l]=(0,n.useState)(null),[u,c]=(0,n.useState)([]),[d,y]=(0,n.useState)(!0),[p,h]=(0,n.useState)(!1),[f,m]=(0,n.useState)(null),[b,g]=(0,n.useState)(0),w=(0,n.useRef)(e);w.current=e;let v=(0,n.useRef)(!1),S=(0,n.useRef)(0);async function L(r){if(v.current)return;v.current=!0,++S.current,h(!0),m(null);let n=e;try{if(n??=await t(),null!==w.current&&w.current!==n)return;let e=o?.session.id===n?o:await (0,i.YM)(n),s=await (0,i.T8)(n,r,e.session.revision);(w.current===n||null===w.current)&&l(s)}catch(e){throw(w.current===n||null===w.current)&&m(e instanceof i.wP&&409===e.status?a("sessionStyle.conflict"):a("errors.operationFailed")),e}finally{v.current=!1,h(!1),y(!1)}}async function x(){if(!e)return;let t=await (0,i.YM)(e);return w.current===e&&l(t),t.style?a("sessionStyle.prompt",{summary:t.style.promptSummary}):void 0}return(0,n.useEffect)(()=>{let t=!1,r=!1;y(!0),m(null);let n=async()=>{if(r||v.current)return;r=!0;let n=++S.current;try{let[r,s]=await Promise.all([(0,i.X0)(),e?(0,i.YM)(e):Promise.resolve(null)]);if(t||n!==S.current)return;c(r),l(s),m(null)}catch{t||n!==S.current||m(a("styleLibrary.loadFailed"))}finally{r=!1,t||n!==S.current||y(!1)}};n();let s=window.setInterval(()=>void n(),3e3);return()=>{t=!0,window.clearInterval(s)}},[e,r,b,a]),{styles:u,currentStyle:o?.session.id===e?o.style:null,loading:d,saving:p,error:f,bind:L,readPromptLine:x,refresh:()=>g(e=>e+1)}}},42111:(e,t,r)=>{Promise.resolve().then(r.bind(r,91464))},46109:(e,t,r)=>{"use strict";function n(e){return{model:{label:e("styleLibrary.model.label"),loading:e("styleLibrary.model.loading"),failed:e("styleLibrary.model.failed"),reset:e("styleLibrary.model.reset"),controls:e("styleLibrary.model.controls"),retry:e("actions.retry")},newStyle:e("styleLibrary.newStyle"),editStyle:e("styleLibrary.editStyle"),name:e("styleLibrary.name"),namePlaceholder:e("styleLibrary.namePlaceholder"),category:e("styleLibrary.category.label"),allCategories:e("styleLibrary.category.all"),visualCategory:e("styleLibrary.category.visual"),uiCategory:e("styleLibrary.category.ui"),spatialCategory:e("styleLibrary.category.spatial"),creator:e("styleLibrary.creator.label"),allCreators:e("styleLibrary.creator.all"),userCreator:e("styleLibrary.creator.user"),agentCreator:e("styleLibrary.creator.agent"),references:e("styleLibrary.references.heading"),noReferences:e("styleLibrary.references.empty"),addReferences:e("styleLibrary.references.add"),removeReference:e("styleLibrary.references.remove"),pasteHint:e("styleLibrary.references.pasteHint"),fileTypes:e("styleLibrary.references.fileTypes"),description:e("styleLibrary.description.heading"),promptSummary:e("styleLibrary.promptSummary.label"),promptSummaryPlaceholder:e("styleLibrary.promptSummary.placeholder"),descriptionPlaceholder:e("styleLibrary.description.placeholder"),spatialDescriptionPlaceholder:e("styleLibrary.description.spatialPlaceholder"),searchPlaceholder:e("styleLibrary.searchPlaceholder"),deleteTitle:e("styleLibrary.deleteTitle"),deleteDescription:e("styleLibrary.deleteDescription"),empty:e("styleLibrary.empty"),noMatches:e("styleLibrary.noMatches"),loading:e("styleLibrary.loading"),loadFailed:e("styleLibrary.loadFailed"),retry:e("actions.retry"),save:e("styleLibrary.save"),cancel:e("actions.cancel"),delete:e("actions.delete"),operationFailed:e("errors.operationFailed"),imageInvalid:e("styleLibrary.imageInvalid"),openStyle:t=>e("styleLibrary.openStyle",{name:t}),closePreview:e("styleLibrary.closePreview")}}r.d(t,{Q:()=>n})},46295:(e,t,r)=>{"use strict";function n(e,t){let r=t?new URL(t).origin:null,n=`session connect --session ${e}`;return r?`human2ai --api-url ${r} --web-url ${r} ${n}`:`human2ai ${n}`}r.d(t,{m:()=>n})},48197:(e,t,r)=>{"use strict";r.d(t,{H:()=>l});var n=r(73365),s=r(16415),i=r(8020),a=r(60458),o=r(46109);function l({controller:e,category:t,processing:r,disabled:u,showProcessingStatus:c=!0}){let{t:d}=(0,i.Bd)(),y=e.currentStyle;return(0,n.jsx)(s.WL,{styles:e.styles,currentStyle:y,category:t,labels:{title:d("sessionStyle.label"),choose:d("sessionStyle.choose"),dialogTitle:d("sessionStyle.dialogTitle"),unbind:d("sessionStyle.unbind"),select:d("sessionStyle.select"),pending:d("sessionStyle.pending")},libraryLabels:(0,o.Q)(d),imageUrl:a.Pf,modelUrl:a.x,onBind:e.bind,onRetry:e.refresh,loading:e.loading,saving:e.saving,error:e.error,disabled:u,pending:c&&!!(y&&(r?.styleId!==y.id||r.styleRevision!==y.revision))})}},52003:(e,t,r)=>{"use strict";r.d(t,{S:()=>o});var n=r(1521);class s{constructor(e){this.past=[],this.future=[],this.current=structuredClone(e)}get canUndo(){return this.past.length>0}get canRedo(){return this.future.length>0}record(e,t,r=t,n){if(JSON.stringify(this.current)===JSON.stringify(e))return!1;let s=this.past.at(-1),i=structuredClone(e);return n&&s?.group===n?(s.after=i,s.afterContext=r,JSON.stringify(s.before)===JSON.stringify(i)&&this.past.pop()):(this.past.push({before:this.current,after:i,beforeContext:t,afterContext:r,group:n}),this.past.length>100&&this.past.shift()),this.current=i,this.future=[],!0}undo(){let e=this.past.pop();return e?(this.future.push(e),this.current=e.before,{draft:structuredClone(this.current),context:e.beforeContext}):null}redo(){let e=this.future.pop();return e?(this.past.push(e),this.current=e.after,{draft:structuredClone(this.current),context:e.afterContext}):null}reset(e){this.current=structuredClone(e),this.past=[],this.future=[]}}function i(e){return e instanceof Element&&!!e.closest('textarea, input:not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]), [contenteditable="true"], [role="textbox"]')}function a(e){return e===document.body||e instanceof Element&&!!e.closest("[data-canvas-editor], [data-human2ai-auto-save-node-editor]")}function o(e,t,r=!1){let[l]=(0,n.useState)(()=>new s(e)),[,u]=(0,n.useState)(0),[c,d]=(0,n.useState)(0),y=(0,n.useRef)({restore:t,disabled:r});y.current={restore:t,disabled:r};let p=(0,n.useRef)({}),h=(0,n.useRef)(new Map),f=(0,n.useMemo)(()=>{let e=()=>u(e=>e+1),t=()=>{for(let[e,t]of[...h.current])t.dispatchEvent(new PointerEvent("pointercancel",{pointerId:e,bubbles:!0}));h.current.clear(),p.current={}},r=r=>{if(y.current.disabled)return;t();let n=l[r]();n&&(y.current.restore(n),d(e=>e+1),e())};return{current:()=>l.current,record(t,r,n=r){let s=p.current.pointer??p.current.text??p.current.key,i=l.record(t,r,n,s);return i&&e(),i},reset(r){t(),l.reset(r),d(e=>e+1),e()},undo:()=>r("undo"),redo:()=>r("redo")}},[l]);return(0,n.useEffect)(()=>{let e=e=>{a(e.target)&&e.target instanceof Element&&(h.current.set(e.pointerId,e.target),i(e.target)||(p.current.pointer=Symbol("pointer")))},t=e=>{h.current.delete(e.pointerId);let t=p.current.pointer;window.setTimeout(()=>{p.current.pointer===t&&(p.current.pointer=void 0)},0)},r=e=>{i(e.target)&&(p.current.text=Symbol("input"))},n=()=>{p.current.text=void 0},s=()=>{p.current={},h.current.clear()},o=e=>{if(e.isComposing||i(e.target)||!a(e.target))return;let t=e.key.toLowerCase();if((e.ctrlKey||e.metaKey)&&!e.altKey&&("z"===t||"y"===t)){if(y.current.disabled)return;e.preventDefault(),e.stopPropagation(),"y"===t||e.shiftKey?f.redo():f.undo()}else e.repeat||(p.current.key=Symbol("key"))},l=e=>{let t=p.current.key;i(e.target)||window.setTimeout(()=>{p.current.key===t&&(p.current.key=void 0)},0)};return window.addEventListener("pointerdown",e,!0),window.addEventListener("pointerup",t,!0),window.addEventListener("pointercancel",t,!0),window.addEventListener("focusin",r,!0),window.addEventListener("focusout",n,!0),window.addEventListener("keydown",o,!0),window.addEventListener("keyup",l,!0),window.addEventListener("blur",s),()=>{window.removeEventListener("pointerdown",e,!0),window.removeEventListener("pointerup",t,!0),window.removeEventListener("pointercancel",t,!0),window.removeEventListener("focusin",r,!0),window.removeEventListener("focusout",n,!0),window.removeEventListener("keydown",o,!0),window.removeEventListener("keyup",l,!0),window.removeEventListener("blur",s)}},[f]),{...f,restoreToken:c,canUndo:!r&&l.canUndo,canRedo:!r&&l.canRedo}}},91464:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>j});var n=r(73365),s=r(1521),i=r(29717),a=r(8020),o=r(16415),l=r(29415),u=r(95948),c=r(21071),d=r(53130),y=r(48197),p=r(60458),h=r(46295),f=r(52003),m=r(31854);class b{constructor(e,t){this.draft=e,this.revision=t,this.jobs=[],this.revisions=new Map,this.busy=!1,this.initial=e,t>0&&this.revisions.set((0,c.wU)(e),t)}get pending(){return this.jobs.length>0}edit(e,t){this.draft=t,this.jobs.push({operation:e,draft:t})}restore(e){this.draft=e,this.jobs.push({draft:e})}async flush(e,t){if(!this.busy&&this.pending){this.busy=!0;try{if(0===this.revision){let t=await e.saveInitial(this.initial);this.remember(this.initial,t)}for(;this.jobs.length;){let r,n=this.jobs[0];if(n.operation)r=await e.apply(this.revision,[n.operation]);else{let t=this.revisions.get((0,c.wU)(n.draft));if(void 0===t)throw Error("Missing saved spatial history snapshot");r=await e.restore(this.revision,t)}this.remember(n.draft,r),this.jobs.shift(),this.pending||(this.draft=r.draft),t(r)}}finally{this.busy=!1}}}remember(e,t){for(let r of(this.revision=t.revision,[(0,c.wU)(e),(0,c.wU)(t.draft)]))this.revisions.has(r)||this.revisions.set(r,t.revision)}}var g=r(22146),w=r(84910),v=r(28179),S=r(42621),L=r(23347),x=r(19204);class C{key(e,t,r="color",n=(0,v.Ls)(t)){let s="skeleton"===r?e.characters:[...e.characters,...e.objects],i=s.map(S.N),a=i;if("skeleton"!==r&&!("color"===r&&e.lightingEnabled)){let t=new w.PPD().setFromProjectionMatrix(new w.kn4().multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse)),o=JSON.stringify(i);if(this.snapshot?.key!==o){let t=s.map(t=>{let{name:r,note:n,...s}=t,i={...s,name:"",position:[0,0,0],rotation:[0,0,0],color:"#ffffff"},a=(0,x.d)(i),o=this.bounds.get(a);if(!o){let t=(0,v.bh)({...e,characters:"bones"in i?[i]:[],objects:"bones"in i?[]:[i]});try{o=new w.NRn().setFromObject(t,!0)}finally{(0,v.en)(t)}this.bounds.set(a,o),this.bounds.size>256&&this.bounds.delete(this.bounds.keys().next().value)}let l=o.clone().applyMatrix4((0,L.NT)(t)),u=Math.max(...l.min.toArray().map(Math.abs),...l.max.toArray().map(Math.abs));return l.expandByScalar(Math.max(1e-5,476837158203125e-21*u))});this.snapshot={key:o,bounds:t}}let l=this.snapshot.bounds,u=l.map(e=>t.intersectsBox(e)),c="color"===r?l.flatMap((e,t)=>{if(!u[t])return[];let r=s[t],n=("bones"in r?r.height:Math.max(...r.size))*.025;return[e.clone().expandByScalar(1.026*n+1e-5)]}):[];a=i.filter((e,t)=>u[t]||c.some(e=>e.intersectsBox(l[t])))}return JSON.stringify(["spatial-image-1",e.version,r,t.position,t.target,t.projection,t.fov,t.span,t.width,t.height,t.background,n.projectionMatrix.elements,n.matrixWorldInverse.elements,"color"===r&&!!e.lightingEnabled,a])}constructor(){this.bounds=new Map}}let E=new C;function k(e,t,r){return{cameras:new Map(t.cameras.map(n=>[n.id,Object.fromEntries(g.mw.map(s=>{let i=E.key(t,n,s),a=e?.cameras.get(n.id)?.[s];return[s,a?.key===i?a:{key:i,revision:r}]}))]))}}var R=r(48511);function j(){let{t:e}=(0,a.Bd)();return(0,n.jsx)(s.Suspense,{fallback:(0,n.jsx)(u.G,{label:e("spatial.title")}),children:(0,n.jsx)(P,{})})}function P(){let{t:e,i18n:t}=(0,a.Bd)(),r=(0,i.useRouter)(),u=(0,i.useSearchParams)(),g=u.get("session"),[w,v]=(0,s.useState)(null),[S,L]=(0,s.useState)(!0),[x,C]=(0,s.useState)(()=>{try{return{showCameras:"false"!==window.localStorage.getItem("human2ai.spatial.showCameras"),showRig:"false"!==window.localStorage.getItem("human2ai.spatial.showRig")}}catch{}return{showCameras:!0,showRig:!0}}),[j,P]=(0,s.useState)(null),[M,q]=(0,s.useState)(c.wY),[I,D]=(0,s.useState)(0),[O,N]=(0,s.useState)(),F=(0,s.useMemo)(()=>new Map(c.mw.map(e=>[e,function(e,t,r="color"){let n=new Map;if(!e)return n;for(let s of t.cameras){let i=e.cameras.get(s.id)?.[r];i?.key===E.key(t,s,r)&&n.set(s.id,i.revision)}return n}(O,M,e)])),[O,M]),T=(0,m.t)(g,async()=>g,I),[B,H]=(0,s.useState)(!!g),[U,$]=(0,s.useState)(!1),[J,_]=(0,s.useState)(null),[z,A]=(0,s.useState)(!1),[Y,K]=(0,s.useState)(0),[V,W]=(0,s.useState)(null),[Q]=(0,s.useState)(()=>({queue:new b(M,0),busy:!1,stopped:!1})),G=(0,s.useRef)(Q),X=(0,f.S)(M,({draft:e})=>{G.current.queue.restore(e),q(e),A(!1)},!g||B||!!J),Z=(0,s.useRef)(()=>(0,c.wY)());Z.current=()=>{let t=(0,c.wY)();return t.cameras[0].name=e("spatial.camera",{number:1}),t};let ee=Object.fromEntries(Object.keys(R.spatial).map(t=>[t,e(`spatial.${t}`)])),et=(e,t)=>{C(r=>({...r,[e]:t}));try{window.localStorage.setItem(`human2ai.spatial.${e}`,String(t))}catch{}};return(0,s.useEffect)(()=>{let e={queue:new b(Z.current(),0),busy:!1,stopped:!1};X.reset(e.queue.draft),G.current=e;let t=!1,r=!1;if(_(null),P(null),H(!!g),$(!1),A(!1),N(void 0),q(e.queue.draft),D(0),W(null),!g){q(e.queue.draft),D(0);return}let n=t=>{e.queue=new b(t?.draft??Z.current(),t?.revision??0),X.reset(e.queue.draft),q(e.queue.draft),D(e.queue.revision),W(t?.createdAt??null),N(e=>t?k(e,t.draft,t.revision):void 0)};Promise.all([(0,p.Ht)(g),(0,p.zV)(g)]).then(([e,r])=>{if(!t){if("spatial"!==e.sessionType)throw Error("SESSION_TYPE_MISMATCH");P(e),n(r),H(!1)}}).catch(()=>{t||(_("spatial.loadFailed"),e.stopped=!0,H(!1))});let s=t=>{(e.queue.pending||r)&&t.preventDefault()},i=async()=>{if(!e.busy&&!e.stopped&&(!t||e.queue.pending)&&(!document.hidden||e.queue.pending)){e.busy=!0;try{if(e.queue.pending)r=!0,t||$(!0),await e.queue.flush({saveInitial:e=>(0,p.rO)(g,0,e),apply:(e,t)=>(0,p.qz)(g,e,t),restore:(e,t)=>(0,p.ul)(g,e,t)},r=>{t||(D(r.revision),W(r.createdAt),q(e.queue.draft),_(null),N(e=>k(e,r.draft,r.revision)))});else{let r=await (0,p.zV)(g,e.queue.revision);if(t||e.queue.pending)return;r&&r.revision!==e.queue.revision&&n(r)}}catch(r){e.stopped=!0,t||_(r instanceof p.wP&&409===r.status?"spatial.conflict":"spatial.saveFailed")}finally{e.busy=!1,r=!1,t?e.queue.pending&&!e.stopped?i():window.removeEventListener("beforeunload",s):$(!1)}}},a=window.setInterval(()=>void i(),800),o=()=>{document.hidden||i()};return document.addEventListener("visibilitychange",o),window.addEventListener("beforeunload",s),()=>{t=!0,clearInterval(a),document.removeEventListener("visibilitychange",o),e.queue.pending&&!e.stopped?i():r||window.removeEventListener("beforeunload",s)}},[g,Y]),(0,n.jsx)(d.o,{title:j?.title??e("spatial.title"),currentSessionId:g,onCurrentSessionRename:e=>P(t=>t?{...t,title:e}:t),rightPanelOpen:S,onRightPanelOpenChange:L,rightPanel:g?(0,n.jsx)("div",{ref:v,className:"spatial-panel-host"}):void 0,children:g?(0,n.jsx)(o.Hx,{draft:M,initialCameraId:u.get("camera"),labels:ee,actions:{retry:e("actions.retry"),delete:e("actions.delete"),cancel:e("actions.cancel")},onOperation:e=>{if(g&&!B&&!G.current.stopped)try{let t=(0,c.bK)(G.current.queue.draft,[e]);if(!X.record(t.draft))return void A(t.constrained);G.current.queue.edit(e,t.draft),q(t.draft),A(t.constrained)}catch{A(!0)}},showCameras:x.showCameras,onShowCamerasChange:e=>et("showCameras",e),showRig:x.showRig,onShowRigChange:e=>et("showRig",e),panelHost:w,toolsLabel:e("canvas.tools.label"),noteLabel:e("notes.element.label"),copiedLabel:e("clipboard.copied"),onRequestProperties:()=>L(!0),loading:B,disabled:!!J||B,error:J?e(J):z?e("spatial.constrained"):null,onRetry:J?()=>{"spatial.saveFailed"===J?(G.current.stopped=!1,_(null)):K(e=>e+1)}:void 0,interactionResetKey:X.restoreToken,historyControls:(0,n.jsx)(o.zr,{...X,labels:{undo:e("canvasHistory.undo"),redo:e("canvasHistory.redo"),label:e("canvasHistory.label")}}),cameraSource:(e,t)=>{let r=F.get(t??"color")?.get(e);return B||J||j?.id!==g||!r?void 0:(0,p.J_)(g,e,r,t)},cameraBoxSource:(e,t,r)=>B||U||G.current.queue.pending||J||j?.id!==g||!(I>0)?void 0:(0,p.gk)(g,e,I,t,r),details:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.J3,{createdAt:j?.createdAt??null,updatedAt:V,nodeCount:M.characters.length+M.objects.length+M.cameras.length+(M.cameraBoxes?.length??0),locale:t.resolvedLanguage??"zh-CN",agentCommand:()=>Promise.resolve(e("sessionDetails.agentCommand",{command:(0,h.m)(g,window.location.origin)})),labels:{title:e("sessionDetails.title"),created:e("sessionDetails.created"),updated:e("sessionDetails.updated"),nodes:e("sessionDetails.nodes"),agent:e("sessionDetails.agent"),copyCommand:e("sessionDetails.copyCommand"),copying:e("sessionDetails.copying"),copied:e("clipboard.copied"),copyFailed:e("sessionDetails.copyFailed"),emptyValue:e("sessionDetails.emptyValue")}}),(0,n.jsx)(y.H,{controller:T,category:"spatial",showProcessingStatus:!1,disabled:B||U||!!J})]})},`${g}/${Y}`):(0,n.jsx)(l.J,{onClick:async()=>{let t=await (0,p.DZ)(e("spatial.untitled"));r.push(`/spatial?session=${encodeURIComponent(t.id)}`)},children:e("spatial.newSpace")})})}}},e=>{e.O(0,[661,437,226,460,746,20,380,653,678,130,347,158,358],()=>e(e.s=42111)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[613],{46109:(e,r,a)=>{"use strict";function t(e){return{model:{label:e("styleLibrary.model.label"),loading:e("styleLibrary.model.loading"),failed:e("styleLibrary.model.failed"),reset:e("styleLibrary.model.reset"),controls:e("styleLibrary.model.controls"),retry:e("actions.retry")},newStyle:e("styleLibrary.newStyle"),editStyle:e("styleLibrary.editStyle"),name:e("styleLibrary.name"),namePlaceholder:e("styleLibrary.namePlaceholder"),category:e("styleLibrary.category.label"),allCategories:e("styleLibrary.category.all"),visualCategory:e("styleLibrary.category.visual"),uiCategory:e("styleLibrary.category.ui"),spatialCategory:e("styleLibrary.category.spatial"),creator:e("styleLibrary.creator.label"),allCreators:e("styleLibrary.creator.all"),userCreator:e("styleLibrary.creator.user"),agentCreator:e("styleLibrary.creator.agent"),references:e("styleLibrary.references.heading"),noReferences:e("styleLibrary.references.empty"),addReferences:e("styleLibrary.references.add"),removeReference:e("styleLibrary.references.remove"),pasteHint:e("styleLibrary.references.pasteHint"),fileTypes:e("styleLibrary.references.fileTypes"),description:e("styleLibrary.description.heading"),promptSummary:e("styleLibrary.promptSummary.label"),promptSummaryPlaceholder:e("styleLibrary.promptSummary.placeholder"),descriptionPlaceholder:e("styleLibrary.description.placeholder"),spatialDescriptionPlaceholder:e("styleLibrary.description.spatialPlaceholder"),searchPlaceholder:e("styleLibrary.searchPlaceholder"),deleteTitle:e("styleLibrary.deleteTitle"),deleteDescription:e("styleLibrary.deleteDescription"),empty:e("styleLibrary.empty"),noMatches:e("styleLibrary.noMatches"),loading:e("styleLibrary.loading"),loadFailed:e("styleLibrary.loadFailed"),retry:e("actions.retry"),save:e("styleLibrary.save"),cancel:e("actions.cancel"),delete:e("actions.delete"),operationFailed:e("errors.operationFailed"),imageInvalid:e("styleLibrary.imageInvalid"),openStyle:r=>e("styleLibrary.openStyle",{name:r}),closePreview:e("styleLibrary.closePreview")}}a.d(r,{Q:()=>t})},49046:(e,r,a)=>{"use strict";a.r(r),a.d(r,{default:()=>c});var t=a(73365),l=a(16415),i=a(1521),s=a(8020),y=a(46109),o=a(53130),n=a(60458);function c(){let{t:e}=(0,s.Bd)(),[r,a]=(0,i.useState)([]),[c,d]=(0,i.useState)(!0),[m,p]=(0,i.useState)(null),[b,L]=(0,i.useState)(0),u=(0,i.useCallback)(async r=>{r&&d(!0);try{let e=await (0,n.X0)();a(e),p(null)}catch{r&&p(e("styleLibrary.loadFailed"))}finally{r&&d(!1)}},[e]);async function f(e){let r=await (0,n.Jx)({name:e.name,category:e.category,description:e.description,promptSummary:e.promptSummary});a(e=>[r,...e]);try{for(let a of e.newReferenceImages)r=await (0,n.g_)(r.id,a,r.revision),h(r);return r}catch(e){throw await (0,n.Nr)(r.id,r.revision).catch(()=>void 0),a(e=>e.filter(e=>e.id!==r.id)),e}}async function g(e,r){let a=e;try{for(let e of((a.name!==r.name||a.category!==r.category||a.description!==r.description||a.promptSummary!==r.promptSummary)&&(a=await (0,n.nn)(a.id,{expectedRevision:a.revision,name:r.name,category:r.category,description:r.description,promptSummary:r.promptSummary}),h(a)),r.removedReferenceImageIds))a.referenceImages.some(r=>r.id===e)&&(a=await (0,n.aU)(a.id,e,a.revision),h(a));for(let e of r.newReferenceImages)a=await (0,n.g_)(a.id,e,a.revision),h(a);return a}catch(e){throw await u(!1),e}}function h(e){a(r=>r.map(r=>r.id===e.id?e:r))}return(0,i.useEffect)(()=>{let r=!1;d(!0),p(null),(0,n.X0)().then(e=>{r||a(e)}).catch(()=>{r||p(e("styleLibrary.loadFailed"))}).finally(()=>{r||d(!1)});let t=window.setInterval(()=>{r||u(!1)},3e3);return()=>{r=!0,window.clearInterval(t)}},[b,u,e]),(0,t.jsx)(o.o,{title:e("styleLibrary.title"),children:(0,t.jsx)(l.cF,{styles:r,loading:c,errorMessage:m,imageUrl:n.Pf,modelUrl:n.x,labels:(0,y.Q)(e),onCreate:f,onUpdate:g,onDelete:async e=>{await (0,n.Nr)(e.id,e.revision),a(r=>r.filter(r=>r.id!==e.id))},onRetry:()=>L(e=>e+1)})})}},73443:(e,r,a)=>{Promise.resolve().then(a.bind(a,49046))}},e=>{e.O(0,[661,437,226,460,746,20,380,653,678,130,347,158,358],()=>e(e.s=73443)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[376],{5424:(e,a,t)=>{Promise.resolve().then(t.bind(t,19401))},19401:(e,a,t)=>{"use strict";t.r(a),t.d(a,{default:()=>C});var n=t(73365),i=t(42614),s=t(11075),o=t(51055),l=t(23139),r=t(16415),c=t(94946),d=t(29415),u=t(95948),g=t(29717),v=t(1521),h=t(8020),m=t(48197),p=t(31854),S=t(53130),f=t(60458),b=t(46295),k=t(52003),y=t(64081),w=t.n(y);async function L(e){let a=await (0,f.Ht)(e);if("ui-layout"!==a.sessionType)throw Error("SESSION_TYPE_MISMATCH");let t=(await (0,f.dH)(e)).at(-1);return{session:a,draft:t?.draft??(0,r.LE)(r.yP),revision:t?.revision??0,lastModifiedAt:t?.createdAt??a.updatedAt,styleProcessing:t?.styleProcessing}}function x(e,a){return e instanceof f.wP?"DRAFT_REVISION_CONFLICT"===e.code?a("uiSketch.session.revisionConflict",{revision:e.details.actualLatestRevision}):"HTTP_404"===e.code?a("uiSketch.session.serviceOutdated"):a("errors.serviceSync",{message:e.message}):e instanceof Error&&"SESSION_TYPE_MISMATCH"===e.message?a("uiSketch.session.typeMismatch"):a("errors.serviceSync",{message:e instanceof Error?e.message:String(e)})}function C(){let{t:e}=(0,h.Bd)();return(0,n.jsx)(v.Suspense,{fallback:(0,n.jsx)(u.G,{className:w().routeLoading,label:e("uiSketch.session.loading"),rows:10}),children:(0,n.jsx)(N,{})})}function N(){let e=(0,g.useRouter)(),a=(0,g.useSearchParams)().get("session"),{t,i18n:y}=(0,h.Bd)(),C=(0,v.useCallback)((e,a)=>t((0,i.B)("uiSketch",e),a),[t]),[N,_]=(0,v.useState)(()=>(0,r.LE)(r.yP)),[F,T]=(0,v.useState)(null),[E,P]=(0,v.useState)(null),[A,R]=(0,v.useState)(null),[j,I]=(0,v.useState)(null),[D,H]=(0,v.useState)(0),[M,O]=(0,v.useState)(),[z,B]=(0,v.useState)(!1),[V,U]=(0,v.useState)(!0),[W,G]=(0,v.useState)(!1),[J,X]=(0,v.useState)(!1),[Y,K]=(0,v.useState)(0),[Z,$]=(0,v.useState)(null),[Q,q]=(0,v.useState)(r.Ol),[ee,ea]=(0,v.useState)(!0),[et,en]=(0,v.useState)(!1),[ei,es]=(0,v.useState)(null),[eo,el]=(0,v.useState)(null),er=(0,v.useRef)(!1),ec=(0,v.useRef)(0),ed=(0,v.useRef)(0),eu=(0,v.useRef)(null),eg=(0,v.useRef)(!1),ev=(0,v.useRef)(null),eh=(0,v.useRef)(null),em=(0,p.t)(F,ef,D),ep=(0,k.S)(N,({draft:e,context:a})=>{ec.current+=1,eu.current=null,_(e),B(!0);let t=(0,r.wN)(e);q(t.some(e=>e.id===a)?a:t[0].id)},V||J||eg.current);function eS(e,a=Q){let t="function"==typeof e?e(ep.current()):e,n=(0,r.wN)(t);ep.record(t,Q,n.some(e=>e.id===a)?a:n[0].id)&&(ec.current+=1,eu.current=null,_(t),B(!0))}async function ef(){if(F)return F;let a=eh.current??(0,f.vh)(t("uiSketch.session.untitled"));eh.current=a;try{let t=await a;return ev.current=t.id,T(t.id),P(t.title),R(t),I(t.updatedAt),e.replace(`/ui-sketch?session=${encodeURIComponent(t.id)}`),t.id}finally{eh.current===a&&(eh.current=null)}}async function eb(e){let a=await ef();return(await (0,f.FX)(a,e)).id}function ek(e){let a=Math.round(e.width),t=Math.round(e.height);a<10||t<10||eS(e=>{let n=e.frame.x+e.frame.width/2,i=e.frame.y+e.frame.height/2;return{...e,frame:{x:n-a/2,y:i-t/2,width:a,height:t}}})}(0,v.useEffect)(()=>{if(a&&a===ev.current){ev.current=null;return}if(ed.current+=1,ec.current=0,eg.current=!1,eu.current=null,B(!1),X(!1),!a){let e=(0,r.LE)(r.yP);ep.reset(e),_(e),T(null),P(null),R(null),I(null),H(0),O(void 0),q(r.Ol),en(!1),$(null),U(!1);return}let e=!1;return U(!0),T(null),P(null),R(null),I(null),en(!1),$(null),L(a).then(a=>{e||(ep.reset(a.draft),_(a.draft),T(a.session.id),P(a.session.title),R(a.session),I(a.lastModifiedAt),H(a.revision),O(a.styleProcessing),q(r.Ol),B(!1),$(null))}).catch(a=>{e||(X(!0),$(x(a,t)))}).finally(()=>{e||U(!1)}),()=>{e=!0}},[Y,a,t]),(0,v.useEffect)(()=>{let e=ec.current;if(eg.current||V||W||!z||eu.current===e)return;let a=ed.current,n=window.setTimeout(()=>{(async()=>{G(!0),$(null);try{let t=F;if(!t&&(t=await ef(),a!==ed.current))return;let n=await (0,f.VQ)(t,D,N);if(a!==ed.current)return;eu.current=null,H(n.revision),O(n.styleProcessing),I(n.createdAt),ec.current===e&&(_(n.draft),B(!1))}catch(n){if(a!==ed.current)return;let e=n instanceof f.wP&&"DRAFT_REVISION_CONFLICT"===n.code?n.details.actualLatestRevision:null;"number"==typeof e&&Number.isInteger(e)&&(eg.current=!0,ep.reset(ep.current()),H(e)),eu.current=ec.current,$(x(n,t))}finally{G(!1)}})()},800);return()=>window.clearTimeout(n)},[z,N,D,V,e,W,F,t]),(0,v.useEffect)(()=>{if(!F||V||z||W)return;let e=!1,a=ec.current,n=async()=>{try{let t=(await (0,f.dH)(F)).at(-1);!e&&a===ec.current&&t&&t.revision>D&&(ep.reset(t.draft),_(t.draft),H(t.revision),O(t.styleProcessing),I(t.createdAt),q(r.Ol),eu.current=null,$(null))}catch(a){e||$(x(a,t))}};n();let i=window.setInterval(()=>void n(),3e3);return()=>{e=!0,window.clearInterval(i)}},[z,D,V,W,F,t]);let ey=(0,r.wN)(N),ew=ey.map(e=>({id:e.id,label:e.name??t("uiSketch.states.defaultName",{number:e.number})})),eL=ey.some(e=>e.id===Q)?Q:ey[0].id;return(0,n.jsx)(S.o,{currentSessionId:a,onCurrentSessionRename:P,title:E??t("uiSketch.session.new"),rightPanelOpen:ee,onRightPanelOpenChange:ea,rightPanel:(0,n.jsx)("div",{className:w().panel,"data-canvas-editor":!0,children:V?(0,n.jsx)(u.G,{className:w().panelLoading,label:t("uiSketch.session.loading"),rows:8,compact:!0}):ee?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.J3,{createdAt:A?.createdAt??null,updatedAt:j,nodeCount:N.rectangles.length+N.texts.length+N.images.length,agentCommand:F?async()=>t("sessionDetails.agentCommand",{command:(0,b.m)(F,window.location.origin)}):null,locale:y.resolvedLanguage??y.language,labels:{title:t("sessionDetails.title"),created:t("sessionDetails.created"),updated:t("sessionDetails.updated"),nodes:t("sessionDetails.nodes"),agent:t("sessionDetails.agent"),copyCommand:t("sessionDetails.copyCommand"),copying:t("sessionDetails.copying"),copied:t("clipboard.copied"),copyFailed:t("sessionDetails.copyFailed"),emptyValue:t("sessionDetails.emptyValue")}}),(0,n.jsx)(m.H,{controller:em,category:"ui",processing:M,disabled:V||W}),(0,n.jsxs)("section",{children:[(0,n.jsxs)("div",{className:w().sectionHeading,children:[(0,n.jsx)("h2",{children:t("canvas.tools.label")}),(0,n.jsx)("div",{ref:el,className:w().sectionHeadingActions})]}),(0,n.jsx)("div",{ref:es})]}),(0,n.jsxs)("section",{children:[(0,n.jsxs)("div",{className:w().sectionHeading,children:[(0,n.jsx)("h2",{children:t("uiSketch.canvasLabels.frameRange")}),(0,n.jsxs)("div",{className:w().sectionHeadingActions,children:[(0,n.jsx)(d.J,{mode:"icon-only",size:"small",icon:(0,n.jsx)(s.A,{}),iconLabel:t("uiSketch.canvasLabels.resetFrame"),title:t("uiSketch.canvasLabels.resetFrame"),backgroundColor:"none",textColor:"color.text.secondary",disabled:J||et,onClick:function(){eS(e=>({...e,frame:{...r.yP.frame}}))}}),(0,n.jsx)(d.J,{mode:"icon-only",size:"small",icon:et?(0,n.jsx)(o.A,{}):(0,n.jsx)(l.A,{}),iconLabel:et?t("uiSketch.canvasLabels.unlockFrame"):t("uiSketch.canvasLabels.lockFrame"),title:et?t("uiSketch.canvasLabels.unlockFrame"):t("uiSketch.canvasLabels.lockFrame"),"aria-pressed":et,backgroundColor:et?"color.action.primaryActive":"none",textColor:et?"color.text.onPrimary":"color.text.secondary",disabled:J,onClick:()=>en(e=>!e)})]})]}),(0,n.jsx)("div",{className:w().aspectRatioSelector,children:(0,n.jsx)(c.h,{ratio:{width:N.frame.width,height:N.frame.height},disabled:J||et,onChange:(e,a)=>{er.current=!0,ek({width:N.frame.width,height:N.frame.width*a.height/a.width})},onRatioChange:e=>{if(er.current){er.current=!1;return}ek(e)},title:t("uiSketch.canvasLabels.rangeTitle"),widthLabel:t("dimensions.width"),heightLabel:t("dimensions.height"),"aria-label":t("uiSketch.canvasLabels.frameRange")})})]})]}):null}),children:(0,n.jsxs)("div",{className:w().page,"data-canvas-editor":!0,"aria-busy":V||W,children:[Z?(0,n.jsxs)("div",{className:w().serviceError,role:"alert",children:[(0,n.jsx)("span",{children:Z}),J?(0,n.jsx)(d.J,{size:"small",onClick:()=>K(e=>e+1),children:t("actions.retry")}):null]}):null,V?(0,n.jsx)(u.G,{className:w().workspaceLoading,label:t("uiSketch.session.loading"),rows:10}):J?null:(0,n.jsxs)(r.x8,{"data-active-stage":eL,stateControls:(0,n.jsx)(r.SM,{items:ew,value:eL,labels:{switch:t("uiSketch.views.switch"),add:t("uiSketch.views.enableMotion"),rename:t("actions.rename"),name:t("uiSketch.states.name"),new:t("uiSketch.states.new"),delete:t("uiSketch.states.delete"),cancel:t("actions.cancel"),reorderHint:t("uiSketch.states.reorderHint"),actions:e=>t("uiSketch.states.actions",{name:e}),deleteTitle:e=>t("uiSketch.states.deleteTitle",{name:e})},onChange:q,onCreate:function(e){let a=crypto.randomUUID();eS(t=>(0,r.MH)(t,e,a),a),q(a)},onRename:(e,a)=>eS(t=>(0,r.kC)(t,e,a)),onDelete:function(e){let a=(0,r.wN)(N),t=a.findIndex(a=>a.id===e);if(a.length<2||t<0)return;let n=Q===e?a[t+1]?.id??a[t-1].id:Q;q(n),eS(a=>(0,r.vB)(a,e),n)},onReorder:e=>eS(a=>(0,r.Y$)(a,e))}),children:[(0,n.jsx)(r.zr,{...ep,labels:{undo:t("canvasHistory.undo"),redo:t("canvasHistory.redo"),label:t("canvasHistory.label")}}),(0,n.jsx)(r.NX,{className:w().canvas,interactionResetKey:ep.restoreToken,draft:N,activeStageId:eL,onDraftChange:eS,translatePrompt:C,resolveStylePrompt:em.readPromptLine,toolHost:ee?ei:null,clearActionHost:ee?eo:null,showCanvasTools:!ee,canvasSideActionPanelDefaultCollapsed:!0,interfaceFrameLocked:et,resolveImageSource:F?e=>(0,f.MZ)(F,e):void 0,onImageUpload:eb,onReadImageFile:f.MT,imageEditorLabels:{content:t("canvas.imageEditor.content"),upload:t("canvas.imageEditor.upload"),download:t("canvas.imageEditor.download"),downloading:t("canvas.imageEditor.downloading"),downloadFailed:t("canvas.imageEditor.downloadFailed"),replace:t("canvas.imageEditor.replace"),uploading:t("canvas.imageEditor.uploading"),uploadFailed:t("canvas.imageEditor.uploadFailed"),fileTypes:t("canvas.imageEditor.fileTypes"),cropTitle:t("canvas.imageCrop.title"),cropLoadFailed:t("canvas.imageCrop.loadFailed"),svgSource:t("canvas.imageEditor.svgSource"),svgPaste:t("canvas.imageEditor.svgPaste"),svgApply:t("canvas.imageEditor.svgApply"),svgSaveFailed:t("canvas.imageEditor.svgSaveFailed"),svgCopy:t("canvas.imageEditor.svgCopy"),svgCopying:t("canvas.imageEditor.svgCopying"),svgCopyFailed:t("canvas.imageEditor.svgCopyFailed"),sourceLoading:t("canvas.imageEditor.sourceLoading"),sourceLoadFailed:t("canvas.imageEditor.sourceLoadFailed"),svgCopied:t("clipboard.copied"),cancel:t("actions.cancel"),retry:t("actions.retry")},labels:{canvas:t("uiSketch.canvas"),canvasViewport:t("uiSketch.canvasLabels.canvasViewport"),scene:t("uiSketch.canvasLabels.scene"),region:t("uiSketch.canvasLabels.region"),addRegion:t("uiSketch.canvasLabels.addRegion"),text:t("uiSketch.canvasLabels.text"),addText:t("uiSketch.canvasLabels.addText"),image:t("canvas.imageNode.label"),addImage:t("canvas.imageNode.add"),newText:t("uiSketch.canvasLabels.newText"),overallNote:t("notes.global.label"),clearCanvas:t("uiSketch.canvasLabels.clearCanvas"),clearCanvasConfirmTitle:t("uiSketch.canvasLabels.clearCanvasConfirmTitle"),clearCanvasConfirmDescription:t("uiSketch.canvasLabels.clearCanvasConfirmDescription"),clearCanvasCancel:t("actions.cancel"),bringToFront:t("canvasLayers.bringToFront"),bringForward:t("canvasLayers.bringForward"),sendBackward:t("canvasLayers.sendBackward"),sendToBack:t("canvasLayers.sendToBack"),groupItems:t("uiSketch.canvasLabels.groupItems"),ungroupItems:t("uiSketch.canvasLabels.ungroupItems"),copyGroup:t("clipboard.group"),copyPrompt:t("clipboard.copyPrompt"),copySketch:t("clipboard.copyPreview"),copyAllStages:t("uiSketch.motion.copyPrompt"),overallNoteTitle:t("uiSketch.globalNote.title"),overallNotePlaceholder:t("uiSketch.globalNote.placeholder"),overallNoteAriaLabel:t("uiSketch.globalNote.ariaLabel"),fitFrame:t("uiSketch.canvasLabels.fitFrame"),interactionHelp:t("canvas.viewport.instructions"),sideActions:t("uiSketch.canvasLabels.sideActions"),collapseSideActions:t("uiSketch.canvasLabels.collapseSideActions"),expandSideActions:t("uiSketch.canvasLabels.expandSideActions"),frameAction:t("uiSketch.canvasLabels.frameAction"),frameRange:t("uiSketch.canvasLabels.frameRange"),missingRegionNote:t("uiSketch.canvasLabels.missingRegionNote"),editRegionNote:t("uiSketch.canvasLabels.editRegionNote"),editText:t("uiSketch.canvasLabels.editText"),nodeDescription:t("canvas.node.nodeDescription"),originUser:t("canvas.node.originUser"),originAgent:t("canvas.node.originAgent"),originImport:t("canvas.node.originImport"),note:t("notes.element.label"),textContent:t("textContent.label"),regionPlaceholder:t("notes.element.regionPlaceholder"),textPlaceholder:t("textContent.uiSketchPlaceholder"),textNotePlaceholder:t("notes.element.textPlaceholder"),imageNotePlaceholder:t("notes.element.nodePlaceholder"),shapeKind:t("canvasNodeEditor.shapeKind"),emptyText:t("uiSketch.canvasLabels.emptyText"),visualWeight:t("visualWeight.label"),visibility:t("uiSketch.canvasLabels.visibility"),visible:t("uiSketch.canvasLabels.visible"),hidden:t("uiSketch.canvasLabels.hidden"),weightAuto:t("visualWeight.auto"),weightHigh:t("visualWeight.high"),weightMedium:t("visualWeight.medium"),weightLow:t("visualWeight.low"),weightDecorative:t("visualWeight.decorative"),fontSize:t("uiSketch.canvasLabels.fontSize"),decreaseFontSize:t("uiSketch.canvasLabels.decreaseFontSize"),increaseFontSize:t("uiSketch.canvasLabels.increaseFontSize"),cancel:t("actions.cancel"),deleteRegion:t("actions.deleteRegion"),deleteText:t("actions.deleteText"),deleteNode:t("actions.deleteNode"),confirmDeleteRegion:t("confirmations.deleteRegion"),confirmDeleteText:t("confirmations.deleteText"),confirmDeleteNode:t("confirmations.deleteNode"),cancelDelete:t("actions.keep"),promptUnsupported:t("clipboard.promptUnsupported"),promptCopied:t("clipboard.copied"),promptCopyFailed:t("clipboard.promptFailed"),sketchCopied:t("clipboard.copied"),sketchDownloaded:t("clipboard.previewDownloaded"),sketchCopyFailed:t("clipboard.previewFailed"),selectedItemsPrefix:t("uiSketch.canvasLabels.selectedItemsPrefix"),selectedItemsSuffix:t("uiSketch.canvasLabels.selectedItemsSuffix"),noSelection:t("uiSketch.canvasLabels.noSelection")},"aria-label":t("uiSketch.canvas")})]})]})})}},64081:e=>{e.exports={page:"page_page__BcSuz",routeLoading:"page_routeLoading__kkew_",workspaceLoading:"page_workspaceLoading__1orsz",panelLoading:"page_panelLoading__ffX8a",canvas:"page_canvas__75Gnz",panel:"page_panel__7bViD",sectionHeading:"page_sectionHeading__plJXT",sectionHeadingActions:"page_sectionHeadingActions___cBZV",aspectRatioSelector:"page_aspectRatioSelector__19Yj4",serviceError:"page_serviceError__Av5GF"}}},e=>{e.O(0,[661,437,226,979,782,460,746,20,380,653,678,130,166,347,158,358],()=>e(e.s=5424)),_N_E=e.O()}]);