human2ai 0.1.2 → 0.1.4

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 (181) hide show
  1. package/README.en.md +36 -4
  2. package/README.md +44 -4
  3. package/dist/cli/main.js +47 -13
  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 +5 -0
  10. package/dist/domain/composition/analysis.js.map +1 -1
  11. package/dist/domain/composition/draft.d.ts +2 -0
  12. package/dist/domain/composition/draft.js +126 -5
  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/geometry.d.ts +5 -1
  18. package/dist/domain/composition/geometry.js +40 -2
  19. package/dist/domain/composition/geometry.js.map +1 -1
  20. package/dist/domain/composition/index.d.ts +6 -3
  21. package/dist/domain/composition/index.js +6 -3
  22. package/dist/domain/composition/index.js.map +1 -1
  23. package/dist/domain/composition/planning-intersections.d.ts +20 -0
  24. package/dist/domain/composition/planning-intersections.js +119 -0
  25. package/dist/domain/composition/planning-intersections.js.map +1 -0
  26. package/dist/domain/composition/planning.d.ts +25 -0
  27. package/dist/domain/composition/planning.js +152 -0
  28. package/dist/domain/composition/planning.js.map +1 -0
  29. package/dist/domain/composition/refinement/engine.js +1 -0
  30. package/dist/domain/composition/refinement/engine.js.map +1 -1
  31. package/dist/domain/composition/render.js +14 -1
  32. package/dist/domain/composition/render.js.map +1 -1
  33. package/dist/domain/composition/states.js +6 -3
  34. package/dist/domain/composition/states.js.map +1 -1
  35. package/dist/domain/composition/types.d.ts +49 -1
  36. package/dist/domain/session/capabilities.js +1 -0
  37. package/dist/domain/session/capabilities.js.map +1 -1
  38. package/dist/domain/spatial/camera-box-sheet.d.ts +15 -0
  39. package/dist/domain/spatial/camera-box-sheet.js +24 -0
  40. package/dist/domain/spatial/camera-box-sheet.js.map +1 -0
  41. package/dist/domain/spatial/camera-box.d.ts +1 -1
  42. package/dist/domain/spatial/camera-box.js +6 -2
  43. package/dist/domain/spatial/camera-box.js.map +1 -1
  44. package/dist/domain/spatial/camera-render-key.d.ts +7 -0
  45. package/dist/domain/spatial/camera-render-key.js +63 -0
  46. package/dist/domain/spatial/camera-render-key.js.map +1 -0
  47. package/dist/domain/spatial/index.d.ts +1 -0
  48. package/dist/domain/spatial/index.js +1 -0
  49. package/dist/domain/spatial/index.js.map +1 -1
  50. package/dist/domain/spatial/lighting.js +3 -2
  51. package/dist/domain/spatial/lighting.js.map +1 -1
  52. package/dist/domain/spatial/model.d.ts +2 -0
  53. package/dist/domain/spatial/model.js +82 -27
  54. package/dist/domain/spatial/model.js.map +1 -1
  55. package/dist/domain/spatial/preview.d.ts +4 -0
  56. package/dist/domain/spatial/preview.js +23 -0
  57. package/dist/domain/spatial/preview.js.map +1 -0
  58. package/dist/domain/spatial/reference-lines.d.ts +12 -3
  59. package/dist/domain/spatial/reference-lines.js +37 -16
  60. package/dist/domain/spatial/reference-lines.js.map +1 -1
  61. package/dist/domain/spatial/render-inputs.d.ts +3 -0
  62. package/dist/domain/spatial/render-inputs.js +14 -0
  63. package/dist/domain/spatial/render-inputs.js.map +1 -0
  64. package/dist/domain/spatial/scene-cache.d.ts +13 -1
  65. package/dist/domain/spatial/scene-cache.js +90 -11
  66. package/dist/domain/spatial/scene-cache.js.map +1 -1
  67. package/dist/domain/spatial/scene-update.d.ts +6 -0
  68. package/dist/domain/spatial/scene-update.js +52 -0
  69. package/dist/domain/spatial/scene-update.js.map +1 -0
  70. package/dist/domain/spatial/scene.d.ts +3 -1
  71. package/dist/domain/spatial/scene.js +78 -20
  72. package/dist/domain/spatial/scene.js.map +1 -1
  73. package/dist/domain/spatial/types.d.ts +8 -0
  74. package/dist/domain/spatial/types.js.map +1 -1
  75. package/dist/domain/style/model-input.d.ts +3 -0
  76. package/dist/domain/style/model-input.js +36 -0
  77. package/dist/domain/style/model-input.js.map +1 -0
  78. package/dist/domain/style/types.d.ts +8 -1
  79. package/dist/domain/style/types.js +1 -1
  80. package/dist/domain/style/types.js.map +1 -1
  81. package/dist/domain/ui-sketch/clipboard.d.ts +12 -0
  82. package/dist/domain/ui-sketch/clipboard.js +55 -0
  83. package/dist/domain/ui-sketch/clipboard.js.map +1 -0
  84. package/dist/domain/ui-sketch/index.d.ts +1 -0
  85. package/dist/domain/ui-sketch/index.js +1 -0
  86. package/dist/domain/ui-sketch/index.js.map +1 -1
  87. package/dist/server/routes/spatial-sessions.js +39 -15
  88. package/dist/server/routes/spatial-sessions.js.map +1 -1
  89. package/dist/server/routes/style-library.js +39 -0
  90. package/dist/server/routes/style-library.js.map +1 -1
  91. package/dist/server/spatial-render-service.d.ts +21 -0
  92. package/dist/server/spatial-render-service.js +67 -0
  93. package/dist/server/spatial-render-service.js.map +1 -0
  94. package/dist/server/spatial-render-worker.d.ts +1 -0
  95. package/dist/server/spatial-render-worker.js +15 -0
  96. package/dist/server/spatial-render-worker.js.map +1 -0
  97. package/dist/server/spatial-render.d.ts +15 -3
  98. package/dist/server/spatial-render.js +47 -14
  99. package/dist/server/spatial-render.js.map +1 -1
  100. package/locales/en/common.json +94 -14
  101. package/migrations/0009_spatial_styles.sql +31 -0
  102. package/migrations/0010_style_preview_models.sql +8 -0
  103. package/package.json +1 -1
  104. package/schemas/composition-draft.schema.json +474 -1
  105. package/schemas/spatial-draft.schema.json +12 -0
  106. package/schemas/spatial-operations.schema.json +12 -0
  107. package/skills/human2ai/SKILL.md +23 -9
  108. package/skills/human2ai/references/composition.md +192 -1
  109. package/skills/human2ai/references/spatial-modeling.md +119 -0
  110. package/skills/human2ai/references/spatial.md +7 -2
  111. package/web/out/404/index.html +1 -1
  112. package/web/out/404.html +1 -1
  113. package/web/out/__next.__PAGE__.txt +7 -5
  114. package/web/out/__next._full.txt +7 -5
  115. package/web/out/__next._tree.txt +4 -2
  116. package/web/out/_next/static/chunks/101.6ef34adad3e9815b.js +1 -0
  117. package/web/out/_next/static/chunks/130-7e9e715a084569bb.js +1 -0
  118. package/web/out/_next/static/chunks/166-96a8c6ae1e9aed59.js +1 -0
  119. package/web/out/_next/static/chunks/218.7b89674409b344b8.js +1 -0
  120. package/web/out/_next/static/chunks/484.92b016222d6749f2.js +1 -0
  121. package/web/out/_next/static/chunks/{381-4a803b79da320e6e.js → 635-611c009924b842be.js} +54 -54
  122. package/web/out/_next/static/chunks/653-6dfb97fec9a2d91b.js +1 -0
  123. package/web/out/_next/static/chunks/678-32d3aa1859450d63.js +1 -0
  124. package/web/out/_next/static/chunks/83607670-fd2f339702a222e4.js +1 -0
  125. package/web/out/_next/static/chunks/app/_not-found/{page-59ce938ad0594022.js → page-b92817fdc4609975.js} +1 -1
  126. package/web/out/_next/static/chunks/app/composition/page-6c12ee8472715448.js +1 -0
  127. package/web/out/_next/static/chunks/app/{layout-6351ae607c4ee18d.js → layout-1dd9196cde94389c.js} +1 -1
  128. package/web/out/_next/static/chunks/app/page-741ecaf9ee8c3c07.js +1 -0
  129. package/web/out/_next/static/chunks/app/spatial/page-5ba0940650df6c7f.js +1 -0
  130. package/web/out/_next/static/chunks/app/styles/page-1ccfc2c5fbc1e646.js +1 -0
  131. package/web/out/_next/static/chunks/app/ui-sketch/page-ef4f2e531583e684.js +1 -0
  132. package/web/out/_next/static/chunks/{c3f2cda1-9e279dab137b7272.js → c3f2cda1-ef85a0897724e46b.js} +1 -1
  133. package/web/out/_next/static/chunks/main-app-cf37a257d91ce62e.js +1 -0
  134. package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-33b4f58f02e82215.js +1 -0
  135. package/web/out/_next/static/chunks/webpack-d16ce1f994e98178.js +1 -0
  136. package/web/out/_next/static/css/06743b5635914999.css +5 -0
  137. package/web/out/_next/static/css/0b43ff4a0439c97e.css +1 -0
  138. package/web/out/_next/static/css/1f8501a43042a5a2.css +1 -0
  139. package/web/out/_next/static/css/39e8cace36461a15.css +1 -0
  140. package/web/out/_not-found/__next._full.txt +3 -3
  141. package/web/out/_not-found/__next._not-found.__PAGE__.txt +3 -3
  142. package/web/out/_not-found/__next._tree.txt +1 -1
  143. package/web/out/_not-found/index.html +1 -1
  144. package/web/out/_not-found/index.txt +3 -3
  145. package/web/out/composition/__next._full.txt +6 -5
  146. package/web/out/composition/__next._tree.txt +3 -2
  147. package/web/out/composition/__next.composition.__PAGE__.txt +6 -5
  148. package/web/out/composition/index.html +1 -1
  149. package/web/out/composition/index.txt +6 -5
  150. package/web/out/index.html +1 -1
  151. package/web/out/index.txt +7 -5
  152. package/web/out/spatial/__next._full.txt +6 -5
  153. package/web/out/spatial/__next._tree.txt +3 -2
  154. package/web/out/spatial/__next.spatial.__PAGE__.txt +6 -5
  155. package/web/out/spatial/index.html +1 -1
  156. package/web/out/spatial/index.txt +6 -5
  157. package/web/out/styles/__next._full.txt +6 -5
  158. package/web/out/styles/__next._tree.txt +3 -2
  159. package/web/out/styles/__next.styles.__PAGE__.txt +6 -5
  160. package/web/out/styles/index.html +1 -1
  161. package/web/out/styles/index.txt +6 -5
  162. package/web/out/ui-sketch/__next._full.txt +6 -5
  163. package/web/out/ui-sketch/__next._tree.txt +3 -2
  164. package/web/out/ui-sketch/__next.ui-sketch.__PAGE__.txt +6 -5
  165. package/web/out/ui-sketch/index.html +1 -1
  166. package/web/out/ui-sketch/index.txt +6 -5
  167. package/web/out/_next/static/chunks/130-f2627352fc1e1f49.js +0 -1
  168. package/web/out/_next/static/chunks/678-b0ea409290a64ff4.js +0 -1
  169. package/web/out/_next/static/chunks/728-ce64a38c9e8339e8.js +0 -1
  170. package/web/out/_next/static/chunks/83607670-bc1279370476e59f.js +0 -1
  171. package/web/out/_next/static/chunks/app/composition/page-b0a2f7370b949cf9.js +0 -1
  172. package/web/out/_next/static/chunks/app/page-a6fde4165eb4be1e.js +0 -1
  173. package/web/out/_next/static/chunks/app/spatial/page-2c3df91fd1d7d444.js +0 -1
  174. package/web/out/_next/static/chunks/app/styles/page-54b11f1945d64255.js +0 -1
  175. package/web/out/_next/static/chunks/app/ui-sketch/page-1abcd70a81ac7b30.js +0 -1
  176. package/web/out/_next/static/chunks/main-app-8946bf6a8c0dc843.js +0 -1
  177. package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-5ac7248e26f2e308.js +0 -1
  178. package/web/out/_next/static/chunks/webpack-97ae63c0e0b2a512.js +0 -1
  179. package/web/out/_next/static/css/7bfa3a5c92836f5c.css +0 -5
  180. /package/web/out/_next/static/{1To86KpfZhDmNzmTIgEuy → n4UcxqMmr_2CBmSxBp52z}/_buildManifest.js +0 -0
  181. /package/web/out/_next/static/{1To86KpfZhDmNzmTIgEuy → n4UcxqMmr_2CBmSxBp52z}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{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)},56386:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(35465)}])}},e=>{e.O(0,[347,158,358],()=>e(e.s=56386)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{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)},93213:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(35465)}])}},e=>{e.O(0,[347,158,358],()=>e(e.s=93213)),_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",processingSemanticSelect:"page_processingSemanticSelect__f4qON",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"}},42532:(e,o,i)=>{Promise.resolve().then(i.bind(i,65945))},65945:(e,o,i)=>{"use strict";i.r(o),i.d(o,{default:()=>J});var a=i(73365),t=i(42614),n=i(28110),s=i(1521);let r={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 l=i(28630);function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var o=1;o<arguments.length;o++){var i=arguments[o];for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(e[a]=i[a])}return e}).apply(this,arguments)}let d=s.forwardRef((e,o)=>s.createElement(l.A,c({},e,{ref:o,icon:r})));var p=i(59030),u=i(11902),m=i(28462),g=i(83499),h=i(17357),f=i(81271),v=i(51055),w=i(23139),b=i(362),x=i(94946),y=i(29415),S=i(50052),_=i(67282),j=i(95948),C=i(13360),I=i(49762),N=i(24539),A=i(29717),k=i(8020),R=i(3693),E=i(60458),T=i(48197),L=i(31854),F=i(3742),P=i(55408),D=i(44040),M=i(52582),O=i(3500),H=i(21071),V=i(53130),$=i(46295),q=i(52003),G=i(2828),z=i.n(G);async function B(e){let o=await (0,E.Ht)(e);if("image-composition"!==o.sessionType)throw Error("SESSION_TYPE_MISMATCH");return{session:o,draftVersion:(await (0,E.he)(e)).at(-1)??null}}function U(e){let o=function(e,o){let i=Math.abs(e),a=Math.abs(o);for(;0!==a;)[i,a]=[a,i%a];return i||1}(e.frame.width,e.frame.height);return{width:e.frame.width/o,height:e.frame.height/o}}function W(e,o){return e instanceof E.wP?"DRAFT_REVISION_CONFLICT"===e.code?o("composition.session.revisionConflict",{revision:e.details.actualLatestRevision}):o("errors.serviceSync",{message:e.message}):e instanceof Error&&"SESSION_TYPE_MISMATCH"===e.message?o("composition.session.typeMismatch"):o("errors.serviceSync",{message:e instanceof Error?e.message:String(e)})}function J(){let{t:e}=(0,k.Bd)();return(0,a.jsx)(s.Suspense,{fallback:(0,a.jsx)(j.G,{className:z().routeLoading,label:e("composition.session.loading"),rows:10}),children:(0,a.jsx)(K,{})})}function K(){let e=(0,A.useRouter)(),o=(0,A.useSearchParams)().get("session"),{t:i,i18n:r}=(0,k.Bd)(),l=(0,s.useCallback)((e,o)=>i((0,t.B)("composition",e),o),[i]),[c,G]=(0,s.useState)(R.mq),[J,K]=(0,s.useState)(null),[Z,Y]=(0,s.useState)(!0),[Q,X]=(0,s.useState)(!1),[ee,eo]=(0,s.useState)(!0),[ei,ea]=(0,s.useState)(1),[et,en]=(0,s.useState)({id:0,type:"fit-frame"}),[es,er]=(0,s.useState)([]),[el,ec]=(0,s.useState)([]),[ed,ep]=(0,s.useState)(!1),eu=i("composition.planning",{returnObjects:!0}),[em,eg]=(0,s.useState)({width:16,height:9}),[eh,ef]=(0,s.useState)(null),[ev,ew]=(0,s.useState)(null),[eb,ex]=(0,s.useState)(null),[ey,eS]=(0,s.useState)(null),[e_,ej]=(0,s.useState)(0),[eC,eI]=(0,s.useState)(),[eN,eA]=(0,s.useState)(!1),[ek,eR]=(0,s.useState)(!0),[eE,eT]=(0,s.useState)(!1),[eL,eF]=(0,s.useState)(null),[eP,eD]=(0,s.useState)(!1),[eM,eO]=(0,s.useState)(null),[eH,eV]=(0,s.useState)(!1),[e$,eq]=(0,s.useState)(!1),eG=(0,s.useRef)(0),ez=(0,s.useRef)(0),eB=(0,s.useRef)(null),eU=(0,s.useRef)(!1),eW=(0,s.useRef)(null),eJ=(0,s.useRef)(null),eK=(0,L.t)(eh,e6,e_),eZ=(0,q.S)(c,({draft:e})=>{eG.current+=1,eB.current=null,G(e),eA(!0),K(null),eD(!1),er([]),ec([]),eg(U(e))},ek||eU.current),eY=function(e){let{t:o}=(0,k.Bd)(),i=(0,A.useRouter)(),t=(0,s.useRef)(e);t.current=e;let[n,r]=(0,s.useState)(!1),[l,c]=(0,s.useState)([]),[d,p]=(0,s.useState)(null),[u,m]=(0,s.useState)([]),[g,h]=(0,s.useState)(null),[f,v]=(0,s.useState)(0),[w,b]=(0,s.useState)(!1),[x,S]=(0,s.useState)(null),[_,j]=(0,s.useState)(new Set),[C,I]=(0,s.useState)(0);async function N(e,o,i,a){let t=await fetch((0,E.J_)(o,i.id,a||void 0),{cache:"no-store"});if(!t.ok)throw Error("SPATIAL_CAMERA_NOT_FOUND");return(0,E.FX)(e,new File([await t.blob()],`${i.id}.png`,{type:"image/png"}))}async function R(){let e=u.find(e=>e.id===g);if(d&&e&&!w){b(!0),S(null);try{let o=t.current.sessionId,i=await t.current.ensureSession(),a=await N(i,d,e,f);if(t.current.sessionId!==i&&t.current.sessionId!==o)return;t.current.updateDraft(o=>{var i;let t,n,s;return(i={sessionId:d,cameraId:e.id,revision:f,assetId:a.id,width:e.width,height:e.height},t=320*Math.min(1,i.width/i.height),(s=(n=(0,M.xB)(o,{width:t/O.cq.width,height:t*i.height/i.width/O.cq.height})).draft.images.find(e=>e.id===n.id)).assetId=i.assetId,s.cameraReference={sessionId:i.sessionId,cameraId:i.cameraId,renderedRevision:i.revision},{...n,draft:(0,M.M6)(n.draft)}).draft}),r(!1)}catch{S(o("spatial.loadFailed"))}finally{b(!1)}}}return(0,s.useEffect)(()=>{if(!n)return;let e=!1;return b(!0),S(null),(0,E.GW)().then(o=>{e||c(o.filter(e=>"spatial"===e.sessionType))}).catch(()=>{e||S(o("spatial.loadFailed"))}).finally(()=>{e||b(!1)}),()=>{e=!0}},[n,C,o]),(0,s.useEffect)(()=>{if(!n||!d)return;let e=!1;return b(!0),S(null),m([]),h(null),(0,E.n8)(d).then(o=>{if(e)return;let i=o.at(-1),a=i?.draft.cameras??(0,H.wY)().cameras;m(a),h(a[0]?.id??null),v(i?.revision??0)}).catch(()=>{e||S(o("spatial.loadFailed"))}).finally(()=>{e||b(!1)}),()=>{e=!0}},[d,n,C,o]),(0,s.useEffect)(()=>{let o=e.sessionId;if(!o)return;let i=!1,a=!1;j(new Set);let n=async()=>{if(!a){a=!0;try{let e=new Map;for(let o of t.current.draft.images)o.cameraReference&&e.set(`${o.cameraReference.sessionId}/${o.cameraReference.cameraId}`,o);let a=new Set;for(let[n,s]of e){if(i)return;let e=s.cameraReference;try{let r=(await (0,E.n8)(e.sessionId)).at(-1),l=r?.revision??0,c=(r?.draft??(0,H.wY)()).cameras.find(o=>o.id===e.cameraId);if(!c){a.add(n);continue}if(l===e.renderedRevision&&s.assetId)continue;let d=await N(o,e.sessionId,c,l);if(i)return;t.current.updateDraft(o=>(function(e,o){return(0,M.M6)({...e,images:e.images.map(e=>{let i=e.cameraReference;return i&&i.sessionId===o.sessionId&&i.cameraId===o.cameraId?{...e,assetId:o.assetId,height:e.width*O.cq.width*o.height/o.width/O.cq.height,cameraReference:{...i,renderedRevision:o.revision}}:e})})})(o,{sessionId:e.sessionId,cameraId:c.id,revision:l,assetId:d.id,width:c.width,height:c.height}),!1)}catch{a.add(n)}}i||j(a)}finally{a=!1}}};n();let s=window.setInterval(()=>void n(),2e3);return()=>{i=!0,clearInterval(s)}},[e.sessionId]),{openPicker:()=>{p(null),m([]),h(null),r(!0)},picker:(0,a.jsx)(F.A,{closable:{"aria-label":o("actions.cancel"),disabled:w},title:o("spatial.addReference"),open:n,onCancel:()=>!w&&r(!1),onOk:()=>void R(),confirmLoading:w,okButtonProps:{disabled:!g||w},okText:o("actions.create"),cancelText:o("actions.cancel"),destroyOnHidden:!0,children:(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[x&&(0,a.jsx)(P.A,{type:"error",message:x,action:(0,a.jsx)(y.J,{onClick:()=>I(e=>e+1),children:o("actions.retry")})}),(0,a.jsx)(D.A,{"aria-label":o("spatial.selectSpace"),placeholder:o("spatial.selectSpace"),value:d,loading:w,options:l.map(e=>({value:e.id,label:e.title})),notFoundContent:o("spatial.noSpaces"),onChange:p}),(0,a.jsx)(D.A,{"aria-label":o("spatial.selectCamera"),placeholder:o("spatial.selectCamera"),value:g,disabled:!d||w,options:u.map(e=>({value:e.id,label:e.name})),onChange:h}),d&&g&&(0,a.jsx)("img",{src:(0,E.J_)(d,g,f||void 0),alt:o("spatial.cameraView"),style:{width:"100%",maxHeight:260,objectFit:"contain"}})]})}),renderImageContent:n=>{let s=n.cameraReference,r=_.has(`${s.sessionId}/${s.cameraId}`);return(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[(0,a.jsx)("strong",{children:o("spatial.reference")}),r&&(0,a.jsx)(P.A,{type:"warning",message:o("spatial.sourceMissing")}),n.assetId&&e.sessionId&&(0,a.jsx)("img",{src:(0,E.MZ)(e.sessionId,n.assetId),alt:o("spatial.cameraView"),style:{width:"100%",maxHeight:280,objectFit:"contain"}}),(0,a.jsx)(y.J,{disabled:r,onClick:()=>i.push(`/spatial?session=${encodeURIComponent(s.sessionId)}&camera=${encodeURIComponent(s.cameraId)}`),children:o("spatial.openSource")}),(0,a.jsx)(y.J,{disabled:!n.assetId,onClick:()=>t.current.updateDraft(e=>(function(e,o){let i=e.images.find(e=>e.id===o);if(!i?.cameraReference||!i.assetId)throw Error("COMPOSITION_CAMERA_REFERENCE_REQUIRED");let a=(0,M.xB)(e),{cameraReference:t,...n}=i,s={...n,id:a.id,x:i.x+24/O.cq.width,y:i.y+24/O.cq.height};return a.draft.images[a.draft.images.findIndex(e=>e.id===a.id)]=s,{...a,draft:(0,M.M6)(a.draft)}})(e,n.id).draft),children:o("spatial.snapshot")})]})}}}({draft:c,sessionId:eh,ensureSession:e6,updateDraft:e5}),eQ=!ek,eX=(0,R.fQ)(c),e0=c.activeStateId??eX[0].id,e1=(0,R.VC)(c),e2=es.filter(e=>e!==b.jZ),e3=[{value:"scene-composition",label:i("composition.mode.scene")},{value:"editorial-layout",label:i("composition.mode.editorial")}];function e4(e){eD(!1),K(o=>o===e?null:e)}async function e6(){if(eh)return eh;let o=eJ.current??(0,E.$M)(i("composition.session.untitled"));eJ.current=o;try{let i=await o;return eW.current=i.id,ef(i.id),ew(i.title),ex(i),eS(i.updatedAt),e.replace(`/composition?session=${encodeURIComponent(i.id)}`),i.id}finally{eJ.current===o&&(eJ.current=null)}}async function e8(e){let o=await e6();return(await (0,E.FX)(o,e)).id}function e5(e){let o=(0,R.M6)("function"==typeof e?e(eZ.current()):e);eZ.record(o)&&(eG.current+=1,eB.current=null,G(o),eg(U(o)),eA(!0))}function e9(e){ec(e),er([]),K(null)}function e7(e){en(o=>({id:o.id+1,type:e}))}function oe(e){e5(e),K(null),er([]),ec([]),eD(!1),e7("fit-frame")}async function oo(){eV(!0);try{if(!navigator.clipboard?.writeText)throw Error(i("clipboard.promptUnsupported"));let e=await eK.readPromptLine();await navigator.clipboard.writeText((0,b.FU)(c,l,e)),eO({type:"success",message:i("clipboard.copied")})}catch(e){eO({type:"error",message:e instanceof Error&&e.message===i("clipboard.promptUnsupported")?e.message:i("clipboard.promptFailed")})}finally{eV(!1)}}async function oi(){eq(!0);try{let e=await (0,b.Nc)(c,eh?e=>(0,E.MZ)(eh,e):void 0);eO("downloaded"===e?{type:"warning",message:i("clipboard.previewDownloaded")}:{type:"success",message:i("clipboard.copied")})}catch{eO({type:"error",message:i("clipboard.previewFailed")})}finally{eq(!1)}}(0,s.useEffect)(()=>{if(!eM)return;let e=window.setTimeout(()=>eO(null),2e3);return()=>window.clearTimeout(e)},[eM]),(0,s.useEffect)(()=>{if(o&&o===eW.current){eW.current=null;return}if(K(null),ez.current+=1,eG.current=0,eU.current=!1,eB.current=null,eA(!1),!o){let e=(0,R.mq)();eZ.reset(e),G(e),Y(!0),X(!1),ep(!1),ea(1),e7("fit-frame"),er([]),ec([]),eg({width:16,height:9}),ef(null),ew(null),ex(null),eS(null),ej(0),eI(void 0),eF(null),eR(!1);return}let e=!1;return eR(!0),Y(!0),X(!1),ep(!1),ea(1),ef(null),ew(null),ex(null),eS(null),eF(null),B(o).then(o=>{if(e)return;let i=o.draftVersion?.draft??(0,R.mq)();eZ.reset(i),G(i),ef(o.session.id),ew(o.session.title),ex(o.session),eS(o.draftVersion?.createdAt??o.session.updatedAt),ej(o.draftVersion?.revision??0),eI(o.draftVersion?.styleProcessing),eg(U(i));let a=i.areas[0]?.id??i.focusPoints[0]?.id;er(a?[a]:[]),ec([]),e7("fit-frame"),eA(!1),eF(null)}).catch(o=>{e||eF(W(o,i))}).finally(()=>{e||eR(!1)}),()=>{e=!0}},[o,i]),(0,s.useEffect)(()=>{let e=eG.current;if(eU.current||ek||eE||!eN||eB.current===e)return;let o=ez.current,a=window.setTimeout(()=>{(async()=>{eT(!0),eF(null);try{let i=eh;if(!i&&(i=await e6(),o!==ez.current))return;let a=await (0,E.hU)(i,e_,c);if(o!==ez.current)return;eB.current=null,ej(a.revision),eI(a.styleProcessing),eS(a.createdAt),eG.current===e&&(G(a.draft),eA(!1))}catch(a){if(o!==ez.current)return;let e=a instanceof E.wP&&"DRAFT_REVISION_CONFLICT"===a.code?a.details.actualLatestRevision:null;"number"==typeof e&&Number.isInteger(e)?(eU.current=!0,eZ.reset(eZ.current()),ej(e)):eB.current=eG.current,eF(W(a,i))}finally{eT(!1)}})()},800);return()=>window.clearTimeout(a)},[eN,c,e_,ek,e,eE,eh,i]),(0,s.useEffect)(()=>{if(!eh||ek||eN||eE)return;let e=!1,o=eG.current,a=async()=>{try{let i=(await (0,E.he)(eh)).at(-1);if(!e&&o===eG.current&&i&&i.revision>e_){eZ.reset(i.draft),G(i.draft),ej(i.revision),eI(i.styleProcessing),eS(i.createdAt),eg(U(i.draft));let e=i.draft.areas[0]?.id??i.draft.focusPoints[0]?.id;er(e?[e]:[]),ec([]),eB.current=null,eF(null)}}catch(o){e||eF(W(o,i))}};a();let t=window.setInterval(()=>void a(),3e3);return()=>{e=!0,window.clearInterval(t)}},[eN,e_,ek,eE,eh,i]);let oa=(0,a.jsxs)("label",{className:z().overallNoteEditor,children:[(0,a.jsx)("span",{children:i("composition.globalNote.title")}),(0,a.jsx)(C.A.TextArea,{name:"overallNote",autoFocus:!0,autoSize:{minRows:4,maxRows:8},value:c.overallNote,placeholder:i("composition.globalNote.placeholder"),"aria-label":i("composition.globalNote.ariaLabel"),disabled:!eQ,onChange:e=>e5(o=>({...o,overallNote:e.target.value}))})]}),ot=(0,a.jsxs)("div",{className:z().toolGroups,role:"group","aria-label":i("canvas.tools.label"),"data-composition-tool-groups":!0,children:[(0,a.jsx)("div",{className:z().toolGroup,"data-composition-tool-group":"focus",children:(0,a.jsx)(S.u,{className:z().capacityTool,icon:(0,a.jsx)(n.A,{"aria-hidden":"true"}),label:i("composition.toolNames.focus"),description:i("composition.elementCapacity.compact",{current:c.focusPoints.length,limit:3}),"aria-label":i("composition.elementCapacity.ariaLabel",{label:i("composition.toolNames.focus"),current:c.focusPoints.length,limit:3}),disabled:!eQ||c.focusPoints.length>=3,"aria-current":"focus"===J||void 0,textColor:"focus"===J?"color.action.primary":"color.text.primary",onClick:()=>e4("focus")})}),(0,a.jsx)("div",{className:z().toolGroup,"data-composition-tool-group":"direction",children:(0,a.jsx)(S.u,{className:z().capacityTool,icon:(0,a.jsx)(d,{rotate:-20,"aria-hidden":"true"}),label:i("composition.flow.label"),description:i("composition.elementCapacity.compact",{current:+!!c.directionLine,limit:1}),"aria-label":i("composition.elementCapacity.ariaLabel",{label:i("composition.flow.label"),current:+!!c.directionLine,limit:1}),disabled:!eQ||!!c.directionLine,"aria-current":"direction"===J||void 0,textColor:"direction"===J?"color.action.primary":"color.text.primary",onClick:()=>e4("direction")})}),(0,a.jsxs)("div",{className:z().toolGroup,"data-composition-tool-group":"shapes",children:[(0,a.jsx)(S.u,{icon:(0,a.jsx)("span",{className:`${z().shapeToolIcon} ${z().circleToolIcon}`}),label:i("composition.toolNames.circle"),disabled:!eQ,"aria-current":"circle"===J||void 0,textColor:"circle"===J?"color.action.primary":"color.text.primary",onClick:()=>e4("circle")}),(0,a.jsx)(S.u,{icon:(0,a.jsx)("span",{className:`${z().shapeToolIcon} ${z().triangleToolIcon}`}),label:i("composition.toolNames.triangle"),disabled:!eQ,"aria-current":"triangle"===J||void 0,textColor:"triangle"===J?"color.action.primary":"color.text.primary",onClick:()=>e4("triangle")}),(0,a.jsx)(S.u,{icon:(0,a.jsx)("span",{className:`${z().shapeToolIcon} ${z().quadrilateralToolIcon}`}),label:i("composition.toolNames.quadrilateral"),disabled:!eQ,"aria-current":"quadrilateral"===J||void 0,textColor:"quadrilateral"===J?"color.action.primary":"color.text.primary",onClick:()=>e4("quadrilateral")}),(0,a.jsx)(S.u,{icon:(0,a.jsx)(p.A,{"aria-hidden":"true"}),label:i("composition.toolNames.textRegion"),disabled:!eQ,"aria-current":"text"===J||void 0,textColor:"text"===J?"color.action.primary":"color.text.primary",onClick:()=>e4("text")}),(0,a.jsx)(S.u,{icon:(0,a.jsx)(u.A,{"aria-hidden":"true"}),label:i("canvas.imageNode.label"),collapsedLabel:i("canvas.imageNode.add"),disabled:!eQ,"aria-current":"image"===J||void 0,textColor:"image"===J?"color.action.primary":"color.text.primary",onClick:()=>e4("image")}),(0,a.jsx)(S.u,{icon:(0,a.jsx)(m.A,{"aria-hidden":"true"}),label:i("spatial.reference"),collapsedLabel:i("spatial.addReference"),disabled:!eQ,onClick:eY.openPicker})]}),(0,a.jsx)("div",{className:z().toolGroup,"data-composition-tool-group":"overall-note",children:(0,a.jsx)(I.A,{content:oa,trigger:"click",placement:"leftTop",open:eQ&&eP,onOpenChange:e=>eD(e&&eQ),children:(0,a.jsx)("span",{className:z().toolAction,children:(0,a.jsx)(S.u,{icon:(0,a.jsx)(g.A,{"aria-hidden":"true"}),label:i("notes.global.label"),disabled:!eQ})})})}),(0,a.jsxs)("div",{className:z().toolGroup,"data-composition-tool-group":"copy",children:[(0,a.jsx)("span",{className:z().toolGroupTitle,children:i("clipboard.group")}),(0,a.jsx)(S.u,{icon:(0,a.jsx)(h.A,{"aria-hidden":"true"}),label:i("clipboard.copyPrompt"),loading:eH,disabled:ek,onClick:()=>void oo()}),(0,a.jsx)(S.u,{icon:(0,a.jsx)(u.A,{"aria-hidden":"true"}),label:i("clipboard.copyPreview"),loading:e$,disabled:ek,onClick:()=>void oi()})]})]});return(0,a.jsx)(V.o,{currentSessionId:o,onCurrentSessionRename:ew,title:ev??i("composition.session.new"),rightPanelOpen:ee,onRightPanelOpenChange:eo,rightPanel:(0,a.jsxs)("div",{className:`${z().panel} ${ek?z().panelIsLoading:""}`,"data-canvas-editor":!0,children:[ek?(0,a.jsx)(j.G,{className:z().panelLoading,label:i("composition.session.loading"),rows:8,compact:!0}):ee?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(b.J3,{primaryItem:{label:i("composition.mode.label"),value:(0,a.jsx)(b.b2,{className:z().processingSemanticSelect,value:c.processingSemantic??void 0,options:e3,"aria-label":i("composition.mode.label"),placeholder:i("composition.mode.placeholder"),disabled:!eQ,onChange:e=>{("scene-composition"===e||"editorial-layout"===e)&&e5(o=>(0,R.ET)(o,e))}})},createdAt:eb?.createdAt??null,updatedAt:ey,nodeCount:c.areas.length+c.images.length+c.focusPoints.length+ +!!c.directionLine,agentCommand:eh?async()=>i("sessionDetails.agentCommand",{command:(0,$.m)(eh,window.location.origin)}):null,locale:r.resolvedLanguage??r.language,labels:{title:i("sessionDetails.title"),created:i("sessionDetails.created"),updated:i("sessionDetails.updated"),nodes:i("sessionDetails.nodes"),agent:i("sessionDetails.agent"),copyCommand:i("sessionDetails.copyCommand"),copying:i("sessionDetails.copying"),copied:i("clipboard.copied"),copyFailed:i("sessionDetails.copyFailed"),emptyValue:i("sessionDetails.emptyValue")}}),(0,a.jsx)(T.H,{controller:eK,category:"visual",processing:eC,disabled:ek||eE}),(0,a.jsxs)("section",{children:[(0,a.jsxs)("div",{className:z().sectionHeading,children:[(0,a.jsx)("h2",{children:i("canvas.tools.label")}),(0,a.jsx)("div",{className:z().sectionHeadingActions,children:(0,a.jsx)(N.A,{title:i("composition.clearCanvas"),children:(0,a.jsx)("span",{children:(0,a.jsx)(_.x,{type:"text",size:"small",icon:(0,a.jsx)(f.A,{"aria-hidden":"true"}),"aria-label":i("composition.clearCanvas"),title:i("composition.clearCanvasConfirmTitle"),description:i("composition.clearCanvasConfirmDescription"),confirmLabel:i("composition.clearCanvas"),cancelLabel:i("actions.cancel"),disabled:ek||eE||ed,onConfirm:function(){if(ed)return;let e=(0,R.mq)();eZ.record(e),K(null),eG.current+=1,eB.current=null,G(e),Y(!0),X(!1),ep(!1),ea(1),e7("fit-frame"),er([]),ec([]),eg({width:16,height:9}),eA(!0),eF(null)},"data-composition-clear-canvas-action":!0,children:null})})})})]}),ot]})]}):null,(0,a.jsxs)("section",{children:[(0,a.jsxs)("div",{className:z().sectionHeading,children:[(0,a.jsx)("h2",{children:i("composition.frameRatio")}),(0,a.jsx)("div",{className:z().sectionHeadingActions,children:(0,a.jsx)(y.J,{mode:"icon-only",size:"small",icon:Q?(0,a.jsx)(v.A,{}):(0,a.jsx)(w.A,{}),iconLabel:Q?i("composition.unlockFrame"):i("composition.lockFrame"),title:Q?i("composition.unlockFrame"):i("composition.lockFrame"),"aria-pressed":Q,backgroundColor:Q?"color.action.primaryActive":"none",textColor:Q?"color.text.onPrimary":"color.text.secondary",disabled:!eQ,onClick:()=>X(e=>!e)})})]}),(0,a.jsx)("div",{className:z().aspectRatioSelector,children:(0,a.jsx)(x.h,{ratio:em,disabled:!eQ||Q,onRatioChange:e=>{(0,R.J2)(e.width,e.height)&&(eg(e),e5(o=>(0,R.oA)(o,(0,R.BI)(e.width,e.height))))},title:i("composition.aspectRatioTitle"),widthLabel:i("dimensions.width"),heightLabel:i("dimensions.height"),"aria-label":i("composition.frameRatio")})})]}),(0,a.jsx)(b.Cf,{draft:c,selectedIds:el,onSelect:e9,showPlanning:Z,onShowPlanningChange:Y,locked:ed,onLockedChange:e=>{ep(e),ec([])},onDraftChange:e5,labels:eu,deleteLabel:i("actions.delete"),disabled:!eQ}),(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{children:i("composition.areaOverview")}),(0,a.jsxs)("dl",{className:z().metrics,children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:i("composition.occupied")}),(0,a.jsxs)("dd",{children:[Math.round(100*e1.occupiedArea),"%"]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:i("composition.negativeSpace")}),(0,a.jsxs)("dd",{children:[Math.round(100*e1.negativeSpace),"%"]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:i("composition.currentSelection")}),(0,a.jsx)("dd",{children:e2.join(", ")||i("composition.none")})]})]})]})]}),children:(0,a.jsxs)("main",{className:z().page,"data-canvas-editor":!0,children:[eM?(0,a.jsx)("div",{className:`${z().deliveryNotice} ${"success"===eM.type?z().deliveryNoticeSuccess:"warning"===eM.type?z().deliveryNoticeWarning:z().deliveryNoticeError}`,role:"status",children:eM.message}):null,eL?(0,a.jsx)("p",{className:z().serviceError,role:"alert",children:eL}):null,(0,a.jsxs)("div",{className:z().workspace,children:[eY.picker,(0,a.jsxs)("section",{className:z().stage,"aria-label":i("composition.workspace"),children:[(0,a.jsx)(b.zr,{...eZ,labels:{undo:i("canvasHistory.undo"),redo:i("canvasHistory.redo"),label:i("canvasHistory.label")}}),ek?(0,a.jsx)(j.G,{className:z().workspaceLoading,label:i("composition.session.loading"),rows:10}):(0,a.jsx)(b.x8,{className:z().workflow,interactionResetKey:eZ.restoreToken,draft:c,status:"waiting",activeView:"draft",onViewChange:()=>void 0,stateControls:(0,a.jsx)(b.SM,{items:eX.map(e=>({id:e.id,label:e.name??i("uiSketch.states.defaultName",{number:e.number})})),value:e0,labels:{switch:i("canvasStates.switch"),add:i("uiSketch.views.enableMotion"),rename:i("actions.rename"),name:i("uiSketch.states.name"),new:i("uiSketch.states.new"),delete:i("uiSketch.states.delete"),cancel:i("actions.cancel"),reorderHint:i("uiSketch.states.reorderHint"),actions:e=>i("uiSketch.states.actions",{name:e}),deleteTitle:e=>i("uiSketch.states.deleteTitle",{name:e})},onChange:e=>oe(o=>(0,R.KZ)(o,e)),onCreate:e=>{let o=crypto.randomUUID();oe(i=>(0,R.wG)(i,e,o))},onRename:(e,o)=>e5(i=>(0,R.uK)(i,e,o)),onReorder:e=>e5(o=>(0,R.yU)(o,e)),onDelete:e=>oe(o=>(0,R.PX)(o,e))}),showPlanning:Z,selectedPlanIds:el,planningLocked:ed,onPlanSelectionChange:e9,planningLabels:eu,frameLocked:Q,canvasZoom:ei,canvasViewportAction:et,onCanvasZoomChange:ea,canvasBackgroundPattern:"dots",showCanvasViewportControls:!ek,canvasViewportLabels:{zoomOut:i("composition.zoomOut"),zoomIn:i("composition.zoomIn"),currentZoom:i("composition.canvasZoom"),fitAll:i("composition.fitAll"),help:i("canvas.viewport.help"),interactionHelp:`${i("canvas.viewport.instructions")} ${i("composition.textRegion.cornerHelp")}`,sideActions:i("canvas.tools.label"),collapseSideActions:i("composition.collapseTools"),expandSideActions:i("composition.expandTools")},canvasLayerLabels:{bringToFront:i("canvasLayers.bringToFront"),bringForward:i("canvasLayers.bringForward"),sendBackward:i("canvasLayers.sendBackward"),sendToBack:i("canvasLayers.sendToBack")},directionControlLabels:[i("composition.flow.controlPoint",{number:1}),i("composition.flow.controlPoint",{number:2})],nodeEditorLabels:{title:i("canvasNodeEditor.title"),note:i("notes.element.label"),notePlaceholder:i("notes.element.nodePlaceholder"),shotScale:i("composition.depth.label"),shotScaleAuto:i("composition.depth.auto"),shotScaleForeground:i("composition.depth.foreground"),shotScaleMidground:i("composition.depth.midground"),shotScaleBackground:i("composition.depth.background"),deleteNode:i("actions.deleteNode"),confirmDeleteNode:i("confirmations.deleteNode"),cancelDelete:i("actions.keep"),shapeKind:i("canvasNodeEditor.shapeKind"),pointKind:i("canvasNodeEditor.pointKind"),lineKind:i("composition.flow.label"),textKind:i("composition.toolNames.textRegion"),imageKind:i("canvas.imageNode.label"),nodeDescription:i("canvas.node.nodeDescription"),originUser:i("canvas.node.originUser"),originAgent:i("canvas.node.originAgent"),originImport:i("canvas.node.originImport")},areaEditorLabels:{lightSource:i("composition.lightSource.toggle"),displayText:i("textContent.label"),cornerLabel:i("composition.textRegion.cornerLabel",{index:"{{index}}"}),displayTextPlaceholder:i("textContent.compositionPlaceholder"),visualWeight:i("visualWeight.label"),weightAuto:i("visualWeight.auto"),weightHigh:i("visualWeight.high"),weightMedium:i("visualWeight.medium"),weightLow:i("visualWeight.low"),weightDecorative:i("visualWeight.decorative")},imageEditorLabels:{content:i("canvas.imageEditor.content"),upload:i("canvas.imageEditor.upload"),download:i("canvas.imageEditor.download"),downloading:i("canvas.imageEditor.downloading"),downloadFailed:i("canvas.imageEditor.downloadFailed"),replace:i("canvas.imageEditor.replace"),uploading:i("canvas.imageEditor.uploading"),uploadFailed:i("canvas.imageEditor.uploadFailed"),fileTypes:i("canvas.imageEditor.fileTypes"),cropTitle:i("canvas.imageCrop.title"),cropLoadFailed:i("canvas.imageCrop.loadFailed"),svgSource:i("canvas.imageEditor.svgSource"),svgPaste:i("canvas.imageEditor.svgPaste"),svgApply:i("canvas.imageEditor.svgApply"),svgSaveFailed:i("canvas.imageEditor.svgSaveFailed"),svgCopy:i("canvas.imageEditor.svgCopy"),svgCopying:i("canvas.imageEditor.svgCopying"),svgCopyFailed:i("canvas.imageEditor.svgCopyFailed"),sourceLoading:i("canvas.imageEditor.sourceLoading"),sourceLoadFailed:i("canvas.imageEditor.sourceLoadFailed"),svgCopied:i("clipboard.copied"),cancel:i("actions.cancel"),retry:i("actions.retry")},resolveImageSource:eh?e=>(0,E.MZ)(eh,e):void 0,renderCameraReference:eY.renderImageContent,onImageUpload:e8,onReadImageFile:E.MT,canvasSideActions:ee?void 0:ot,canvasSideActionPanelWidth:180,canvasSideActionPanelDefaultCollapsed:!0,selectedIds:es,onDraftChange:e5,placementTool:J,onPlacementToolChange:K,onSelectionChange:e=>{er(e),ec([])},labels:{draftView:i("composition.views.draft"),refinedView:i("composition.views.refined"),referenceView:i("composition.views.reference"),viewSwitch:i("composition.views.switch"),draftCanvas:i("composition.views.draftCanvas"),refinedCanvas:i("composition.views.refinedCanvas"),referenceCanvas:i("composition.views.referenceCanvas"),agentDecision:i("composition.workflow.agentDecision"),appliedMethods:i("composition.workflow.appliedMethods"),protectionAudit:i("composition.workflow.protectionAudit"),maximumFocusShift:i("composition.workflow.maximumFocusShift"),maximumAreaShift:i("composition.workflow.maximumAreaShift"),maximumRotationShift:i("composition.workflow.maximumRotationShift"),objective:i("composition.refinement.objective"),observations:i("composition.refinement.observations"),uncertainties:i("composition.refinement.uncertainties"),preserve:i("composition.refinement.preserve"),tradeoffs:i("composition.refinement.tradeoffs"),relations:i("composition.refinement.relations"),retained:i("composition.refinement.retained"),target:i("composition.refinement.target"),before:i("composition.refinement.before"),after:i("composition.refinement.after"),error:i("composition.refinement.error"),unmeasurable:i("composition.refinement.unmeasurable"),framePlacement:i("composition.refinement.framePlacement"),sizeRatio:i("composition.refinement.sizeRatio"),mirrorSymmetry:i("composition.refinement.mirrorSymmetry"),focusFlow:i("composition.refinement.focusFlow"),focusAnchor:i("composition.refinement.focusAnchor"),axisRelation:i("composition.refinement.axisRelation"),rotationAlignment:i("composition.refinement.rotationAlignment"),blockAlignment:i("composition.refinement.blockAlignment"),spacingRhythm:i("composition.refinement.spacingRhythm")}})]})]})]})})}}},e=>{e.O(0,[661,423,336,979,55,460,746,20,635,653,678,130,166,347,158,358],()=>e(e.s=42532)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{20894:()=>{},57610:(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=57610)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{20894:()=>{},66999:(e,n,t)=>{"use strict";t.d(n,{YisiUiInspectorHost:()=>s});t(73365);t(98196),t(1521),t(27812);function s(){return null}},67363:(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))},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=67363)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{49:(e,a,s)=>{"use strict";s.r(a),s.d(a,{default:()=>b});var r=s(73365),n=s(29717),t=s(1521),c=s(8020),i=s(53130),o=s(11902),l=s(6915),d=s(14766),p=s(84092),u=s(29415),_=s(71051),h=s.n(_);let m=[{kind:"composition",Icon:o.A},{kind:"ui-sketch",Icon:l.A},{kind:"spatial",Icon:d.A}];function k({labels:e,pending:a,errorMessage:s,onCreate:n}){return(0,r.jsx)("main",{className:h().page,children:(0,r.jsxs)("div",{className:h().content,children:[(0,r.jsx)("div",{className:h().cards,children:m.map(({kind:s,Icon:t})=>(0,r.jsx)(u.J,{className:h().workspaceEntry,disabled:!!a,"aria-busy":a===s,loading:a===s,onClick:()=>n(s),children:(0,r.jsxs)("span",{className:h().cardBody,children:[(0,r.jsx)(t,{className:h().cardIcon,"aria-hidden":"true"}),(0,r.jsxs)("span",{className:h().cardLabel,children:[(0,r.jsx)(p.A,{"aria-hidden":"true"}),e[s]]})]})},s))}),s?(0,r.jsx)("p",{className:h().error,role:"alert",children:s}):null]})})}var g=s(60458);function b(){let e=(0,n.useRouter)(),{t:a}=(0,c.Bd)(),s=(0,t.useRef)(!1),[o,l]=(0,t.useState)(null),[d,p]=(0,t.useState)(null);async function u(r){if(!s.current){s.current=!0,l(r),p(null);try{let s="composition"===r?await (0,g.$M)(a("composition.session.untitled")):"ui-sketch"===r?await (0,g.vh)(a("uiSketch.session.untitled")):await (0,g.DZ)(a("spatial.untitled"));e.push(`/${r}?session=${encodeURIComponent(s.id)}`)}catch{s.current=!1,l(null),p(a("errors.operationFailed"))}}}return(0,r.jsx)(i.o,{title:a("app.title"),children:(0,r.jsx)(k,{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",cards:"page_cards__IHl_z",workspaceEntry:"page_workspaceEntry__BbjSl",cardBody:"page_cardBody__X5bf8",cardIcon:"page_cardIcon__syb4d",cardLabel:"page_cardLabel__pQNrY",error:"page_error__JBrsB"}},91177:(e,a,s)=>{Promise.resolve().then(s.bind(s,49))}},e=>{e.O(0,[661,423,336,944,460,746,20,635,653,678,130,347,158,358],()=>e(e.s=91177)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[665],{20818:(e,t,r)=>{Promise.resolve().then(r.bind(r,91464))},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)}}},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(362),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(362),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,423,336,460,746,20,635,653,678,130,347,158,358],()=>e(e.s=20818)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[613],{8944:(e,r,a)=>{Promise.resolve().then(a.bind(a,49046))},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(362),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)})})}}},e=>{e.O(0,[661,423,336,460,746,20,635,653,678,130,347,158,358],()=>e(e.s=8944)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[376],{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(362),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")})]})]})})}},59209:(e,a,t)=>{Promise.resolve().then(t.bind(t,19401))},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,423,336,979,782,460,746,20,635,653,678,130,166,347,158,358],()=>e(e.s=59209)),_N_E=e.O()}]);