@hatiolab/things-scene 10.0.0-beta.9 → 10.0.0-beta.91

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 (281) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist-types/animation/animate.d.ts.map +1 -1
  3. package/dist-types/animation/animations/animation.d.ts.map +1 -1
  4. package/dist-types/animation/animations/heartbeat.d.ts +0 -7
  5. package/dist-types/animation/animations/heartbeat.d.ts.map +1 -1
  6. package/dist-types/animation/animations/waypoint.d.ts +45 -4
  7. package/dist-types/animation/animations/waypoint.d.ts.map +1 -1
  8. package/dist-types/animation/interfaces.d.ts +1 -1
  9. package/dist-types/animation/interfaces.d.ts.map +1 -1
  10. package/dist-types/command/command-migrate.d.ts.map +1 -1
  11. package/dist-types/command/snapshot-commander.d.ts.map +1 -1
  12. package/dist-types/components/audio.d.ts.map +1 -1
  13. package/dist-types/components/component-data.d.ts +24 -0
  14. package/dist-types/components/component-data.d.ts.map +1 -1
  15. package/dist-types/components/component.d.ts +5 -0
  16. package/dist-types/components/component.d.ts.map +1 -1
  17. package/dist-types/components/container-abstract.d.ts +34 -1
  18. package/dist-types/components/container-abstract.d.ts.map +1 -1
  19. package/dist-types/components/container.d.ts.map +1 -1
  20. package/dist-types/components/data/data.d.ts.map +1 -1
  21. package/dist-types/components/drawer/fill.d.ts.map +1 -1
  22. package/dist-types/components/drawer/stroke.d.ts.map +1 -1
  23. package/dist-types/components/generic-placeholders.d.ts +287 -0
  24. package/dist-types/components/generic-placeholders.d.ts.map +1 -0
  25. package/dist-types/components/geometry/snap-guide.d.ts +45 -0
  26. package/dist-types/components/geometry/snap-guide.d.ts.map +1 -0
  27. package/dist-types/components/geometry/transcoord.d.ts.map +1 -1
  28. package/dist-types/components/global-ref.d.ts.map +1 -1
  29. package/dist-types/components/group.d.ts +1 -0
  30. package/dist-types/components/group.d.ts.map +1 -1
  31. package/dist-types/components/html/shadow.d.ts +33 -1
  32. package/dist-types/components/html/shadow.d.ts.map +1 -1
  33. package/dist-types/components/html-overlay-container.d.ts.map +1 -1
  34. package/dist-types/components/html-overlay-element.d.ts.map +1 -1
  35. package/dist-types/components/image-view.d.ts.map +1 -1
  36. package/dist-types/components/index.d.ts +6 -0
  37. package/dist-types/components/index.d.ts.map +1 -1
  38. package/dist-types/components/line.d.ts +2 -1
  39. package/dist-types/components/line.d.ts.map +1 -1
  40. package/dist-types/components/mixins/gltf-component.d.ts +276 -0
  41. package/dist-types/components/mixins/gltf-component.d.ts.map +1 -0
  42. package/dist-types/components/mixins/html-element.d.ts.map +1 -1
  43. package/dist-types/components/mixins/move-handle.d.ts.map +1 -1
  44. package/dist-types/components/mixins/three-d-only.d.ts +243 -0
  45. package/dist-types/components/mixins/three-d-only.d.ts.map +1 -0
  46. package/dist-types/components/mixins/value-holder.d.ts.map +1 -1
  47. package/dist-types/components/mutater/path.d.ts.map +1 -1
  48. package/dist-types/components/popup-container.d.ts +25 -0
  49. package/dist-types/components/popup-container.d.ts.map +1 -0
  50. package/dist-types/components/popup.d.ts +30 -0
  51. package/dist-types/components/popup.d.ts.map +1 -1
  52. package/dist-types/components/position/popup-position.d.ts +11 -0
  53. package/dist-types/components/position/popup-position.d.ts.map +1 -1
  54. package/dist-types/components/root-container.d.ts +11 -4
  55. package/dist-types/components/root-container.d.ts.map +1 -1
  56. package/dist-types/components/service-component.d.ts +264 -0
  57. package/dist-types/components/service-component.d.ts.map +1 -0
  58. package/dist-types/decorator/decorator-registry.d.ts +4 -0
  59. package/dist-types/decorator/decorator-registry.d.ts.map +1 -1
  60. package/dist-types/decorator/decorators/animated-icon-decorator.d.ts.map +1 -1
  61. package/dist-types/decorator/decorators/data-spread-decorator.d.ts +16 -0
  62. package/dist-types/decorator/decorators/data-spread-decorator.d.ts.map +1 -1
  63. package/dist-types/diagnostics/data-lag-tracker.d.ts +44 -0
  64. package/dist-types/diagnostics/data-lag-tracker.d.ts.map +1 -0
  65. package/dist-types/diagnostics/inspector.d.ts +14 -4
  66. package/dist-types/diagnostics/inspector.d.ts.map +1 -1
  67. package/dist-types/diagnostics/load-tracker.d.ts +82 -0
  68. package/dist-types/diagnostics/load-tracker.d.ts.map +1 -0
  69. package/dist-types/diagnostics/loading-overlay.d.ts +41 -0
  70. package/dist-types/diagnostics/loading-overlay.d.ts.map +1 -0
  71. package/dist-types/effect/shadow.d.ts +3 -1
  72. package/dist-types/effect/shadow.d.ts.map +1 -1
  73. package/dist-types/event-map/index.d.ts +1 -0
  74. package/dist-types/event-map/index.d.ts.map +1 -1
  75. package/dist-types/event-map/transition-handler.d.ts +2 -0
  76. package/dist-types/event-map/transition-handler.d.ts.map +1 -0
  77. package/dist-types/interfaces/layout.d.ts +35 -1
  78. package/dist-types/interfaces/layout.d.ts.map +1 -1
  79. package/dist-types/interfaces/providers.d.ts +20 -3
  80. package/dist-types/interfaces/providers.d.ts.map +1 -1
  81. package/dist-types/interfaces/rendering.d.ts +86 -14
  82. package/dist-types/interfaces/rendering.d.ts.map +1 -1
  83. package/dist-types/layer/action/popup.d.ts +13 -0
  84. package/dist-types/layer/action/popup.d.ts.map +1 -1
  85. package/dist-types/layer/dual-canvas-layer.d.ts.map +1 -1
  86. package/dist-types/layer/index.d.ts +1 -0
  87. package/dist-types/layer/index.d.ts.map +1 -1
  88. package/dist-types/layer/layer.d.ts +1 -0
  89. package/dist-types/layer/layer.d.ts.map +1 -1
  90. package/dist-types/layer/model-layer.d.ts +53 -7
  91. package/dist-types/layer/model-layer.d.ts.map +1 -1
  92. package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
  93. package/dist-types/layer/modeling-layer.d.ts.map +1 -1
  94. package/dist-types/layer/selection/selected-finder.d.ts +1 -1
  95. package/dist-types/layer/selection/selected-finder.d.ts.map +1 -1
  96. package/dist-types/layer/selection-layer.d.ts.map +1 -1
  97. package/dist-types/layer/snap-guide-layer.d.ts +23 -0
  98. package/dist-types/layer/snap-guide-layer.d.ts.map +1 -0
  99. package/dist-types/layout/absolute.d.ts +2 -2
  100. package/dist-types/layout/card.d.ts +2 -2
  101. package/dist-types/layout/linear-horizontal.d.ts +2 -2
  102. package/dist-types/layout/linear-vertical.d.ts +2 -2
  103. package/dist-types/layout/table.d.ts +3 -3
  104. package/dist-types/search/index.d.ts +3 -0
  105. package/dist-types/search/index.d.ts.map +1 -0
  106. package/dist-types/search/scene-search-engine.d.ts +65 -0
  107. package/dist-types/search/scene-search-engine.d.ts.map +1 -0
  108. package/dist-types/search/search-overlay.d.ts +69 -0
  109. package/dist-types/search/search-overlay.d.ts.map +1 -0
  110. package/dist-types/things-scene/api/align.d.ts.map +1 -1
  111. package/dist-types/things-scene/api/distribute.d.ts.map +1 -1
  112. package/dist-types/things-scene/api/place.d.ts.map +1 -1
  113. package/dist-types/things-scene/application-context.d.ts +43 -0
  114. package/dist-types/things-scene/application-context.d.ts.map +1 -1
  115. package/dist-types/things-scene/create.d.ts +38 -3
  116. package/dist-types/things-scene/create.d.ts.map +1 -1
  117. package/dist-types/things-scene/index.d.ts +9 -0
  118. package/dist-types/things-scene/index.d.ts.map +1 -1
  119. package/dist-types/things-scene/scene.d.ts +64 -1
  120. package/dist-types/things-scene/scene.d.ts.map +1 -1
  121. package/dist-types/threed/arrow-3d.d.ts +13 -4
  122. package/dist-types/threed/arrow-3d.d.ts.map +1 -1
  123. package/dist-types/threed/environments/base-environment.d.ts +9 -0
  124. package/dist-types/threed/environments/base-environment.d.ts.map +1 -0
  125. package/dist-types/threed/environments/cloudy-environment.d.ts +10 -0
  126. package/dist-types/threed/environments/cloudy-environment.d.ts.map +1 -0
  127. package/dist-types/threed/environments/factory-environment.d.ts +2 -3
  128. package/dist-types/threed/environments/factory-environment.d.ts.map +1 -1
  129. package/dist-types/threed/environments/home-environment.d.ts +2 -3
  130. package/dist-types/threed/environments/home-environment.d.ts.map +1 -1
  131. package/dist-types/threed/environments/office-environment.d.ts +2 -3
  132. package/dist-types/threed/environments/office-environment.d.ts.map +1 -1
  133. package/dist-types/threed/environments/rainy-environment.d.ts +10 -0
  134. package/dist-types/threed/environments/rainy-environment.d.ts.map +1 -0
  135. package/dist-types/threed/environments/studio-environment.d.ts +2 -3
  136. package/dist-types/threed/environments/studio-environment.d.ts.map +1 -1
  137. package/dist-types/threed/environments/sunny-environment.d.ts +10 -0
  138. package/dist-types/threed/environments/sunny-environment.d.ts.map +1 -0
  139. package/dist-types/threed/environments/warehouse-environment.d.ts +2 -3
  140. package/dist-types/threed/environments/warehouse-environment.d.ts.map +1 -1
  141. package/dist-types/threed/factories/backdrop.d.ts +525 -0
  142. package/dist-types/threed/factories/backdrop.d.ts.map +1 -0
  143. package/dist-types/threed/factories/banner.d.ts +2 -1
  144. package/dist-types/threed/factories/banner.d.ts.map +1 -1
  145. package/dist-types/threed/factories/camera.d.ts +1 -0
  146. package/dist-types/threed/factories/camera.d.ts.map +1 -1
  147. package/dist-types/threed/factories/cube.d.ts +1 -0
  148. package/dist-types/threed/factories/cube.d.ts.map +1 -1
  149. package/dist-types/threed/factories/cylinder.d.ts +1 -0
  150. package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
  151. package/dist-types/threed/factories/decal.d.ts +502 -0
  152. package/dist-types/threed/factories/decal.d.ts.map +1 -0
  153. package/dist-types/threed/factories/floor-plate.d.ts +10 -0
  154. package/dist-types/threed/factories/floor-plate.d.ts.map +1 -0
  155. package/dist-types/threed/factories/gltf-object.d.ts +253 -35
  156. package/dist-types/threed/factories/gltf-object.d.ts.map +1 -1
  157. package/dist-types/threed/factories/group.d.ts +2 -0
  158. package/dist-types/threed/factories/group.d.ts.map +1 -0
  159. package/dist-types/threed/factories/light.d.ts +1 -0
  160. package/dist-types/threed/factories/light.d.ts.map +1 -1
  161. package/dist-types/threed/factories/line.d.ts +10 -0
  162. package/dist-types/threed/factories/line.d.ts.map +1 -0
  163. package/dist-types/threed/factories/ortholine.d.ts +10 -0
  164. package/dist-types/threed/factories/ortholine.d.ts.map +1 -0
  165. package/dist-types/threed/factories/polygon.d.ts.map +1 -1
  166. package/dist-types/threed/factories/polyline.d.ts +10 -0
  167. package/dist-types/threed/factories/polyline.d.ts.map +1 -0
  168. package/dist-types/threed/factories/rect.d.ts.map +1 -1
  169. package/dist-types/threed/factories/sphere.d.ts +6 -0
  170. package/dist-types/threed/factories/sphere.d.ts.map +1 -1
  171. package/dist-types/threed/factories/sprite.d.ts +1 -0
  172. package/dist-types/threed/factories/sprite.d.ts.map +1 -1
  173. package/dist-types/threed/factories/triangle.d.ts.map +1 -1
  174. package/dist-types/threed/factories/wall.d.ts +1 -0
  175. package/dist-types/threed/factories/wall.d.ts.map +1 -1
  176. package/dist-types/threed/floor/floor.d.ts.map +1 -1
  177. package/dist-types/threed/handle-3d.d.ts +21 -0
  178. package/dist-types/threed/handle-3d.d.ts.map +1 -0
  179. package/dist-types/threed/html/elements.d.ts.map +1 -1
  180. package/dist-types/threed/index.d.ts +20 -0
  181. package/dist-types/threed/index.d.ts.map +1 -1
  182. package/dist-types/threed/managers/box-selection-manager.d.ts +26 -0
  183. package/dist-types/threed/managers/box-selection-manager.d.ts.map +1 -0
  184. package/dist-types/threed/managers/camera-bookmark-manager.d.ts +127 -0
  185. package/dist-types/threed/managers/camera-bookmark-manager.d.ts.map +1 -0
  186. package/dist-types/threed/managers/camera-manager.d.ts +9 -3
  187. package/dist-types/threed/managers/camera-manager.d.ts.map +1 -1
  188. package/dist-types/threed/managers/controls-manager.d.ts +25 -4
  189. package/dist-types/threed/managers/controls-manager.d.ts.map +1 -1
  190. package/dist-types/threed/managers/event-manager3d.d.ts +8 -0
  191. package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
  192. package/dist-types/threed/managers/gizmo-manager.d.ts +6 -0
  193. package/dist-types/threed/managers/gizmo-manager.d.ts.map +1 -1
  194. package/dist-types/threed/managers/gizmo-operation-manager.d.ts +55 -1
  195. package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
  196. package/dist-types/threed/managers/index.d.ts +3 -0
  197. package/dist-types/threed/managers/index.d.ts.map +1 -1
  198. package/dist-types/threed/managers/interaction-manager.d.ts +17 -0
  199. package/dist-types/threed/managers/interaction-manager.d.ts.map +1 -1
  200. package/dist-types/threed/managers/light-manager.d.ts +15 -0
  201. package/dist-types/threed/managers/light-manager.d.ts.map +1 -1
  202. package/dist-types/threed/managers/renderer-manager.d.ts +37 -0
  203. package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
  204. package/dist-types/threed/managers/scene-manager.d.ts +6 -2
  205. package/dist-types/threed/managers/scene-manager.d.ts.map +1 -1
  206. package/dist-types/threed/managers/types.d.ts +5 -2
  207. package/dist-types/threed/managers/types.d.ts.map +1 -1
  208. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +109 -0
  209. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -0
  210. package/dist-types/threed/material-3d.d.ts +5 -2
  211. package/dist-types/threed/material-3d.d.ts.map +1 -1
  212. package/dist-types/threed/ratio-lock-utils.d.ts +9 -0
  213. package/dist-types/threed/ratio-lock-utils.d.ts.map +1 -0
  214. package/dist-types/threed/real-object-dom-element.d.ts +1 -0
  215. package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
  216. package/dist-types/threed/real-object-dom-texture.d.ts +9 -0
  217. package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
  218. package/dist-types/threed/real-object-external-model.d.ts +24 -0
  219. package/dist-types/threed/real-object-external-model.d.ts.map +1 -0
  220. package/dist-types/threed/real-object-extrude.d.ts +6 -0
  221. package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
  222. package/dist-types/threed/real-object-gltf.d.ts +42 -12
  223. package/dist-types/threed/real-object-gltf.d.ts.map +1 -1
  224. package/dist-types/threed/real-object-group.d.ts +2 -0
  225. package/dist-types/threed/real-object-group.d.ts.map +1 -1
  226. package/dist-types/threed/real-object-line.d.ts +83 -0
  227. package/dist-types/threed/real-object-line.d.ts.map +1 -0
  228. package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
  229. package/dist-types/threed/real-object-plane-2d.d.ts +23 -0
  230. package/dist-types/threed/real-object-plane-2d.d.ts.map +1 -1
  231. package/dist-types/threed/real-object-service.d.ts +14 -0
  232. package/dist-types/threed/real-object-service.d.ts.map +1 -0
  233. package/dist-types/threed/real-object-sprite.d.ts +7 -1
  234. package/dist-types/threed/real-object-sprite.d.ts.map +1 -1
  235. package/dist-types/threed/real-object-text.d.ts +3 -0
  236. package/dist-types/threed/real-object-text.d.ts.map +1 -1
  237. package/dist-types/threed/real-object.d.ts +131 -6
  238. package/dist-types/threed/real-object.d.ts.map +1 -1
  239. package/dist-types/threed/text-editor-3d.d.ts +11 -0
  240. package/dist-types/threed/text-editor-3d.d.ts.map +1 -0
  241. package/dist-types/threed/texture/canvas-texture.d.ts +7 -0
  242. package/dist-types/threed/texture/canvas-texture.d.ts.map +1 -1
  243. package/dist-types/threed/texture/fillstyle-texture.d.ts +46 -0
  244. package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -0
  245. package/dist-types/threed/texture/text-texture.d.ts +15 -0
  246. package/dist-types/threed/texture/text-texture.d.ts.map +1 -1
  247. package/dist-types/threed/three-capability.d.ts +142 -6
  248. package/dist-types/threed/three-capability.d.ts.map +1 -1
  249. package/dist-types/threed/three-container.d.ts +0 -1
  250. package/dist-types/threed/three-container.d.ts.map +1 -1
  251. package/dist-types/threed/three-dimensional-container.d.ts +0 -1
  252. package/dist-types/threed/three-dimensional-container.d.ts.map +1 -1
  253. package/dist-types/threed/utils/anchor.d.ts +33 -0
  254. package/dist-types/threed/utils/anchor.d.ts.map +1 -0
  255. package/dist-types/threed/utils/dispose.d.ts.map +1 -1
  256. package/dist-types/threed/utils/tether.d.ts +46 -0
  257. package/dist-types/threed/utils/tether.d.ts.map +1 -0
  258. package/dist-types/transfer/centering-slot-strategy.d.ts +8 -0
  259. package/dist-types/transfer/centering-slot-strategy.d.ts.map +1 -0
  260. package/dist-types/transfer/container-capacity.d.ts +42 -0
  261. package/dist-types/transfer/container-capacity.d.ts.map +1 -0
  262. package/dist-types/transfer/fixed-slot-strategy.d.ts +8 -0
  263. package/dist-types/transfer/fixed-slot-strategy.d.ts.map +1 -0
  264. package/dist-types/transfer/index.d.ts +7 -0
  265. package/dist-types/transfer/index.d.ts.map +1 -0
  266. package/dist-types/transfer/simulation-clock.d.ts +45 -0
  267. package/dist-types/transfer/simulation-clock.d.ts.map +1 -0
  268. package/dist-types/transfer/types.d.ts +285 -0
  269. package/dist-types/transfer/types.d.ts.map +1 -0
  270. package/dist-types/transition/transition-effect.d.ts +91 -0
  271. package/dist-types/transition/transition-effect.d.ts.map +1 -0
  272. package/dist-types/types/bounding.d.ts +1 -1
  273. package/dist-types/types/bounding.d.ts.map +1 -1
  274. package/dist-types/types/component.d.ts +6 -177
  275. package/dist-types/types/component.d.ts.map +1 -1
  276. package/package.json +12 -1
  277. package/things-scene-min.js +12 -13
  278. package/things-scene-min.js.map +1 -1
  279. package/things-scene-transfer.mjs +1 -0
  280. package/things-scene.mjs +8 -9
  281. package/things-scene.mjs.map +1 -1
@@ -4,6 +4,5 @@ export interface ThreeDimensionalContainer {
4
4
  get scene3d(): Scene | undefined;
5
5
  get renderer3d(): WebGLRenderer | undefined;
6
6
  get mixer(): AnimationMixer | undefined;
7
- get zoom(): number | undefined;
8
7
  }
9
8
  //# sourceMappingURL=three-dimensional-container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"three-dimensional-container.d.ts","sourceRoot":"","sources":["../../src/threed/three-dimensional-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,aAAa,IAAI,OAAO,CAAA;IACxB,IAAI,OAAO,IAAI,KAAK,GAAG,SAAS,CAAA;IAChC,IAAI,UAAU,IAAI,aAAa,GAAG,SAAS,CAAA;IAC3C,IAAI,KAAK,IAAI,cAAc,GAAG,SAAS,CAAA;IACvC,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAAA;CAC/B"}
1
+ {"version":3,"file":"three-dimensional-container.d.ts","sourceRoot":"","sources":["../../src/threed/three-dimensional-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,aAAa,IAAI,OAAO,CAAA;IACxB,IAAI,OAAO,IAAI,KAAK,GAAG,SAAS,CAAA;IAChC,IAAI,UAAU,IAAI,aAAa,GAAG,SAAS,CAAA;IAC3C,IAAI,KAAK,IAAI,cAAc,GAAG,SAAS,CAAA;CACxC"}
@@ -0,0 +1,33 @@
1
+ import * as THREE from 'three';
2
+ import type Component from '../../components/component.js';
3
+ export type AnchorPin = 'top' | 'center' | 'bottom';
4
+ export interface AnchorOffset {
5
+ x?: number;
6
+ y?: number;
7
+ z?: number;
8
+ }
9
+ /**
10
+ * 3D 공간 내 컴포넌트에 대한 앵커 월드 좌표를 해석한다.
11
+ *
12
+ * - `'center'`: object3d 의 matrixWorld translation (월드 원점)
13
+ * - `'top'` / `'bottom'`: object3d bbox 의 `max.y` / `min.y` 에 위치한
14
+ * 중앙점 — mesh 가 차지하는 실제 영역의 위/아래 끝
15
+ * - bbox 가 비어있을 때 (line/anchorless 등): matrixWorld translation 으로 fallback
16
+ *
17
+ * 반환된 Vector3 에 `offset.{x,y,z}` 를 더한다. target 에 `_realObject.object3d`
18
+ * 가 없거나 결과 좌표가 non-finite 면 `null` 을 반환.
19
+ *
20
+ * 사용 예 (Tooltip3D / Popup3D 공통):
21
+ * ```ts
22
+ * const anchor = resolveAnchorWorldPosition(target, 'top', { y: 50 })
23
+ * if (!anchor) return // skip render
24
+ * const screenPt = projectToScreen(target, anchor.x, anchor.y) // or pass as world coord
25
+ * ```
26
+ *
27
+ * @param target 앵커를 잡을 컴포넌트
28
+ * @param pin 앵커 위치 (default 'top')
29
+ * @param offset 월드 좌표 추가 오프셋 (default {})
30
+ * @param out 결과를 담을 Vector3 (default 새 Vector3) — GC 회피용
31
+ */
32
+ export declare function resolveAnchorWorldPosition(target: Component, pin?: AnchorPin, offset?: AnchorOffset, out?: THREE.Vector3): THREE.Vector3 | null;
33
+ //# sourceMappingURL=anchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../../src/threed/utils/anchor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEnD,MAAM,WAAW,YAAY;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,MAAM,CAAA;CACX;AAKD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,GAAG,GAAE,SAAiB,EACtB,MAAM,GAAE,YAAiB,EACzB,GAAG,GAAE,KAAK,CAAC,OAA6B,GACvC,KAAK,CAAC,OAAO,GAAG,IAAI,CA8BtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"dispose.d.ts","sourceRoot":"","sources":["../../../src/threed/utils/dispose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAwB9B,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,QAQlD"}
1
+ {"version":3,"file":"dispose.d.ts","sourceRoot":"","sources":["../../../src/threed/utils/dispose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAwB9B,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,QAmBlD"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Tether — 3D 앵커와 화면상 패널 사이를 잇는 곡선 SVG 연결선.
3
+ *
4
+ * Tooltip3D / Popup (3D-anchor) 공통 자산. 사용 흐름:
5
+ *
6
+ * 1. `buildTether(host)` — SVG + path + halo + dot 생성, host 에 append
7
+ * 2. 매 redraw (또는 위치 변경 시):
8
+ * `updateTether(elements, ax, ay, panelLeft, panelTop, panelW, panelH, color, alpha, viewW, viewH)`
9
+ * - 앵커 (ax, ay) 와 패널 영역에서 가장 가까운 모서리 중앙을 잇는 베지어 곡선
10
+ * - halo (앵커 주변 흐릿한 원), dot (앵커 점) 포함
11
+ * 3. 앵커 화면 밖 / 비활성화 시: `clearTether(elements)`
12
+ * 4. 컴포넌트 dispose 시: `disposeTether(elements)`
13
+ *
14
+ * 모든 좌표는 같은 좌표계 (host element 의 viewport 픽셀) 라고 가정.
15
+ * SVG viewBox 는 `0 0 viewW viewH` 로 매 호출마다 재설정 → 호스트 크기 변동에
16
+ * 자동 적응.
17
+ */
18
+ export interface TetherElements {
19
+ svg: SVGSVGElement;
20
+ path: SVGPathElement;
21
+ halo: SVGCircleElement;
22
+ dot: SVGCircleElement;
23
+ }
24
+ /**
25
+ * SVG 연결선 요소를 생성하고 host 에 append. host 는 panel/캔버스와 같은 좌표계의
26
+ * always-visible 컨테이너 (예: `layer.target`).
27
+ *
28
+ * 초기 opacity=0 + CSS transition 을 걸어두어 caller 가 다음 RAF tick 에 opacity=1
29
+ * 로 set 하면 자연스럽게 fade-in. 닫을 때 svg.style.opacity='0' 으로 set 하면 같은
30
+ * transition 으로 fade-out. popup 의 fadeIn / fadeOut (200ms) 와 매칭.
31
+ */
32
+ export declare function buildTether(host: HTMLElement): TetherElements;
33
+ /**
34
+ * 곡선 + 마커를 갱신. 앵커 (ax, ay) 와 패널 영역에서 가장 가까운 모서리 중앙을
35
+ * 베지어 곡선으로 연결. 모든 좌표 단위: viewport 픽셀.
36
+ */
37
+ export declare function updateTether(elements: TetherElements, anchorX: number, anchorY: number, panelLeft: number, panelTop: number, panelWidth: number, panelHeight: number, color: string, alpha: number, viewWidth: number, viewHeight: number): void;
38
+ /**
39
+ * 곡선/마커를 시각적으로 비활성화. 요소 자체는 보존 (재활성화 가능).
40
+ */
41
+ export declare function clearTether(elements: TetherElements): void;
42
+ /**
43
+ * 요소 자체를 DOM 에서 제거 (컴포넌트 dispose 시).
44
+ */
45
+ export declare function disposeTether(elements: TetherElements): void;
46
+ //# sourceMappingURL=tether.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tether.d.ts","sourceRoot":"","sources":["../../../src/threed/utils/tether.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,aAAa,CAAA;IAClB,IAAI,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,gBAAgB,CAAA;IACtB,GAAG,EAAE,gBAAgB,CAAA;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc,CA0B7D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,IAAI,CAkCN;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAI1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAE5D"}
@@ -0,0 +1,8 @@
1
+ import type { ArrangementStrategy, SlotDef, Vec3 } from './types.js';
2
+ export declare class CenteringSlotStrategy implements ArrangementStrategy {
3
+ private readonly owner;
4
+ constructor(owner: any);
5
+ positionAt(index: number, slotDef: SlotDef, _occupantCount: number, component?: any): Vec3 | null;
6
+ capacity(slotDef: SlotDef): number;
7
+ }
8
+ //# sourceMappingURL=centering-slot-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centering-slot-strategy.d.ts","sourceRoot":"","sources":["../../src/transfer/centering-slot-strategy.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEpE,qBAAa,qBAAsB,YAAW,mBAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,GAAG;IAEvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;IAejG,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAGnC"}
@@ -0,0 +1,42 @@
1
+ import type { SlotDef, TransferOptions, Transferable, CarrierAttachPoint, ArrangementStrategy } from './types.js';
2
+ /** Key used to store the current slot assignment on a child component. */
3
+ export declare const TRANSFER_SLOT_KEY = "_transferSlotId";
4
+ type Constructor<T = object> = new (...args: any[]) => T;
5
+ /**
6
+ * Mixin that adds Transferable capacity to any ContainerAbstract subclass.
7
+ *
8
+ * The mixed-in class provides concrete implementations of all Transferable methods.
9
+ * Subclasses must implement `get slots(): SlotDef[]`; everything else has sensible defaults.
10
+ */
11
+ export declare function ContainerCapacity<TBase extends Constructor>(Base: TBase): {
12
+ new (...args: any[]): {
13
+ /** Declare the slot topology of this container. */
14
+ get slots(): SlotDef[];
15
+ /**
16
+ * ArrangementStrategy used when `slots` is empty or slotDef has no arrangement.
17
+ * Override in subclass to supply richer strategies (Stack, Queue, Grid, etc.).
18
+ */
19
+ get arrangementStrategy(): ArrangementStrategy;
20
+ canReceive(component: any): boolean;
21
+ findSlot(component: any): SlotDef | null;
22
+ receive(component: any, options?: TransferOptions): Promise<void>;
23
+ dispatch(component: any, target: Transferable, options?: TransferOptions): Promise<void>;
24
+ route(_component: any): Transferable | null | Promise<Transferable | null>;
25
+ /**
26
+ * WCS resolves a pending route by providing the confirmed target.
27
+ * Subclasses that implement PendingPolicy must override this to
28
+ * unblock the waiting promise in route().
29
+ */
30
+ resolveRoute(_component: any, _target: Transferable): void;
31
+ /**
32
+ * WCS rejects or times out a pending route.
33
+ * Fires 'transfer-rejected'; subclasses may trigger fallback routing.
34
+ */
35
+ rejectRoute(component: any, reason?: string): void;
36
+ attachPointFor(component: any): CarrierAttachPoint | null;
37
+ /** Count children currently assigned to `slotId`. */
38
+ _countOccupied(slotId: string): number;
39
+ };
40
+ } & TBase;
41
+ export {};
42
+ //# sourceMappingURL=container-capacity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-capacity.d.ts","sourceRoot":"","sources":["../../src/transfer/container-capacity.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGjH,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,oBAAoB,CAAA;AAElD,KAAK,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAExD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,SAAS,WAAW,EAAE,IAAI,EAAE,KAAK;kBAR3B,GAAG,EAAE;QAa9C,mDAAmD;qBACtC,OAAO,EAAE;QAItB;;;WAGG;mCACwB,mBAAmB;8BAMxB,GAAG,GAAG,OAAO;4BAKf,GAAG,GAAG,OAAO,GAAG,IAAI;2BAsBf,GAAG,YAAW,eAAe,GAAQ,OAAO,CAAC,IAAI,CAAC;4BA+DjD,GAAG,UAAU,YAAY,YAAW,eAAe,GAAQ,OAAO,CAAC,IAAI,CAAC;0BAuBhF,GAAG,GAAG,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;QAI1E;;;;WAIG;iCACsB,GAAG,WAAW,YAAY,GAAG,IAAI;QAI1D;;;WAGG;+BACoB,GAAG,oBAAwB,IAAI;kCAS5B,GAAG,GAAG,kBAAkB,GAAG,IAAI;QAgBzD,qDAAqD;+BAC9B,MAAM,GAAG,MAAM;;UAMzC"}
@@ -0,0 +1,8 @@
1
+ import type { ArrangementStrategy, SlotDef, Vec3 } from './types.js';
2
+ export declare class FixedSlotStrategy implements ArrangementStrategy {
3
+ positionAt(index: number, slotDef: SlotDef, _occupantCount: number): Vec3 | null;
4
+ capacity(_slotDef: SlotDef): number;
5
+ }
6
+ /** Singleton — FixedSlotStrategy is stateless. */
7
+ export declare const fixedSlotStrategy: FixedSlotStrategy;
8
+ //# sourceMappingURL=fixed-slot-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixed-slot-strategy.d.ts","sourceRoot":"","sources":["../../src/transfer/fixed-slot-strategy.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEpE,qBAAa,iBAAkB,YAAW,mBAAmB;IAC3D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKhF,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM;CAGpC;AAED,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,mBAA0B,CAAA"}
@@ -0,0 +1,7 @@
1
+ export type { Vec3, Size3, Bounds3, SlotArrangement, GridShape, SlotDef, SlotAssignment, TransferOptions, StaticPolicy, DynamicPolicy, PendingPolicy, ConnectionPolicy, Port, TransferEventType, TransferEvent, CarrierAttachPoint, ArrangementStrategy, Transferable, NavigationTarget, NavigationOptions, Movable, ArticulatedCapability, MissionStatus, VehicleMission, MissionExecutor, SensorPoint, SpawnPoint, SinkPoint } from './types.js';
2
+ export { FixedSlotStrategy, fixedSlotStrategy } from './fixed-slot-strategy.js';
3
+ export { CenteringSlotStrategy } from './centering-slot-strategy.js';
4
+ export { ContainerCapacity, TRANSFER_SLOT_KEY } from './container-capacity.js';
5
+ export type { SimulationClock } from './simulation-clock.js';
6
+ export { globalSimClock } from './simulation-clock.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,IAAI,EACJ,KAAK,EACL,OAAO,EACP,eAAe,EACf,SAAS,EACT,OAAO,EACP,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,IAAI,EACJ,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,45 @@
1
+ export interface SimulationClock {
2
+ /**
3
+ * Simulated time elapsed since clock creation (ms).
4
+ * Advances only when speed > 0 and the clock is running.
5
+ */
6
+ readonly now: number;
7
+ /**
8
+ * Time scale factor.
9
+ * 1.0 = real-time
10
+ * 2.0 = double speed
11
+ * 0 = paused (tick() returns 0, now stays fixed)
12
+ * Setting speed resumes a paused clock.
13
+ */
14
+ speed: number;
15
+ readonly isPaused: boolean;
16
+ pause(): void;
17
+ resume(): void;
18
+ /**
19
+ * Called from a requestAnimationFrame loop with the real wall-clock delta.
20
+ * Returns the scaled simulation delta that components should use for physics.
21
+ *
22
+ * If paused (speed === 0), returns 0 and does not advance `now`.
23
+ * Clamps realDeltaMs to 200 ms to prevent spiral-of-death on tab resume.
24
+ */
25
+ tick(realDeltaMs: number): number;
26
+ /**
27
+ * Advance the clock by exactly `dt` simulation milliseconds, bypassing speed.
28
+ * Intended for unit tests and deterministic replay — do NOT call from RAF.
29
+ */
30
+ step(dt: number): void;
31
+ /** Register a listener called after each tick / step with the scaled delta. */
32
+ onTick(listener: (dt: number) => void): () => void;
33
+ }
34
+ /**
35
+ * The scene-wide SimulationClock instance.
36
+ *
37
+ * ConveyanceContainer, Mover and all time-dependent mixins call:
38
+ * const dt = globalSimClock.tick(realDeltaMs)
39
+ *
40
+ * Tests use:
41
+ * globalSimClock.step(100) // advance 100 ms deterministically
42
+ * globalSimClock.speed = 5 // run at 5× for the next tick
43
+ */
44
+ export declare const globalSimClock: SimulationClock;
45
+ //# sourceMappingURL=simulation-clock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulation-clock.d.ts","sourceRoot":"","sources":["../../src/transfer/simulation-clock.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAEpB;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAE1B,KAAK,IAAI,IAAI,CAAA;IACb,MAAM,IAAI,IAAI,CAAA;IAEd;;;;;;OAMG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;IAEjC;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAEtB,+EAA+E;IAC/E,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CACnD;AAyDD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,eAAwC,CAAA"}
@@ -0,0 +1,285 @@
1
+ export type Vec3 = {
2
+ x: number;
3
+ y: number;
4
+ z: number;
5
+ };
6
+ export type Size3 = {
7
+ width: number;
8
+ height: number;
9
+ depth: number;
10
+ };
11
+ export type Bounds3 = Vec3 & Size3;
12
+ /**
13
+ * How items are arranged within a slot.
14
+ * 'single' — one item, fixed position (fork tip, TCP, simple cell)
15
+ * 'stack-y' — items stacked along +Y (crane forks, pallet stack)
16
+ * 'queue-z' — items queued along +Z / belt axis (conveyor)
17
+ * 'grid-xz' — items arranged in an XZ grid (AGV deck, pallet)
18
+ */
19
+ export type SlotArrangement = 'single' | 'stack-y' | 'queue-z' | 'grid-xz';
20
+ /** Optional grid dimensions for 'grid-xz' arrangement. */
21
+ export type GridShape = {
22
+ cols: number;
23
+ rows: number;
24
+ };
25
+ /** Describes one logical slot within a Transferable container. */
26
+ export interface SlotDef {
27
+ id: string;
28
+ /** Local position of the slot origin within the container (scene units). */
29
+ localPosition?: Vec3;
30
+ localRotation?: Vec3;
31
+ /** Component types that may occupy this slot. Empty = any type allowed. */
32
+ allowedTypes?: string[];
33
+ /** Maximum occupant count (default 1). */
34
+ maxCount?: number;
35
+ arrangement?: SlotArrangement;
36
+ gridShape?: GridShape;
37
+ }
38
+ /** Runtime assignment — which slot a component currently occupies. */
39
+ export interface SlotAssignment {
40
+ slotId: string;
41
+ index: number;
42
+ }
43
+ export interface TransferOptions {
44
+ slotId?: string;
45
+ animated?: boolean;
46
+ duration?: number;
47
+ ease?: string;
48
+ }
49
+ /**
50
+ * Pre-wired to a fixed component reference; resolved at design time.
51
+ * Used for static conveyors and fixed-route connections.
52
+ */
53
+ export interface StaticPolicy {
54
+ kind: 'static';
55
+ targetRef: string;
56
+ }
57
+ /**
58
+ * Target resolved at runtime by evaluating an expression against the board model.
59
+ * Used for dynamic routing (sorter lane logic, WCS-driven divert).
60
+ */
61
+ export interface DynamicPolicy {
62
+ kind: 'dynamic';
63
+ resolverExpr: string;
64
+ }
65
+ /**
66
+ * Transfer is suspended until an external signal (WCS/MES event) resolves.
67
+ * The component waits at the port; a timeout fires fallback after `timeoutMs`.
68
+ */
69
+ export interface PendingPolicy {
70
+ kind: 'pending';
71
+ timeoutMs?: number;
72
+ fallbackRef?: string;
73
+ }
74
+ export type ConnectionPolicy = StaticPolicy | DynamicPolicy | PendingPolicy;
75
+ /** Directional connection point on a Transferable component. */
76
+ export interface Port {
77
+ id: string;
78
+ direction: 'input' | 'output';
79
+ slotId?: string;
80
+ policy?: ConnectionPolicy;
81
+ }
82
+ export type TransferEventType = 'transfer-received' | 'transfer-dispatched' | 'transfer-pending' | 'transfer-routed' | 'transfer-rejected';
83
+ export interface TransferEvent {
84
+ type: TransferEventType;
85
+ component: any;
86
+ container: any;
87
+ slotId?: string;
88
+ target?: any;
89
+ reason?: string;
90
+ }
91
+ /** The 3D attach frame that a carrier exposes for its payload. */
92
+ export interface CarrierAttachPoint {
93
+ position: Vec3;
94
+ rotation: Vec3;
95
+ slotId: string;
96
+ }
97
+ /**
98
+ * Determines WHERE within a slot a new item should be placed, and how
99
+ * existing items are laid out as occupancy changes.
100
+ *
101
+ * Implementations live in scene-base (FixedSlot, Stack, Queue, Grid, Shelf, Gravity).
102
+ * things-scene ships a minimal FixedSlotStrategy as the default.
103
+ */
104
+ export interface ArrangementStrategy {
105
+ /**
106
+ * Returns the local position (left/top/z) for the item within the container.
107
+ * `component` is the item being placed — strategies may use its state.width/height
108
+ * to compute dimension-aware positions (e.g. centering).
109
+ * Returns null if no position should be applied (use current/world-preserved position).
110
+ */
111
+ positionAt(index: number, slotDef: SlotDef, occupantCount: number, component?: any): Vec3 | null;
112
+ /** Maximum number of items this strategy can hold in one slot. */
113
+ capacity(slotDef: SlotDef): number;
114
+ }
115
+ /**
116
+ * The central abstraction for anything that can receive and dispatch components.
117
+ *
118
+ * ALL domain-specific verbs (pick/place, induct/eject, store/retrieve, fetch/deposit)
119
+ * are aliases that ultimately delegate to `receive()` and `dispatch()`.
120
+ *
121
+ * Implementors must be ContainerAbstract subclasses so that `reparent()` is available.
122
+ */
123
+ export interface Transferable {
124
+ /**
125
+ * Pure, synchronous capacity check.
126
+ * Must NOT mutate state — called on every drag-over frame.
127
+ */
128
+ canReceive(component: any): boolean;
129
+ /** Returns the best available SlotDef for `component`, or null if none. */
130
+ findSlot(component: any): SlotDef | null;
131
+ /** Reparent `component` into this container. Fires 'transfer-received'. */
132
+ receive(component: any, options?: TransferOptions): Promise<void> | void;
133
+ /** Move `component` to `target.receive()`. Fires 'transfer-dispatched'. */
134
+ dispatch(component: any, target: Transferable, options?: TransferOptions): Promise<void> | void;
135
+ /**
136
+ * Determine the next target for `component`.
137
+ * Returns null → triggers 'transfer-pending' event.
138
+ * May be async for WCS-driven (pending) routing.
139
+ */
140
+ route(component: any): Transferable | null | Promise<Transferable | null>;
141
+ /**
142
+ * WCS / MES resolves a previously pending route by providing the target.
143
+ * Call path: WCS event → scene.findById(id).resolveRoute(component, target)
144
+ */
145
+ resolveRoute(component: any, target: Transferable): void;
146
+ /**
147
+ * WCS / MES rejects or times out a pending route.
148
+ * Triggers fallback ref (PendingPolicy.fallbackRef) or 'transfer-rejected'.
149
+ */
150
+ rejectRoute(component: any, reason?: string): void;
151
+ /** Returns the 3D attach frame for a payload held in this container. */
152
+ attachPointFor(component: any): CarrierAttachPoint | null;
153
+ }
154
+ /**
155
+ * The destination a Movable navigates toward.
156
+ * - component: dock beside another Transferable (e.g. conveyor input port)
157
+ * - point: absolute scene-unit coordinate
158
+ * - node: named node in a pre-defined graph (AGV / OHT)
159
+ */
160
+ export type NavigationTarget = {
161
+ kind: 'component';
162
+ ref: Transferable;
163
+ } | {
164
+ kind: 'point';
165
+ pos: Vec3;
166
+ } | {
167
+ kind: 'node';
168
+ nodeId: string;
169
+ };
170
+ export interface NavigationOptions {
171
+ speed?: number;
172
+ arriveThreshold?: number;
173
+ }
174
+ /**
175
+ * Self-navigation capability for vehicles (Forklift, AGV, AMR, OHT).
176
+ * The vehicle's whole body moves to the destination, then Transfer happens.
177
+ *
178
+ * Contrast with ArticulatedCapability where only the internal mechanism moves.
179
+ */
180
+ export interface Movable {
181
+ navigate(destination: NavigationTarget, options?: NavigationOptions): Promise<void>;
182
+ stop(): void;
183
+ readonly position: Vec3;
184
+ readonly isMoving: boolean;
185
+ /** Determines which NavigationStrategy is used. */
186
+ readonly navigationMode: 'graph' | 'free' | 'constrained';
187
+ }
188
+ /**
189
+ * Capability for devices whose internal mechanism (arm, mast, fork carriage)
190
+ * extends to reach a pickup/dropoff point — without moving the device body.
191
+ *
192
+ * Used by: RobotArm (6-DOF IK), ASRSCrane (XY rail), BridgeCrane (XYZ gantry),
193
+ * Lift/Hoist (Y-axis), linear Manipulator.
194
+ *
195
+ * Contrast with Movable where the whole vehicle navigates to the destination.
196
+ */
197
+ export interface ArticulatedCapability {
198
+ /**
199
+ * Extend the internal mechanism so the end-effector reaches `target`.
200
+ * Resolves when the end-effector arrives at the target position.
201
+ */
202
+ reach(target: Transferable | Vec3, options?: TransferOptions): Promise<void>;
203
+ /**
204
+ * Retract the mechanism to its safe / home position.
205
+ * `home: true` returns to the configured homePosition / homeJoints state.
206
+ */
207
+ retract(options?: {
208
+ home?: boolean;
209
+ duration?: number;
210
+ }): Promise<void>;
211
+ /** Current end-effector position (TCP, hook, fork tip) in scene coordinates. */
212
+ readonly endEffectorPosition: Vec3;
213
+ /** Kinematic workspace check — false means reach() would fail or collide. */
214
+ canReach(target: Transferable | Vec3): boolean;
215
+ }
216
+ export type MissionStatus = 'queued' | 'navigating-to-pickup' | 'picking' | 'navigating-to-dropoff' | 'placing' | 'done' | 'failed';
217
+ export interface VehicleMission {
218
+ readonly id: string;
219
+ readonly pickupTarget: Transferable;
220
+ readonly dropoffTarget: Transferable;
221
+ readonly priority: number;
222
+ /** Filled after a successful pick (receive). */
223
+ payload?: any;
224
+ status: MissionStatus;
225
+ /** simClock.now at mission start. */
226
+ readonly startedAt?: number;
227
+ readonly completedAt?: number;
228
+ readonly failReason?: string;
229
+ }
230
+ /**
231
+ * Manages an ordered queue of VehicleMissions for a single vehicle.
232
+ * Missions execute one at a time; the queue is drained in priority order.
233
+ */
234
+ export interface MissionExecutor {
235
+ /** Add a mission to the queue. Resolves when the mission reaches 'done'. */
236
+ enqueue(mission: Omit<VehicleMission, 'id' | 'status'>): Promise<VehicleMission>;
237
+ /** Cancel a queued or in-progress mission by ID. */
238
+ cancel(missionId: string): void;
239
+ readonly currentMission: VehicleMission | null;
240
+ readonly missionQueue: readonly VehicleMission[];
241
+ }
242
+ /**
243
+ * A virtual sensor mounted on a Transferable container (conveyor, rack gate, etc.).
244
+ * When a component passes through its detection zone, it fires a scene event
245
+ * that WCS uses to make routing decisions (→ resolveRoute / rejectRoute).
246
+ *
247
+ * Common use: sorter entry sensor triggers PendingPolicy, WCS decides lane.
248
+ */
249
+ export interface SensorPoint {
250
+ readonly id: string;
251
+ /** Local position within the parent container (scene units). */
252
+ readonly localPosition: Vec3;
253
+ readonly sensorType: 'presence' | 'identity' | 'weight';
254
+ /** Detection radius (scene units). Default: component bounding-box overlap. */
255
+ readonly detectionRadius?: number;
256
+ /** Called when a component enters the detection zone. */
257
+ onDetect(component: any): void;
258
+ }
259
+ /**
260
+ * SpawnPoint: where cargo enters the simulation.
261
+ * Creates components and injects them into the connected Transferable chain.
262
+ * Examples: production line end, receiving dock, WCS inject command.
263
+ */
264
+ export interface SpawnPoint extends Transferable {
265
+ /** Create a new component of `type` and route it into the system. */
266
+ spawn(type: string, initialState?: Record<string, any>): any;
267
+ /** Components generated per simulated minute. */
268
+ readonly spawnRate: number;
269
+ readonly spawnPattern: 'uniform' | 'burst' | 'schedule';
270
+ }
271
+ /**
272
+ * SinkPoint: where cargo leaves the simulation.
273
+ * Calling receive() on a SinkPoint removes the component from the scene
274
+ * and increments throughput counters.
275
+ * Examples: shipping dock, quality-pass exit, virtual out-gate.
276
+ */
277
+ export interface SinkPoint extends Transferable {
278
+ /** Total components consumed since simulation start. */
279
+ readonly throughput: number;
280
+ /** Components per simulated hour (rolling average). */
281
+ readonly throughputPerHour: number;
282
+ /** simClock.now of the last received component. */
283
+ readonly lastReceivedAt: number;
284
+ }
285
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transfer/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ interface WorldState {
2
+ x: number;
3
+ y: number;
4
+ rotation: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ interface State3D {
9
+ pos: any;
10
+ quat: any;
11
+ fromScale?: {
12
+ x: number;
13
+ y: number;
14
+ z: number;
15
+ };
16
+ toScale?: {
17
+ x: number;
18
+ y: number;
19
+ z: number;
20
+ };
21
+ }
22
+ interface ReparentState {
23
+ fromWorld?: WorldState;
24
+ toWorld?: WorldState;
25
+ from3D?: State3D;
26
+ to3D?: State3D;
27
+ duration: number;
28
+ startTime: number;
29
+ progress: number;
30
+ keepSuppressed?: boolean;
31
+ }
32
+ /**
33
+ * TransitionEffect — reparent 전환의 모든 것을 소유한다.
34
+ *
35
+ * - 상태: Map<Component, ReparentState>
36
+ * - 타이밍: 자체 RAF loop
37
+ * - 2D 렌더링: transition canvas (lazy 생성/제거)
38
+ * - 3D 보간: object3d position/quaternion 직접 조작
39
+ * - 정리: suppressTransform 해제, canvas 제거
40
+ */
41
+ export default class TransitionEffect {
42
+ private active;
43
+ private rafId;
44
+ private root;
45
+ private _canvas;
46
+ private _ctx;
47
+ constructor(root: any);
48
+ isReparenting(component: any): boolean;
49
+ getState(component: any): ReparentState | null;
50
+ begin(component: any, options: {
51
+ fromWorld?: WorldState;
52
+ toWorld?: WorldState;
53
+ from3D?: State3D;
54
+ to3D?: State3D;
55
+ duration: number;
56
+ ease?: string;
57
+ /**
58
+ * When true, cleanup3D() will NOT reset suppressTransform to false and will
59
+ * NOT call realObj.update(). Use this when the caller's own tick loop takes
60
+ * over position control after the transition.
61
+ */
62
+ keepSuppressed?: boolean;
63
+ }): void;
64
+ cancel(component: any): void;
65
+ /**
66
+ * 2D transition canvas에 렌더링 — postrender()에서 호출
67
+ */
68
+ renderComponent(component: any, modelLayer: any): void;
69
+ /**
70
+ * draw cycle 시작 시 호출 — canvas clear
71
+ */
72
+ beginDraw(): void;
73
+ /**
74
+ * draw cycle 종료 시 호출 — canvas restore
75
+ */
76
+ endDraw(): void;
77
+ /**
78
+ * model-layer resize 시 호출 — canvas 크기 동기화
79
+ */
80
+ resize(): void;
81
+ dispose(): void;
82
+ private ensureCanvas;
83
+ private removeCanvas;
84
+ private startLoop;
85
+ private stopLoop;
86
+ private tick;
87
+ private complete;
88
+ private cleanup3D;
89
+ }
90
+ export {};
91
+ //# sourceMappingURL=transition-effect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transition-effect.d.ts","sourceRoot":"","sources":["../../src/transition/transition-effect.ts"],"names":[],"mappings":"AAcA,UAAU,UAAU;IAClB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,UAAU,OAAO;IACf,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,GAAG,CAAA;IACT,SAAS,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,OAAO,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9C;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,IAAI,CAAK;IAGjB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,IAAI,CAAwC;gBAExC,IAAI,EAAE,GAAG;IAMrB,aAAa,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO;IAItC,QAAQ,CAAC,SAAS,EAAE,GAAG,GAAG,aAAa,GAAG,IAAI;IAI9C,KAAK,CACH,SAAS,EAAE,GAAG,EACd,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,UAAU,CAAA;QACtB,OAAO,CAAC,EAAE,UAAU,CAAA;QACpB,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb;;;;WAIG;QACH,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB,GACA,IAAI;IAgDP,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;IAK5B;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI;IAoCtD;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,MAAM,IAAI,IAAI;IASd,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;IAoDZ,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,SAAS;CAalB"}
@@ -1,4 +1,4 @@
1
- export type Position = 'static' | 'absolute' | 'relative';
1
+ export type Position = 'static' | 'absolute' | 'relative' | 'popup';
2
2
  export interface Bounds {
3
3
  left: number;
4
4
  top: number;
@@ -1 +1 @@
1
- {"version":3,"file":"bounding.d.ts","sourceRoot":"","sources":["../../src/types/bounding.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;AAEzD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GACd,UAAU,GACV,aAAa,GACb,aAAa,GACb,YAAY,GACZ,eAAe,GACf,eAAe,GACf,WAAW,GACX,cAAc,GACd,cAAc,CAAA;AAElB;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,KAAK,EAAE,CAAA;AAE1B;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IAEd,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IAEf,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IAEf,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAA;IAEd,kCAAkC;IAClC,MAAM,EAAE,KAAK,CAAA;IAEb,yDAAyD;IACzD,IAAI,CAAC,EAAE,IAAI,CAAA;IAEX,kFAAkF;IAClF,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAElC,6BAA6B;IAC7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAE3C,+EAA+E;IAC/E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC,4DAA4D;IAC5D,aAAa,IAAI,MAAM,CAAA;IAEvB,yDAAyD;IACzD,qBAAqB,CAAC,IAAI,MAAM,CAAA;CACjC"}
1
+ {"version":3,"file":"bounding.d.ts","sourceRoot":"","sources":["../../src/types/bounding.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAA;AAEnE,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GACd,UAAU,GACV,aAAa,GACb,aAAa,GACb,YAAY,GACZ,eAAe,GACf,eAAe,GACf,WAAW,GACX,cAAc,GACd,cAAc,CAAA;AAElB;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,KAAK,EAAE,CAAA;AAE1B;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IAEd,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IAEf,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IAEf,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAA;IAEd,kCAAkC;IAClC,MAAM,EAAE,KAAK,CAAA;IAEb,yDAAyD;IACzD,IAAI,CAAC,EAAE,IAAI,CAAA;IAEX,kFAAkF;IAClF,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAElC,6BAA6B;IAC7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAE3C,+EAA+E;IAC/E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC,4DAA4D;IAC5D,aAAa,IAAI,MAAM,CAAA;IAEvB,yDAAyD;IACzD,qBAAqB,CAAC,IAAI,MAAM,CAAA;CACjC"}