@hatiolab/things-scene 10.0.0-beta.11 → 10.0.0-beta.110

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 (381) 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/retention/retention-manager.d.ts +9 -1
  89. package/dist-types/components/retention/retention-manager.d.ts.map +1 -1
  90. package/dist-types/components/root-container.d.ts +17 -4
  91. package/dist-types/components/root-container.d.ts.map +1 -1
  92. package/dist-types/components/ruler.d.ts +7 -3
  93. package/dist-types/components/ruler.d.ts.map +1 -1
  94. package/dist-types/components/service-component.d.ts +268 -0
  95. package/dist-types/components/service-component.d.ts.map +1 -0
  96. package/dist-types/components/shape.d.ts.map +1 -1
  97. package/dist-types/components/text.d.ts +7 -3
  98. package/dist-types/components/text.d.ts.map +1 -1
  99. package/dist-types/core/memoize.d.ts.map +1 -1
  100. package/dist-types/decorator/decorator-registry.d.ts +4 -0
  101. package/dist-types/decorator/decorator-registry.d.ts.map +1 -1
  102. package/dist-types/decorator/decorators/animated-icon-decorator.d.ts.map +1 -1
  103. package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts.map +1 -1
  104. package/dist-types/decorator/decorators/data-spread-decorator.d.ts +16 -0
  105. package/dist-types/decorator/decorators/data-spread-decorator.d.ts.map +1 -1
  106. package/dist-types/diagnostics/contract-inspector.d.ts +103 -0
  107. package/dist-types/diagnostics/contract-inspector.d.ts.map +1 -0
  108. package/dist-types/diagnostics/data-lag-tracker.d.ts +44 -0
  109. package/dist-types/diagnostics/data-lag-tracker.d.ts.map +1 -0
  110. package/dist-types/diagnostics/inspector.d.ts +58 -4
  111. package/dist-types/diagnostics/inspector.d.ts.map +1 -1
  112. package/dist-types/diagnostics/load-tracker.d.ts +82 -0
  113. package/dist-types/diagnostics/load-tracker.d.ts.map +1 -0
  114. package/dist-types/diagnostics/loading-overlay.d.ts +41 -0
  115. package/dist-types/diagnostics/loading-overlay.d.ts.map +1 -0
  116. package/dist-types/diagnostics/metrics.d.ts +10 -0
  117. package/dist-types/diagnostics/metrics.d.ts.map +1 -1
  118. package/dist-types/effect/shadow.d.ts +3 -1
  119. package/dist-types/effect/shadow.d.ts.map +1 -1
  120. package/dist-types/event-map/index.d.ts +1 -0
  121. package/dist-types/event-map/index.d.ts.map +1 -1
  122. package/dist-types/event-map/transition-handler.d.ts +2 -0
  123. package/dist-types/event-map/transition-handler.d.ts.map +1 -0
  124. package/dist-types/interfaces/layout.d.ts +35 -1
  125. package/dist-types/interfaces/layout.d.ts.map +1 -1
  126. package/dist-types/interfaces/providers.d.ts +20 -3
  127. package/dist-types/interfaces/providers.d.ts.map +1 -1
  128. package/dist-types/interfaces/real-object.d.ts +8 -1
  129. package/dist-types/interfaces/real-object.d.ts.map +1 -1
  130. package/dist-types/interfaces/rendering.d.ts +86 -14
  131. package/dist-types/interfaces/rendering.d.ts.map +1 -1
  132. package/dist-types/interfaces/types.d.ts +20 -1
  133. package/dist-types/interfaces/types.d.ts.map +1 -1
  134. package/dist-types/layer/action/popup.d.ts +13 -0
  135. package/dist-types/layer/action/popup.d.ts.map +1 -1
  136. package/dist-types/layer/add-layer.d.ts +8 -0
  137. package/dist-types/layer/add-layer.d.ts.map +1 -1
  138. package/dist-types/layer/dual-canvas-layer.d.ts.map +1 -1
  139. package/dist-types/layer/index.d.ts +1 -0
  140. package/dist-types/layer/index.d.ts.map +1 -1
  141. package/dist-types/layer/layer.d.ts +1 -0
  142. package/dist-types/layer/layer.d.ts.map +1 -1
  143. package/dist-types/layer/model-layer.d.ts +67 -7
  144. package/dist-types/layer/model-layer.d.ts.map +1 -1
  145. package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
  146. package/dist-types/layer/modeling-layer.d.ts.map +1 -1
  147. package/dist-types/layer/selection/selected-finder.d.ts +1 -1
  148. package/dist-types/layer/selection/selected-finder.d.ts.map +1 -1
  149. package/dist-types/layer/selection-layer.d.ts.map +1 -1
  150. package/dist-types/layer/snap-guide-layer.d.ts +23 -0
  151. package/dist-types/layer/snap-guide-layer.d.ts.map +1 -0
  152. package/dist-types/layout/absolute.d.ts +2 -2
  153. package/dist-types/layout/card.d.ts +2 -2
  154. package/dist-types/layout/linear-horizontal.d.ts +2 -2
  155. package/dist-types/layout/linear-vertical.d.ts +2 -2
  156. package/dist-types/layout/table.d.ts +3 -3
  157. package/dist-types/math/component-pose.d.ts +51 -0
  158. package/dist-types/math/component-pose.d.ts.map +1 -0
  159. package/dist-types/math/index.d.ts +3 -0
  160. package/dist-types/math/index.d.ts.map +1 -0
  161. package/dist-types/math/pose6dof.d.ts +93 -0
  162. package/dist-types/math/pose6dof.d.ts.map +1 -0
  163. package/dist-types/navigation/index.d.ts +7 -0
  164. package/dist-types/navigation/index.d.ts.map +1 -0
  165. package/dist-types/navigation/nav-graph.d.ts +55 -0
  166. package/dist-types/navigation/nav-graph.d.ts.map +1 -0
  167. package/dist-types/navigation/path-planner.d.ts +29 -0
  168. package/dist-types/navigation/path-planner.d.ts.map +1 -0
  169. package/dist-types/navigation/reservation-table.d.ts +103 -0
  170. package/dist-types/navigation/reservation-table.d.ts.map +1 -0
  171. package/dist-types/navigation/types.d.ts +145 -0
  172. package/dist-types/navigation/types.d.ts.map +1 -0
  173. package/dist-types/placement/index.d.ts +3 -0
  174. package/dist-types/placement/index.d.ts.map +1 -0
  175. package/dist-types/placement/placement.d.ts +53 -0
  176. package/dist-types/placement/placement.d.ts.map +1 -0
  177. package/dist-types/search/index.d.ts +3 -0
  178. package/dist-types/search/index.d.ts.map +1 -0
  179. package/dist-types/search/scene-search-engine.d.ts +65 -0
  180. package/dist-types/search/scene-search-engine.d.ts.map +1 -0
  181. package/dist-types/search/search-overlay.d.ts +95 -0
  182. package/dist-types/search/search-overlay.d.ts.map +1 -0
  183. package/dist-types/things-scene/api/add-start.d.ts +25 -0
  184. package/dist-types/things-scene/api/add-start.d.ts.map +1 -1
  185. package/dist-types/things-scene/api/align.d.ts.map +1 -1
  186. package/dist-types/things-scene/api/distribute.d.ts.map +1 -1
  187. package/dist-types/things-scene/api/ids.d.ts +4 -1
  188. package/dist-types/things-scene/api/ids.d.ts.map +1 -1
  189. package/dist-types/things-scene/api/index.d.ts +1 -1
  190. package/dist-types/things-scene/api/index.d.ts.map +1 -1
  191. package/dist-types/things-scene/api/place.d.ts.map +1 -1
  192. package/dist-types/things-scene/application-context.d.ts +49 -0
  193. package/dist-types/things-scene/application-context.d.ts.map +1 -1
  194. package/dist-types/things-scene/create.d.ts +43 -3
  195. package/dist-types/things-scene/create.d.ts.map +1 -1
  196. package/dist-types/things-scene/index.d.ts +24 -0
  197. package/dist-types/things-scene/index.d.ts.map +1 -1
  198. package/dist-types/things-scene/scene.d.ts +108 -2
  199. package/dist-types/things-scene/scene.d.ts.map +1 -1
  200. package/dist-types/threed/arrow-3d.d.ts +13 -4
  201. package/dist-types/threed/arrow-3d.d.ts.map +1 -1
  202. package/dist-types/threed/environments/base-environment.d.ts +17 -0
  203. package/dist-types/threed/environments/base-environment.d.ts.map +1 -0
  204. package/dist-types/threed/environments/cloudy-environment.d.ts +10 -0
  205. package/dist-types/threed/environments/cloudy-environment.d.ts.map +1 -0
  206. package/dist-types/threed/environments/factory-environment.d.ts +3 -3
  207. package/dist-types/threed/environments/factory-environment.d.ts.map +1 -1
  208. package/dist-types/threed/environments/home-environment.d.ts +3 -3
  209. package/dist-types/threed/environments/home-environment.d.ts.map +1 -1
  210. package/dist-types/threed/environments/office-environment.d.ts +3 -3
  211. package/dist-types/threed/environments/office-environment.d.ts.map +1 -1
  212. package/dist-types/threed/environments/rainy-environment.d.ts +10 -0
  213. package/dist-types/threed/environments/rainy-environment.d.ts.map +1 -0
  214. package/dist-types/threed/environments/studio-environment.d.ts +2 -3
  215. package/dist-types/threed/environments/studio-environment.d.ts.map +1 -1
  216. package/dist-types/threed/environments/sunny-environment.d.ts +10 -0
  217. package/dist-types/threed/environments/sunny-environment.d.ts.map +1 -0
  218. package/dist-types/threed/environments/warehouse-environment.d.ts +3 -3
  219. package/dist-types/threed/environments/warehouse-environment.d.ts.map +1 -1
  220. package/dist-types/threed/factories/backdrop.d.ts +535 -0
  221. package/dist-types/threed/factories/backdrop.d.ts.map +1 -0
  222. package/dist-types/threed/factories/banner.d.ts +13 -4
  223. package/dist-types/threed/factories/banner.d.ts.map +1 -1
  224. package/dist-types/threed/factories/camera.d.ts +9 -3
  225. package/dist-types/threed/factories/camera.d.ts.map +1 -1
  226. package/dist-types/threed/factories/cube.d.ts +8 -3
  227. package/dist-types/threed/factories/cube.d.ts.map +1 -1
  228. package/dist-types/threed/factories/cylinder.d.ts +1 -0
  229. package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
  230. package/dist-types/threed/factories/decal.d.ts +510 -0
  231. package/dist-types/threed/factories/decal.d.ts.map +1 -0
  232. package/dist-types/threed/factories/floor-plate.d.ts +11 -0
  233. package/dist-types/threed/factories/floor-plate.d.ts.map +1 -0
  234. package/dist-types/threed/factories/gltf-object.d.ts +264 -38
  235. package/dist-types/threed/factories/gltf-object.d.ts.map +1 -1
  236. package/dist-types/threed/factories/group.d.ts +2 -0
  237. package/dist-types/threed/factories/group.d.ts.map +1 -0
  238. package/dist-types/threed/factories/light.d.ts +1 -0
  239. package/dist-types/threed/factories/light.d.ts.map +1 -1
  240. package/dist-types/threed/factories/line.d.ts +10 -0
  241. package/dist-types/threed/factories/line.d.ts.map +1 -0
  242. package/dist-types/threed/factories/ortholine.d.ts +10 -0
  243. package/dist-types/threed/factories/ortholine.d.ts.map +1 -0
  244. package/dist-types/threed/factories/polygon.d.ts +19 -0
  245. package/dist-types/threed/factories/polygon.d.ts.map +1 -1
  246. package/dist-types/threed/factories/polyline.d.ts +10 -0
  247. package/dist-types/threed/factories/polyline.d.ts.map +1 -0
  248. package/dist-types/threed/factories/rect.d.ts.map +1 -1
  249. package/dist-types/threed/factories/sphere.d.ts +6 -0
  250. package/dist-types/threed/factories/sphere.d.ts.map +1 -1
  251. package/dist-types/threed/factories/sprite.d.ts +8 -3
  252. package/dist-types/threed/factories/sprite.d.ts.map +1 -1
  253. package/dist-types/threed/factories/triangle.d.ts.map +1 -1
  254. package/dist-types/threed/factories/wall.d.ts +8 -3
  255. package/dist-types/threed/factories/wall.d.ts.map +1 -1
  256. package/dist-types/threed/floor/floor.d.ts.map +1 -1
  257. package/dist-types/threed/handle-3d.d.ts +21 -0
  258. package/dist-types/threed/handle-3d.d.ts.map +1 -0
  259. package/dist-types/threed/html/elements.d.ts.map +1 -1
  260. package/dist-types/threed/index.d.ts +22 -0
  261. package/dist-types/threed/index.d.ts.map +1 -1
  262. package/dist-types/threed/managers/box-selection-manager.d.ts +26 -0
  263. package/dist-types/threed/managers/box-selection-manager.d.ts.map +1 -0
  264. package/dist-types/threed/managers/camera-bookmark-manager.d.ts +127 -0
  265. package/dist-types/threed/managers/camera-bookmark-manager.d.ts.map +1 -0
  266. package/dist-types/threed/managers/camera-manager.d.ts +9 -3
  267. package/dist-types/threed/managers/camera-manager.d.ts.map +1 -1
  268. package/dist-types/threed/managers/controls-manager.d.ts +25 -4
  269. package/dist-types/threed/managers/controls-manager.d.ts.map +1 -1
  270. package/dist-types/threed/managers/event-manager3d.d.ts +8 -0
  271. package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
  272. package/dist-types/threed/managers/gizmo-manager.d.ts +6 -0
  273. package/dist-types/threed/managers/gizmo-manager.d.ts.map +1 -1
  274. package/dist-types/threed/managers/gizmo-operation-manager.d.ts +55 -1
  275. package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
  276. package/dist-types/threed/managers/index.d.ts +4 -1
  277. package/dist-types/threed/managers/index.d.ts.map +1 -1
  278. package/dist-types/threed/managers/interaction-manager.d.ts +17 -0
  279. package/dist-types/threed/managers/interaction-manager.d.ts.map +1 -1
  280. package/dist-types/threed/managers/light-manager.d.ts +15 -0
  281. package/dist-types/threed/managers/light-manager.d.ts.map +1 -1
  282. package/dist-types/threed/managers/renderer-manager.d.ts +37 -0
  283. package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
  284. package/dist-types/threed/managers/scene-manager.d.ts +12 -2
  285. package/dist-types/threed/managers/scene-manager.d.ts.map +1 -1
  286. package/dist-types/threed/managers/types.d.ts +5 -2
  287. package/dist-types/threed/managers/types.d.ts.map +1 -1
  288. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +155 -0
  289. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -0
  290. package/dist-types/threed/material-3d.d.ts +5 -2
  291. package/dist-types/threed/material-3d.d.ts.map +1 -1
  292. package/dist-types/threed/ratio-lock-utils.d.ts +9 -0
  293. package/dist-types/threed/ratio-lock-utils.d.ts.map +1 -0
  294. package/dist-types/threed/real-object-dom-element.d.ts +2 -0
  295. package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
  296. package/dist-types/threed/real-object-dom-texture.d.ts +9 -0
  297. package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
  298. package/dist-types/threed/real-object-external-model.d.ts +24 -0
  299. package/dist-types/threed/real-object-external-model.d.ts.map +1 -0
  300. package/dist-types/threed/real-object-extrude.d.ts +16 -1
  301. package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
  302. package/dist-types/threed/real-object-gltf.d.ts +21 -11
  303. package/dist-types/threed/real-object-gltf.d.ts.map +1 -1
  304. package/dist-types/threed/real-object-group.d.ts +2 -0
  305. package/dist-types/threed/real-object-group.d.ts.map +1 -1
  306. package/dist-types/threed/real-object-line.d.ts +83 -0
  307. package/dist-types/threed/real-object-line.d.ts.map +1 -0
  308. package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
  309. package/dist-types/threed/real-object-plane-2d.d.ts +23 -0
  310. package/dist-types/threed/real-object-plane-2d.d.ts.map +1 -1
  311. package/dist-types/threed/real-object-service.d.ts +14 -0
  312. package/dist-types/threed/real-object-service.d.ts.map +1 -0
  313. package/dist-types/threed/real-object-sprite.d.ts +7 -1
  314. package/dist-types/threed/real-object-sprite.d.ts.map +1 -1
  315. package/dist-types/threed/real-object-text.d.ts +5 -0
  316. package/dist-types/threed/real-object-text.d.ts.map +1 -1
  317. package/dist-types/threed/real-object.d.ts +176 -7
  318. package/dist-types/threed/real-object.d.ts.map +1 -1
  319. package/dist-types/threed/text-editor-3d.d.ts +11 -0
  320. package/dist-types/threed/text-editor-3d.d.ts.map +1 -0
  321. package/dist-types/threed/texture/canvas-texture.d.ts +7 -0
  322. package/dist-types/threed/texture/canvas-texture.d.ts.map +1 -1
  323. package/dist-types/threed/texture/fillstyle-texture.d.ts +46 -0
  324. package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -0
  325. package/dist-types/threed/texture/text-texture.d.ts +15 -0
  326. package/dist-types/threed/texture/text-texture.d.ts.map +1 -1
  327. package/dist-types/threed/three-capability.d.ts +148 -6
  328. package/dist-types/threed/three-capability.d.ts.map +1 -1
  329. package/dist-types/threed/three-container.d.ts +0 -1
  330. package/dist-types/threed/three-container.d.ts.map +1 -1
  331. package/dist-types/threed/three-dimensional-container.d.ts +0 -1
  332. package/dist-types/threed/three-dimensional-container.d.ts.map +1 -1
  333. package/dist-types/threed/utils/anchor.d.ts +33 -0
  334. package/dist-types/threed/utils/anchor.d.ts.map +1 -0
  335. package/dist-types/threed/utils/dispose.d.ts.map +1 -1
  336. package/dist-types/threed/utils/tether.d.ts +46 -0
  337. package/dist-types/threed/utils/tether.d.ts.map +1 -0
  338. package/dist-types/threed/z-priority.d.ts +27 -0
  339. package/dist-types/threed/z-priority.d.ts.map +1 -0
  340. package/dist-types/tracker/tracker.d.ts +57 -0
  341. package/dist-types/tracker/tracker.d.ts.map +1 -0
  342. package/dist-types/transfer/carrier-line-capability.d.ts +95 -0
  343. package/dist-types/transfer/carrier-line-capability.d.ts.map +1 -0
  344. package/dist-types/transfer/centering-slot-strategy.d.ts +8 -0
  345. package/dist-types/transfer/centering-slot-strategy.d.ts.map +1 -0
  346. package/dist-types/transfer/container-capacity.d.ts +348 -0
  347. package/dist-types/transfer/container-capacity.d.ts.map +1 -0
  348. package/dist-types/transfer/fixed-slot-strategy.d.ts +8 -0
  349. package/dist-types/transfer/fixed-slot-strategy.d.ts.map +1 -0
  350. package/dist-types/transfer/index.d.ts +21 -0
  351. package/dist-types/transfer/index.d.ts.map +1 -0
  352. package/dist-types/transfer/pickup-helpers.d.ts +65 -0
  353. package/dist-types/transfer/pickup-helpers.d.ts.map +1 -0
  354. package/dist-types/transfer/simulation-clock.d.ts +45 -0
  355. package/dist-types/transfer/simulation-clock.d.ts.map +1 -0
  356. package/dist-types/transfer/storage-rack-capability.d.ts +144 -0
  357. package/dist-types/transfer/storage-rack-capability.d.ts.map +1 -0
  358. package/dist-types/transfer/tracer.d.ts +35 -0
  359. package/dist-types/transfer/tracer.d.ts.map +1 -0
  360. package/dist-types/transfer/transfer.d.ts +224 -0
  361. package/dist-types/transfer/transfer.d.ts.map +1 -0
  362. package/dist-types/transfer/types.d.ts +389 -0
  363. package/dist-types/transfer/types.d.ts.map +1 -0
  364. package/dist-types/transition/transition-effect.d.ts +97 -0
  365. package/dist-types/transition/transition-effect.d.ts.map +1 -0
  366. package/dist-types/types/bounding.d.ts +1 -1
  367. package/dist-types/types/bounding.d.ts.map +1 -1
  368. package/dist-types/types/component.d.ts +6 -177
  369. package/dist-types/types/component.d.ts.map +1 -1
  370. package/dist-types/types/event.d.ts +57 -0
  371. package/dist-types/types/event.d.ts.map +1 -1
  372. package/dist-types/types/polygon-path-arc.d.ts +72 -0
  373. package/dist-types/types/polygon-path-arc.d.ts.map +1 -0
  374. package/dist-types/types/polygon-path.d.ts +153 -0
  375. package/dist-types/types/polygon-path.d.ts.map +1 -0
  376. package/package.json +13 -2
  377. package/things-scene-min.js +12 -13
  378. package/things-scene-min.js.map +1 -1
  379. package/things-scene-transfer.mjs +6 -0
  380. package/things-scene.mjs +8 -9
  381. package/things-scene.mjs.map +1 -1
@@ -0,0 +1,51 @@
1
+ import { Pose6DOF } from './pose6dof.js';
2
+ /**
3
+ * Component 의 parent-local pose 를 읽는다.
4
+ *
5
+ * 정의: component 가 부모의 좌표계 안에서 차지하는 위치+자세.
6
+ * 3D pipeline 의 RealObject.center / RealObject.rotation 과 동일한 의미축.
7
+ *
8
+ * 좌표 매핑 (state → Pose6DOF):
9
+ * pos.x = component.center.x + tx - parent.width/2 (parent-centered 3D X)
10
+ * pos.y = cz (3D vertical Y, cz 공식)
11
+ * pos.z = component.center.y + ty - parent.height/2 (parent-centered 3D Z)
12
+ * rot = Euler(state.rotationX, -state.rotation, state.rotationY, 'XYZ')
13
+ *
14
+ * 컴포넌트가 RealObject 를 안 가지면 cz=0 으로 평면 처리.
15
+ */
16
+ export declare function getPose(component: any): Pose6DOF;
17
+ /**
18
+ * Component 의 world pose 를 읽는다.
19
+ *
20
+ * 우선순위:
21
+ * 1. _realObject.object3d.matrixWorld 가 있으면 거기서 분해 (정확)
22
+ * 2. 부모 chain 을 따라가며 getPose() 합성 (fallback, 2D-only 환경)
23
+ *
24
+ * 호출 전에 `obj3d.updateWorldMatrix(true, false)` 보장 책임은 호출자.
25
+ */
26
+ export declare function getWorldPose(component: any): Pose6DOF;
27
+ /**
28
+ * Component 에 parent-local pose 를 단일 atomic setState 로 적용.
29
+ *
30
+ * 한 번의 호출이 left/top/zPos/rotation/rotationX/rotationY 를 동시에 갱신 →
31
+ * onchange 가 한 번만 fire → pipeline 이 obj3d 를 한 번 다시 계산. 부분 상태가
32
+ * frame 사이에 노출되지 않는다 (Phase G 의 핵심 invariant).
33
+ *
34
+ * 좌표 역매핑 (Pose6DOF → state):
35
+ * center.x = pos.x + parent.width/2 - tx
36
+ * center.y = pos.z + parent.height/2 - ty
37
+ * zPos = pos.y - tz - syncZPosOffset + parent.geometricOffsetY
38
+ * Euler decompose 'XYZ' → (rotationX = e.x, rotation = -e.y, rotationY = e.z)
39
+ *
40
+ * 기존 syncFromObject3D 의 로직과 동일 — 그것을 명시적 API 로 노출.
41
+ */
42
+ export declare function setPose(component: any, pose: Pose6DOF): void;
43
+ /**
44
+ * Component 에 world pose 를 적용. 부모의 world pose 의 inverse 로 곱해서
45
+ * parent-local 로 변환 후 setPose.
46
+ *
47
+ * 부모가 root 거나 parent.worldPose 를 못 구하면 setPose 와 동일 (world =
48
+ * parent-local 로 가정).
49
+ */
50
+ export declare function setWorldPose(component: any, worldPose: Pose6DOF): void;
51
+ //# sourceMappingURL=component-pose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-pose.d.ts","sourceRoot":"","sources":["../../src/math/component-pose.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAOxC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,QAAQ,CA0BhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,GAAG,QAAQ,CAgBrD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAuC5D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,CAStE"}
@@ -0,0 +1,3 @@
1
+ export { Pose6DOF, type PoseLike } from './pose6dof.js';
2
+ export { getPose, getWorldPose, setPose, setWorldPose } from './component-pose.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,93 @@
1
+ import * as THREE from 'three';
2
+ export interface PoseLike {
3
+ position: {
4
+ x: number;
5
+ y: number;
6
+ z: number;
7
+ };
8
+ rotation: {
9
+ x: number;
10
+ y: number;
11
+ z: number;
12
+ w: number;
13
+ };
14
+ }
15
+ export declare class Pose6DOF {
16
+ /**
17
+ * Position in the implied coordinate system. World, parent-local, etc — Pose6DOF
18
+ * 자체는 좌표계를 알지 않는다. 호출자가 어떤 frame 의 값인지 명시할 책임.
19
+ */
20
+ readonly position: THREE.Vector3;
21
+ /**
22
+ * Orientation as unit quaternion in the implied coordinate system.
23
+ */
24
+ readonly rotation: THREE.Quaternion;
25
+ constructor(position?: THREE.Vector3 | {
26
+ x: number;
27
+ y: number;
28
+ z: number;
29
+ }, rotation?: THREE.Quaternion | {
30
+ x: number;
31
+ y: number;
32
+ z: number;
33
+ w: number;
34
+ });
35
+ /**
36
+ * Compose: this 의 frame "안" 에서 child 를 적용. 합성된 결과는 부모(this)의
37
+ * 좌표계 기준이다.
38
+ *
39
+ * result.position = this.position + this.rotation × child.position
40
+ * result.rotation = this.rotation × child.rotation
41
+ *
42
+ * 예: holder.worldPose.compose(carrier.localPose) = carrier.worldPose
43
+ */
44
+ compose(child: Pose6DOF): Pose6DOF;
45
+ /**
46
+ * Inverse: this 가 적용 전으로 되돌리는 변환.
47
+ *
48
+ * inv.rotation = this.rotation⁻¹
49
+ * inv.position = -inv.rotation × this.position
50
+ *
51
+ * 항등식: this.compose(this.inverse()) = identity = this.inverse().compose(this).
52
+ */
53
+ inverse(): Pose6DOF;
54
+ /**
55
+ * Transform a point: p' = this.rotation × p + this.position.
56
+ * 입력은 변경하지 않는다 — 새 Vector3 반환.
57
+ */
58
+ transformPoint(p: THREE.Vector3): THREE.Vector3;
59
+ /**
60
+ * Transform a pose. compose 의 의미상 동치.
61
+ * parent.transformPose(child_local) = child_world
62
+ */
63
+ transformPose(child: Pose6DOF): Pose6DOF;
64
+ toMatrix4(out?: THREE.Matrix4): THREE.Matrix4;
65
+ /**
66
+ * Matrix4 의 translation + rotation 만 추출. scale 은 무시 (rigid).
67
+ * scale 이 1 이 아닌 행렬을 넣으면 scale 분해 후 폐기.
68
+ */
69
+ static fromMatrix4(m: THREE.Matrix4): Pose6DOF;
70
+ /**
71
+ * Object3D 의 pose 를 캡처. world=true 이면 world matrix (부모 chain 통과)
72
+ * 를, 아니면 local position/quaternion 을 사용.
73
+ *
74
+ * world=true 호출 전에 객체의 worldMatrix 가 최신이어야 한다 (호출자가
75
+ * `obj.updateWorldMatrix(true, false)` 보장).
76
+ */
77
+ static fromObject3D(obj: THREE.Object3D, world?: boolean): Pose6DOF;
78
+ /**
79
+ * Object3D 의 local position/quaternion 에 이 pose 를 적용. scale 은 건드리지
80
+ * 않는다.
81
+ */
82
+ applyToObject3D(obj: THREE.Object3D): void;
83
+ static identity(): Pose6DOF;
84
+ /**
85
+ * Numerical equality 검사. position 은 component-wise abs diff, rotation 은
86
+ * dot product (둘은 sign 다른 같은 회전 — abs(dot) ≈ 1).
87
+ */
88
+ equals(other: Pose6DOF, tol?: number): boolean;
89
+ clone(): Pose6DOF;
90
+ toJSON(): PoseLike;
91
+ static fromJSON(j: PoseLike): Pose6DOF;
92
+ }
93
+ //# sourceMappingURL=pose6dof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pose6dof.d.ts","sourceRoot":"","sources":["../../src/math/pose6dof.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACzD;AAED,qBAAa,QAAQ;IACnB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAA;IAEhC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAA;gBAEvB,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAkBxJ;;;;;;;;OAQG;IACH,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAMlC;;;;;;;OAOG;IACH,OAAO,IAAI,QAAQ;IAMnB;;;OAGG;IACH,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;IAI/C;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAIxC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;IAM7C;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,QAAQ;IAQ9C;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAE,OAAe,GAAG,QAAQ;IAW1E;;;OAGG;IACH,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI;IAK1C,MAAM,CAAC,QAAQ,IAAI,QAAQ;IAI3B;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAE,MAAa,GAAG,OAAO;IAapD,KAAK,IAAI,QAAQ;IAIjB,MAAM,IAAI,QAAQ;IAOlB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ;CAGvC"}
@@ -0,0 +1,7 @@
1
+ export type { LaneGeometry, Lane, ConflictPair, Intersection, NavPolygon, OpenZone, TimeWindow, Reservation, SpeedProfile, PathSegment, PathPlan, PathPlanOptions, Navigable, YieldDecision, YieldPolicy } from './types.js';
2
+ export { ReservationTable, reservationTable, standardYieldPolicy } from './reservation-table.js';
3
+ export type { ReservationEvent, AddResult, Conflict, ConflictRecord } from './reservation-table.js';
4
+ export { NavGraph, buildNavGraph } from './nav-graph.js';
5
+ export type { NavNode, NavEdge, BuildNavGraphOptions } from './nav-graph.js';
6
+ export { planPathAStar, planToReservations } from './path-planner.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAaA,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEnG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACxD,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAE5E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,55 @@
1
+ import type { Lane, Intersection } from './types.js';
2
+ import type { Vec3 } from '../transfer/types.js';
3
+ export interface NavNode {
4
+ id: string;
5
+ position: Vec3;
6
+ /** 'lane-start' | 'lane-end' | 'intersection' | 'goal' (planner 가 임시 추가). */
7
+ type: string;
8
+ }
9
+ export interface NavEdge {
10
+ fromNode: string;
11
+ toNode: string;
12
+ /** 통과하는 resource id (충돌 검사용). lane id 또는 intersection id. */
13
+ resource: string;
14
+ /** 거리 (scene unit). cost 의 기본 단위. */
15
+ distance: number;
16
+ /** 통과 sim time (ms). speed 가 결정. lane.speedLimit 또는 vehicle.maxSpeed 기준. */
17
+ durationMs: number;
18
+ /** 이 edge 의 통과 방향이 lane 의 정방향과 같으면 true. twoway 의 역방향이면 false. */
19
+ forward: boolean;
20
+ }
21
+ export declare class NavGraph {
22
+ readonly nodes: Map<string, NavNode>;
23
+ /** adjacency list — fromNode → outgoing edges. */
24
+ readonly edges: Map<string, NavEdge[]>;
25
+ /** Lane 별 endpoint node id 매핑. graph augmentation (start/goal 추가) 시 유용. */
26
+ readonly laneEndpoints: Map<string, {
27
+ startNodeId: string;
28
+ endNodeId: string;
29
+ }>;
30
+ addNode(node: NavNode): void;
31
+ addEdge(edge: NavEdge): void;
32
+ edgesFrom(nodeId: string): NavEdge[];
33
+ /** 가장 가까운 node 찾기 (start/goal 진입용). bruteforce — 큰 그래프엔 spatial index 권장. */
34
+ findNearestNode(pos: Vec3): NavNode | null;
35
+ }
36
+ export interface BuildNavGraphOptions {
37
+ /** Lane 별 default speed (없으면 lane.speedLimit, 그것도 없으면 fallback 100). */
38
+ defaultSpeed?: number;
39
+ }
40
+ /**
41
+ * Lane / Intersection 으로부터 NavGraph 를 빌드.
42
+ *
43
+ * 노드 명명 규약:
44
+ * - lane endpoint: `${lane.id}:start`, `${lane.id}:end`
45
+ * - intersection: `${intersection.id}` (intersection 자체가 단일 노드 — 통과 cost 는
46
+ * intersection.crossingTimeMs 로 모델링)
47
+ *
48
+ * Edge 종류:
49
+ * - lane traversal: lane.id 가 resource. oneway 면 start→end 만, twoway 면
50
+ * 양방향 두 edge. distance = lane.geometry.centerPoints 누적.
51
+ * - intersection crossing: intersection.id 가 resource. 만나는 lane 들의
52
+ * endpoint 간 edge (직선 거리 + crossingTimeMs).
53
+ */
54
+ export declare function buildNavGraph(lanes: Lane[], intersections: Intersection[], options?: BuildNavGraphOptions): NavGraph;
55
+ //# sourceMappingURL=nav-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-graph.d.ts","sourceRoot":"","sources":["../../src/navigation/nav-graph.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAEhD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,IAAI,CAAA;IACd,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAChB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAY;IAChD,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAY;IAElD,2EAA2E;IAC3E,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAY;IAE3F,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAO5B,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAW5B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE;IAIpC,6EAA6E;IAC7E,eAAe,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI;CAY3C;AAaD,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,IAAI,EAAE,EACb,aAAa,EAAE,YAAY,EAAE,EAC7B,OAAO,GAAE,oBAAyB,GACjC,QAAQ,CA0GV"}
@@ -0,0 +1,29 @@
1
+ import type { NavGraph } from './nav-graph.js';
2
+ import type { PathPlan, PathPlanOptions } from './types.js';
3
+ /**
4
+ * A* 경로 계획.
5
+ *
6
+ * @param graph navigation graph
7
+ * @param startNodeId 출발 node id
8
+ * @param goalNodeId 도착 node id
9
+ * @param options vehicle 의 speed / priority / startSimMs / deadline
10
+ * @returns PathPlan 또는 null (도달 불가 / deadline 초과)
11
+ */
12
+ export declare function planPathAStar(graph: NavGraph, startNodeId: string, goalNodeId: string, options?: PathPlanOptions): PathPlan | null;
13
+ /**
14
+ * PathPlan 의 segments 를 ReservationTable 의 add 입력 형태로 변환.
15
+ *
16
+ * 호출자가 ReservationTable.add 를 segment 별로 시도하고, 실패 시 rollback
17
+ * (이미 add 된 것들 release) 책임. helper 는 단순 매핑.
18
+ */
19
+ export declare function planToReservations(plan: PathPlan, reserverId: string, priority?: number, metadata?: Record<string, any>): Array<{
20
+ resource: string;
21
+ timeWindow: {
22
+ startSimMs: number;
23
+ endSimMs: number;
24
+ };
25
+ reserverId: string;
26
+ priority: number;
27
+ metadata?: Record<string, any>;
28
+ }>;
29
+ //# sourceMappingURL=path-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-planner.d.ts","sourceRoot":"","sources":["../../src/navigation/path-planner.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAe,eAAe,EAAE,MAAM,YAAY,CAAA;AA+BxE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,eAAoB,GAC5B,QAAQ,GAAG,IAAI,CAqGjB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAU,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,CAAC,CAQzJ"}
@@ -0,0 +1,103 @@
1
+ import type { Reservation, TimeWindow, YieldDecision, YieldPolicy } from './types.js';
2
+ /** 기본 yield policy: priority 낮은(수치 높은) 쪽이 양보, 같으면 fifo. */
3
+ export declare const standardYieldPolicy: YieldPolicy;
4
+ /**
5
+ * Conflict — 두 reservation 의 충돌 정보. yield policy 가 어느 쪽이 양보할지 결정.
6
+ */
7
+ export interface Conflict {
8
+ a: Reservation;
9
+ b: Reservation;
10
+ decision: YieldDecision;
11
+ }
12
+ /**
13
+ * Phase K — 충돌 발생 기록. observability 의 입력 — Atlas 의 Conflicts mode 가
14
+ * 활용. 시간순 누적 (ring buffer 로 maxEntries 제한).
15
+ */
16
+ export interface ConflictRecord {
17
+ /** 충돌 발생 sim time (proposed reservation 의 시작 시간으로 추정). */
18
+ simTime: number;
19
+ resource: string;
20
+ /** 시도된 reservation (table 에 안 들어감). */
21
+ proposed: Omit<Reservation, 'id'>;
22
+ /** 충돌한 기존 reservations. */
23
+ existing: Reservation[];
24
+ /** 결과 — 'rejected' (proposed 가 양보) | 'preempted' (기존이 evict 됨). */
25
+ outcome: 'rejected' | 'preempted';
26
+ }
27
+ export declare class ReservationTable {
28
+ private readonly _byResource;
29
+ private readonly _byReserver;
30
+ private readonly _yieldPolicy;
31
+ private readonly _listeners;
32
+ private readonly _conflictLog;
33
+ private _maxConflictLog;
34
+ constructor(yieldPolicy?: YieldPolicy);
35
+ /**
36
+ * Reservation 을 추가. 같은 resource + 겹치는 window 에 다른 reservation 이
37
+ * 있으면 yield policy 가 어느 쪽이 양보할지 결정.
38
+ *
39
+ * 반환:
40
+ * - { ok: true, reservation } 충돌 없음
41
+ * - { ok: false, conflicts } 이 reservation 이 양보 (추가 안 됨)
42
+ * - { ok: 'preempted', reservation, evicted } 기존 reservation 들이 양보 (제거됨)
43
+ *
44
+ * preempted 케이스는 호출자가 evicted reservation 의 reserver 들에게
45
+ * notification 하고 reroute 하도록 함.
46
+ */
47
+ add(input: Omit<Reservation, 'id'>): AddResult;
48
+ /** Phase K — 충돌 로그 (rejected / preempted). 시간순 누적. */
49
+ conflictLog(): readonly ConflictRecord[];
50
+ /** maxEntries 설정 (테스트용). */
51
+ setMaxConflictLog(n: number): void;
52
+ private _appendConflictLog;
53
+ /**
54
+ * 미리 충돌 가능성 검사 (add 안 함). plan 단계에서 reservation 을 사전 검증할 때.
55
+ */
56
+ conflicts(resource: string, window: TimeWindow): Reservation[];
57
+ /** 한 reservation 회수. 도착 완료 또는 cancel 시. */
58
+ release(reservation: Reservation): void;
59
+ /** 같은 reserver 의 모든 reservation 일괄 해제. */
60
+ releaseAllOf(reserverId: string): Reservation[];
61
+ /** 특정 resource 의 모든 reservation (read-only 사본). */
62
+ forResource(resource: string): readonly Reservation[];
63
+ /** 특정 reserver 의 모든 reservation. */
64
+ forReserver(reserverId: string): readonly Reservation[];
65
+ /** 모든 reservation. */
66
+ all(): readonly Reservation[];
67
+ /** 청소 (테스트용). */
68
+ clear(): void;
69
+ /**
70
+ * Listener 등록. observability (Atlas extension 등) 를 위함.
71
+ */
72
+ subscribe(listener: (event: ReservationEvent) => void): () => void;
73
+ private _insert;
74
+ private _remove;
75
+ private _emit;
76
+ }
77
+ export type ReservationEvent = {
78
+ kind: 'added';
79
+ reservation: Reservation;
80
+ } | {
81
+ kind: 'released';
82
+ reservation: Reservation;
83
+ } | {
84
+ kind: 'evicted';
85
+ reservation: Reservation;
86
+ by: Reservation;
87
+ };
88
+ export type AddResult = {
89
+ ok: true;
90
+ reservation: Reservation;
91
+ } | {
92
+ ok: 'preempted';
93
+ reservation: Reservation;
94
+ evicted: Reservation[];
95
+ } | {
96
+ ok: false;
97
+ conflicts: Conflict[];
98
+ };
99
+ /**
100
+ * Singleton — 단일 시뮬레이션 instance 내 공유. 테스트는 자체 인스턴스 만드는 걸 권장.
101
+ */
102
+ export declare const reservationTable: ReservationTable;
103
+ //# sourceMappingURL=reservation-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservation-table.d.ts","sourceRoot":"","sources":["../../src/navigation/reservation-table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import type { Vec3 } from '../transfer/types.js';
2
+ export interface LaneGeometry {
3
+ /** 중앙선의 점들 (시작 → 끝). */
4
+ centerPoints: Vec3[];
5
+ /** lane 의 폭 (vehicle 이 이 안에 들어가야 함). */
6
+ width: number;
7
+ }
8
+ export interface Lane {
9
+ id: string;
10
+ geometry: LaneGeometry;
11
+ /** oneway 면 centerPoints 의 시작→끝 방향만, twoway 면 양방향 허용. */
12
+ direction: 'oneway' | 'twoway';
13
+ /** 속도 제한 (scene units / sim sec). undefined = 무제한. */
14
+ speedLimit?: number;
15
+ /** 통과 가능한 도구 type (Pickable.toolType 과 같은 축). 빈 배열 = 모두 허용. */
16
+ allowedToolTypes?: string[];
17
+ /** 동시에 들어갈 수 있는 vehicle 수. 1 = 단독 점유 (1차원 큐). */
18
+ capacity: number;
19
+ }
20
+ /**
21
+ * 두 lane 의 진입쌍이 충돌하는지 표현. e.g. north→south 와 east→west 는 직각
22
+ * 교차로에서 충돌하지만 north→east 와 south→east 는 충돌 안 함 (병행).
23
+ */
24
+ export interface ConflictPair {
25
+ fromLane: string;
26
+ toLane: string;
27
+ /** 어떤 우선순위 정책을 적용할지. */
28
+ resolveBy: 'fifo' | 'priority' | 'roundrobin';
29
+ }
30
+ export interface Intersection {
31
+ id: string;
32
+ lanes: string[];
33
+ conflicts: ConflictPair[];
34
+ /** 통과 시간 (vehicle 이 교차로 안에 머무는 sim ms). 보수적으로 추정. */
35
+ crossingTimeMs: number;
36
+ }
37
+ export interface NavPolygon {
38
+ vertices: Vec3[];
39
+ }
40
+ /**
41
+ * lane 으로 표현하기 어려운 넓은 영역 (open warehouse floor, dock plaza 등).
42
+ * 시공간 격자로 점유권을 관리.
43
+ */
44
+ export interface OpenZone {
45
+ id: string;
46
+ boundary: NavPolygon;
47
+ /** 점유 격자의 cell 한 변 크기 (scene unit). 작을수록 정확하지만 reservation 많아짐. */
48
+ cellSize: number;
49
+ }
50
+ export interface TimeWindow {
51
+ /** sim time milliseconds. */
52
+ startSimMs: number;
53
+ endSimMs: number;
54
+ }
55
+ /**
56
+ * 어떤 resource 를 어떤 시간 window 동안 누가 점유하는가.
57
+ *
58
+ * resource 는 lane id / intersection id / open-zone cell key 등 resource 의
59
+ * 단일 식별자. cell 의 경우 e.g. `${zoneId}:cell:${i},${j}`.
60
+ */
61
+ export interface Reservation {
62
+ id: string;
63
+ resource: string;
64
+ timeWindow: TimeWindow;
65
+ reserverId: string;
66
+ /** 낮을수록 우선. emergency = -1, task-bound = 0, idle = 10 등. */
67
+ priority: number;
68
+ /** 부수 메타 (어떤 task 의 일부인지, 어떤 carrier 를 운반 중인지 등). */
69
+ metadata?: Record<string, any>;
70
+ }
71
+ export interface SpeedProfile {
72
+ /** 최대 속도 (scene units / sim sec). */
73
+ max: number;
74
+ /** 가속도 (scene units / sim sec²). */
75
+ accel: number;
76
+ /** 감속도 (scene units / sim sec²). */
77
+ decel: number;
78
+ }
79
+ export interface PathSegment {
80
+ resource: string;
81
+ /** 이 segment 를 통과하는 sim time. */
82
+ timeWindow: TimeWindow;
83
+ /** segment 시작 / 끝 좌표 (시각화용). */
84
+ fromPos: Vec3;
85
+ toPos: Vec3;
86
+ }
87
+ export interface PathPlan {
88
+ segments: PathSegment[];
89
+ /** 전체 경로의 sim time 길이. */
90
+ totalDurationMs: number;
91
+ /** 전체 경로 길이 (scene unit). */
92
+ totalDistance: number;
93
+ }
94
+ export interface PathPlanOptions {
95
+ /** sim time 시작점. 미지정 시 현재 globalSimClock.now. */
96
+ startSimMs?: number;
97
+ /** vehicle 의 toolType — lane.allowedToolTypes 검사용. */
98
+ toolType?: string;
99
+ /** vehicle 의 speed profile. */
100
+ speed?: SpeedProfile;
101
+ /** 우선순위 (충돌 시 양보 결정용). */
102
+ priority?: number;
103
+ /** deadline (sim ms) — 이 시간 안에 도착 못 하면 null 반환. */
104
+ deadlineSimMs?: number;
105
+ }
106
+ /**
107
+ * Vehicle 이 navigation 능력을 노출하는 인터페이스. Mover 의 sub-trait.
108
+ *
109
+ * lifecycle:
110
+ * 1. planPath(target) → PathPlan | null (lookup, 부수효과 없음)
111
+ * 2. reservePath(plan) → Reservation[] | null (table 에 add, 충돌 시 null)
112
+ * 3. followReservation(rs) → Promise<void> (sim time 진행)
113
+ * 4. releaseReservation(rs) (도착 후 또는 cancel)
114
+ *
115
+ * 단계 분리로 충돌 감지가 commit 직전, replay 가 결정적, 디버깅이 가능.
116
+ */
117
+ export interface Navigable {
118
+ toolType: string;
119
+ speedProfile: SpeedProfile;
120
+ /**
121
+ * 경로 계획. 시간-공간 reservation 가능성 검증 포함 (단, table 에 commit 안 함).
122
+ * null 반환 = 도달 가능 경로 없음 (deadline 초과 / 모든 lane 점유 등).
123
+ */
124
+ planPath(target: Vec3, options?: PathPlanOptions): PathPlan | null;
125
+ /**
126
+ * 계획된 경로를 reservation table 에 commit. 다른 vehicle 이 이미 점유한
127
+ * window 와 충돌 시 null — 호출자가 reroute 하든 대기하든 결정.
128
+ */
129
+ reservePath(plan: PathPlan, priority?: number): Reservation[] | null;
130
+ /**
131
+ * commit 된 reservation 따라 sim time 진행. resolve = 마지막 segment 도착.
132
+ */
133
+ followReservation(reservations: Reservation[]): Promise<void>;
134
+ /** 점유 해제. 도착 완료 또는 cancel 시 호출. */
135
+ releaseReservation(reservations: Reservation[]): void;
136
+ }
137
+ export type YieldDecision = 'a-yields' | 'b-yields' | 'replan-both';
138
+ export interface YieldPolicy {
139
+ /**
140
+ * 두 reservation 이 시간-공간 충돌할 때 누가 양보하는가.
141
+ * 기본: priority 낮은 (수치 높은) 쪽이 양보. 같으면 fifo (먼저 만든 게 우선).
142
+ */
143
+ resolveConflict(a: Reservation, b: Reservation): YieldDecision;
144
+ }
145
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/navigation/types.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAIhD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,YAAY,EAAE,IAAI,EAAE,CAAA;IACpB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,YAAY,CAAA;IACtB,yDAAyD;IACzD,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAA;CACjB;AAID;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,wBAAwB;IACxB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAAA;CAC9C;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,EAAE,YAAY,EAAE,CAAA;IACzB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAA;CACvB;AAID,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,IAAI,EAAE,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,UAAU,CAAA;IACpB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAID,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B;AAID,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,iCAAiC;IACjC,UAAU,EAAE,UAAU,CAAA;IACtB,gCAAgC;IAChC,OAAO,EAAE,IAAI,CAAA;IACb,KAAK,EAAE,IAAI,CAAA;CACZ;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,0BAA0B;IAC1B,eAAe,EAAE,MAAM,CAAA;IACvB,6BAA6B;IAC7B,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,YAAY,CAAA;IAE1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,GAAG,IAAI,CAAA;IAElE;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,IAAI,CAAA;IAEpE;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE7D,mCAAmC;IACnC,kBAAkB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;CACtD;AAID,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAA;AAEnE,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,aAAa,CAAA;CAC/D"}
@@ -0,0 +1,3 @@
1
+ export type { Placement, PlacementPolicy } from './placement.js';
2
+ export { DEFAULT_PLACEMENT, isStateDriven } from './placement.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/placement/index.ts"],"names":[],"mappings":"AAMA,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * 컴포넌트의 placement 결정 정책.
3
+ *
4
+ * - **state-driven** (default): state.left/top/zPos/rotation/... 이 obj3d 에 반영.
5
+ * 현재 things-scene 의 모든 컴포넌트가 묵시적으로 따르는 정책.
6
+ *
7
+ * - **carried**: 다른 holder 의 attach frame 에 부착. holder 의 movement 를
8
+ * scene-graph 통해 자동 추종. carrier policy (world-preserve / belt-aligned /
9
+ * world-fixed 등) 는 holder 가 결정. 예: AGV 위 박스, sorter carrier 위 파레트.
10
+ *
11
+ * - **animated**: animation system 이 일시적으로 obj3d 를 override. animation
12
+ * 종료 시 다른 정책으로 복귀.
13
+ *
14
+ * - **fixed**: world 좌표 고정 (parent 변경 무관). HUD / screenFixed 컴포넌트.
15
+ *
16
+ * - **transitioning**: reparent 중 TransitionEffect 가 보간 제어. transition
17
+ * 완료 시 keepSuppressed 면 carried 또는 manual, 아니면 state-driven 으로 복귀.
18
+ *
19
+ * - **manual**: 컴포넌트 코드가 직접 obj3d.position/quaternion 을 매 frame
20
+ * 조작. framework 는 개입 안 함. 예: cross-belt-line 의 _tickSim, IK
21
+ * smoothing, URDF physics.
22
+ */
23
+ export type PlacementPolicy = 'state-driven' | 'carried' | 'animated' | 'fixed' | 'transitioning' | 'manual';
24
+ /**
25
+ * Placement 선언. 컴포넌트의 RealObject 가 이 객체를 반환하면 framework 가
26
+ * 정책에 따라 동작.
27
+ *
28
+ * Step 1 에선 policy 만 정의. 후속 step 에서 정책별 metadata (예: carried 의
29
+ * carryPolicy 'world-preserve' / 'belt-aligned', transitioning 의 transition 객체)
30
+ * 를 추가.
31
+ */
32
+ export interface Placement {
33
+ policy: PlacementPolicy;
34
+ /**
35
+ * 정책별 metadata. 선언 시점에 정책에 따라 추가 정보를 담음.
36
+ * Step 1 에선 미사용. 향후 정책 별로 타입 좁히기 (discriminated union) 적용.
37
+ */
38
+ meta?: Record<string, unknown>;
39
+ }
40
+ /** 기본 placement = 현재 동작 = state pipeline 이 obj3d 를 결정. */
41
+ export declare const DEFAULT_PLACEMENT: Placement;
42
+ /**
43
+ * Placement 정책이 state pipeline 적용을 허용하는가.
44
+ *
45
+ * - state-driven: ✓ 적용
46
+ * - 그 외: framework 가 obj3d 를 건드리지 않음 (다른 시스템 또는 컴포넌트가 책임).
47
+ *
48
+ * 현재 RealObject 의 `suppressTransform` 플래그와 의미가 겹침. 마이그레이션
49
+ * 단계 (Step 2~7) 에서 suppressTransform 이 점진적으로 `placement.policy !==
50
+ * 'state-driven'` 으로 흡수됨. 호환성 위해 두 메커니즘 일정 기간 병존.
51
+ */
52
+ export declare function isStateDriven(placement: Placement): boolean;
53
+ //# sourceMappingURL=placement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../src/placement/placement.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,SAAS,GACT,UAAU,GACV,OAAO,GACP,eAAe,GACf,QAAQ,CAAA;AAEZ;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,eAAe,CAAA;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,SAAsC,CAAA;AAEtE;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAE3D"}
@@ -0,0 +1,3 @@
1
+ export { SceneSearchEngine, type SearchResult, type SearchOptions } from './scene-search-engine.js';
2
+ export { SearchOverlay, type SearchOverlayHost } from './search-overlay.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACnG,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}