@volter/model-editor 0.5.66 → 0.5.67

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 (200) hide show
  1. package/dist/.vite/manifest.json +1022 -1006
  2. package/dist/assets/AudioViewer-DVXaSSYC.js +1 -0
  3. package/dist/assets/{BVHLoader-xUHWsz84.js → BVHLoader-msuIvJVn.js} +1 -1
  4. package/dist/assets/ColladaLoader-BpvxwqkB.js +3 -0
  5. package/dist/assets/EntityModelDocument-BtlQZcoU.js +1 -0
  6. package/dist/assets/EnvironmentAssetDocument-BH3zT9rt.js +1 -0
  7. package/dist/assets/FBXLoader-CsdO937F.js +1 -0
  8. package/dist/assets/{GameplaySessionTimeline-HJLZUV4Q.js → GameplaySessionTimeline-Dko95kB7.js} +10 -10
  9. package/dist/assets/ImageViewer-CZ_RMER2.js +1 -0
  10. package/dist/assets/{InspectorCanvasPreview-CLDhscy0.js → InspectorCanvasPreview-BLecDHpc.js} +1 -1
  11. package/dist/assets/InspectorObjectPreview-CSIWwJQE.js +1 -0
  12. package/dist/assets/JsonAssetDocument-CGYSeJyl.js +2 -0
  13. package/dist/assets/{LineSegments2-C8H20K8w.js → LineSegments2-BKEsgiC8.js} +2 -2
  14. package/dist/assets/LiveModuleDocument-CIvS-SUT.js +2 -0
  15. package/dist/assets/LutAssetDocument-BA70uU3w.js +1 -0
  16. package/dist/assets/{MTLLoader-C-rA0fNF.js → MTLLoader-DNh2pFDc.js} +2 -2
  17. package/dist/assets/ModelAssetDocument-D0lNEhOg.js +1 -0
  18. package/dist/assets/NonThreeAuthoringBootstrap-C0pCfkJ4.js +2 -0
  19. package/dist/assets/OBJLoader-DPi99VIm.js +5 -0
  20. package/dist/assets/Object3DDocumentToolbar-PGYkZEwr.js +1 -0
  21. package/dist/assets/Object3DPreview-BROKXSTC.js +2 -0
  22. package/dist/assets/OnlineAssetDetail-lEHnhdUS.js +1 -0
  23. package/dist/assets/OrbitControls-smIenN60.js +1 -0
  24. package/dist/assets/PLYLoader-Cx9Yc9xe.js +2 -0
  25. package/dist/assets/QuarksAssetDocument-C_8eG4KG.js +2 -0
  26. package/dist/assets/RectAreaLightUniformsLib-Iam8rS8R.js +1 -0
  27. package/dist/assets/STLLoader-BaJkM-k1.js +1 -0
  28. package/dist/assets/{ShaderAssetDocument-qlLeb2S3.js → ShaderAssetDocument-Gdp7OCfv.js} +5 -5
  29. package/dist/assets/SourceAssetViewer-l72u0hOa.js +1 -0
  30. package/dist/assets/StageHost-CdzuP0NS.js +1179 -0
  31. package/dist/assets/TDSLoader-BskhMiUy.js +1 -0
  32. package/dist/assets/ToolObject3DPreview-CU5klD6l.js +1 -0
  33. package/dist/assets/Toolbar-DI0LGx25.js +1 -0
  34. package/dist/assets/TransientHint-myZtSdd6.js +1 -0
  35. package/dist/assets/VideoViewer-z0JPXPKa.js +1 -0
  36. package/dist/assets/ViewportShadingMenu-CVU2bU_3.js +1 -0
  37. package/dist/assets/animation-mixers.service-DSIsxWG5.js +1 -0
  38. package/dist/assets/animation-timeline.utility-BEgDQC04.js +1 -0
  39. package/dist/assets/asset-editor-persistence-BtRQI8t6.js +1 -0
  40. package/dist/assets/bitmap-label-Ct4k6ehY.js +1 -0
  41. package/dist/assets/{blender-emscripten-engine-CEsWgnR7.js → blender-emscripten-engine-BeWFjMn-.js} +1 -1
  42. package/dist/assets/blender-node-editor.document-C_kpsARB.js +1 -0
  43. package/dist/assets/{blender-properties-tab-C5tUuCSv.js → blender-properties-tab-B_XBg6S8.js} +3 -3
  44. package/dist/assets/blender-runtime-host-CYhl4T9S.js +4 -0
  45. package/dist/assets/{blender-runtime-skin-DMq0XAvO.js → blender-runtime-skin-Bk6uXECD.js} +98 -51
  46. package/dist/assets/blender-runtime.document-CAPDRCvN.js +12 -0
  47. package/dist/assets/blender-timeline.document-CcEymQyL.js +1 -0
  48. package/dist/assets/blender-uv-editor.document-DSPvSEuE.js +1 -0
  49. package/dist/assets/blender-version.status-CEu7vCi3.js +1 -0
  50. package/dist/assets/{blender-wali-engine-D3iKpzn9.js → blender-wali-engine-da698rDf.js} +1 -1
  51. package/dist/assets/blender.command-BCb_c9lw.js +1 -0
  52. package/dist/assets/blender.keymap-_rF_vRX8.js +1 -0
  53. package/dist/assets/{blender.status-ujwGU6dU.js → blender.status-DrasQhJV.js} +1 -1
  54. package/dist/assets/{blender.style-CxfbTFcE.js → blender.style-DaIh9SiA.js} +1 -1
  55. package/dist/assets/{client-DNXj_opT.js → client-mkWk8S65.js} +1 -1
  56. package/dist/assets/content-bounds-_QWiKD5_.js +85 -0
  57. package/dist/assets/{hosted-asset-materialization-BXM49Qkc.js → hosted-asset-materialization-hUS3IhTD.js} +2 -2
  58. package/dist/assets/index-0Lm0Nf1M.css +1 -0
  59. package/dist/assets/{index-CJbYy-CF.js → index-7vd2obXq.js} +2 -2
  60. package/dist/assets/{index-DgapqSPi.js → index-BRLA7zdc.js} +1 -1
  61. package/dist/assets/{index-BtfYaG4D.js → index-CQG6JOSy.js} +18 -18
  62. package/dist/assets/{index-CanA16PU.js → index-CnvSS9lU.js} +1 -1
  63. package/dist/assets/{index-Bge9JUr6.js → index-DYNMP0kE.js} +1 -1
  64. package/dist/assets/index-Dm_h-T4x.js +1406 -0
  65. package/dist/assets/{index-gHZae-lw.js → index-Dz8qGBZc.js} +1 -1
  66. package/dist/assets/{index-BncK9THk.js → index-Fv4R0cYr.js} +1 -1
  67. package/dist/assets/{index-IEjydI9d.js → index-f-MQ14bP.js} +1 -1
  68. package/dist/assets/{index-D2LwEE0L.js → index-jib6KJY8.js} +6 -6
  69. package/dist/assets/{index-DUqP1RMl.js → index-ux8XhRyW.js} +1 -1
  70. package/dist/assets/{jsx-runtime-DPjLkJKQ.js → jsx-runtime-CAUTK36e.js} +1 -1
  71. package/dist/assets/layered-pick-CT4HlEpW.js +1 -0
  72. package/dist/assets/live-mixers-B-bwLZ7c.js +1 -0
  73. package/dist/assets/model-inspection-DDZE59vp.js +1 -0
  74. package/dist/assets/models.finder-Caf-3Yix.js +1 -0
  75. package/dist/assets/product-DbFrUS6F.js +1 -0
  76. package/dist/assets/properties-bone-constraints.inspector-DB3Rc_Hf.js +1 -0
  77. package/dist/assets/properties-bone.inspector-B7f7H_Co.js +1 -0
  78. package/dist/assets/properties-collection.inspector-JCtV3h3Y.js +1 -0
  79. package/dist/assets/properties-constraints.inspector-Cs8MwS-1.js +1 -0
  80. package/dist/assets/properties-data.inspector-DKGiHu8O.js +1 -0
  81. package/dist/assets/properties-material.inspector-Dc18RI13.js +1 -0
  82. package/dist/assets/properties-modifiers.inspector-DvGvXq2v.js +1 -0
  83. package/dist/assets/properties-object.inspector-Bl9nrytP.js +1 -0
  84. package/dist/assets/properties-output.inspector-B6QsU94n.js +1 -0
  85. package/dist/assets/properties-particles.inspector-B1dMnZSA.js +1 -0
  86. package/dist/assets/properties-physics.inspector-BwfNykfW.js +1 -0
  87. package/dist/assets/properties-render.inspector-KrL2EiTH.js +1 -0
  88. package/dist/assets/properties-scene.inspector-CewQnyRt.js +1 -0
  89. package/dist/assets/properties-texture.inspector-BITMzY-f.js +1 -0
  90. package/dist/assets/properties-view-layer.inspector-BpkDbmcb.js +1 -0
  91. package/dist/assets/properties-world.inspector-DLRH45Oj.js +1 -0
  92. package/dist/assets/{react-18-DyywM-Z2.js → react-18-D335xReo.js} +1 -1
  93. package/dist/assets/{react-story-board-B9V-j_Y5.js → react-story-board-CkaP4mEG.js} +1 -1
  94. package/dist/assets/{session-CsR0lApe.js → session-CTXsU1lK.js} +176 -1
  95. package/dist/assets/{spark.module-gG1EsWx8.js → spark.module-DMQ9J7rT.js} +11 -11
  96. package/dist/assets/stage-keyboard-BY7u9_MB.js +1 -0
  97. package/dist/assets/stage-overlay-set-DRFcVd27.js +1 -0
  98. package/dist/assets/stage-presence-markers-D2IpuOAY.js +1 -0
  99. package/dist/assets/stage-transform-tools-BGcIULoe.js +1 -0
  100. package/dist/assets/story-capture-RSWY8I8h.js +1 -0
  101. package/dist/assets/three-integration.service-0EyPpd5f.js +4 -0
  102. package/dist/assets/{three.module-ZILb6uB7.js → three.module-CrYDk-Xr.js} +1 -1
  103. package/dist/assets/transform-mode-request-Cz6fzydi.js +1 -0
  104. package/dist/assets/transport-strip-Co-ZDkf-.js +1 -0
  105. package/dist/assets/{vgai-shared-fontawesome-CFSkqz69.js → vgai-shared-fontawesome-2ZSGa7vM.js} +1 -1
  106. package/dist/assets/vgai-shared-jsx-dev-runtime-hkPLeIJV.js +1 -0
  107. package/dist/assets/vgai-shared-jsx-runtime-CUvvjEqj.js +1 -0
  108. package/dist/assets/{vgai-shared-react-dom-client-S0ozfl6_.js → vgai-shared-react-dom-client-CS681GK2.js} +1 -1
  109. package/dist/assets/{vgai-shared-three-DzfWDqlp.js → vgai-shared-three-CLJ0K3jQ.js} +1 -1
  110. package/dist/assets/viewport-door-BdL0u5rd.js +1 -0
  111. package/dist/assets/viewport-editor-controls-BYaAZ_Ku.js +1 -0
  112. package/dist/assets/viewport-surface-status-yS6CrXH7.js +24 -0
  113. package/dist/assets/{worker-B7zhIsFh.js → worker-CC9Ug5Ei.js} +1 -1
  114. package/dist/assets/world-documents-B5IWN-ng.js +3 -0
  115. package/dist/vgai-shared-react.json +4 -4
  116. package/dist/vgai-shared-three.json +1 -1
  117. package/dist-node/cli.js +248 -209
  118. package/dist-node/create.js +77 -77
  119. package/package.json +10 -10
  120. package/src/index.ts +1 -0
  121. package/dist/assets/AudioViewer-CRWsJVYN.js +0 -1
  122. package/dist/assets/ColladaLoader-Ccy_gHsu.js +0 -3
  123. package/dist/assets/EntityModelDocument-Dal8YnLK.js +0 -1
  124. package/dist/assets/EnvironmentAssetDocument-DFOFYX5v.js +0 -1
  125. package/dist/assets/FBXLoader-Dh0pOBW2.js +0 -1
  126. package/dist/assets/ImageViewer-BzqBpqL-.js +0 -1
  127. package/dist/assets/InspectorObjectPreview-BUZEp4xS.js +0 -1
  128. package/dist/assets/JsonAssetDocument-DCkqRS0N.js +0 -2
  129. package/dist/assets/LiveModuleDocument-CuOBVz3A.js +0 -2
  130. package/dist/assets/LutAssetDocument-IyEir1rq.js +0 -1
  131. package/dist/assets/ModelAssetDocument-DNStNyCc.js +0 -1
  132. package/dist/assets/NonThreeAuthoringBootstrap-BE15Wpmw.js +0 -2
  133. package/dist/assets/OBJLoader-CopWRneC.js +0 -5
  134. package/dist/assets/Object3DDocumentToolbar-5Dv_8caG.js +0 -1
  135. package/dist/assets/Object3DPreview-C09u9uQZ.js +0 -2
  136. package/dist/assets/OnlineAssetDetail-DOPUI1iu.js +0 -1
  137. package/dist/assets/OrbitControls-DrFzvAAB.js +0 -1
  138. package/dist/assets/PLYLoader-D_esTZ2f.js +0 -2
  139. package/dist/assets/QuarksAssetDocument-BbSJ970L.js +0 -2
  140. package/dist/assets/RectAreaLightUniformsLib-u1ciScuw.js +0 -1
  141. package/dist/assets/STLLoader-Cl5I0sAi.js +0 -1
  142. package/dist/assets/SourceAssetViewer-DwhuqbA4.js +0 -1
  143. package/dist/assets/StageHost-D-o8MsFS.js +0 -1122
  144. package/dist/assets/TDSLoader-KKBg8ef1.js +0 -1
  145. package/dist/assets/ToolObject3DPreview-ILbch3kN.js +0 -1
  146. package/dist/assets/Toolbar-DYJjJKTt.js +0 -1
  147. package/dist/assets/TransientHint-D94hsJSR.js +0 -1
  148. package/dist/assets/VideoViewer-Bx3FPbgE.js +0 -1
  149. package/dist/assets/ViewportShadingMenu-B3N6hSdN.js +0 -1
  150. package/dist/assets/animation-mixers.service-N9HxGOMf.js +0 -1
  151. package/dist/assets/asset-editor-persistence-DGD05u26.js +0 -1
  152. package/dist/assets/blender-node-editor.document-BT2M622g.js +0 -1
  153. package/dist/assets/blender-runtime-host-4ufXy47O.js +0 -4
  154. package/dist/assets/blender-runtime.document-DeFQQsF6.js +0 -8
  155. package/dist/assets/blender-timeline.document-BnlSdxy0.js +0 -1
  156. package/dist/assets/blender-uv-editor.document-UC-XeNn0.js +0 -1
  157. package/dist/assets/blender-version.status-BZP39oH7.js +0 -1
  158. package/dist/assets/blender.command-IGP5wuda.js +0 -1
  159. package/dist/assets/blender.keymap-GAQgeklK.js +0 -1
  160. package/dist/assets/browserAll-2r3AVaAO.js +0 -14
  161. package/dist/assets/canvas-preview-frames-CO60PDM7.js +0 -5
  162. package/dist/assets/index-B4bmKkgY.css +0 -1
  163. package/dist/assets/index-cpXNKgvz.js +0 -1498
  164. package/dist/assets/live-mixers-BRkRHd6g.js +0 -1
  165. package/dist/assets/material-preview.view-DqNcpd_b.js +0 -1
  166. package/dist/assets/model-inspection-JC6gbV8Q.js +0 -1
  167. package/dist/assets/models.finder-BplPGS4I.js +0 -1
  168. package/dist/assets/product-CfZaqLpw.js +0 -1
  169. package/dist/assets/properties-bone-constraints.inspector-Di8kNtAi.js +0 -1
  170. package/dist/assets/properties-bone.inspector-CqAIKNsE.js +0 -1
  171. package/dist/assets/properties-collection.inspector-DpHC_fXW.js +0 -1
  172. package/dist/assets/properties-constraints.inspector-C7G7NOZU.js +0 -1
  173. package/dist/assets/properties-data.inspector-D1sUUst6.js +0 -1
  174. package/dist/assets/properties-material.inspector-BUSjc8tl.js +0 -1
  175. package/dist/assets/properties-modifiers.inspector-Sq9bcfFz.js +0 -1
  176. package/dist/assets/properties-object.inspector-BzqiU_29.js +0 -1
  177. package/dist/assets/properties-output.inspector-BWpFqvfT.js +0 -1
  178. package/dist/assets/properties-particles.inspector-DO1KoaTz.js +0 -1
  179. package/dist/assets/properties-physics.inspector-BgkrTNSA.js +0 -1
  180. package/dist/assets/properties-render.inspector-BU5NOVoQ.js +0 -1
  181. package/dist/assets/properties-scene.inspector-DbMErJ48.js +0 -1
  182. package/dist/assets/properties-texture.inspector-toPpEwqp.js +0 -1
  183. package/dist/assets/properties-view-layer.inspector-COpx9iEK.js +0 -1
  184. package/dist/assets/properties-world.inspector-CxU0DrYX.js +0 -1
  185. package/dist/assets/react-three-rapier.esm-CN6t4A7c.js +0 -1
  186. package/dist/assets/stage-keyboard-CzlqI0nh.js +0 -1
  187. package/dist/assets/stage-overlay-set-DQeskS16.js +0 -1
  188. package/dist/assets/stage-presence-markers-S1lMOwIa.js +0 -1
  189. package/dist/assets/stage-transform-tools-Cqtv-ZQ1.js +0 -1
  190. package/dist/assets/story-capture-DmIUyEQn.js +0 -1
  191. package/dist/assets/story-mount-turn-2IYGgHob.js +0 -1
  192. package/dist/assets/story-pixi-preview-aw8xQhvF.js +0 -1
  193. package/dist/assets/story-three-preview-DDmMjlI8.js +0 -37
  194. package/dist/assets/transform-mode-request-DSPwviXs.js +0 -1
  195. package/dist/assets/vgai-shared-jsx-dev-runtime-DFDKL7fx.js +0 -1
  196. package/dist/assets/vgai-shared-jsx-runtime-DIqBpTut.js +0 -1
  197. package/dist/assets/viewport-pick-context-DkawXbEi.js +0 -1
  198. package/dist/assets/viewport-surface-status-DuININWe.js +0 -20
  199. package/dist/assets/webworkerAll-CqQUotBj.js +0 -101
  200. package/dist/assets/world-documents-DkBqH8VU.js +0 -3
@@ -0,0 +1 @@
1
+ import{r as v}from"./index-DaQZGF7d.js";import{eU as V,R as x,a8 as S,T as P,y as m,e as T,b7 as y,eV as L,eF as A,eW as C}from"./index-Dm_h-T4x.js";import{G as k}from"./three-integration.service-0EyPpd5f.js";import{r as n}from"./transform-mode-request-Cz6fzydi.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-CAUTK36e.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-jib6KJY8.js";import"./client-mkWk8S65.js";import"./content-bounds-_QWiKD5_.js";import"./three.module-CrYDk-Xr.js";import"./layered-pick-CT4HlEpW.js";import"./viewport-door-BdL0u5rd.js";import"./bitmap-label-Ct4k6ehY.js";let O=!0;const c=new Set;function j(){for(const e of c)e()}function M(e){return c.add(e),()=>c.delete(e)}function u(){return{preview:null,previewPinned:!1,view:null,guidesVisible:O}}function E(){const e=u();return e.view?.subject??e.preview}function R(){const e=u(),t=e.preview;t&&(e.previewPinned||t.id,j())}function z(){}function D(){const e=u();if(e.view)return[{id:"camera.exitView",label:"Exit Camera View",execute:z}];const t=E();return t?[{id:"camera.viewThrough",label:`View Through ${t.name}`,execute:()=>void 0},...t.canAuthorPose?[{id:"camera.pilot",label:`Pilot ${t.name}`,execute:()=>void 0},{id:"camera.alignToView",label:`Align ${t.name} to Current View`,execute:()=>void 0}]:[],{id:"camera.pinPreview",label:e.previewPinned?"Unpin Camera Preview":"Pin Camera Preview",execute:R}]:[]}function F(){const e=m();return e?k(e):null}function r(e,t){const o=F();o?o.setMode(t):e.setShadingMode(t)}function H(e){const t=[{id:"mode.select",label:"Select Tool (no gizmo)",shortcut:"transform.select",execute:()=>n(e.shell,"select")},{id:"mode.combined",label:"Transform Mode (all handles)",shortcut:"transform.combined",execute:()=>n(e.shell,"combined")},{id:"mode.translate",label:"Translate Mode",shortcut:"transform.translate",execute:()=>n(e.shell,"translate")},{id:"mode.rotate",label:"Rotate Mode",shortcut:"transform.rotate",execute:()=>n(e.shell,"rotate")},{id:"mode.scale",label:"Scale Mode",shortcut:"transform.scale",execute:()=>n(e.shell,"scale")},{id:"mode.world",label:"World Space",execute:()=>e.shell.setTransformSpace("world")},{id:"mode.local",label:"Local Space",execute:()=>e.shell.setTransformSpace("local")},{id:"toggle.grid",label:"Toggle Grid",execute:()=>{const l=m();l&&x(l)&&S(l,!P(l))}},{id:"toggle.helpers",label:"Toggle Helpers",execute:()=>e.shell.toggleHelpers()},{id:"toggle.stats",label:"Toggle Stats Overlay",execute:()=>e.toggleStats()},{id:"toggle.snap",label:"Toggle Snap",shortcut:"viewport.toggleSnap",execute:()=>e.shell.toggleSnap()},{id:"toggle.surface-snap",label:"Toggle Surface Snap",execute:()=>e.shell.toggleSnapToSurface()},{id:"shading.solid",label:"Material Shading",execute:()=>r(e,"solid")},{id:"shading.clay",label:"Solid Shading",execute:()=>r(e,"clay")},{id:"shading.wireframe",label:"Wireframe Shading",execute:()=>r(e,"wireframe")},{id:"shading.unlit",label:"Unlit Shading",execute:()=>r(e,"unlit")},{id:"shading.normals",label:"Normal Shading",execute:()=>r(e,"normals")},{id:"shading.overdraw",label:"Overdraw Shading",execute:()=>r(e,"overdraw")},{id:"view.top",label:"Top View",shortcut:"view.top",execute:()=>e.shell.setViewPreset("top")},{id:"view.front",label:"Front View",shortcut:"view.front",execute:()=>e.shell.setViewPreset("front")},{id:"view.right",label:"Right View",shortcut:"view.right",execute:()=>e.shell.setViewPreset("right")},{id:"view.bottom",label:"Bottom View",shortcut:"view.bottom",execute:()=>e.shell.setViewPreset("bottom")},{id:"view.back",label:"Back View",shortcut:"view.back",execute:()=>e.shell.setViewPreset("back")},{id:"view.left",label:"Left View",shortcut:"view.left",execute:()=>e.shell.setViewPreset("left")},{id:"view.orbitLeft",label:"Orbit Left",shortcut:"view.orbitLeft",execute:()=>e.shell.stepView("orbit-left")},{id:"view.orbitRight",label:"Orbit Right",shortcut:"view.orbitRight",execute:()=>e.shell.stepView("orbit-right")},{id:"view.orbitUp",label:"Orbit Up",shortcut:"view.orbitUp",execute:()=>e.shell.stepView("orbit-up")},{id:"view.orbitDown",label:"Orbit Down",shortcut:"view.orbitDown",execute:()=>e.shell.stepView("orbit-down")},{id:"view.opposite",label:"Opposite View",shortcut:"view.opposite",execute:()=>e.shell.stepView("opposite")},{id:"view.rollLeft",label:"Roll Left",shortcut:"view.rollLeft",execute:()=>e.shell.stepView("roll-left")},{id:"view.rollRight",label:"Roll Right",shortcut:"view.rollRight",execute:()=>e.shell.stepView("roll-right")},{id:"view.all",label:"Frame All",shortcut:"view.all",execute:()=>e.shell.frameAll()},{id:"view.zoomIn",label:"Zoom In",shortcut:"view.zoomIn",execute:()=>e.shell.zoomView(1)},{id:"view.zoomOut",label:"Zoom Out",shortcut:"view.zoomOut",execute:()=>e.shell.zoomView(-1)},{id:"view.perspective",label:"Perspective View",shortcut:"view.perspective",execute:()=>e.shell.setViewPreset("perspective")},{id:"view.projection",label:"Perspective/Orthographic",shortcut:"view.projection",execute:()=>e.shell.toggleProjection()},{id:"view.camera",label:"Camera View",shortcut:"view.camera",execute:()=>e.shell.toggleCameraView()},{id:"focus.selected",label:"Focus Selected",shortcut:"viewport.frameSelection",execute:()=>e.shell.focusOnSelection()}];return V({actions:()=>[...t,...D()],subscribe:M})}function $(e,t,o){const{keyboard:l}=T(),s=i=>()=>{t.isFlying||n(e.shell,i)},b=l.bindActions([{id:"transform.select",scope:"stage",run:s("select")},{id:"transform.combined",scope:"stage",run:s("combined")},{id:"transform.translate",scope:"stage",run:s("translate")},{id:"transform.rotate",scope:"stage",run:s("rotate")},{id:"transform.scale",scope:"stage",run:s("scale")},{id:"viewport.toggleSnap",scope:"stage",run:()=>{e.shell.toggleSnap();const{translate:i,rotate:a,scale:f}=e.shell.snapValues,g=`${l.shortcutFor("viewport.toggleSnap")??""} toggles; hold Ctrl while dragging to snap once`;y(e.shell.snapEnabled?`Snap on — ${i} units, ${a}°, ×${f} (${g})`:`Snap off (${g})`)}},{id:"viewport.frameSelection",scope:"stage",run:()=>e.shell.focusOnSelection()},{id:"viewport.cyclePivot",scope:"stage",run:()=>{const i=["active-element","median-point","individual-origins"],a=i.indexOf(e.shell.pivotMode);e.shell.setPivotMode(i[(a+1)%i.length])}},{id:"view.top",scope:"stage",run:()=>e.shell.setViewPreset("top")},{id:"view.front",scope:"stage",run:()=>e.shell.setViewPreset("front")},{id:"view.right",scope:"stage",run:()=>e.shell.setViewPreset("right")},{id:"view.bottom",scope:"stage",run:()=>e.shell.setViewPreset("bottom")},{id:"view.back",scope:"stage",run:()=>e.shell.setViewPreset("back")},{id:"view.left",scope:"stage",run:()=>e.shell.setViewPreset("left")},{id:"view.orbitLeft",scope:"stage",run:()=>e.shell.stepView("orbit-left")},{id:"view.orbitRight",scope:"stage",run:()=>e.shell.stepView("orbit-right")},{id:"view.orbitUp",scope:"stage",run:()=>e.shell.stepView("orbit-up")},{id:"view.orbitDown",scope:"stage",run:()=>e.shell.stepView("orbit-down")},{id:"view.opposite",scope:"stage",run:()=>e.shell.stepView("opposite")},{id:"view.rollLeft",scope:"stage",run:()=>e.shell.stepView("roll-left")},{id:"view.rollRight",scope:"stage",run:()=>e.shell.stepView("roll-right")},{id:"view.all",scope:"stage",run:()=>e.shell.frameAll()},{id:"view.zoomIn",scope:"stage",run:()=>e.shell.zoomView(1)},{id:"view.zoomOut",scope:"stage",run:()=>e.shell.zoomView(-1)},{id:"view.perspective",scope:"stage",run:()=>e.shell.setViewPreset("perspective")},{id:"view.projection",scope:"stage",run:()=>e.shell.toggleProjection()},{id:"view.camera",scope:"stage",run:()=>e.shell.toggleCameraView()},{id:"viewport.snapToFloor",scope:"stage",run:()=>t.snapSelectionToFloor()}]),d=()=>A("viewport");o.addEventListener("pointerdown",d),L();const p=i=>l.chordsFor("viewport.vertexSnapHold").some(a=>a.key===i.key.toLowerCase()),w=i=>{if(p(i)&&!i.metaKey&&!i.ctrlKey&&!i.repeat){if(C()!=="viewport"||i.target instanceof HTMLInputElement||i.target instanceof HTMLTextAreaElement)return;e.setVertexSnapActive(!0),t.activateVertexSnap()}},h=i=>{p(i)&&!i.metaKey&&!i.ctrlKey&&(e.setVertexSnapActive(!1),t.deactivateVertexSnap())};return window.addEventListener("keydown",w),window.addEventListener("keyup",h),()=>{b(),o.removeEventListener("pointerdown",d),window.removeEventListener("keydown",w),window.removeEventListener("keyup",h)}}function ie({stage:e}){return v.useEffect(()=>$(e.store,e.viewport,e.canvas),[e.store,e.viewport,e.canvas]),v.useEffect(()=>H(e.store),[e.store]),null}export{ie as StageKeyboardBinding};
@@ -0,0 +1 @@
1
+ import{j as e}from"./jsx-runtime-CAUTK36e.js";import{r as t}from"./index-DaQZGF7d.js";import{f1 as j,f2 as D,c5 as R,ak as S,al as v,f3 as A,cl as E,f4 as k,f5 as T,f6 as V,I as L,s as C,c9 as b,T as N,c8 as H,f7 as I,dt as $,b$ as F,am as z,an as M,du as U,a8 as G,f8 as W,f9 as _,fa as q,fb as J,b_ as K,fc as Z,v as Q}from"./index-Dm_h-T4x.js";import{D as B,F as O,G as X}from"./three-integration.service-0EyPpd5f.js";import{r as Y}from"./index-CtzuWnCS.js";import"./index-jib6KJY8.js";import{T as ee}from"./TransientHint-myZtSdd6.js";import{d as se,b as te}from"./ViewportShadingMenu-CVU2bU_3.js";import{a as w,s as ae}from"./StageHost-CdzuP0NS.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./client-mkWk8S65.js";import"./index-CinJrH5C.js";import"./content-bounds-_QWiKD5_.js";import"./three.module-CrYDk-Xr.js";import"./layered-pick-CT4HlEpW.js";import"./viewport-door-BdL0u5rd.js";import"./bitmap-label-Ct4k6ehY.js";import"./viewport-surface-status-yS6CrXH7.js";import"./live-mixers-B-bwLZ7c.js";import"./model-inspection-DDZE59vp.js";import"./clip-planes-CnAI6DZn.js";import"./OrbitControls-smIenN60.js";import"./LineSegments2-BKEsgiC8.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./transport-strip-Co-ZDkf-.js";function h(s){return s.toFixed(2)}function oe(){const s=j(),[a,o]=t.useState({x:0,y:0,z:0}),[r,i]=t.useState({x:0,y:0,z:0}),n=t.useRef(0);return t.useEffect(()=>{function m(){const u=s.cameraPosition,d=s.cameraTarget;o(l=>l.x!==u.x||l.y!==u.y||l.z!==u.z?{x:u.x,y:u.y,z:u.z}:l),i(l=>l.x!==d.x||l.y!==d.y||l.z!==d.z?{x:d.x,y:d.y,z:d.z}:l),n.current=requestAnimationFrame(m)}return n.current=requestAnimationFrame(m),()=>cancelAnimationFrame(n.current)},[s]),e.jsx(D,{variant:"overlay",border:!0,className:"vgai-camera-info vgai-chrome-island vgai-glass-island","data-island-scale":"compact",children:e.jsxs(R,{gap:8,align:"center",style:{whiteSpace:"nowrap"},children:[e.jsxs(S,{variant:"code",children:["Pos ",h(a.x)," ",h(a.y)," ",h(a.z)]}),e.jsxs(S,{variant:"code",children:["Target ",h(r.x)," ",h(r.y)," ",h(r.z)]})]})})}function re(){const s=j(),[,a]=t.useState(0),o=A();return t.useEffect(()=>{const r=setInterval(()=>a(i=>i+1),200);return()=>clearInterval(r)},[]),e.jsxs("div",{className:"vgai-hud-overlay vgai-chrome-island vgai-glass-island","data-island-scale":"compact","data-hud-border":"strong",style:{position:"absolute",top:"var(--vgai-viewport-overlay-hud-top, 48px)",right:8,padding:"6px 10px",pointerEvents:"auto",fontSize:"var(--vgai-font-base)",color:v.content.primary,fontFamily:v.typography.mono,lineHeight:"16px"},children:[e.jsxs("div",{children:["FPS: ",s.fps.toFixed(0)]}),e.jsxs("div",{children:["Draw: ",s.drawCalls]}),e.jsxs("div",{children:["Tris: ",s.triangles.toLocaleString()]}),e.jsxs("div",{children:["Frame: ",s.frameTime.toFixed(1),"ms"]}),o!==null&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:["Heap: ",o.heapUsedMB===null?"n/a":`${o.heapUsedMB.toFixed(0)}MB`,o.heapLimitMB===null?"":` / ${o.heapLimitMB.toFixed(0)}MB`]}),e.jsxs("div",{children:["Mount epochs: ",o.mountEpochs]}),e.jsxs("div",{children:["Canvas: ",o.canvasMB.toFixed(1),"MB ×",o.canvases]}),o.textures!==void 0&&e.jsxs("div",{children:["GPU: ",o.textures," tex, ",o.geometries??0," geo",o.programs===void 0?"":`, ${o.programs} prog`]})]})]})}function ne({store:s,documentId:a}){t.useSyncExternalStore(s.shell.subscribe,s.shell.getSnapshot),t.useSyncExternalStore(E,k),t.useSyncExternalStore(T,V),t.useSyncExternalStore(B,O);const{adapter:o}=L(s.shell),r=X(a);t.useSyncExternalStore(r?.subscribe??le,r?.getSnapshot??ce),t.useSyncExternalStore(C,b);const i=N(a),n=H(),m=I(),u=n.viewName==="bar"||n.viewName==="menu",[d,l]=t.useState(null),y=()=>d?.closest(".vgai-dock-document-content")?.querySelector(':scope > .vgai-stage-bar [data-stage-bar-slot="display"]')??null,g=t.useId(),x=y(),p=x&&(x.dataset.owner===void 0||x.dataset.owner===g)?x:null,[,P]=t.useReducer(c=>c+1,0);t.useEffect(()=>{const c=y();c&&c.dataset.owner===void 0&&(c.dataset.owner=g),(c&&c.dataset.owner===g?c:null)!==p&&P()}),t.useEffect(()=>()=>{p?.dataset.owner===g&&delete p.dataset.owner},[p,g]);const f=e.jsxs($,{label:"Viewport display",className:"vgai-viewport-toolbar vgai-viewport-toolbar-right vgai-stage-display",children:[n.viewName==="bar"&&r?e.jsx(w,{shell:s.shell,documentId:a,label:ae(r.viewport,r.projection(),"long")}):null,e.jsx(F,{text:`Grid: ${i?"On":"Off"}`,children:e.jsx(z,{"aria-label":"Toggle grid","aria-pressed":i,size:"comfortable",onClick:()=>G(a,!i),children:e.jsx(M,{icon:U,size:"md"})})}),e.jsx(de,{store:s,word:m.helpers}),e.jsx(se,{mode:ie(r)??s.shadingMode,onChange:c=>r?r.setMode(c):s.setShadingMode(c),words:m.shading}),u?null:e.jsx(w,{shell:s.shell,documentId:a}),e.jsx(ue,{adapter:o,store:s})]});return e.jsxs(e.Fragment,{children:[e.jsx("span",{ref:l,hidden:!0}),p?Y.createPortal(f,p):f]})}function ie(s){return s?.presentation().mode??null}const le=()=>()=>{},ce=()=>0,ue=t.memo(function({adapter:a,store:o}){const[,r]=t.useReducer(n=>n+1,0);t.useEffect(()=>a.subscribe?.(r),[a]);const i=t.useMemo(()=>W(a),[a,o.shell.contentVersion]);return i===0?null:e.jsx(F,{text:`Open Light Explorer · ${i} ${i===1?"light":"lights"}`,children:e.jsx(z,{"aria-label":"Open Light Explorer",size:"comfortable",onClick:()=>q(J.lightExplorer.id),children:e.jsx(M,{icon:_,size:"md"})})})});function de({store:s,word:a}){const o=[{key:"bounds",label:"Bounds"},{key:"lights",label:"Lights"},{key:"cameras",label:"Cameras"},{key:"colliders",label:"Colliders"},{key:"joints",label:"Joints"},{key:"particles",label:"Particle Emitters"},{key:"lod",label:"LOD"},{key:"audio",label:"Audio"},{key:"splines",label:"Splines"},{key:"navmesh",label:"NavMesh"},{key:"constraints",label:"Constraints"},{key:"reflectionProbes",label:"Reflection Probes"},{key:"triggerVolumes",label:"Trigger Volumes"},{key:"skeletons",label:"Skeletons"},{key:"weights",label:"Weights"},{key:"cursor",label:"3D Cursor"},{key:"empties",label:"Empties"}];return e.jsx(te,{label:"Helpers",...a!==void 0?{word:a}:{},master:{enabled:s.shell.showHelpers,onToggle:()=>s.shell.toggleHelpers()},choices:o.map(r=>({id:r.key,label:r.label,enabled:s.shell.helperVisibility[r.key],onToggle:()=>s.shell.toggleHelperType(r.key)}))})}function He({store:s,documentId:a,stage:o,active:r,chrome:i}){const n=o?.store??s;t.useSyncExternalStore(s.shell.subscribe,s.shell.getShellSnapshot??s.shell.getSnapshot),t.useSyncExternalStore(n.shell.subscribe,n.shell.getShellSnapshot??n.shell.getSnapshot),t.useSyncExternalStore(T,V),t.useSyncExternalStore(B,O),t.useSyncExternalStore(E,k);const m=K(s.shell,a,i),u=Z(m);t.useSyncExternalStore(C,b,b);const d=Q(a).overlays.cameraReadout;return e.jsxs(e.Fragment,{children:[u?e.jsxs(e.Fragment,{children:[e.jsx(ne,{store:n,documentId:a}),d?e.jsx(oe,{}):null]}):null,m.surface==="three"&&n.showStats&&e.jsx(re,{}),r?e.jsx(ee,{}):null]})}export{He as StageOverlaySet};
@@ -0,0 +1 @@
1
+ import"./jsx-runtime-CAUTK36e.js";import"./index-DaQZGF7d.js";import"./index-CtzuWnCS.js";import{eX as H,eY as D,eZ as W,y as J,e_ as U,e$ as k}from"./index-Dm_h-T4x.js";import"./index-jib6KJY8.js";import{c as q}from"./content-bounds-_QWiKD5_.js";import{$ as K,g as ee,P as te,cc as oe,C as P,bP as ne,f as re,bF as ie,ce as ae,Q as se,V as I,O as ce,aL as le,F as de,B as pe,a1 as ue,b7 as fe}from"./three.module-CrYDk-Xr.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./client-mkWk8S65.js";let v={document:null,file:null,oid:null,selection:[],camera:null,gesture:null},w="",R=!1,S=!1;const ge=100;function _(){R||S||(R=!0,globalThis.setTimeout(()=>{R=!1;const e=JSON.stringify(v);e!==w&&(w=e,S=!0,H(v).catch(()=>{w=""}).finally(()=>{S=!1,JSON.stringify(v)!==w&&_()}))},ge))}function C(e){v={...v,...e},_()}function me(){const e=document.querySelector(`.${U}`);return(e?getComputedStyle(e).getPropertyValue("--vgai-content-on-accent").trim():"")||k.color.content.onAccent}function j(e,r){const o=e.image,n=o.getContext("2d");if(!n)return;n.clearRect(0,0,o.width,o.height),n.fillStyle=r.color,n.beginPath(),n.roundRect(2,2,o.width-4,o.height-4,16),n.fill(),n.fillStyle=me(),n.font="600 22px system-ui, sans-serif",n.textAlign="center",n.textBaseline="middle";const c=r.kind==="agent"?" · AI":"";n.fillText(`${r.displayName}${c}`,o.width/2,o.height/2,238),e.needsUpdate=!0}function ye(e){const r=new te(50,1,.2,1.4),o=new oe(r),n=new P(e.color);o.setColors(n,n,n,n,n),o.name=`Collaboration camera: ${e.displayName}`,o.userData.editorOnly=!0;const c=document.createElement("canvas");c.width=256,c.height=64;const p=new ne(c);p.colorSpace=re;const d=new ie(new ae({map:p,depthTest:!1,transparent:!0}));return d.name=`Collaboration label: ${e.displayName}`,d.userData.editorOnly=!0,d.scale.set(1.8,.45,1),d.renderOrder=1e4,j(p,e),{camera:r,helper:o,label:d,texture:p,signature:"",targetPosition:new I,targetQuaternion:new se,targetFov:50,initialized:!1}}function he(e,r){const o=r.presence.camera;if(!o)return;e.targetPosition.set(o.x,o.y,o.z);const n=new ce;n.position.copy(e.targetPosition),n.lookAt(o.targetX,o.targetY,o.targetZ),e.targetQuaternion.copy(n.quaternion),e.targetFov=o.fov,e.initialized||(e.initialized=!0,e.camera.position.copy(e.targetPosition),e.camera.quaternion.copy(e.targetQuaternion),e.camera.fov=e.targetFov);const c=`${r.displayName}|${r.kind}|${r.color}|${r.status}`;c!==e.signature&&(e.signature=c,j(e.texture,r))}function ve(e,r){const o=1-Math.exp(-12*Math.max(0,r));e.camera.position.lerp(e.targetPosition,o),e.camera.quaternion.slerp(e.targetQuaternion,o),e.camera.fov+=(e.targetFov-e.camera.fov)*o,e.camera.updateProjectionMatrix(),e.camera.updateMatrixWorld(!0),e.helper.update(),e.label.position.copy(e.camera.position),e.label.position.y+=.55}function N(e){e.helper.removeFromParent(),e.label.removeFromParent(),e.helper.dispose(),e.texture.dispose(),e.label.material.dispose()}function be(e,r){const o=q(e),n=new le(o,new P(r));return n.name=`Collaboration selection: ${e.name||e.uuid}`,n.userData.editorOnly=!0,n.renderOrder=9999,n.material.depthTest=!1,{object:e,box:o,helper:n}}function M(e){e.helper.removeFromParent(),e.helper.geometry.dispose(),e.helper.material.dispose()}function we(e){if(!e||e.type!=="pointer-ray"||!["originX","originY","originZ","directionX","directionY","directionZ","length"].every(p=>typeof e[p]=="number"&&Number.isFinite(e[p])))return null;const o=new I(e.originX,e.originY,e.originZ),n=new I(e.directionX,e.directionY,e.directionZ),c=Math.min(1e3,Math.max(.1,e.length));return n.lengthSq()<1e-6?null:{origin:o,end:o.clone().add(n.normalize().multiplyScalar(c))}}function $e(e){const{scene:r,store:o,documentId:n,container:c,canvas:p,viewport:d,readVisibleCameraPose:E}=e,y=()=>J()===n,b=()=>{if(!y())return;const i=E();C({camera:{x:i.position.x,y:i.position.y,z:i.position.z,targetX:i.target.x,targetY:i.target.y,targetZ:i.target.z,fov:i.fov}})};d.orbitControls.addEventListener("change",b);let x=!1;const z=i=>{const s=i.value===!0;x=s,y()&&C({gesture:s?{type:"transform",selection:[...o.shell.selectedEntityIds]}:null})};d.transformControls.addEventListener("dragging-changed",z);const L=new K,T=new ee,F=i=>{if(x||i.buttons!==0||!y())return;const s=p.getBoundingClientRect();if(s.width<=0||s.height<=0)return;T.set((i.clientX-s.left)/s.width*2-1,-((i.clientY-s.top)/s.height)*2+1),L.setFromCamera(T,d.renderCamera);const l=L.ray,m=E();C({gesture:{type:"pointer-ray",originX:l.origin.x,originY:l.origin.y,originZ:l.origin.z,directionX:l.direction.x,directionY:l.direction.y,directionZ:l.direction.z,length:Math.max(2,m.position.distanceTo(m.target))}})},O=()=>{!x&&y()&&C({gesture:null})};c.addEventListener("pointermove",F),c.addEventListener("pointerleave",O),b();const f=new Map,u=new Map,g=new Map;let $=-1;const Q=()=>{const i=D();if(!i||i.sequence===$)return;$=i.sequence;const s=i.participants.filter(t=>t.participantId!==W&&t.presence.document===n),l=s.filter(t=>t.presence.camera),m=new Set(l.map(t=>t.participantId));for(const[t,a]of f)m.has(t)||(N(a),f.delete(t));for(const t of l){let a=f.get(t.participantId);a||(a=ye(t),f.set(t.participantId,a),r.add(a.helper,a.label)),he(a,t)}const Y=s.flatMap(t=>t.presence.selection.slice(0,20).map(a=>({key:`${t.participantId}:${a}`,objectId:a,color:t.color}))),V=new Set(Y.map(t=>t.key));for(const[t,a]of u)V.has(t)||(M(a),u.delete(t));for(const t of Y){const a=o.objectMap.get(t.objectId),h=u.get(t.key);if(!a){h&&(M(h),u.delete(t.key));continue}if(h?.object===a)continue;h&&M(h);const Z=be(a,t.color);u.set(t.key,Z),r.add(Z.helper)}const A=s.flatMap(t=>{const a=we(t.presence.gesture);return a?[{participantId:t.participantId,color:t.color,ray:a}]:[]}),G=new Set(A.map(t=>t.participantId));for(const[t,a]of g)G.has(t)||(B(a),g.delete(t));for(const t of A){let a=g.get(t.participantId);a||(a=Ce(t.color),g.set(t.participantId,a),r.add(a.line)),Me(a,t.ray)}},X=i=>{if(!y())return;const s=i.detail?.participantId;if(typeof s!="string")return;const l=D()?.participants.find(m=>m.participantId===s)?.presence.camera;l&&o.shell.setCameraPose({x:l.x,y:l.y,z:l.z},{x:l.targetX,y:l.targetY,z:l.targetZ},l.fov)};return window.addEventListener("editor:collaboration-join",X),{reportCamera:b,syncMarkers:i=>{Q();for(const s of f.values())ve(s,i);for(const s of u.values())q(s.object,s.box)},live:()=>f.size+u.size+g.size>0,dispose:()=>{d.orbitControls.removeEventListener("change",b),d.transformControls.removeEventListener("dragging-changed",z),c.removeEventListener("pointermove",F),c.removeEventListener("pointerleave",O),window.removeEventListener("editor:collaboration-join",X);for(const i of f.values())N(i);f.clear();for(const i of u.values())M(i);u.clear();for(const i of g.values())B(i);g.clear()}}}function Ce(e){const r=new de(new Float32Array(6),3),o=new pe;o.setAttribute("position",r);const n=new ue({color:new P(e),depthTest:!1,transparent:!0,opacity:.9}),c=new fe(o,n);return c.name="Collaboration pointer ray",c.userData.editorOnly=!0,c.renderOrder=10001,{line:c,positions:r}}function Me(e,r){e.positions.setXYZ(0,r.origin.x,r.origin.y,r.origin.z),e.positions.setXYZ(1,r.end.x,r.end.y,r.end.z),e.positions.needsUpdate=!0,e.line.geometry.computeBoundingSphere()}function B(e){e.line.removeFromParent(),e.line.geometry.dispose(),e.line.material.dispose()}export{$e as bindStagePresenceMarkers};
@@ -0,0 +1 @@
1
+ import{j as m}from"./jsx-runtime-CAUTK36e.js";import{cZ as p,c_ as s,cH as l,c$ as f,f0 as c,v as S}from"./index-Dm_h-T4x.js";import{r as i}from"./index-DaQZGF7d.js";import{t as T}from"./StageHost-CdzuP0NS.js";import{I as u}from"./three-integration.service-0EyPpd5f.js";import{a as h,T as g}from"./Toolbar-DI0LGx25.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-jib6KJY8.js";import"./client-mkWk8S65.js";import"./viewport-surface-status-yS6CrXH7.js";import"./content-bounds-_QWiKD5_.js";import"./three.module-CrYDk-Xr.js";import"./live-mixers-B-bwLZ7c.js";import"./viewport-door-BdL0u5rd.js";import"./model-inspection-DDZE59vp.js";import"./clip-planes-CnAI6DZn.js";import"./OrbitControls-smIenN60.js";import"./LineSegments2-BKEsgiC8.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./editor-presentation-activity-C7SNSmTd.js";import"./transport-strip-Co-ZDkf-.js";import"./layered-pick-CT4HlEpW.js";import"./bitmap-label-Ct4k6ehY.js";import"./transform-mode-request-Cz6fzydi.js";const n=new WeakMap;function x(r,t){if(r===null)return;const o=n.get(r)??new Set;if(n.set(r,o),o.has(t))return;o.add(t);const e={select:"select",transform:"combined",move:"translate",rotate:"rotate",scale:"scale"};r.shell.setTransformMode(e[S(t).interaction.bootTool])}function K({documentId:r}){i.useSyncExternalStore(p,s,s);const t=l(),o=T(r),e=f(r);if(i.useEffect(()=>{o==="gizmo"&&x(e&&u(e),r)},[o,e,r]),o==="none")return null;const a=o==="modal"?c(r):null;return m.jsx(g,{store:e??t,...a?{door:a}:{}})}function L({documentId:r}){i.useSyncExternalStore(p,s,s);const t=l();return m.jsx(h,{store:f(r)??t})}export{L as ThreeStageTransformControls,K as ThreeStageTransformTools};
@@ -0,0 +1 @@
1
+ import{r as I}from"./react-story-board-CkaP4mEG.js";import{d as E}from"./bitmap-label-Ct4k6ehY.js";import{bk as C,bl as $,al as R,bm as D,aI as T,bn as L,bo as k,bp as N,bq as O,br as W,bs as U,bt as A,bu as B,bv as H,bw as F,ar as M,bx as G,by as V,bz as _,bA as z}from"./index-Dm_h-T4x.js";import{j as b}from"./jsx-runtime-CAUTK36e.js";import{r as q}from"./index-DaQZGF7d.js";import"./index-CtzuWnCS.js";import"./index-jib6KJY8.js";import"./client-mkWk8S65.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";class K extends q.Component{state={error:null};static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error(`[stories] ${this.props.modulePath} — story "${this.props.storyName}" crashed while rendering:`,t,r.componentStack)}render(){return this.state.error?b.jsxs("div",{style:{padding:12,fontSize:12,color:R.semantic.danger,maxWidth:640},children:[b.jsxs("div",{style:{fontWeight:600,marginBottom:4},children:["Story crashed: ",b.jsx("code",{children:this.props.modulePath})," — export"," ",b.jsx("code",{children:this.props.storyName})]}),b.jsx("div",{style:{whiteSpace:"pre-wrap"},children:String(this.state.error)})]}):this.props.children}}const x=new WeakMap;async function Q(e,t,r,l,i){const n=x.get(e),s=(n?.generation??0)+1;x.set(e,{root:n?.root,generation:s}),C(e);const u=T();u&&await D(u.rootPath),await l.load();const{createRoot:m,flushSync:h}=await $(),p=x.get(e);if(!p||p.generation!==s)return null;const c=n?.root??m(e);return x.set(e,{root:c,generation:s}),h(()=>{c.render(b.jsx(K,{modulePath:t,storyName:r,children:b.jsx(l,{})}))}),{root:c,unmount:()=>{queueMicrotask(()=>{const a=x.get(e);!a||a.generation!==s||!a.root||(x.delete(e),a.root.unmount())})}}}const Y=640,J=400;function X(e,t){return`portable-${e}:${t.map(r=>encodeURIComponent(r)).join("/")}`}function Z(e){const t=new Map,r=[],l=new Map,i=new Map;for(const n of e){const s=L({modulePath:n.modulePath,...n.title?{title:n.title}:{}}),u=[...s.segments,s.leaf];let m=null;for(let c=0;c<u.length;c++){const a=u.slice(0,c+1),f=c===u.length-1,g=X(f?"component":"folder",a);t.has(g)||(t.set(g,{id:g,label:a.at(-1),role:f?"component":"folder",kind:f?"component":"group",typeLabel:f?"Component":c===0?"Category":"Folder",parentId:m,childIds:[],...f?{secondaryLabel:n.modulePath}:{}}),m?t.get(m)?.childIds.push(g):r.push(g)),m=g}const h=m;t.get(h)?.childIds.push(n.id),l.set(n.id,h);const p=i.get(h);p?p.storyIds.push(n.id):i.set(h,{id:h,label:k(s),storyIds:[n.id]})}return{sections:[...i.values()],nodes:[...t.values()],rootIds:r,storyParentIds:l}}function P(e){return e&&typeof e=="object"?e:null}function S(e){if(typeof e!="string")return null;const t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function tt(e){const t=P(P(e.viewport)?.options),r={...N};if(!t)return r;for(const[l,i]of Object.entries(t)){const n=P(i),s=P(n?.styles);!n||!s||typeof n.name!="string"||typeof s.width!="string"||typeof s.height!="string"||(r[l]={name:n.name,styles:{width:s.width,height:s.height},...typeof n.type=="string"?{type:n.type}:{}})}return r}function et(e){const t=e.viewport;if(typeof t=="string")return{value:t||null,isRotated:!1};const r=P(t);return{value:typeof r?.value=="string"&&r.value?r.value:null,isRotated:r?.isRotated===!0}}function ot(e,t,r,l){const i=e.parameters??{},n=e.globals??{},s=i.layout,u=s==="centered"||s==="fullscreen"||s==="padded"?s:"padded",m=tt(i),h=Object.entries(m).flatMap(([d,y])=>{const w=S(y.styles.width),v=S(y.styles.height);return w&&v?[{id:d,label:y.name,width:w,height:v}]:[]}),p=et(n),c=r===void 0?p.value:r,a=h.find(d=>d.id===c),f=a?.width??t?.width??Y,g=a?.height??t?.height??J,o=l??p.isRotated;return{layout:u,choices:h,selectedViewportId:a?.id??null,locked:e.viewportLocked===!0,rotated:o,width:o?g:f,height:o?f:g}}function rt(e,t=Z(e)){return{index:t,resolve:ot}}async function vt(e,t){await O();const r=z(),l=W().filter(o=>U({modulePath:o.modulePath,regions:r}).medium==="dom"),i=document.createElement("canvas");i.width=e,i.height=t;const n=i.getContext("2d");if(!n)throw new Error("UI Canvas preview could not create a 2D output context.");if(l.length===0)return i.toDataURL("image/png");const s=rt(l),u=T()?.config.resolution,m={width:u?.width??640,height:u?.height??400},h=new Map,p=new Map;for(const o of l){const d=s.resolve(o,m),[y]=await j(o.modulePath,[o],{width:d.width,height:d.height,capture:M,cropToContent:d.layout!=="fullscreen",layout:d.layout,transparent:!0});if(!y)throw new Error(`No preview rendered for ${o.id}.`);const w=new Image;w.src=`data:${y.mimeType};base64,${y.base64}`,await w.decode(),h.set(o.id,w),p.set(o.id,{width:w.naturalWidth,height:w.naturalHeight})}const c=I(l,s.index,o=>p.get(o.id)),a=Math.min(e/c.width,t/c.height),f=(e-c.width*a)/2,g=(t-c.height*a)/2;for(const[o,d]of c.layouts)n.drawImage(h.get(o),f+d.x*a,g+d.y*a,d.width*a,d.height*a);return i.toDataURL("image/png")}const nt="#ffffff",at="#14171c";async function xt(e,t){const{modulePath:r,width:l,height:i}=t;if(!e)throw new Error(`No project is open, so '${r}' cannot be loaded. Open the project first.`);const n=await A(e),s=n.find(o=>o.modulePath===r);if(!s)throw new Error(`'${r}' is not a story file of this project. `+(n.length===0?"This project has no *.stories.tsx / *.stories.ts under src/.":`This project's story files are: ${n.map(o=>o.modulePath).join(", ")}.`));await B(await H(e));let u;try{u=await s.load()}catch(o){throw new Error(`'${r}' failed to import — ${o instanceof Error?o.message:String(o)}`)}const m=await F(r,u);if(!m.ok)throw new Error(m.error);const h=st(r,m.stories,t.story),p=t.capture??M,c=G("three"),a=t.captureThree??(c?(o,d)=>c(o,{...d,...t.camera===void 0?{}:{camera:t.camera},...t.pose===void 0?{}:{pose:t.pose}}):void 0);if((t.camera||t.pose)&&!a)throw new Error(`'${r}': camera/clip parameters need the three capture leg, which this environment cannot provide (no WebGL).`);const f=await j(r,h,{width:l,height:i,capture:p,...a?{captureThree:a}:{},requireThree:!!(t.camera||t.pose)}),g=await ct(f,l,i);return{modulePath:r,width:l,height:i,variants:f,contactSheet:g}}function st(e,t,r){if(r===void 0)return t;const l=t.find(i=>i.name===r);if(!l)throw new Error(`'${e}' exports no story named '${r}'. It exports: ${t.map(i=>i.name).join(", ")}.`);return[l]}async function j(e,t,r){const{width:l,height:i,capture:n,captureThree:s,requireThree:u,cropToContent:m=!0}=r,h=document.createElement("div");h.setAttribute("style",`position:fixed;left:-20000px;top:0;width:${l}px;height:${i}px;overflow:hidden;contain:strict;pointer-events:none;background:${r.transparent?"transparent":nt};`),document.body.appendChild(h);const p=[];try{for(const c of t){if(s){const o=await s(c.Component,{width:l,height:i}).catch(d=>(V(d)||console.warn(`[story-capture] three mount for '${c.name}' failed — falling back to the DOM leg:`,d instanceof Error?d.stack??d.message:String(d)),null));if(o===null&&u)throw new Error(`story '${c.name}' did not render on the three leg — --azimuth/--elevation/--distance/--clip/--time apply to three (R3F) stories only, and falling back to the DOM leg would silently ignore them. Narrow to a three story with --story <export>, or drop the camera/clip flags.`);if(o!==null){const d=o.indexOf(",");p.push({name:c.name,label:c.label,base64:d>=0?o.slice(d+1):o,mimeType:"image/png"});continue}}const a=document.createElement("div");a.setAttribute("style",`position:relative;width:${l}px;height:${i}px;overflow:hidden;`),r.layout==="padded"&&(a.style.padding="16px"),r.layout==="centered"&&(a.style.display="flex",a.style.alignItems="center",a.style.justifyContent="center"),a.style.boxSizing="border-box",h.replaceChildren(a);const f=await _(async()=>{const o=await Q(a,e,c.name,c.Component);return await it(a),o});await f.settled();const g=f.result;try{const o=await n(h,{canvasFrame:f.frame,cropToContent:m,...r.transparent?{allowTransparent:!0}:{}});p.push({name:c.name,label:c.label,base64:o.base64,mimeType:"image/png"})}finally{g?.unmount(),await new Promise(o=>setTimeout(o,0)),a.remove()}}}finally{h.remove()}return p}async function it(e,t=10){for(let i=0;i<t&&!(e.childNodes.length>0);i++)await new Promise(n=>setTimeout(n,0));if(e.childNodes.length===0)return;const r=200,l=5e3;await new Promise(i=>{let n=null,s=!1;const u=new MutationObserver(()=>{n!==null&&clearTimeout(n),n=setTimeout(h,r)}),m=setTimeout(h,l);function h(){s||(s=!0,u.disconnect(),n!==null&&clearTimeout(n),clearTimeout(m),i())}u.observe(e,{subtree:!0,childList:!0,attributes:!0,characterData:!0}),n=setTimeout(h,r)})}async function ct(e,t,r,l={}){const i=Math.min(Math.max(1,e.length),Math.max(1,Math.floor(l.columns??2))),n=Math.max(1,Math.ceil(e.length/i)),s=[];for(const o of e){const d=new Image;d.src=`data:${o.mimeType};base64,${o.base64}`,await d.decode(),s.push(d)}const u=Math.max(1,...s.map(o=>o.naturalWidth),s.length?0:t),m=Math.max(1,...s.map(o=>o.naturalHeight),s.length?0:r),h=u*i,p=m*n,c=document.createElement("canvas");c.width=h,c.height=p;const a=c.getContext("2d");if(!a)throw new Error("Unable to create the story variant sheet.");a.fillStyle=at,a.fillRect(0,0,h,p);for(const[o,d]of e.entries()){const y=o%i*u,w=Math.floor(o/i)*m,v=s[o];a.drawImage(v,y+Math.floor((u-v.naturalWidth)/2),w+Math.floor((m-v.naturalHeight)/2)),l.labels!==!1&&E(a,d.name.toUpperCase(),y,w,u,m)}const f=c.toDataURL("image/png"),g=f.indexOf(",");return{width:h,height:p,base64:g>=0?f.slice(g+1):f,mimeType:"image/png"}}export{vt as captureDomStoryBoardPreview,xt as captureProjectStoryVariants,ct as composeVariantSheet,j as renderStoryVariants};