@hatiolab/things-scene 10.0.0-beta.10 → 10.0.0-beta.100

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 (370) 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 +5 -3
  4. package/dist-types/animation/animations/animation.d.ts.map +1 -1
  5. package/dist-types/animation/animations/heartbeat.d.ts +0 -7
  6. package/dist-types/animation/animations/heartbeat.d.ts.map +1 -1
  7. package/dist-types/animation/animations/waypoint.d.ts +45 -4
  8. package/dist-types/animation/animations/waypoint.d.ts.map +1 -1
  9. package/dist-types/animation/interfaces.d.ts +1 -1
  10. package/dist-types/animation/interfaces.d.ts.map +1 -1
  11. package/dist-types/clock/frame-clock.d.ts +119 -0
  12. package/dist-types/clock/frame-clock.d.ts.map +1 -0
  13. package/dist-types/clock/index.d.ts +3 -0
  14. package/dist-types/clock/index.d.ts.map +1 -0
  15. package/dist-types/command/command-migrate.d.ts.map +1 -1
  16. package/dist-types/command/snapshot-commander.d.ts.map +1 -1
  17. package/dist-types/components/audio.d.ts +7 -3
  18. package/dist-types/components/audio.d.ts.map +1 -1
  19. package/dist-types/components/component-data.d.ts +24 -0
  20. package/dist-types/components/component-data.d.ts.map +1 -1
  21. package/dist-types/components/component-geometry.d.ts.map +1 -1
  22. package/dist-types/components/component.d.ts +14 -4
  23. package/dist-types/components/component.d.ts.map +1 -1
  24. package/dist-types/components/container-abstract.d.ts +48 -7
  25. package/dist-types/components/container-abstract.d.ts.map +1 -1
  26. package/dist-types/components/container.d.ts +6 -2
  27. package/dist-types/components/container.d.ts.map +1 -1
  28. package/dist-types/components/data/data.d.ts.map +1 -1
  29. package/dist-types/components/drawer/fill.d.ts.map +1 -1
  30. package/dist-types/components/drawer/stroke.d.ts.map +1 -1
  31. package/dist-types/components/ellipse.d.ts +7 -3
  32. package/dist-types/components/ellipse.d.ts.map +1 -1
  33. package/dist-types/components/generic-placeholders.d.ts +291 -0
  34. package/dist-types/components/generic-placeholders.d.ts.map +1 -0
  35. package/dist-types/components/geometry/snap-guide.d.ts +45 -0
  36. package/dist-types/components/geometry/snap-guide.d.ts.map +1 -0
  37. package/dist-types/components/geometry/transcoord.d.ts.map +1 -1
  38. package/dist-types/components/global-ref.d.ts.map +1 -1
  39. package/dist-types/components/group.d.ts +1 -0
  40. package/dist-types/components/group.d.ts.map +1 -1
  41. package/dist-types/components/html/shadow.d.ts +33 -1
  42. package/dist-types/components/html/shadow.d.ts.map +1 -1
  43. package/dist-types/components/html-overlay-container.d.ts +6 -2
  44. package/dist-types/components/html-overlay-container.d.ts.map +1 -1
  45. package/dist-types/components/html-overlay-element.d.ts +13 -5
  46. package/dist-types/components/html-overlay-element.d.ts.map +1 -1
  47. package/dist-types/components/image-view.d.ts +7 -3
  48. package/dist-types/components/image-view.d.ts.map +1 -1
  49. package/dist-types/components/index.d.ts +6 -0
  50. package/dist-types/components/index.d.ts.map +1 -1
  51. package/dist-types/components/info-window.d.ts +7 -3
  52. package/dist-types/components/info-window.d.ts.map +1 -1
  53. package/dist-types/components/line.d.ts +2 -1
  54. package/dist-types/components/line.d.ts.map +1 -1
  55. package/dist-types/components/local-ref.d.ts +7 -3
  56. package/dist-types/components/local-ref.d.ts.map +1 -1
  57. package/dist-types/components/mixins/connectable.d.ts +7 -3
  58. package/dist-types/components/mixins/connectable.d.ts.map +1 -1
  59. package/dist-types/components/mixins/data-source.d.ts +7 -3
  60. package/dist-types/components/mixins/data-source.d.ts.map +1 -1
  61. package/dist-types/components/mixins/gltf-component.d.ts +280 -0
  62. package/dist-types/components/mixins/gltf-component.d.ts.map +1 -0
  63. package/dist-types/components/mixins/html-element.d.ts +6 -2
  64. package/dist-types/components/mixins/html-element.d.ts.map +1 -1
  65. package/dist-types/components/mixins/move-handle.d.ts +7 -3
  66. package/dist-types/components/mixins/move-handle.d.ts.map +1 -1
  67. package/dist-types/components/mixins/rect-path.d.ts +7 -3
  68. package/dist-types/components/mixins/rect-path.d.ts.map +1 -1
  69. package/dist-types/components/mixins/three-d-only.d.ts +247 -0
  70. package/dist-types/components/mixins/three-d-only.d.ts.map +1 -0
  71. package/dist-types/components/mixins/value-holder.d.ts +7 -3
  72. package/dist-types/components/mixins/value-holder.d.ts.map +1 -1
  73. package/dist-types/components/mutater/path.d.ts.map +1 -1
  74. package/dist-types/components/node.d.ts +7 -3
  75. package/dist-types/components/node.d.ts.map +1 -1
  76. package/dist-types/components/outline/path-outline.d.ts.map +1 -1
  77. package/dist-types/components/polygon.d.ts +2 -0
  78. package/dist-types/components/polygon.d.ts.map +1 -1
  79. package/dist-types/components/polyline.d.ts.map +1 -1
  80. package/dist-types/components/popup-container.d.ts +25 -0
  81. package/dist-types/components/popup-container.d.ts.map +1 -0
  82. package/dist-types/components/popup.d.ts +37 -3
  83. package/dist-types/components/popup.d.ts.map +1 -1
  84. package/dist-types/components/position/popup-position.d.ts +11 -0
  85. package/dist-types/components/position/popup-position.d.ts.map +1 -1
  86. package/dist-types/components/rect.d.ts +14 -6
  87. package/dist-types/components/rect.d.ts.map +1 -1
  88. package/dist-types/components/root-container.d.ts +11 -4
  89. package/dist-types/components/root-container.d.ts.map +1 -1
  90. package/dist-types/components/ruler.d.ts +7 -3
  91. package/dist-types/components/ruler.d.ts.map +1 -1
  92. package/dist-types/components/service-component.d.ts +268 -0
  93. package/dist-types/components/service-component.d.ts.map +1 -0
  94. package/dist-types/components/shape.d.ts.map +1 -1
  95. package/dist-types/components/text.d.ts +7 -3
  96. package/dist-types/components/text.d.ts.map +1 -1
  97. package/dist-types/decorator/decorator-registry.d.ts +4 -0
  98. package/dist-types/decorator/decorator-registry.d.ts.map +1 -1
  99. package/dist-types/decorator/decorators/animated-icon-decorator.d.ts.map +1 -1
  100. package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts.map +1 -1
  101. package/dist-types/decorator/decorators/data-spread-decorator.d.ts +16 -0
  102. package/dist-types/decorator/decorators/data-spread-decorator.d.ts.map +1 -1
  103. package/dist-types/diagnostics/contract-inspector.d.ts +103 -0
  104. package/dist-types/diagnostics/contract-inspector.d.ts.map +1 -0
  105. package/dist-types/diagnostics/data-lag-tracker.d.ts +44 -0
  106. package/dist-types/diagnostics/data-lag-tracker.d.ts.map +1 -0
  107. package/dist-types/diagnostics/inspector.d.ts +58 -4
  108. package/dist-types/diagnostics/inspector.d.ts.map +1 -1
  109. package/dist-types/diagnostics/load-tracker.d.ts +82 -0
  110. package/dist-types/diagnostics/load-tracker.d.ts.map +1 -0
  111. package/dist-types/diagnostics/loading-overlay.d.ts +41 -0
  112. package/dist-types/diagnostics/loading-overlay.d.ts.map +1 -0
  113. package/dist-types/effect/shadow.d.ts +3 -1
  114. package/dist-types/effect/shadow.d.ts.map +1 -1
  115. package/dist-types/event-map/index.d.ts +1 -0
  116. package/dist-types/event-map/index.d.ts.map +1 -1
  117. package/dist-types/event-map/transition-handler.d.ts +2 -0
  118. package/dist-types/event-map/transition-handler.d.ts.map +1 -0
  119. package/dist-types/interfaces/layout.d.ts +35 -1
  120. package/dist-types/interfaces/layout.d.ts.map +1 -1
  121. package/dist-types/interfaces/providers.d.ts +20 -3
  122. package/dist-types/interfaces/providers.d.ts.map +1 -1
  123. package/dist-types/interfaces/real-object.d.ts +8 -1
  124. package/dist-types/interfaces/real-object.d.ts.map +1 -1
  125. package/dist-types/interfaces/rendering.d.ts +86 -14
  126. package/dist-types/interfaces/rendering.d.ts.map +1 -1
  127. package/dist-types/interfaces/types.d.ts +20 -1
  128. package/dist-types/interfaces/types.d.ts.map +1 -1
  129. package/dist-types/layer/action/popup.d.ts +13 -0
  130. package/dist-types/layer/action/popup.d.ts.map +1 -1
  131. package/dist-types/layer/add-layer.d.ts +8 -0
  132. package/dist-types/layer/add-layer.d.ts.map +1 -1
  133. package/dist-types/layer/dual-canvas-layer.d.ts.map +1 -1
  134. package/dist-types/layer/index.d.ts +1 -0
  135. package/dist-types/layer/index.d.ts.map +1 -1
  136. package/dist-types/layer/layer.d.ts +1 -0
  137. package/dist-types/layer/layer.d.ts.map +1 -1
  138. package/dist-types/layer/model-layer.d.ts +67 -7
  139. package/dist-types/layer/model-layer.d.ts.map +1 -1
  140. package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
  141. package/dist-types/layer/modeling-layer.d.ts.map +1 -1
  142. package/dist-types/layer/selection/selected-finder.d.ts +1 -1
  143. package/dist-types/layer/selection/selected-finder.d.ts.map +1 -1
  144. package/dist-types/layer/selection-layer.d.ts.map +1 -1
  145. package/dist-types/layer/snap-guide-layer.d.ts +23 -0
  146. package/dist-types/layer/snap-guide-layer.d.ts.map +1 -0
  147. package/dist-types/layout/absolute.d.ts +2 -2
  148. package/dist-types/layout/card.d.ts +2 -2
  149. package/dist-types/layout/linear-horizontal.d.ts +2 -2
  150. package/dist-types/layout/linear-vertical.d.ts +2 -2
  151. package/dist-types/layout/table.d.ts +3 -3
  152. package/dist-types/math/component-pose.d.ts +51 -0
  153. package/dist-types/math/component-pose.d.ts.map +1 -0
  154. package/dist-types/math/index.d.ts +3 -0
  155. package/dist-types/math/index.d.ts.map +1 -0
  156. package/dist-types/math/pose6dof.d.ts +93 -0
  157. package/dist-types/math/pose6dof.d.ts.map +1 -0
  158. package/dist-types/navigation/index.d.ts +7 -0
  159. package/dist-types/navigation/index.d.ts.map +1 -0
  160. package/dist-types/navigation/nav-graph.d.ts +55 -0
  161. package/dist-types/navigation/nav-graph.d.ts.map +1 -0
  162. package/dist-types/navigation/path-planner.d.ts +29 -0
  163. package/dist-types/navigation/path-planner.d.ts.map +1 -0
  164. package/dist-types/navigation/reservation-table.d.ts +103 -0
  165. package/dist-types/navigation/reservation-table.d.ts.map +1 -0
  166. package/dist-types/navigation/types.d.ts +145 -0
  167. package/dist-types/navigation/types.d.ts.map +1 -0
  168. package/dist-types/placement/index.d.ts +3 -0
  169. package/dist-types/placement/index.d.ts.map +1 -0
  170. package/dist-types/placement/placement.d.ts +53 -0
  171. package/dist-types/placement/placement.d.ts.map +1 -0
  172. package/dist-types/search/index.d.ts +3 -0
  173. package/dist-types/search/index.d.ts.map +1 -0
  174. package/dist-types/search/scene-search-engine.d.ts +65 -0
  175. package/dist-types/search/scene-search-engine.d.ts.map +1 -0
  176. package/dist-types/search/search-overlay.d.ts +95 -0
  177. package/dist-types/search/search-overlay.d.ts.map +1 -0
  178. package/dist-types/things-scene/api/add-start.d.ts +25 -0
  179. package/dist-types/things-scene/api/add-start.d.ts.map +1 -1
  180. package/dist-types/things-scene/api/align.d.ts.map +1 -1
  181. package/dist-types/things-scene/api/distribute.d.ts.map +1 -1
  182. package/dist-types/things-scene/api/ids.d.ts +4 -1
  183. package/dist-types/things-scene/api/ids.d.ts.map +1 -1
  184. package/dist-types/things-scene/api/index.d.ts +1 -1
  185. package/dist-types/things-scene/api/index.d.ts.map +1 -1
  186. package/dist-types/things-scene/api/place.d.ts.map +1 -1
  187. package/dist-types/things-scene/application-context.d.ts +52 -0
  188. package/dist-types/things-scene/application-context.d.ts.map +1 -1
  189. package/dist-types/things-scene/create.d.ts +44 -3
  190. package/dist-types/things-scene/create.d.ts.map +1 -1
  191. package/dist-types/things-scene/index.d.ts +24 -0
  192. package/dist-types/things-scene/index.d.ts.map +1 -1
  193. package/dist-types/things-scene/scene.d.ts +108 -2
  194. package/dist-types/things-scene/scene.d.ts.map +1 -1
  195. package/dist-types/threed/arrow-3d.d.ts +13 -4
  196. package/dist-types/threed/arrow-3d.d.ts.map +1 -1
  197. package/dist-types/threed/environments/base-environment.d.ts +17 -0
  198. package/dist-types/threed/environments/base-environment.d.ts.map +1 -0
  199. package/dist-types/threed/environments/cloudy-environment.d.ts +10 -0
  200. package/dist-types/threed/environments/cloudy-environment.d.ts.map +1 -0
  201. package/dist-types/threed/environments/factory-environment.d.ts +3 -3
  202. package/dist-types/threed/environments/factory-environment.d.ts.map +1 -1
  203. package/dist-types/threed/environments/home-environment.d.ts +3 -3
  204. package/dist-types/threed/environments/home-environment.d.ts.map +1 -1
  205. package/dist-types/threed/environments/office-environment.d.ts +3 -3
  206. package/dist-types/threed/environments/office-environment.d.ts.map +1 -1
  207. package/dist-types/threed/environments/rainy-environment.d.ts +10 -0
  208. package/dist-types/threed/environments/rainy-environment.d.ts.map +1 -0
  209. package/dist-types/threed/environments/studio-environment.d.ts +2 -3
  210. package/dist-types/threed/environments/studio-environment.d.ts.map +1 -1
  211. package/dist-types/threed/environments/sunny-environment.d.ts +10 -0
  212. package/dist-types/threed/environments/sunny-environment.d.ts.map +1 -0
  213. package/dist-types/threed/environments/warehouse-environment.d.ts +3 -3
  214. package/dist-types/threed/environments/warehouse-environment.d.ts.map +1 -1
  215. package/dist-types/threed/factories/backdrop.d.ts +535 -0
  216. package/dist-types/threed/factories/backdrop.d.ts.map +1 -0
  217. package/dist-types/threed/factories/banner.d.ts +11 -4
  218. package/dist-types/threed/factories/banner.d.ts.map +1 -1
  219. package/dist-types/threed/factories/camera.d.ts +8 -3
  220. package/dist-types/threed/factories/camera.d.ts.map +1 -1
  221. package/dist-types/threed/factories/cube.d.ts +8 -3
  222. package/dist-types/threed/factories/cube.d.ts.map +1 -1
  223. package/dist-types/threed/factories/cylinder.d.ts +1 -0
  224. package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
  225. package/dist-types/threed/factories/decal.d.ts +512 -0
  226. package/dist-types/threed/factories/decal.d.ts.map +1 -0
  227. package/dist-types/threed/factories/floor-plate.d.ts +11 -0
  228. package/dist-types/threed/factories/floor-plate.d.ts.map +1 -0
  229. package/dist-types/threed/factories/gltf-object.d.ts +264 -38
  230. package/dist-types/threed/factories/gltf-object.d.ts.map +1 -1
  231. package/dist-types/threed/factories/group.d.ts +2 -0
  232. package/dist-types/threed/factories/group.d.ts.map +1 -0
  233. package/dist-types/threed/factories/light.d.ts +1 -0
  234. package/dist-types/threed/factories/light.d.ts.map +1 -1
  235. package/dist-types/threed/factories/line.d.ts +10 -0
  236. package/dist-types/threed/factories/line.d.ts.map +1 -0
  237. package/dist-types/threed/factories/ortholine.d.ts +10 -0
  238. package/dist-types/threed/factories/ortholine.d.ts.map +1 -0
  239. package/dist-types/threed/factories/polygon.d.ts +19 -0
  240. package/dist-types/threed/factories/polygon.d.ts.map +1 -1
  241. package/dist-types/threed/factories/polyline.d.ts +10 -0
  242. package/dist-types/threed/factories/polyline.d.ts.map +1 -0
  243. package/dist-types/threed/factories/rect.d.ts.map +1 -1
  244. package/dist-types/threed/factories/sphere.d.ts +6 -0
  245. package/dist-types/threed/factories/sphere.d.ts.map +1 -1
  246. package/dist-types/threed/factories/sprite.d.ts +8 -3
  247. package/dist-types/threed/factories/sprite.d.ts.map +1 -1
  248. package/dist-types/threed/factories/triangle.d.ts.map +1 -1
  249. package/dist-types/threed/factories/wall.d.ts +8 -3
  250. package/dist-types/threed/factories/wall.d.ts.map +1 -1
  251. package/dist-types/threed/floor/floor.d.ts.map +1 -1
  252. package/dist-types/threed/handle-3d.d.ts +21 -0
  253. package/dist-types/threed/handle-3d.d.ts.map +1 -0
  254. package/dist-types/threed/html/elements.d.ts.map +1 -1
  255. package/dist-types/threed/index.d.ts +22 -0
  256. package/dist-types/threed/index.d.ts.map +1 -1
  257. package/dist-types/threed/managers/box-selection-manager.d.ts +26 -0
  258. package/dist-types/threed/managers/box-selection-manager.d.ts.map +1 -0
  259. package/dist-types/threed/managers/camera-bookmark-manager.d.ts +127 -0
  260. package/dist-types/threed/managers/camera-bookmark-manager.d.ts.map +1 -0
  261. package/dist-types/threed/managers/camera-manager.d.ts +9 -3
  262. package/dist-types/threed/managers/camera-manager.d.ts.map +1 -1
  263. package/dist-types/threed/managers/controls-manager.d.ts +25 -4
  264. package/dist-types/threed/managers/controls-manager.d.ts.map +1 -1
  265. package/dist-types/threed/managers/event-manager3d.d.ts +8 -0
  266. package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
  267. package/dist-types/threed/managers/gizmo-manager.d.ts +6 -0
  268. package/dist-types/threed/managers/gizmo-manager.d.ts.map +1 -1
  269. package/dist-types/threed/managers/gizmo-operation-manager.d.ts +55 -1
  270. package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
  271. package/dist-types/threed/managers/index.d.ts +4 -1
  272. package/dist-types/threed/managers/index.d.ts.map +1 -1
  273. package/dist-types/threed/managers/interaction-manager.d.ts +17 -0
  274. package/dist-types/threed/managers/interaction-manager.d.ts.map +1 -1
  275. package/dist-types/threed/managers/light-manager.d.ts +15 -0
  276. package/dist-types/threed/managers/light-manager.d.ts.map +1 -1
  277. package/dist-types/threed/managers/renderer-manager.d.ts +43 -0
  278. package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
  279. package/dist-types/threed/managers/scene-manager.d.ts +12 -2
  280. package/dist-types/threed/managers/scene-manager.d.ts.map +1 -1
  281. package/dist-types/threed/managers/types.d.ts +5 -2
  282. package/dist-types/threed/managers/types.d.ts.map +1 -1
  283. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +155 -0
  284. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -0
  285. package/dist-types/threed/material-3d.d.ts +5 -2
  286. package/dist-types/threed/material-3d.d.ts.map +1 -1
  287. package/dist-types/threed/ratio-lock-utils.d.ts +9 -0
  288. package/dist-types/threed/ratio-lock-utils.d.ts.map +1 -0
  289. package/dist-types/threed/real-object-dom-element.d.ts +1 -0
  290. package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
  291. package/dist-types/threed/real-object-dom-texture.d.ts +9 -0
  292. package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
  293. package/dist-types/threed/real-object-external-model.d.ts +24 -0
  294. package/dist-types/threed/real-object-external-model.d.ts.map +1 -0
  295. package/dist-types/threed/real-object-extrude.d.ts +16 -1
  296. package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
  297. package/dist-types/threed/real-object-gltf.d.ts +21 -11
  298. package/dist-types/threed/real-object-gltf.d.ts.map +1 -1
  299. package/dist-types/threed/real-object-group.d.ts +2 -0
  300. package/dist-types/threed/real-object-group.d.ts.map +1 -1
  301. package/dist-types/threed/real-object-line.d.ts +83 -0
  302. package/dist-types/threed/real-object-line.d.ts.map +1 -0
  303. package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
  304. package/dist-types/threed/real-object-plane-2d.d.ts +23 -0
  305. package/dist-types/threed/real-object-plane-2d.d.ts.map +1 -1
  306. package/dist-types/threed/real-object-service.d.ts +14 -0
  307. package/dist-types/threed/real-object-service.d.ts.map +1 -0
  308. package/dist-types/threed/real-object-sprite.d.ts +7 -1
  309. package/dist-types/threed/real-object-sprite.d.ts.map +1 -1
  310. package/dist-types/threed/real-object-text.d.ts +5 -0
  311. package/dist-types/threed/real-object-text.d.ts.map +1 -1
  312. package/dist-types/threed/real-object.d.ts +176 -7
  313. package/dist-types/threed/real-object.d.ts.map +1 -1
  314. package/dist-types/threed/text-editor-3d.d.ts +11 -0
  315. package/dist-types/threed/text-editor-3d.d.ts.map +1 -0
  316. package/dist-types/threed/texture/canvas-texture.d.ts +7 -0
  317. package/dist-types/threed/texture/canvas-texture.d.ts.map +1 -1
  318. package/dist-types/threed/texture/fillstyle-texture.d.ts +46 -0
  319. package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -0
  320. package/dist-types/threed/texture/text-texture.d.ts +15 -0
  321. package/dist-types/threed/texture/text-texture.d.ts.map +1 -1
  322. package/dist-types/threed/three-capability.d.ts +148 -6
  323. package/dist-types/threed/three-capability.d.ts.map +1 -1
  324. package/dist-types/threed/three-container.d.ts +0 -1
  325. package/dist-types/threed/three-container.d.ts.map +1 -1
  326. package/dist-types/threed/three-dimensional-container.d.ts +0 -1
  327. package/dist-types/threed/three-dimensional-container.d.ts.map +1 -1
  328. package/dist-types/threed/utils/anchor.d.ts +33 -0
  329. package/dist-types/threed/utils/anchor.d.ts.map +1 -0
  330. package/dist-types/threed/utils/dispose.d.ts.map +1 -1
  331. package/dist-types/threed/utils/tether.d.ts +46 -0
  332. package/dist-types/threed/utils/tether.d.ts.map +1 -0
  333. package/dist-types/threed/z-priority.d.ts +27 -0
  334. package/dist-types/threed/z-priority.d.ts.map +1 -0
  335. package/dist-types/tracker/tracker.d.ts +57 -0
  336. package/dist-types/tracker/tracker.d.ts.map +1 -0
  337. package/dist-types/transfer/centering-slot-strategy.d.ts +8 -0
  338. package/dist-types/transfer/centering-slot-strategy.d.ts.map +1 -0
  339. package/dist-types/transfer/container-capacity.d.ts +342 -0
  340. package/dist-types/transfer/container-capacity.d.ts.map +1 -0
  341. package/dist-types/transfer/fixed-slot-strategy.d.ts +8 -0
  342. package/dist-types/transfer/fixed-slot-strategy.d.ts.map +1 -0
  343. package/dist-types/transfer/index.d.ts +15 -0
  344. package/dist-types/transfer/index.d.ts.map +1 -0
  345. package/dist-types/transfer/pickup-helpers.d.ts +65 -0
  346. package/dist-types/transfer/pickup-helpers.d.ts.map +1 -0
  347. package/dist-types/transfer/simulation-clock.d.ts +45 -0
  348. package/dist-types/transfer/simulation-clock.d.ts.map +1 -0
  349. package/dist-types/transfer/transfer.d.ts +168 -0
  350. package/dist-types/transfer/transfer.d.ts.map +1 -0
  351. package/dist-types/transfer/types.d.ts +389 -0
  352. package/dist-types/transfer/types.d.ts.map +1 -0
  353. package/dist-types/transition/transition-effect.d.ts +97 -0
  354. package/dist-types/transition/transition-effect.d.ts.map +1 -0
  355. package/dist-types/types/bounding.d.ts +1 -1
  356. package/dist-types/types/bounding.d.ts.map +1 -1
  357. package/dist-types/types/component.d.ts +6 -177
  358. package/dist-types/types/component.d.ts.map +1 -1
  359. package/dist-types/types/event.d.ts +57 -0
  360. package/dist-types/types/event.d.ts.map +1 -1
  361. package/dist-types/types/polygon-path-arc.d.ts +72 -0
  362. package/dist-types/types/polygon-path-arc.d.ts.map +1 -0
  363. package/dist-types/types/polygon-path.d.ts +153 -0
  364. package/dist-types/types/polygon-path.d.ts.map +1 -0
  365. package/package.json +12 -1
  366. package/things-scene-min.js +12 -13
  367. package/things-scene-min.js.map +1 -1
  368. package/things-scene-transfer.mjs +6 -0
  369. package/things-scene.mjs +8 -9
  370. package/things-scene.mjs.map +1 -1
@@ -0,0 +1,168 @@
1
+ import type { Transferable, TransferOptions } from './types.js';
2
+ export type TransferPhase = 'pending' | 'planning' | 'physical' | 'handoff' | 'committed' | 'rolled-back';
3
+ export interface TransferTimeline {
4
+ initiatedAt: number;
5
+ planStartAt?: number;
6
+ planEndAt?: number;
7
+ physicalStartAt?: number;
8
+ physicalEndAt?: number;
9
+ handoffAt?: number;
10
+ committedAt?: number;
11
+ }
12
+ export interface TransferReceipt {
13
+ transferId: string;
14
+ source: any;
15
+ target: any;
16
+ carrier: any;
17
+ /** Phase G7 — 직렬화 용. live refs 가 GC 되어도 보존되는 식별자. */
18
+ sourceId?: string;
19
+ targetId?: string;
20
+ carrierId?: string;
21
+ phase: TransferPhase;
22
+ timeline: TransferTimeline;
23
+ slotId?: string;
24
+ rejectReason?: string;
25
+ }
26
+ /**
27
+ * TransferReceipt 의 직렬화 형태 — live ref 제외, ID 만. JSON.stringify 안전.
28
+ * Phase G7 의 snapshot/replay 용.
29
+ */
30
+ export interface TransferReceiptJSON {
31
+ transferId: string;
32
+ sourceId?: string;
33
+ targetId?: string;
34
+ carrierId?: string;
35
+ phase: TransferPhase;
36
+ timeline: TransferTimeline;
37
+ slotId?: string;
38
+ rejectReason?: string;
39
+ }
40
+ /**
41
+ * Receipt 의 plain JSON 변환. live ref 제외, undefined 필드 omit (JSON
42
+ * round-trip 결정성 보장).
43
+ */
44
+ export declare function receiptToJSON(receipt: TransferReceipt): TransferReceiptJSON;
45
+ /**
46
+ * Source 가 physical 단계에서 사용하는 운반 함수. logical-only source
47
+ * (Conveyor.dispatch 등) 는 noop 으로 즉시 resolve.
48
+ *
49
+ * 호출 시점: Transfer 의 physical phase 진입.
50
+ * 반환: physical 운반 완료 (carrier 가 target.deliveryPose 에 도달) 시 resolve.
51
+ */
52
+ export type PhysicalRunner = () => Promise<void>;
53
+ export interface TransferLogStats {
54
+ total: number;
55
+ byPhase: Record<string, number>;
56
+ committed: number;
57
+ rolledBack: number;
58
+ rejectionRate: number;
59
+ avgTransferDurationMs: number;
60
+ }
61
+ export interface TransferInit {
62
+ source: any;
63
+ target: Transferable;
64
+ carrier: any;
65
+ options?: TransferOptions;
66
+ /** physical 운반자 (RobotArm, AGV 등). 미지정 시 즉시 통과. */
67
+ physical?: PhysicalRunner;
68
+ }
69
+ /**
70
+ * Transfer — 한 carrier 의 source → target 이동 사건.
71
+ *
72
+ * 사용:
73
+ * const t = new Transfer({ source, target, carrier, options })
74
+ * const receipt = await t.execute()
75
+ *
76
+ * 또는 Transferable.dispatch 가 내부적으로:
77
+ * const t = new Transfer({ source: this, target, carrier, options })
78
+ * await t.execute()
79
+ */
80
+ export declare class Transfer {
81
+ readonly id: string;
82
+ readonly source: any;
83
+ readonly target: Transferable;
84
+ readonly carrier: any;
85
+ readonly options: TransferOptions;
86
+ readonly physical: PhysicalRunner | null;
87
+ private _phase;
88
+ private _timeline;
89
+ private _slot;
90
+ private _rejectReason?;
91
+ constructor(init: TransferInit);
92
+ get phase(): TransferPhase;
93
+ get timeline(): Readonly<TransferTimeline>;
94
+ /**
95
+ * 5-phase 실행. 각 phase 진입 시 timeline 갱신, 완료 시 receipt 반환.
96
+ *
97
+ * Negotiate / Plan 단계에서 거부 → rolled-back receipt.
98
+ * Physical 단계에서 throw → rolled-back receipt.
99
+ * Handoff 이후 throw 는 일관성 깨질 수 있으므로 그대로 propagate.
100
+ */
101
+ execute(): Promise<TransferReceipt>;
102
+ /**
103
+ * physical / planning 도중 외부 취소. handoff 이후엔 호출 금지 (이미 commit 됨).
104
+ * 현재 구현은 phase 만 표시하고 carrier 의 상태는 건드리지 않음 — physical
105
+ * 운반자가 자체 cancel 책임.
106
+ */
107
+ rollback(): void;
108
+ private _buildReceipt;
109
+ }
110
+ /**
111
+ * 모든 Transfer 의 receipt 를 기록하는 singleton. observability 의 기반.
112
+ * Phase G7 — JSON snapshot/load 지원으로 외부 도구 (Chrome extension 등) 에서
113
+ * 라이브 또는 저장된 로그를 동일하게 시각화할 수 있다.
114
+ */
115
+ declare class TransferLogImpl {
116
+ private _entries;
117
+ private _maxEntries;
118
+ private _listeners;
119
+ append(receipt: TransferReceipt): void;
120
+ /** 모든 receipt 반환 (read-only 사본). */
121
+ entries(): readonly TransferReceipt[];
122
+ /** carrier 별 transfer 이력. live ref 매칭 우선, fallback 으로 carrierId. */
123
+ forCarrier(carrier: any): readonly TransferReceipt[];
124
+ /** carrierId 로 직접 조회 (snapshot 복원 후 등 live ref 가 없을 때). */
125
+ forCarrierId(carrierId: string): readonly TransferReceipt[];
126
+ /** sourceId 로 조회 — 특정 vehicle / source 의 transfer 이력. */
127
+ forSourceId(sourceId: string): readonly TransferReceipt[];
128
+ /** targetId 로 조회 — 특정 holder 의 receive 이력. */
129
+ forTargetId(targetId: string): readonly TransferReceipt[];
130
+ /** phase 별 필터 (e.g. 'rolled-back' 만 — 실패 진단). */
131
+ forPhase(phase: TransferPhase): readonly TransferReceipt[];
132
+ /**
133
+ * sim-time 범위로 필터. transfer 의 initiatedAt 이 [startSimMs, endSimMs] 안에 있는지.
134
+ * 'overlap' 모드 — initiatedAt..committedAt 윈도우가 query 윈도우와 겹치면 포함.
135
+ */
136
+ inTimeRange(startSimMs: number, endSimMs: number, mode?: 'init' | 'overlap'): readonly TransferReceipt[];
137
+ /** rejectReason 별 그룹화 — 실패 패턴 진단. */
138
+ groupByRejectReason(): Map<string, readonly TransferReceipt[]>;
139
+ /** 통계 — 전체 / phase 별 / 거부율 / 평균 transfer 시간 등. */
140
+ stats(): TransferLogStats;
141
+ /** 새 receipt 마다 호출되는 listener 등록. */
142
+ subscribe(listener: (receipt: TransferReceipt) => void): () => void;
143
+ clear(): void;
144
+ setMaxEntries(n: number): void;
145
+ /**
146
+ * 모든 receipt 를 JSON 안전한 plain object 배열로. live ref 제외, ID 만 포함.
147
+ * JSON.stringify(transferLog.toJSON()) 안전.
148
+ */
149
+ toJSON(): TransferReceiptJSON[];
150
+ /**
151
+ * JSON 배열에서 entries 복원 (기존 entries 대체). 외부 viewer (extension) 가
152
+ * 저장된 로그를 로드해서 시각화할 때 사용.
153
+ *
154
+ * 복원된 receipt 는 source/target/carrier 의 live ref 가 undefined — ID 만으로
155
+ * 추적 (forCarrierId, sourceId, targetId 등). listener 에는 알림 안 함 (load
156
+ * 는 silent).
157
+ */
158
+ fromJSON(json: TransferReceiptJSON[]): void;
159
+ /**
160
+ * 저장된 로그를 listener 에게 순서대로 다시 발화 — extension 이 세션 시작 시
161
+ * 기존 entries 도 받고 싶을 때. listener 가 새 receipt 와 replayed receipt 를
162
+ * 구분 못 하므로 호출자가 의도적으로 사용.
163
+ */
164
+ replayTo(listener: (receipt: TransferReceipt) => void): void;
165
+ }
166
+ export declare const transferLog: TransferLogImpl;
167
+ export {};
168
+ //# sourceMappingURL=transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/transfer/transfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,389 @@
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
+ * Quaternion as a plain object {x, y, z, w}. THREE.Quaternion 도 이 인터페이스
99
+ * 만족 — 호출자는 어느 쪽이든 받을 수 있다.
100
+ */
101
+ export interface QuatLike {
102
+ x: number;
103
+ y: number;
104
+ z: number;
105
+ w: number;
106
+ }
107
+ /**
108
+ * Pose6DOF 의 직렬화 형태 (cross-package 호환). things-scene/math 의
109
+ * Pose6DOF.toJSON() 결과와 같은 shape.
110
+ */
111
+ export interface PoseSerialized {
112
+ position: Vec3;
113
+ rotation: QuatLike;
114
+ }
115
+ /**
116
+ * Phase H — carrier 의 진입 정책 (PickupFrame).
117
+ *
118
+ * carrier 가 "어떤 도구가 어디로 어떤 각도로 접근하면 들어올릴 수 있다" 를
119
+ * 선언적으로 표현. holder 측 acceptanceFrame 의 carrier 측 대칭.
120
+ *
121
+ * approach: 도구가 결합 직전 hover 자세 (world Pose6DOF).
122
+ * engage: 도구가 결합 시점 자세 (world Pose6DOF). 보통 carrier 의 entry
123
+ * surface 에 접한 위치.
124
+ * tolerance: trajectory planner 가 활용 — 너무 엄격하면 reroute 빈번.
125
+ * priority: 여러 entry 중 source 가 선택 시 hint (낮을수록 우선).
126
+ *
127
+ * 예시 — pallet 의 두 fork 진입점:
128
+ * { id: 'fork-west', toolType: 'forklift-fork',
129
+ * approach: { position: {x: -300, y: 50, z: 0}, rotation: identity },
130
+ * engage: { position: {x: 0, y: 50, z: 0}, rotation: identity },
131
+ * tolerance: { positionMm: 50, angleDeg: 5 } }
132
+ */
133
+ export interface PickupFrame {
134
+ id: string;
135
+ toolType: string;
136
+ approach: PoseSerialized;
137
+ engage: PoseSerialized;
138
+ tolerance?: {
139
+ positionMm?: number;
140
+ angleDeg?: number;
141
+ };
142
+ priority?: number;
143
+ }
144
+ /**
145
+ * 도구의 자기 소개. carrier 가 pickupFramesFor 로 필터링할 때 활용.
146
+ */
147
+ export interface PickupRequester {
148
+ toolType: string;
149
+ /** 도구의 footprint (forklift fork 길이, gripper 폭 등) — 호환성 검사용. */
150
+ size?: {
151
+ width: number;
152
+ depth: number;
153
+ height?: number;
154
+ };
155
+ }
156
+ /**
157
+ * Pickable — carrier 가 자기 진입 정책을 노출하는 인터페이스.
158
+ *
159
+ * 빈 배열 반환 = "들어올릴 수 없음" (예: 부착된 fixture). source 는 명시적
160
+ * reject 사유 ('un-pickable') 로 응답.
161
+ *
162
+ * pickupFramesFor 는 선택. 정의하면 source 가 자기 도구 type 으로 호출 →
163
+ * carrier 가 그 type 에 맞는 entry 만 반환. 기본 구현은 toolType 으로 단순
164
+ * filter (Phase H reference 구현이 제공).
165
+ */
166
+ export interface Pickable {
167
+ pickupFrames(): PickupFrame[];
168
+ pickupFramesFor?(requester: PickupRequester): PickupFrame[];
169
+ }
170
+ /**
171
+ * Determines WHERE within a slot a new item should be placed, and how
172
+ * existing items are laid out as occupancy changes.
173
+ *
174
+ * Implementations live in scene-base (FixedSlot, Stack, Queue, Grid, Shelf, Gravity).
175
+ * things-scene ships a minimal FixedSlotStrategy as the default.
176
+ */
177
+ export interface ArrangementStrategy {
178
+ /**
179
+ * Returns the local position (left/top/z) for the item within the container.
180
+ * `component` is the item being placed — strategies may use its state.width/height
181
+ * to compute dimension-aware positions (e.g. centering).
182
+ * Returns null if no position should be applied (use current/world-preserved position).
183
+ */
184
+ positionAt(index: number, slotDef: SlotDef, occupantCount: number, component?: any): Vec3 | null;
185
+ /** Maximum number of items this strategy can hold in one slot. */
186
+ capacity(slotDef: SlotDef): number;
187
+ }
188
+ /**
189
+ * The central abstraction for anything that can receive and dispatch components.
190
+ *
191
+ * ALL domain-specific verbs (pick/place, induct/eject, store/retrieve, fetch/deposit)
192
+ * are aliases that ultimately delegate to `receive()` and `dispatch()`.
193
+ *
194
+ * Implementors must be ContainerAbstract subclasses so that `reparent()` is available.
195
+ */
196
+ export interface Transferable {
197
+ /**
198
+ * Pure, synchronous capacity check.
199
+ * Must NOT mutate state — called on every drag-over frame.
200
+ */
201
+ canReceive(component: any): boolean;
202
+ /** Returns the best available SlotDef for `component`, or null if none. */
203
+ findSlot(component: any): SlotDef | null;
204
+ /** Reparent `component` into this container. Fires 'transfer-received'. */
205
+ receive(component: any, options?: TransferOptions): Promise<void> | void;
206
+ /** Move `component` to `target.receive()`. Fires 'transfer-dispatched'. */
207
+ dispatch(component: any, target: Transferable, options?: TransferOptions): Promise<void> | void;
208
+ /**
209
+ * Determine the next target for `component`.
210
+ * Returns null → triggers 'transfer-pending' event.
211
+ * May be async for WCS-driven (pending) routing.
212
+ */
213
+ route(component: any): Transferable | null | Promise<Transferable | null>;
214
+ /**
215
+ * WCS / MES resolves a previously pending route by providing the target.
216
+ * Call path: WCS event → scene.findById(id).resolveRoute(component, target)
217
+ */
218
+ resolveRoute(component: any, target: Transferable): void;
219
+ /**
220
+ * WCS / MES rejects or times out a pending route.
221
+ * Triggers fallback ref (PendingPolicy.fallbackRef) or 'transfer-rejected'.
222
+ */
223
+ rejectRoute(component: any, reason?: string): void;
224
+ /** Returns the 3D attach frame for a payload held in this container. */
225
+ attachPointFor(component: any): CarrierAttachPoint | null;
226
+ /**
227
+ * carrier 가 이 holder 안에서 가져야 할 회전 (parent-local quaternion).
228
+ * 기본값 identity (carrier 의 들어오는 자세 보존).
229
+ * 다음을 override 하는 holder 예시:
230
+ * - InductStation: belt 진행 방향 = sorter forward 와 일치
231
+ * - Sorter carrier: 슬롯의 perimeter tangent
232
+ * - Rack cell: grid 정렬 방향
233
+ */
234
+ acceptanceRotation?(carrier: any, slot?: SlotDef): {
235
+ x: number;
236
+ y: number;
237
+ z: number;
238
+ w: number;
239
+ } | undefined;
240
+ /**
241
+ * canReceive 의 더 풍부한 버전 — 거부 사유까지 명시.
242
+ * 기본 구현은 findSlot 결과로 ok/reason 분기. drag-over UI 가 사유를 표시할
243
+ * 수 있게 함.
244
+ */
245
+ canAccept?(carrier: any): {
246
+ ok: true;
247
+ slot: SlotDef;
248
+ } | {
249
+ ok: false;
250
+ reason: string;
251
+ };
252
+ /**
253
+ * receive 의 새 이름. 동일 동작 — Phase G2 의 contract 명시.
254
+ * 기존 receive 호출자도 작동 (alias).
255
+ */
256
+ accept?(carrier: any, options?: TransferOptions): Promise<void> | void;
257
+ }
258
+ /**
259
+ * The destination a Movable navigates toward.
260
+ * - component: dock beside another Transferable (e.g. conveyor input port)
261
+ * - point: absolute scene-unit coordinate
262
+ * - node: named node in a pre-defined graph (AGV / OHT)
263
+ */
264
+ export type NavigationTarget = {
265
+ kind: 'component';
266
+ ref: Transferable;
267
+ } | {
268
+ kind: 'point';
269
+ pos: Vec3;
270
+ } | {
271
+ kind: 'node';
272
+ nodeId: string;
273
+ };
274
+ export interface NavigationOptions {
275
+ speed?: number;
276
+ arriveThreshold?: number;
277
+ }
278
+ /**
279
+ * Self-navigation capability for vehicles (Forklift, AGV, AMR, OHT).
280
+ * The vehicle's whole body moves to the destination, then Transfer happens.
281
+ *
282
+ * Contrast with ArticulatedCapability where only the internal mechanism moves.
283
+ */
284
+ export interface Movable {
285
+ navigate(destination: NavigationTarget, options?: NavigationOptions): Promise<void>;
286
+ stop(): void;
287
+ readonly position: Vec3;
288
+ readonly isMoving: boolean;
289
+ /** Determines which NavigationStrategy is used. */
290
+ readonly navigationMode: 'graph' | 'free' | 'constrained';
291
+ }
292
+ /**
293
+ * Capability for devices whose internal mechanism (arm, mast, fork carriage)
294
+ * extends to reach a pickup/dropoff point — without moving the device body.
295
+ *
296
+ * Used by: RobotArm (6-DOF IK), ASRSCrane (XY rail), BridgeCrane (XYZ gantry),
297
+ * Lift/Hoist (Y-axis), linear Manipulator.
298
+ *
299
+ * Contrast with Movable where the whole vehicle navigates to the destination.
300
+ */
301
+ export interface ArticulatedCapability {
302
+ /**
303
+ * Extend the internal mechanism so the end-effector reaches `target`.
304
+ * Resolves when the end-effector arrives at the target position.
305
+ */
306
+ reach(target: Transferable | Vec3, options?: TransferOptions): Promise<void>;
307
+ /**
308
+ * Retract the mechanism to its safe / home position.
309
+ * `home: true` returns to the configured homePosition / homeJoints state.
310
+ */
311
+ retract(options?: {
312
+ home?: boolean;
313
+ duration?: number;
314
+ }): Promise<void>;
315
+ /** Current end-effector position (TCP, hook, fork tip) in scene coordinates. */
316
+ readonly endEffectorPosition: Vec3;
317
+ /** Kinematic workspace check — false means reach() would fail or collide. */
318
+ canReach(target: Transferable | Vec3): boolean;
319
+ }
320
+ export type MissionStatus = 'queued' | 'navigating-to-pickup' | 'picking' | 'navigating-to-dropoff' | 'placing' | 'done' | 'failed';
321
+ export interface VehicleMission {
322
+ readonly id: string;
323
+ readonly pickupTarget: Transferable;
324
+ readonly dropoffTarget: Transferable;
325
+ readonly priority: number;
326
+ /** Filled after a successful pick (receive). */
327
+ payload?: any;
328
+ status: MissionStatus;
329
+ /** simClock.now at mission start. */
330
+ readonly startedAt?: number;
331
+ readonly completedAt?: number;
332
+ readonly failReason?: string;
333
+ }
334
+ /**
335
+ * Manages an ordered queue of VehicleMissions for a single vehicle.
336
+ * Missions execute one at a time; the queue is drained in priority order.
337
+ */
338
+ export interface MissionExecutor {
339
+ /** Add a mission to the queue. Resolves when the mission reaches 'done'. */
340
+ enqueue(mission: Omit<VehicleMission, 'id' | 'status'>): Promise<VehicleMission>;
341
+ /** Cancel a queued or in-progress mission by ID. */
342
+ cancel(missionId: string): void;
343
+ readonly currentMission: VehicleMission | null;
344
+ readonly missionQueue: readonly VehicleMission[];
345
+ }
346
+ /**
347
+ * A virtual sensor mounted on a Transferable container (conveyor, rack gate, etc.).
348
+ * When a component passes through its detection zone, it fires a scene event
349
+ * that WCS uses to make routing decisions (→ resolveRoute / rejectRoute).
350
+ *
351
+ * Common use: sorter entry sensor triggers PendingPolicy, WCS decides lane.
352
+ */
353
+ export interface SensorPoint {
354
+ readonly id: string;
355
+ /** Local position within the parent container (scene units). */
356
+ readonly localPosition: Vec3;
357
+ readonly sensorType: 'presence' | 'identity' | 'weight';
358
+ /** Detection radius (scene units). Default: component bounding-box overlap. */
359
+ readonly detectionRadius?: number;
360
+ /** Called when a component enters the detection zone. */
361
+ onDetect(component: any): void;
362
+ }
363
+ /**
364
+ * SpawnPoint: where cargo enters the simulation.
365
+ * Creates components and injects them into the connected Transferable chain.
366
+ * Examples: production line end, receiving dock, WCS inject command.
367
+ */
368
+ export interface SpawnPoint extends Transferable {
369
+ /** Create a new component of `type` and route it into the system. */
370
+ spawn(type: string, initialState?: Record<string, any>): any;
371
+ /** Components generated per simulated minute. */
372
+ readonly spawnRate: number;
373
+ readonly spawnPattern: 'uniform' | 'burst' | 'schedule';
374
+ }
375
+ /**
376
+ * SinkPoint: where cargo leaves the simulation.
377
+ * Calling receive() on a SinkPoint removes the component from the scene
378
+ * and increments throughput counters.
379
+ * Examples: shipping dock, quality-pass exit, virtual out-gate.
380
+ */
381
+ export interface SinkPoint extends Transferable {
382
+ /** Total components consumed since simulation start. */
383
+ readonly throughput: number;
384
+ /** Components per simulated hour (rolling average). */
385
+ readonly throughputPerHour: number;
386
+ /** simClock.now of the last received component. */
387
+ readonly lastReceivedAt: number;
388
+ }
389
+ //# 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,97 @@
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
+ * 매 frame slerp 후 obj3d.local.quat 을 inv(parent.world.quat) × worldQuatLock 으로
23
+ * 덮어써서 **world rotation 고정**. transition 동안 부모(예: cross-belt proxy)가
24
+ * 움직여도 박스의 절대 자세 보존. to3D 에만 지정해도 동작.
25
+ */
26
+ worldQuatLock?: any;
27
+ }
28
+ interface ReparentState {
29
+ fromWorld?: WorldState;
30
+ toWorld?: WorldState;
31
+ from3D?: State3D;
32
+ to3D?: State3D;
33
+ duration: number;
34
+ startTime: number;
35
+ progress: number;
36
+ keepSuppressed?: boolean;
37
+ }
38
+ /**
39
+ * TransitionEffect — reparent 전환의 모든 것을 소유한다.
40
+ *
41
+ * - 상태: Map<Component, ReparentState>
42
+ * - 타이밍: 자체 RAF loop
43
+ * - 2D 렌더링: transition canvas (lazy 생성/제거)
44
+ * - 3D 보간: object3d position/quaternion 직접 조작
45
+ * - 정리: suppressTransform 해제, canvas 제거
46
+ */
47
+ export default class TransitionEffect {
48
+ private active;
49
+ private unsubscribeTick;
50
+ private root;
51
+ private _canvas;
52
+ private _ctx;
53
+ constructor(root: any);
54
+ isReparenting(component: any): boolean;
55
+ getState(component: any): ReparentState | null;
56
+ begin(component: any, options: {
57
+ fromWorld?: WorldState;
58
+ toWorld?: WorldState;
59
+ from3D?: State3D;
60
+ to3D?: State3D;
61
+ duration: number;
62
+ ease?: string;
63
+ /**
64
+ * When true, cleanup3D() will NOT reset suppressTransform to false and will
65
+ * NOT call realObj.update(). Use this when the caller's own tick loop takes
66
+ * over position control after the transition.
67
+ */
68
+ keepSuppressed?: boolean;
69
+ }): void;
70
+ cancel(component: any): void;
71
+ /**
72
+ * 2D transition canvas에 렌더링 — postrender()에서 호출
73
+ */
74
+ renderComponent(component: any, modelLayer: any): void;
75
+ /**
76
+ * draw cycle 시작 시 호출 — canvas clear
77
+ */
78
+ beginDraw(): void;
79
+ /**
80
+ * draw cycle 종료 시 호출 — canvas restore
81
+ */
82
+ endDraw(): void;
83
+ /**
84
+ * model-layer resize 시 호출 — canvas 크기 동기화
85
+ */
86
+ resize(): void;
87
+ dispose(): void;
88
+ private ensureCanvas;
89
+ private removeCanvas;
90
+ private startLoop;
91
+ private stopLoop;
92
+ private tick;
93
+ private complete;
94
+ private cleanup3D;
95
+ }
96
+ export {};
97
+ //# 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":"AAgBA,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;IAC7C;;;;OAIG;IACH,aAAa,CAAC,EAAE,GAAG,CAAA;CACpB;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,eAAe,CAA4B;IACnD,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;IA8DP,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;IAWpB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;IAoEZ,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,SAAS;CAyBlB"}