@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.
- package/CHANGELOG.md +77 -0
- package/dist-types/animation/animate.d.ts.map +1 -1
- package/dist-types/animation/animations/animation.d.ts +5 -3
- package/dist-types/animation/animations/animation.d.ts.map +1 -1
- package/dist-types/animation/animations/heartbeat.d.ts +0 -7
- package/dist-types/animation/animations/heartbeat.d.ts.map +1 -1
- package/dist-types/animation/animations/waypoint.d.ts +45 -4
- package/dist-types/animation/animations/waypoint.d.ts.map +1 -1
- package/dist-types/animation/interfaces.d.ts +1 -1
- package/dist-types/animation/interfaces.d.ts.map +1 -1
- package/dist-types/clock/frame-clock.d.ts +119 -0
- package/dist-types/clock/frame-clock.d.ts.map +1 -0
- package/dist-types/clock/index.d.ts +3 -0
- package/dist-types/clock/index.d.ts.map +1 -0
- package/dist-types/command/command-migrate.d.ts.map +1 -1
- package/dist-types/command/snapshot-commander.d.ts.map +1 -1
- package/dist-types/components/audio.d.ts +7 -3
- package/dist-types/components/audio.d.ts.map +1 -1
- package/dist-types/components/component-data.d.ts +24 -0
- package/dist-types/components/component-data.d.ts.map +1 -1
- package/dist-types/components/component-geometry.d.ts.map +1 -1
- package/dist-types/components/component.d.ts +14 -4
- package/dist-types/components/component.d.ts.map +1 -1
- package/dist-types/components/container-abstract.d.ts +48 -7
- package/dist-types/components/container-abstract.d.ts.map +1 -1
- package/dist-types/components/container.d.ts +6 -2
- package/dist-types/components/container.d.ts.map +1 -1
- package/dist-types/components/data/data.d.ts.map +1 -1
- package/dist-types/components/drawer/fill.d.ts.map +1 -1
- package/dist-types/components/drawer/stroke.d.ts.map +1 -1
- package/dist-types/components/ellipse.d.ts +7 -3
- package/dist-types/components/ellipse.d.ts.map +1 -1
- package/dist-types/components/generic-placeholders.d.ts +291 -0
- package/dist-types/components/generic-placeholders.d.ts.map +1 -0
- package/dist-types/components/geometry/snap-guide.d.ts +45 -0
- package/dist-types/components/geometry/snap-guide.d.ts.map +1 -0
- package/dist-types/components/geometry/transcoord.d.ts.map +1 -1
- package/dist-types/components/global-ref.d.ts.map +1 -1
- package/dist-types/components/group.d.ts +1 -0
- package/dist-types/components/group.d.ts.map +1 -1
- package/dist-types/components/html/shadow.d.ts +33 -1
- package/dist-types/components/html/shadow.d.ts.map +1 -1
- package/dist-types/components/html-overlay-container.d.ts +6 -2
- package/dist-types/components/html-overlay-container.d.ts.map +1 -1
- package/dist-types/components/html-overlay-element.d.ts +13 -5
- package/dist-types/components/html-overlay-element.d.ts.map +1 -1
- package/dist-types/components/image-view.d.ts +7 -3
- package/dist-types/components/image-view.d.ts.map +1 -1
- package/dist-types/components/index.d.ts +6 -0
- package/dist-types/components/index.d.ts.map +1 -1
- package/dist-types/components/info-window.d.ts +7 -3
- package/dist-types/components/info-window.d.ts.map +1 -1
- package/dist-types/components/line.d.ts +2 -1
- package/dist-types/components/line.d.ts.map +1 -1
- package/dist-types/components/local-ref.d.ts +7 -3
- package/dist-types/components/local-ref.d.ts.map +1 -1
- package/dist-types/components/mixins/connectable.d.ts +7 -3
- package/dist-types/components/mixins/connectable.d.ts.map +1 -1
- package/dist-types/components/mixins/data-source.d.ts +7 -3
- package/dist-types/components/mixins/data-source.d.ts.map +1 -1
- package/dist-types/components/mixins/gltf-component.d.ts +280 -0
- package/dist-types/components/mixins/gltf-component.d.ts.map +1 -0
- package/dist-types/components/mixins/html-element.d.ts +6 -2
- package/dist-types/components/mixins/html-element.d.ts.map +1 -1
- package/dist-types/components/mixins/move-handle.d.ts +7 -3
- package/dist-types/components/mixins/move-handle.d.ts.map +1 -1
- package/dist-types/components/mixins/rect-path.d.ts +7 -3
- package/dist-types/components/mixins/rect-path.d.ts.map +1 -1
- package/dist-types/components/mixins/three-d-only.d.ts +247 -0
- package/dist-types/components/mixins/three-d-only.d.ts.map +1 -0
- package/dist-types/components/mixins/value-holder.d.ts +7 -3
- package/dist-types/components/mixins/value-holder.d.ts.map +1 -1
- package/dist-types/components/mutater/path.d.ts.map +1 -1
- package/dist-types/components/node.d.ts +7 -3
- package/dist-types/components/node.d.ts.map +1 -1
- package/dist-types/components/outline/path-outline.d.ts.map +1 -1
- package/dist-types/components/polygon.d.ts +2 -0
- package/dist-types/components/polygon.d.ts.map +1 -1
- package/dist-types/components/polyline.d.ts.map +1 -1
- package/dist-types/components/popup-container.d.ts +25 -0
- package/dist-types/components/popup-container.d.ts.map +1 -0
- package/dist-types/components/popup.d.ts +37 -3
- package/dist-types/components/popup.d.ts.map +1 -1
- package/dist-types/components/position/popup-position.d.ts +11 -0
- package/dist-types/components/position/popup-position.d.ts.map +1 -1
- package/dist-types/components/rect.d.ts +14 -6
- package/dist-types/components/rect.d.ts.map +1 -1
- package/dist-types/components/retention/retention-manager.d.ts +9 -1
- package/dist-types/components/retention/retention-manager.d.ts.map +1 -1
- package/dist-types/components/root-container.d.ts +17 -4
- package/dist-types/components/root-container.d.ts.map +1 -1
- package/dist-types/components/ruler.d.ts +7 -3
- package/dist-types/components/ruler.d.ts.map +1 -1
- package/dist-types/components/service-component.d.ts +268 -0
- package/dist-types/components/service-component.d.ts.map +1 -0
- package/dist-types/components/shape.d.ts.map +1 -1
- package/dist-types/components/text.d.ts +7 -3
- package/dist-types/components/text.d.ts.map +1 -1
- package/dist-types/core/memoize.d.ts.map +1 -1
- package/dist-types/decorator/decorator-registry.d.ts +4 -0
- package/dist-types/decorator/decorator-registry.d.ts.map +1 -1
- package/dist-types/decorator/decorators/animated-icon-decorator.d.ts.map +1 -1
- package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts.map +1 -1
- package/dist-types/decorator/decorators/data-spread-decorator.d.ts +16 -0
- package/dist-types/decorator/decorators/data-spread-decorator.d.ts.map +1 -1
- package/dist-types/diagnostics/contract-inspector.d.ts +103 -0
- package/dist-types/diagnostics/contract-inspector.d.ts.map +1 -0
- package/dist-types/diagnostics/data-lag-tracker.d.ts +44 -0
- package/dist-types/diagnostics/data-lag-tracker.d.ts.map +1 -0
- package/dist-types/diagnostics/inspector.d.ts +58 -4
- package/dist-types/diagnostics/inspector.d.ts.map +1 -1
- package/dist-types/diagnostics/load-tracker.d.ts +82 -0
- package/dist-types/diagnostics/load-tracker.d.ts.map +1 -0
- package/dist-types/diagnostics/loading-overlay.d.ts +41 -0
- package/dist-types/diagnostics/loading-overlay.d.ts.map +1 -0
- package/dist-types/diagnostics/metrics.d.ts +10 -0
- package/dist-types/diagnostics/metrics.d.ts.map +1 -1
- package/dist-types/effect/shadow.d.ts +3 -1
- package/dist-types/effect/shadow.d.ts.map +1 -1
- package/dist-types/event-map/index.d.ts +1 -0
- package/dist-types/event-map/index.d.ts.map +1 -1
- package/dist-types/event-map/transition-handler.d.ts +2 -0
- package/dist-types/event-map/transition-handler.d.ts.map +1 -0
- package/dist-types/interfaces/layout.d.ts +35 -1
- package/dist-types/interfaces/layout.d.ts.map +1 -1
- package/dist-types/interfaces/providers.d.ts +20 -3
- package/dist-types/interfaces/providers.d.ts.map +1 -1
- package/dist-types/interfaces/real-object.d.ts +8 -1
- package/dist-types/interfaces/real-object.d.ts.map +1 -1
- package/dist-types/interfaces/rendering.d.ts +86 -14
- package/dist-types/interfaces/rendering.d.ts.map +1 -1
- package/dist-types/interfaces/types.d.ts +20 -1
- package/dist-types/interfaces/types.d.ts.map +1 -1
- package/dist-types/layer/action/popup.d.ts +13 -0
- package/dist-types/layer/action/popup.d.ts.map +1 -1
- package/dist-types/layer/add-layer.d.ts +8 -0
- package/dist-types/layer/add-layer.d.ts.map +1 -1
- package/dist-types/layer/dual-canvas-layer.d.ts.map +1 -1
- package/dist-types/layer/index.d.ts +1 -0
- package/dist-types/layer/index.d.ts.map +1 -1
- package/dist-types/layer/layer.d.ts +1 -0
- package/dist-types/layer/layer.d.ts.map +1 -1
- package/dist-types/layer/model-layer.d.ts +67 -7
- package/dist-types/layer/model-layer.d.ts.map +1 -1
- package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
- package/dist-types/layer/modeling-layer.d.ts.map +1 -1
- package/dist-types/layer/selection/selected-finder.d.ts +1 -1
- package/dist-types/layer/selection/selected-finder.d.ts.map +1 -1
- package/dist-types/layer/selection-layer.d.ts.map +1 -1
- package/dist-types/layer/snap-guide-layer.d.ts +23 -0
- package/dist-types/layer/snap-guide-layer.d.ts.map +1 -0
- package/dist-types/layout/absolute.d.ts +2 -2
- package/dist-types/layout/card.d.ts +2 -2
- package/dist-types/layout/linear-horizontal.d.ts +2 -2
- package/dist-types/layout/linear-vertical.d.ts +2 -2
- package/dist-types/layout/table.d.ts +3 -3
- package/dist-types/math/component-pose.d.ts +51 -0
- package/dist-types/math/component-pose.d.ts.map +1 -0
- package/dist-types/math/index.d.ts +3 -0
- package/dist-types/math/index.d.ts.map +1 -0
- package/dist-types/math/pose6dof.d.ts +93 -0
- package/dist-types/math/pose6dof.d.ts.map +1 -0
- package/dist-types/navigation/index.d.ts +7 -0
- package/dist-types/navigation/index.d.ts.map +1 -0
- package/dist-types/navigation/nav-graph.d.ts +55 -0
- package/dist-types/navigation/nav-graph.d.ts.map +1 -0
- package/dist-types/navigation/path-planner.d.ts +29 -0
- package/dist-types/navigation/path-planner.d.ts.map +1 -0
- package/dist-types/navigation/reservation-table.d.ts +103 -0
- package/dist-types/navigation/reservation-table.d.ts.map +1 -0
- package/dist-types/navigation/types.d.ts +145 -0
- package/dist-types/navigation/types.d.ts.map +1 -0
- package/dist-types/placement/index.d.ts +3 -0
- package/dist-types/placement/index.d.ts.map +1 -0
- package/dist-types/placement/placement.d.ts +53 -0
- package/dist-types/placement/placement.d.ts.map +1 -0
- package/dist-types/search/index.d.ts +3 -0
- package/dist-types/search/index.d.ts.map +1 -0
- package/dist-types/search/scene-search-engine.d.ts +65 -0
- package/dist-types/search/scene-search-engine.d.ts.map +1 -0
- package/dist-types/search/search-overlay.d.ts +95 -0
- package/dist-types/search/search-overlay.d.ts.map +1 -0
- package/dist-types/things-scene/api/add-start.d.ts +25 -0
- package/dist-types/things-scene/api/add-start.d.ts.map +1 -1
- package/dist-types/things-scene/api/align.d.ts.map +1 -1
- package/dist-types/things-scene/api/distribute.d.ts.map +1 -1
- package/dist-types/things-scene/api/ids.d.ts +4 -1
- package/dist-types/things-scene/api/ids.d.ts.map +1 -1
- package/dist-types/things-scene/api/index.d.ts +1 -1
- package/dist-types/things-scene/api/index.d.ts.map +1 -1
- package/dist-types/things-scene/api/place.d.ts.map +1 -1
- package/dist-types/things-scene/application-context.d.ts +49 -0
- package/dist-types/things-scene/application-context.d.ts.map +1 -1
- package/dist-types/things-scene/create.d.ts +43 -3
- package/dist-types/things-scene/create.d.ts.map +1 -1
- package/dist-types/things-scene/index.d.ts +24 -0
- package/dist-types/things-scene/index.d.ts.map +1 -1
- package/dist-types/things-scene/scene.d.ts +108 -2
- package/dist-types/things-scene/scene.d.ts.map +1 -1
- package/dist-types/threed/arrow-3d.d.ts +13 -4
- package/dist-types/threed/arrow-3d.d.ts.map +1 -1
- package/dist-types/threed/environments/base-environment.d.ts +17 -0
- package/dist-types/threed/environments/base-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/cloudy-environment.d.ts +10 -0
- package/dist-types/threed/environments/cloudy-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/factory-environment.d.ts +3 -3
- package/dist-types/threed/environments/factory-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/home-environment.d.ts +3 -3
- package/dist-types/threed/environments/home-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/office-environment.d.ts +3 -3
- package/dist-types/threed/environments/office-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/rainy-environment.d.ts +10 -0
- package/dist-types/threed/environments/rainy-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/studio-environment.d.ts +2 -3
- package/dist-types/threed/environments/studio-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/sunny-environment.d.ts +10 -0
- package/dist-types/threed/environments/sunny-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/warehouse-environment.d.ts +3 -3
- package/dist-types/threed/environments/warehouse-environment.d.ts.map +1 -1
- package/dist-types/threed/factories/backdrop.d.ts +535 -0
- package/dist-types/threed/factories/backdrop.d.ts.map +1 -0
- package/dist-types/threed/factories/banner.d.ts +13 -4
- package/dist-types/threed/factories/banner.d.ts.map +1 -1
- package/dist-types/threed/factories/camera.d.ts +9 -3
- package/dist-types/threed/factories/camera.d.ts.map +1 -1
- package/dist-types/threed/factories/cube.d.ts +8 -3
- package/dist-types/threed/factories/cube.d.ts.map +1 -1
- package/dist-types/threed/factories/cylinder.d.ts +1 -0
- package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
- package/dist-types/threed/factories/decal.d.ts +510 -0
- package/dist-types/threed/factories/decal.d.ts.map +1 -0
- package/dist-types/threed/factories/floor-plate.d.ts +11 -0
- package/dist-types/threed/factories/floor-plate.d.ts.map +1 -0
- package/dist-types/threed/factories/gltf-object.d.ts +264 -38
- package/dist-types/threed/factories/gltf-object.d.ts.map +1 -1
- package/dist-types/threed/factories/group.d.ts +2 -0
- package/dist-types/threed/factories/group.d.ts.map +1 -0
- package/dist-types/threed/factories/light.d.ts +1 -0
- package/dist-types/threed/factories/light.d.ts.map +1 -1
- package/dist-types/threed/factories/line.d.ts +10 -0
- package/dist-types/threed/factories/line.d.ts.map +1 -0
- package/dist-types/threed/factories/ortholine.d.ts +10 -0
- package/dist-types/threed/factories/ortholine.d.ts.map +1 -0
- package/dist-types/threed/factories/polygon.d.ts +19 -0
- package/dist-types/threed/factories/polygon.d.ts.map +1 -1
- package/dist-types/threed/factories/polyline.d.ts +10 -0
- package/dist-types/threed/factories/polyline.d.ts.map +1 -0
- package/dist-types/threed/factories/rect.d.ts.map +1 -1
- package/dist-types/threed/factories/sphere.d.ts +6 -0
- package/dist-types/threed/factories/sphere.d.ts.map +1 -1
- package/dist-types/threed/factories/sprite.d.ts +8 -3
- package/dist-types/threed/factories/sprite.d.ts.map +1 -1
- package/dist-types/threed/factories/triangle.d.ts.map +1 -1
- package/dist-types/threed/factories/wall.d.ts +8 -3
- package/dist-types/threed/factories/wall.d.ts.map +1 -1
- package/dist-types/threed/floor/floor.d.ts.map +1 -1
- package/dist-types/threed/handle-3d.d.ts +21 -0
- package/dist-types/threed/handle-3d.d.ts.map +1 -0
- package/dist-types/threed/html/elements.d.ts.map +1 -1
- package/dist-types/threed/index.d.ts +22 -0
- package/dist-types/threed/index.d.ts.map +1 -1
- package/dist-types/threed/managers/box-selection-manager.d.ts +26 -0
- package/dist-types/threed/managers/box-selection-manager.d.ts.map +1 -0
- package/dist-types/threed/managers/camera-bookmark-manager.d.ts +127 -0
- package/dist-types/threed/managers/camera-bookmark-manager.d.ts.map +1 -0
- package/dist-types/threed/managers/camera-manager.d.ts +9 -3
- package/dist-types/threed/managers/camera-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/controls-manager.d.ts +25 -4
- package/dist-types/threed/managers/controls-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/event-manager3d.d.ts +8 -0
- package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
- package/dist-types/threed/managers/gizmo-manager.d.ts +6 -0
- package/dist-types/threed/managers/gizmo-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts +55 -1
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/index.d.ts +4 -1
- package/dist-types/threed/managers/index.d.ts.map +1 -1
- package/dist-types/threed/managers/interaction-manager.d.ts +17 -0
- package/dist-types/threed/managers/interaction-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/light-manager.d.ts +15 -0
- package/dist-types/threed/managers/light-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/renderer-manager.d.ts +37 -0
- package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/scene-manager.d.ts +12 -2
- package/dist-types/threed/managers/scene-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/types.d.ts +5 -2
- package/dist-types/threed/managers/types.d.ts.map +1 -1
- package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +155 -0
- package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -0
- package/dist-types/threed/material-3d.d.ts +5 -2
- package/dist-types/threed/material-3d.d.ts.map +1 -1
- package/dist-types/threed/ratio-lock-utils.d.ts +9 -0
- package/dist-types/threed/ratio-lock-utils.d.ts.map +1 -0
- package/dist-types/threed/real-object-dom-element.d.ts +2 -0
- package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
- package/dist-types/threed/real-object-dom-texture.d.ts +9 -0
- package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
- package/dist-types/threed/real-object-external-model.d.ts +24 -0
- package/dist-types/threed/real-object-external-model.d.ts.map +1 -0
- package/dist-types/threed/real-object-extrude.d.ts +16 -1
- package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
- package/dist-types/threed/real-object-gltf.d.ts +21 -11
- package/dist-types/threed/real-object-gltf.d.ts.map +1 -1
- package/dist-types/threed/real-object-group.d.ts +2 -0
- package/dist-types/threed/real-object-group.d.ts.map +1 -1
- package/dist-types/threed/real-object-line.d.ts +83 -0
- package/dist-types/threed/real-object-line.d.ts.map +1 -0
- package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
- package/dist-types/threed/real-object-plane-2d.d.ts +23 -0
- package/dist-types/threed/real-object-plane-2d.d.ts.map +1 -1
- package/dist-types/threed/real-object-service.d.ts +14 -0
- package/dist-types/threed/real-object-service.d.ts.map +1 -0
- package/dist-types/threed/real-object-sprite.d.ts +7 -1
- package/dist-types/threed/real-object-sprite.d.ts.map +1 -1
- package/dist-types/threed/real-object-text.d.ts +5 -0
- package/dist-types/threed/real-object-text.d.ts.map +1 -1
- package/dist-types/threed/real-object.d.ts +176 -7
- package/dist-types/threed/real-object.d.ts.map +1 -1
- package/dist-types/threed/text-editor-3d.d.ts +11 -0
- package/dist-types/threed/text-editor-3d.d.ts.map +1 -0
- package/dist-types/threed/texture/canvas-texture.d.ts +7 -0
- package/dist-types/threed/texture/canvas-texture.d.ts.map +1 -1
- package/dist-types/threed/texture/fillstyle-texture.d.ts +46 -0
- package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -0
- package/dist-types/threed/texture/text-texture.d.ts +15 -0
- package/dist-types/threed/texture/text-texture.d.ts.map +1 -1
- package/dist-types/threed/three-capability.d.ts +148 -6
- package/dist-types/threed/three-capability.d.ts.map +1 -1
- package/dist-types/threed/three-container.d.ts +0 -1
- package/dist-types/threed/three-container.d.ts.map +1 -1
- package/dist-types/threed/three-dimensional-container.d.ts +0 -1
- package/dist-types/threed/three-dimensional-container.d.ts.map +1 -1
- package/dist-types/threed/utils/anchor.d.ts +33 -0
- package/dist-types/threed/utils/anchor.d.ts.map +1 -0
- package/dist-types/threed/utils/dispose.d.ts.map +1 -1
- package/dist-types/threed/utils/tether.d.ts +46 -0
- package/dist-types/threed/utils/tether.d.ts.map +1 -0
- package/dist-types/threed/z-priority.d.ts +27 -0
- package/dist-types/threed/z-priority.d.ts.map +1 -0
- package/dist-types/tracker/tracker.d.ts +57 -0
- package/dist-types/tracker/tracker.d.ts.map +1 -0
- package/dist-types/transfer/carrier-line-capability.d.ts +95 -0
- package/dist-types/transfer/carrier-line-capability.d.ts.map +1 -0
- package/dist-types/transfer/centering-slot-strategy.d.ts +8 -0
- package/dist-types/transfer/centering-slot-strategy.d.ts.map +1 -0
- package/dist-types/transfer/container-capacity.d.ts +348 -0
- package/dist-types/transfer/container-capacity.d.ts.map +1 -0
- package/dist-types/transfer/fixed-slot-strategy.d.ts +8 -0
- package/dist-types/transfer/fixed-slot-strategy.d.ts.map +1 -0
- package/dist-types/transfer/index.d.ts +21 -0
- package/dist-types/transfer/index.d.ts.map +1 -0
- package/dist-types/transfer/pickup-helpers.d.ts +65 -0
- package/dist-types/transfer/pickup-helpers.d.ts.map +1 -0
- package/dist-types/transfer/simulation-clock.d.ts +45 -0
- package/dist-types/transfer/simulation-clock.d.ts.map +1 -0
- package/dist-types/transfer/storage-rack-capability.d.ts +144 -0
- package/dist-types/transfer/storage-rack-capability.d.ts.map +1 -0
- package/dist-types/transfer/tracer.d.ts +35 -0
- package/dist-types/transfer/tracer.d.ts.map +1 -0
- package/dist-types/transfer/transfer.d.ts +224 -0
- package/dist-types/transfer/transfer.d.ts.map +1 -0
- package/dist-types/transfer/types.d.ts +389 -0
- package/dist-types/transfer/types.d.ts.map +1 -0
- package/dist-types/transition/transition-effect.d.ts +97 -0
- package/dist-types/transition/transition-effect.d.ts.map +1 -0
- package/dist-types/types/bounding.d.ts +1 -1
- package/dist-types/types/bounding.d.ts.map +1 -1
- package/dist-types/types/component.d.ts +6 -177
- package/dist-types/types/component.d.ts.map +1 -1
- package/dist-types/types/event.d.ts +57 -0
- package/dist-types/types/event.d.ts.map +1 -1
- package/dist-types/types/polygon-path-arc.d.ts +72 -0
- package/dist-types/types/polygon-path-arc.d.ts.map +1 -0
- package/dist-types/types/polygon-path.d.ts +153 -0
- package/dist-types/types/polygon-path.d.ts.map +1 -0
- package/package.json +13 -2
- package/things-scene-min.js +12 -13
- package/things-scene-min.js.map +1 -1
- package/things-scene-transfer.mjs +6 -0
- package/things-scene.mjs +8 -9
- package/things-scene.mjs.map +1 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const t={x:0,y:0,z:0,w:1};function e(t){const e=t/2;return{x:0,y:Math.sin(e),z:0,w:Math.cos(e)}}function s(t,e){const s=t.rotation,i=e.rotation,r=e.position,n=s.w*r.x+s.y*r.z-s.z*r.y,o=s.w*r.y+s.z*r.x-s.x*r.z,h=s.w*r.z+s.x*r.y-s.y*r.x,a=-s.x*r.x-s.y*r.y-s.z*r.z,c=n*s.w+a*-s.x+o*-s.z-h*-s.y,l=o*s.w+a*-s.y+h*-s.x-n*-s.z,u=h*s.w+a*-s.z+n*-s.y-o*-s.x,d={x:s.w*i.x+s.x*i.w+s.y*i.z-s.z*i.y,y:s.w*i.y-s.x*i.z+s.y*i.w+s.z*i.x,z:s.w*i.z+s.x*i.y-s.y*i.x+s.z*i.w,w:s.w*i.w-s.x*i.x-s.y*i.y-s.z*i.z};return{position:{x:t.position.x+c,y:t.position.y+l,z:t.position.z+u},rotation:d}}const i={east:{axis:{x:1,y:0,z:0},yaw:0,idSuffix:"east"},west:{axis:{x:-1,y:0,z:0},yaw:Math.PI,idSuffix:"west"},south:{axis:{x:0,y:0,z:1},yaw:-Math.PI/2,idSuffix:"south"},north:{axis:{x:0,y:0,z:-1},yaw:Math.PI/2,idSuffix:"north"}};function r(t){const{carrierWorld:r,width:n,depth:o,entryHeight:h,approachDistance:a,sides:c,toolType:l,tolerance:u,priority:d}=t,y=n/2,_=o/2;return c.map(t=>{const n=i[t],o="string"==typeof l?l:l[t]??"unknown",c={position:{x:n.axis.x*("east"===t||"west"===t?y:0),y:h,z:n.axis.z*("north"===t||"south"===t?_:0)},rotation:e(n.yaw)},p={position:{x:c.position.x+n.axis.x*a,y:h,z:c.position.z+n.axis.z*a},rotation:e(n.yaw)};return{id:`entry-${n.idSuffix}`,toolType:o,approach:s(r,p),engage:s(r,c),tolerance:u,priority:d}})}function n(e){const{carrierWorld:i,topY:r,approachDistance:n,toolType:o,tolerance:h,priority:a,id:c}=e,l={position:{x:0,y:r,z:0},rotation:{...t}};return{id:c??"top",toolType:o,approach:s(i,{position:{x:0,y:r+n,z:0},rotation:{...t}}),engage:s(i,l),tolerance:h,priority:a}}function o(t,e){return t.filter(t=>t.toolType===e.toolType)}function h(t,e){if(0===t.length)return null;const s=t.map(t=>{const s=t.approach.position.x-e.x,i=t.approach.position.y-e.y,r=t.approach.position.z-e.z;return{f:t,dist:Math.sqrt(s*s+i*i+r*r)}});return s.sort((t,e)=>{const s=t.f.priority??0,i=e.f.priority??0;return s!==i?s-i:t.dist-e.dist}),s[0].f}class a{positionAt(t,e,s){return 0!==t?null:e.localPosition??{x:0,y:0,z:0}}capacity(t){return 1}}const c=new a;class l{constructor(t){this.owner=t}positionAt(t,e,s,i){if(0!==t)return null;const r=this.owner?.state?.width??0,n=this.owner?.state?.height??0,o=i?.state?.width??0,h=i?.state?.height??0;return{x:Math.max(0,(r-o)/2),y:Math.max(0,(n-h)/2),z:0}}capacity(t){return t.maxCount??1}}
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2010-2026 Three.js Authors
|
|
5
|
+
* SPDX-License-Identifier: MIT
|
|
6
|
+
*/const u=2e3;function d(...t){t=function(t){const e=t[0];if("string"==typeof e&&e.startsWith("TSL:")){const e=t[1];e&&e.isStackTrace?t[0]+=" "+e.getLocation():t[1]='Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.'}return t}(t);const e="THREE."+t.shift();{const s=t[0];s&&s.isStackTrace?console.warn(s.getError(e)):console.warn(e,...t)}}function y(t,e,s){return Math.max(e,Math.min(s,t))}class _{constructor(t=0,e=0,s=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=s,this._w=i}static slerpFlat(t,e,s,i,r,n,o){let h=s[i+0],a=s[i+1],c=s[i+2],l=s[i+3],u=r[n+0],d=r[n+1],y=r[n+2],_=r[n+3];if(l!==_||h!==u||a!==d||c!==y){let t=h*u+a*d+c*y+l*_;t<0&&(u=-u,d=-d,y=-y,_=-_,t=-t);let e=1-o;if(t<.9995){const s=Math.acos(t),i=Math.sin(s);e=Math.sin(e*s)/i,h=h*e+u*(o=Math.sin(o*s)/i),a=a*e+d*o,c=c*e+y*o,l=l*e+_*o}else{h=h*e+u*o,a=a*e+d*o,c=c*e+y*o,l=l*e+_*o;const t=1/Math.sqrt(h*h+a*a+c*c+l*l);h*=t,a*=t,c*=t,l*=t}}t[e]=h,t[e+1]=a,t[e+2]=c,t[e+3]=l}static multiplyQuaternionsFlat(t,e,s,i,r,n){const o=s[i],h=s[i+1],a=s[i+2],c=s[i+3],l=r[n],u=r[n+1],d=r[n+2],y=r[n+3];return t[e]=o*y+c*l+h*d-a*u,t[e+1]=h*y+c*u+a*l-o*d,t[e+2]=a*y+c*d+o*u-h*l,t[e+3]=c*y-o*l-h*u-a*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,s,i){return this._x=t,this._y=e,this._z=s,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const s=t._x,i=t._y,r=t._z,n=t._order,o=Math.cos,h=Math.sin,a=o(s/2),c=o(i/2),l=o(r/2),u=h(s/2),y=h(i/2),_=h(r/2);switch(n){case"XYZ":this._x=u*c*l+a*y*_,this._y=a*y*l-u*c*_,this._z=a*c*_+u*y*l,this._w=a*c*l-u*y*_;break;case"YXZ":this._x=u*c*l+a*y*_,this._y=a*y*l-u*c*_,this._z=a*c*_-u*y*l,this._w=a*c*l+u*y*_;break;case"ZXY":this._x=u*c*l-a*y*_,this._y=a*y*l+u*c*_,this._z=a*c*_+u*y*l,this._w=a*c*l-u*y*_;break;case"ZYX":this._x=u*c*l-a*y*_,this._y=a*y*l+u*c*_,this._z=a*c*_-u*y*l,this._w=a*c*l+u*y*_;break;case"YZX":this._x=u*c*l+a*y*_,this._y=a*y*l+u*c*_,this._z=a*c*_-u*y*l,this._w=a*c*l-u*y*_;break;case"XZY":this._x=u*c*l-a*y*_,this._y=a*y*l-u*c*_,this._z=a*c*_+u*y*l,this._w=a*c*l+u*y*_;break;default:d("Quaternion: .setFromEuler() encountered an unknown order: "+n)}return!0===e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const s=e/2,i=Math.sin(s);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,s=e[0],i=e[4],r=e[8],n=e[1],o=e[5],h=e[9],a=e[2],c=e[6],l=e[10],u=s+o+l;if(u>0){const t=.5/Math.sqrt(u+1);this._w=.25/t,this._x=(c-h)*t,this._y=(r-a)*t,this._z=(n-i)*t}else if(s>o&&s>l){const t=2*Math.sqrt(1+s-o-l);this._w=(c-h)/t,this._x=.25*t,this._y=(i+n)/t,this._z=(r+a)/t}else if(o>l){const t=2*Math.sqrt(1+o-s-l);this._w=(r-a)/t,this._x=(i+n)/t,this._y=.25*t,this._z=(h+c)/t}else{const t=2*Math.sqrt(1+l-s-o);this._w=(n-i)/t,this._x=(r+a)/t,this._y=(h+c)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let s=t.dot(e)+1;return s<1e-8?(s=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=s):(this._x=0,this._y=-t.z,this._z=t.y,this._w=s)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=s),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(y(this.dot(t),-1,1)))}rotateTowards(t,e){const s=this.angleTo(t);if(0===s)return this;const i=Math.min(1,e/s);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const s=t._x,i=t._y,r=t._z,n=t._w,o=e._x,h=e._y,a=e._z,c=e._w;return this._x=s*c+n*o+i*a-r*h,this._y=i*c+n*h+r*o-s*a,this._z=r*c+n*a+s*h-i*o,this._w=n*c-s*o-i*h-r*a,this._onChangeCallback(),this}slerp(t,e){let s=t._x,i=t._y,r=t._z,n=t._w,o=this.dot(t);o<0&&(s=-s,i=-i,r=-r,n=-n,o=-o);let h=1-e;if(o<.9995){const t=Math.acos(o),a=Math.sin(t);h=Math.sin(h*t)/a,e=Math.sin(e*t)/a,this._x=this._x*h+s*e,this._y=this._y*h+i*e,this._z=this._z*h+r*e,this._w=this._w*h+n*e,this._onChangeCallback()}else this._x=this._x*h+s*e,this._y=this._y*h+i*e,this._z=this._z*h+r*e,this._w=this._w*h+n*e,this.normalize();return this}slerpQuaternions(t,e,s){return this.copy(t).slerp(e,s)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),s=Math.random(),i=Math.sqrt(1-s),r=Math.sqrt(s);return this.set(i*Math.sin(t),i*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class p{constructor(t=0,e=0,s=0){p.prototype.isVector3=!0,this.x=t,this.y=e,this.z=s}set(t,e,s){return void 0===s&&(s=this.z),this.x=t,this.y=e,this.z=s,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(m.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(m.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,s=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*s+r[6]*i,this.y=r[1]*e+r[4]*s+r[7]*i,this.z=r[2]*e+r[5]*s+r[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,s=this.y,i=this.z,r=t.elements,n=1/(r[3]*e+r[7]*s+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*s+r[8]*i+r[12])*n,this.y=(r[1]*e+r[5]*s+r[9]*i+r[13])*n,this.z=(r[2]*e+r[6]*s+r[10]*i+r[14])*n,this}applyQuaternion(t){const e=this.x,s=this.y,i=this.z,r=t.x,n=t.y,o=t.z,h=t.w,a=2*(n*i-o*s),c=2*(o*e-r*i),l=2*(r*s-n*e);return this.x=e+h*a+n*l-o*c,this.y=s+h*c+o*a-r*l,this.z=i+h*l+r*c-n*a,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,s=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*s+r[8]*i,this.y=r[1]*e+r[5]*s+r[9]*i,this.z=r[2]*e+r[6]*s+r[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=y(this.x,t.x,e.x),this.y=y(this.y,t.y,e.y),this.z=y(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=y(this.x,t,e),this.y=y(this.y,t,e),this.z=y(this.z,t,e),this}clampLength(t,e){const s=this.length();return this.divideScalar(s||1).multiplyScalar(y(s,t,e))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,s){return this.x=t.x+(e.x-t.x)*s,this.y=t.y+(e.y-t.y)*s,this.z=t.z+(e.z-t.z)*s,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const s=t.x,i=t.y,r=t.z,n=e.x,o=e.y,h=e.z;return this.x=i*h-r*o,this.y=r*n-s*h,this.z=s*o-i*n,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const s=t.dot(this)/e;return this.copy(t).multiplyScalar(s)}projectOnPlane(t){return f.copy(this).projectOnVector(t),this.sub(f)}reflect(t){return this.sub(f.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const s=this.dot(t)/e;return Math.acos(y(s,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,s=this.y-t.y,i=this.z-t.z;return e*e+s*s+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,s){const i=Math.sin(e)*t;return this.x=i*Math.sin(s),this.y=Math.cos(e)*t,this.z=i*Math.cos(s),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,s){return this.x=t*Math.sin(e),this.y=s,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),s=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=s,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=2*Math.random()-1,s=Math.sqrt(1-e*e);return this.x=s*Math.cos(t),this.y=e,this.z=s*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const f=new p,m=new _;class x{constructor(t,e,s,i,r,n,o,h,a,c,l,u,d,y,_,p){x.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,e,s,i,r,n,o,h,a,c,l,u,d,y,_,p)}set(t,e,s,i,r,n,o,h,a,c,l,u,d,y,_,p){const f=this.elements;return f[0]=t,f[4]=e,f[8]=s,f[12]=i,f[1]=r,f[5]=n,f[9]=o,f[13]=h,f[2]=a,f[6]=c,f[10]=l,f[14]=u,f[3]=d,f[7]=y,f[11]=_,f[15]=p,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new x).fromArray(this.elements)}copy(t){const e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],e[9]=s[9],e[10]=s[10],e[11]=s[11],e[12]=s[12],e[13]=s[13],e[14]=s[14],e[15]=s[15],this}copyPosition(t){const e=this.elements,s=t.elements;return e[12]=s[12],e[13]=s[13],e[14]=s[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,s){return 0===this.determinant()?(t.set(1,0,0),e.set(0,1,0),s.set(0,0,1),this):(t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),s.setFromMatrixColumn(this,2),this)}makeBasis(t,e,s){return this.set(t.x,e.x,s.x,0,t.y,e.y,s.y,0,t.z,e.z,s.z,0,0,0,0,1),this}extractRotation(t){if(0===t.determinant())return this.identity();const e=this.elements,s=t.elements,i=1/g.setFromMatrixColumn(t,0).length(),r=1/g.setFromMatrixColumn(t,1).length(),n=1/g.setFromMatrixColumn(t,2).length();return e[0]=s[0]*i,e[1]=s[1]*i,e[2]=s[2]*i,e[3]=0,e[4]=s[4]*r,e[5]=s[5]*r,e[6]=s[6]*r,e[7]=0,e[8]=s[8]*n,e[9]=s[9]*n,e[10]=s[10]*n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,s=t.x,i=t.y,r=t.z,n=Math.cos(s),o=Math.sin(s),h=Math.cos(i),a=Math.sin(i),c=Math.cos(r),l=Math.sin(r);if("XYZ"===t.order){const t=n*c,s=n*l,i=o*c,r=o*l;e[0]=h*c,e[4]=-h*l,e[8]=a,e[1]=s+i*a,e[5]=t-r*a,e[9]=-o*h,e[2]=r-t*a,e[6]=i+s*a,e[10]=n*h}else if("YXZ"===t.order){const t=h*c,s=h*l,i=a*c,r=a*l;e[0]=t+r*o,e[4]=i*o-s,e[8]=n*a,e[1]=n*l,e[5]=n*c,e[9]=-o,e[2]=s*o-i,e[6]=r+t*o,e[10]=n*h}else if("ZXY"===t.order){const t=h*c,s=h*l,i=a*c,r=a*l;e[0]=t-r*o,e[4]=-n*l,e[8]=i+s*o,e[1]=s+i*o,e[5]=n*c,e[9]=r-t*o,e[2]=-n*a,e[6]=o,e[10]=n*h}else if("ZYX"===t.order){const t=n*c,s=n*l,i=o*c,r=o*l;e[0]=h*c,e[4]=i*a-s,e[8]=t*a+r,e[1]=h*l,e[5]=r*a+t,e[9]=s*a-i,e[2]=-a,e[6]=o*h,e[10]=n*h}else if("YZX"===t.order){const t=n*h,s=n*a,i=o*h,r=o*a;e[0]=h*c,e[4]=r-t*l,e[8]=i*l+s,e[1]=l,e[5]=n*c,e[9]=-o*c,e[2]=-a*c,e[6]=s*l+i,e[10]=t-r*l}else if("XZY"===t.order){const t=n*h,s=n*a,i=o*h,r=o*a;e[0]=h*c,e[4]=-l,e[8]=a*c,e[1]=t*l+r,e[5]=n*c,e[9]=s*l-i,e[2]=i*l-s,e[6]=o*c,e[10]=r*l+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(z,t,w)}lookAt(t,e,s){const i=this.elements;return v.subVectors(t,e),0===v.lengthSq()&&(v.z=1),v.normalize(),b.crossVectors(s,v),0===b.lengthSq()&&(1===Math.abs(s.z)?v.x+=1e-4:v.z+=1e-4,v.normalize(),b.crossVectors(s,v)),b.normalize(),S.crossVectors(v,b),i[0]=b.x,i[4]=S.x,i[8]=v.x,i[1]=b.y,i[5]=S.y,i[9]=v.y,i[2]=b.z,i[6]=S.z,i[10]=v.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,i=e.elements,r=this.elements,n=s[0],o=s[4],h=s[8],a=s[12],c=s[1],l=s[5],u=s[9],d=s[13],y=s[2],_=s[6],p=s[10],f=s[14],m=s[3],x=s[7],g=s[11],M=s[15],z=i[0],w=i[4],b=i[8],S=i[12],v=i[1],k=i[5],R=i[9],C=i[13],I=i[2],E=i[6],A=i[10],j=i[14],F=i[3],T=i[7],N=i[11],P=i[15];return r[0]=n*z+o*v+h*I+a*F,r[4]=n*w+o*k+h*E+a*T,r[8]=n*b+o*R+h*A+a*N,r[12]=n*S+o*C+h*j+a*P,r[1]=c*z+l*v+u*I+d*F,r[5]=c*w+l*k+u*E+d*T,r[9]=c*b+l*R+u*A+d*N,r[13]=c*S+l*C+u*j+d*P,r[2]=y*z+_*v+p*I+f*F,r[6]=y*w+_*k+p*E+f*T,r[10]=y*b+_*R+p*A+f*N,r[14]=y*S+_*C+p*j+f*P,r[3]=m*z+x*v+g*I+M*F,r[7]=m*w+x*k+g*E+M*T,r[11]=m*b+x*R+g*A+M*N,r[15]=m*S+x*C+g*j+M*P,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],s=t[4],i=t[8],r=t[12],n=t[1],o=t[5],h=t[9],a=t[13],c=t[2],l=t[6],u=t[10],d=t[14],y=t[3],_=t[7],p=t[11],f=t[15],m=h*d-a*u,x=o*d-a*l,g=o*u-h*l,M=n*d-a*c,z=n*u-h*c,w=n*l-o*c;return e*(_*m-p*x+f*g)-s*(y*m-p*M+f*z)+i*(y*x-_*M+f*w)-r*(y*g-_*z+p*w)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,s){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=s),this}invert(){const t=this.elements,e=t[0],s=t[1],i=t[2],r=t[3],n=t[4],o=t[5],h=t[6],a=t[7],c=t[8],l=t[9],u=t[10],d=t[11],y=t[12],_=t[13],p=t[14],f=t[15],m=e*o-s*n,x=e*h-i*n,g=e*a-r*n,M=s*h-i*o,z=s*a-r*o,w=i*a-r*h,b=c*_-l*y,S=c*p-u*y,v=c*f-d*y,k=l*p-u*_,R=l*f-d*_,C=u*f-d*p,I=m*C-x*R+g*k+M*v-z*S+w*b;if(0===I)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const E=1/I;return t[0]=(o*C-h*R+a*k)*E,t[1]=(i*R-s*C-r*k)*E,t[2]=(_*w-p*z+f*M)*E,t[3]=(u*z-l*w-d*M)*E,t[4]=(h*v-n*C-a*S)*E,t[5]=(e*C-i*v+r*S)*E,t[6]=(p*g-y*w-f*x)*E,t[7]=(c*w-u*g+d*x)*E,t[8]=(n*R-o*v+a*b)*E,t[9]=(s*v-e*R-r*b)*E,t[10]=(y*z-_*g+f*m)*E,t[11]=(l*g-c*z-d*m)*E,t[12]=(o*S-n*k-h*b)*E,t[13]=(e*k-s*S+i*b)*E,t[14]=(_*x-y*M-p*m)*E,t[15]=(c*M-l*x+u*m)*E,this}scale(t){const e=this.elements,s=t.x,i=t.y,r=t.z;return e[0]*=s,e[4]*=i,e[8]*=r,e[1]*=s,e[5]*=i,e[9]*=r,e[2]*=s,e[6]*=i,e[10]*=r,e[3]*=s,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],s=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,s,i))}makeTranslation(t,e,s){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,s,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),s=Math.sin(t);return this.set(1,0,0,0,0,e,-s,0,0,s,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,0,s,0,0,1,0,0,-s,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,-s,0,0,s,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const s=Math.cos(e),i=Math.sin(e),r=1-s,n=t.x,o=t.y,h=t.z,a=r*n,c=r*o;return this.set(a*n+s,a*o-i*h,a*h+i*o,0,a*o+i*h,c*o+s,c*h-i*n,0,a*h-i*o,c*h+i*n,r*h*h+s,0,0,0,0,1),this}makeScale(t,e,s){return this.set(t,0,0,0,0,e,0,0,0,0,s,0,0,0,0,1),this}makeShear(t,e,s,i,r,n){return this.set(1,s,r,0,t,1,n,0,e,i,1,0,0,0,0,1),this}compose(t,e,s){const i=this.elements,r=e._x,n=e._y,o=e._z,h=e._w,a=r+r,c=n+n,l=o+o,u=r*a,d=r*c,y=r*l,_=n*c,p=n*l,f=o*l,m=h*a,x=h*c,g=h*l,M=s.x,z=s.y,w=s.z;return i[0]=(1-(_+f))*M,i[1]=(d+g)*M,i[2]=(y-x)*M,i[3]=0,i[4]=(d-g)*z,i[5]=(1-(u+f))*z,i[6]=(p+m)*z,i[7]=0,i[8]=(y+x)*w,i[9]=(p-m)*w,i[10]=(1-(u+_))*w,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,s){const i=this.elements;t.x=i[12],t.y=i[13],t.z=i[14];const r=this.determinant();if(0===r)return s.set(1,1,1),e.identity(),this;let n=g.set(i[0],i[1],i[2]).length();const o=g.set(i[4],i[5],i[6]).length(),h=g.set(i[8],i[9],i[10]).length();r<0&&(n=-n),M.copy(this);const a=1/n,c=1/o,l=1/h;return M.elements[0]*=a,M.elements[1]*=a,M.elements[2]*=a,M.elements[4]*=c,M.elements[5]*=c,M.elements[6]*=c,M.elements[8]*=l,M.elements[9]*=l,M.elements[10]*=l,e.setFromRotationMatrix(M),s.x=n,s.y=o,s.z=h,this}makePerspective(t,e,s,i,r,n,o=2e3,h=!1){const a=this.elements,c=2*r/(e-t),l=2*r/(s-i),d=(e+t)/(e-t),y=(s+i)/(s-i);let _,p;if(h)_=r/(n-r),p=n*r/(n-r);else if(o===u)_=-(n+r)/(n-r),p=-2*n*r/(n-r);else{if(2001!==o)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);_=-n/(n-r),p=-n*r/(n-r)}return a[0]=c,a[4]=0,a[8]=d,a[12]=0,a[1]=0,a[5]=l,a[9]=y,a[13]=0,a[2]=0,a[6]=0,a[10]=_,a[14]=p,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(t,e,s,i,r,n,o=2e3,h=!1){const a=this.elements,c=2/(e-t),l=2/(s-i),d=-(e+t)/(e-t),y=-(s+i)/(s-i);let _,p;if(h)_=1/(n-r),p=n/(n-r);else if(o===u)_=-2/(n-r),p=-(n+r)/(n-r);else{if(2001!==o)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);_=-1/(n-r),p=-r/(n-r)}return a[0]=c,a[4]=0,a[8]=0,a[12]=d,a[1]=0,a[5]=l,a[9]=0,a[13]=y,a[2]=0,a[6]=0,a[10]=_,a[14]=p,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(t){const e=this.elements,s=t.elements;for(let t=0;t<16;t++)if(e[t]!==s[t])return!1;return!0}fromArray(t,e=0){for(let s=0;s<16;s++)this.elements[s]=t[s+e];return this}toArray(t=[],e=0){const s=this.elements;return t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t[e+9]=s[9],t[e+10]=s[10],t[e+11]=s[11],t[e+12]=s[12],t[e+13]=s[13],t[e+14]=s[14],t[e+15]=s[15],t}}const g=new p,M=new x,z=new p(0,0,0),w=new p(1,1,1),b=new p,S=new p,v=new p,k=new x,R=new _;class C{constructor(t=0,e=0,s=0,i=C.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=s,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,s,i=this._order){return this._x=t,this._y=e,this._z=s,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,s=!0){const i=t.elements,r=i[0],n=i[4],o=i[8],h=i[1],a=i[5],c=i[9],l=i[2],u=i[6],_=i[10];switch(e){case"XYZ":this._y=Math.asin(y(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,_),this._z=Math.atan2(-n,r)):(this._x=Math.atan2(u,a),this._z=0);break;case"YXZ":this._x=Math.asin(-y(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(o,_),this._z=Math.atan2(h,a)):(this._y=Math.atan2(-l,r),this._z=0);break;case"ZXY":this._x=Math.asin(y(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-l,_),this._z=Math.atan2(-n,a)):(this._y=0,this._z=Math.atan2(h,r));break;case"ZYX":this._y=Math.asin(-y(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(u,_),this._z=Math.atan2(h,r)):(this._x=0,this._z=Math.atan2(-n,a));break;case"YZX":this._z=Math.asin(y(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(-c,a),this._y=Math.atan2(-l,r)):(this._x=0,this._y=Math.atan2(o,_));break;case"XZY":this._z=Math.asin(-y(n,-1,1)),Math.abs(n)<.9999999?(this._x=Math.atan2(u,a),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-c,_),this._y=0);break;default:d("Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===s&&this._onChangeCallback(),this}setFromQuaternion(t,e,s){return k.makeRotationFromQuaternion(t),this.setFromRotationMatrix(k,e,s)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return R.setFromEuler(this),this.setFromQuaternion(R,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}C.DEFAULT_ORDER="XYZ","undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"183"}})),"undefined"!=typeof window&&(window.__THREE__?d("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="183");const I=new class{constructor(){this._now=0,this._speed=1,this._paused=!1,this._listeners=new Set}get now(){return this._now}get speed(){return this._speed}set speed(t){this._speed=Math.max(0,t),this._speed>0&&(this._paused=!1)}get isPaused(){return this._paused}pause(){this._paused=!0}resume(){this._paused=!1}tick(t){if(this._paused||0===this._speed)return 0;const e=Math.min(t,200)*this._speed;return this._now+=e,this._notify(e),e}step(t){t<=0||(this._now+=t,this._notify(t))}onTick(t){return this._listeners.add(t),()=>this._listeners.delete(t)}_notify(t){this._listeners.forEach(e=>e(t))}};"undefined"!=typeof globalThis&&(globalThis.__THINGS_SCENE_SIM_CLOCK__=I);let E=null;const A=[],j=new Set;function F(t){if(!t)return;const e=t?.state?.id??t?.id??t?.refid;return void 0!==e?String(e):void 0}const T={beginContext(t){E=t},endContext(){E=null},current:()=>E,log(t){const e={role:t.role,contract:t.contract,componentId:t.componentId??F(t.component),componentType:t.componentType??(s=t.component,s?.state?.type??s?.type),atSimMs:I.now,args:t.args,result:t.result,error:t.error};var s;E?E.pushTrace(e):(A.push(e),A.length>500&&A.shift(),j.forEach(t=>{try{t(e)}catch{}}))},standaloneEvents:()=>[...A],onStandalone:t=>(j.add(t),()=>{j.delete(t)}),clearStandalone(){A.length=0}};function N(t){if(!t)return;const e=t?.state?.id??t?.id;return"string"==typeof e?e:void 0}function P(t){const e={transferId:t.transferId,phase:t.phase,timeline:{...t.timeline}},s=t.sourceId??N(t.source),i=t.targetId??N(t.target),r=t.carrierId??N(t.carrier);return void 0!==s&&(e.sourceId=s),void 0!==i&&(e.targetId=i),void 0!==r&&(e.carrierId=r),void 0!==t.slotId&&(e.slotId=t.slotId),void 0!==t.rejectReason&&(e.rejectReason=t.rejectReason),e}let q=1;class O{constructor(t){this._phase="pending",this._slot=null,this._traceEvents=[],this.meta={},this.id="xfer-"+q++,this.source=t.source,this.target=t.target,this.carrier=t.carrier,this.options=t.options??{},this.physical=t.physical??null,this._timeline={initiatedAt:I.now}}pushTrace(t){this._traceEvents.push({atSimMs:t.atSimMs??I.now,...t})}get phase(){return this._phase}get timeline(){return this._timeline}async execute(){T.beginContext(this),T.log({role:"transfer",contract:"execute:begin",args:{transferId:this.id,source:N(this.source),target:N(this.target),carrier:N(this.carrier)}});try{return await this._executeImpl()}finally{T.log({role:"transfer",contract:"execute:end",args:{transferId:this.id,phase:this._phase}}),T.endContext()}}executeSync(){T.beginContext(this),T.log({role:"transfer",contract:"executeSync:begin",args:{transferId:this.id,source:N(this.source),target:N(this.target),carrier:N(this.carrier)}});try{this._phase="planning",this._timeline.planStartAt=I.now;const t=this.target.canAccept?.(this.carrier);if(t){if(!t.ok){this._rejectReason=t.reason,this._phase="rolled-back";const e=this._buildReceipt();return Y.append(e),e}this._slot=t.slot}else if("function"==typeof this.target.canReceive){if(!this.target.canReceive(this.carrier)){this._rejectReason="cannot-receive",this._phase="rolled-back";const t=this._buildReceipt();return Y.append(t),t}this._slot="function"==typeof this.target.findSlot?this.target.findSlot(this.carrier):null}else this._slot=null;if(this._timeline.planEndAt=I.now,this.physical){this._phase="physical",this._timeline.physicalStartAt=I.now;try{const t=this.physical();t instanceof Promise&&t.catch(()=>{})}catch(t){this._rejectReason=`physical-failed: ${t.message??"unknown"}`,this._phase="rolled-back";const e=this._buildReceipt();return Y.append(e),e}this._timeline.physicalEndAt=I.now}this._phase="handoff",this._timeline.handoffAt=I.now;const e=this.target.accept??this.target.receive;if("function"==typeof e)try{const t=e.call(this.target,this.carrier,this.options);t instanceof Promise&&t.catch(()=>{})}catch(t){this._rejectReason=`handoff-failed: ${t.message??"unknown"}`,this._phase="rolled-back";const e=this._buildReceipt();throw Y.append(e),t}else T.log({role:"target",contract:"handoff:noop",component:this.target,args:{reason:"no-accept-method"}});this._phase="committed",this._timeline.committedAt=I.now;const s=this._buildReceipt();return Y.append(s),s}finally{T.log({role:"transfer",contract:"executeSync:end",args:{transferId:this.id,phase:this._phase}}),T.endContext()}}async _executeImpl(){this._phase="planning",this._timeline.planStartAt=I.now;const t=this.target.canAccept?.(this.carrier);if(t){if(!t.ok){this._rejectReason=t.reason,this._phase="rolled-back";const e=this._buildReceipt();return Y.append(e),e}this._slot=t.slot}else{if(!this.target.canReceive(this.carrier)){this._rejectReason="cannot-receive",this._phase="rolled-back";const t=this._buildReceipt();return Y.append(t),t}this._slot="function"==typeof this.target.findSlot?this.target.findSlot(this.carrier):null}if(this._timeline.planEndAt=I.now,this.physical){this._phase="physical",this._timeline.physicalStartAt=I.now;try{await this.physical()}catch(t){this._rejectReason=`physical-failed: ${t.message??"unknown"}`,this._phase="rolled-back";const e=this._buildReceipt();return Y.append(e),e}this._timeline.physicalEndAt=I.now}this._phase="handoff",this._timeline.handoffAt=I.now;const e=this.target.accept??this.target.receive;if("function"==typeof e)try{await e.call(this.target,this.carrier,this.options)}catch(t){this._rejectReason=`handoff-failed: ${t.message??"unknown"}`,this._phase="rolled-back";const e=this._buildReceipt();throw Y.append(e),t}else T.log({role:"target",contract:"handoff:noop",component:this.target,args:{reason:"no-accept-method (physical phase handled handoff)"}});this._phase="committed",this._timeline.committedAt=I.now;const s=this._buildReceipt();return Y.append(s),s}rollback(){if("committed"===this._phase)throw new Error("Cannot rollback a committed transfer");this._rejectReason=this._rejectReason??"manual-rollback",this._phase="rolled-back",Y.append(this._buildReceipt())}_buildReceipt(){return{transferId:this.id,source:this.source,target:this.target,carrier:this.carrier,sourceId:N(this.source),targetId:N(this.target),carrierId:N(this.carrier),phase:this._phase,timeline:{...this._timeline},slotId:this._slot?.id,rejectReason:this._rejectReason,traceEvents:[...this._traceEvents],meta:Object.keys(this.meta).length>0?{...this.meta}:void 0}}}const Y=new class{constructor(){this._entries=[],this._maxEntries=1e3,this._listeners=new Set}append(t){this._entries.push(t),this._entries.length>this._maxEntries&&this._entries.shift(),this._listeners.forEach(e=>e(t))}entries(){return[...this._entries]}forCarrier(t){const e=N(t);return this._entries.filter(s=>s.carrier===t||e&&s.carrierId===e)}forCarrierId(t){return this._entries.filter(e=>e.carrierId===t)}forSourceId(t){return this._entries.filter(e=>e.sourceId===t)}forTargetId(t){return this._entries.filter(e=>e.targetId===t)}forPhase(t){return this._entries.filter(e=>e.phase===t)}inTimeRange(t,e,s="init"){return"init"===s?this._entries.filter(s=>s.timeline.initiatedAt>=t&&s.timeline.initiatedAt<=e):this._entries.filter(s=>{const i=s.timeline.initiatedAt,r=s.timeline.committedAt??s.timeline.handoffAt??s.timeline.physicalEndAt??s.timeline.planEndAt??i;return i<=e&&r>=t})}groupByRejectReason(){const t=new Map;for(const e of this._entries)if(e.rejectReason){const s=t.get(e.rejectReason)??[];s.push(e),t.set(e.rejectReason,s)}return t}stats(){const t=this._entries.length,e={};let s=0,i=0;for(const t of this._entries)e[t.phase]=(e[t.phase]??0)+1,"committed"===t.phase&&void 0!==t.timeline.committedAt&&(s+=t.timeline.committedAt-t.timeline.initiatedAt,i++);const r=e["rolled-back"]??0;return{total:t,byPhase:e,committed:e.committed??0,rolledBack:r,rejectionRate:t>0?r/t:0,avgTransferDurationMs:i>0?s/i:0}}subscribe(t){return this._listeners.add(t),()=>{this._listeners.delete(t)}}clear(){this._entries.length=0}setMaxEntries(t){this._maxEntries=Math.max(1,t)}toJSON(){return this._entries.map(P)}fromJSON(t){this._entries=t.map(t=>({transferId:t.transferId,source:void 0,target:void 0,carrier:void 0,sourceId:t.sourceId,targetId:t.targetId,carrierId:t.carrierId,phase:t.phase,timeline:{...t.timeline},slotId:t.slotId,rejectReason:t.rejectReason}))}replayTo(t){for(const e of this._entries)t(e)}};function W(t){return{id:t?.state?.id??t?.id??t?.refid,type:t?.state?.type??t?.type}}"undefined"!=typeof globalThis&&(globalThis.__THINGS_SCENE_TRANSFER_LOG__=Y);const L=new C,X="_transferSlotId";function Z(t){return class extends t{get slots(){return[]}get arrangementStrategy(){return c}canReceive(t){const e=null!==this.findSlot(t);return T.log({role:"target",contract:"canReceive",component:this,args:{carrier:W(t)},result:e}),e}findSlot(t){const e=this.slots;if(!e.length)return T.log({role:"target",contract:"findSlot",component:this,args:{carrier:W(t)},result:null}),null;for(const s of e){if(s.allowedTypes?.length){const e=t?.state?.type??t?.type;if(!e||!s.allowedTypes.includes(e))continue}const e=s.maxCount??this.arrangementStrategy.capacity(s),i=this._countOccupied(s.id);if(!(i>=e))return T.log({role:"target",contract:"findSlot",component:this,args:{carrier:W(t)},result:{slotId:s.id,occupied:i,max:e}}),s}return T.log({role:"target",contract:"findSlot",component:this,args:{carrier:W(t)},result:null}),null}async receive(t,e={}){T.log({role:"target",contract:"receive:enter",component:this,args:{carrier:W(t),options:e}});const s=this.findSlot(t);if(!s){T.log({role:"target",contract:"receive:reject",component:this,args:{carrier:W(t)},result:{reason:"no-slot"}}),this.trigger("transfer-rejected",{type:"transfer-rejected",component:t,container:this,reason:"no-slot"});const e=new Error("receive rejected: no-slot");throw e.reason="no-slot",e}const i=this._countOccupied(s.id),r=this.arrangementStrategy.positionAt(i,s,i,t);T.log({role:"target",contract:"arrangementStrategy.positionAt",component:this,args:{idx:i,slotId:s.id,occupantCount:i,carrier:W(t)},result:r}),t[X]=s.id;const n=t._realObject;let o,h;n?.object3d&&(n.object3d.updateWorldMatrix(!0,!1),o=new p,h=new _,n.object3d.getWorldPosition(o),n.object3d.getWorldQuaternion(h));const{animated:a=!1,duration:c,ease:l}=e;this.reparent?.(t,{animated:a,duration:c,ease:l}),!a&&t._realObject&&(t._realObject.suppressTransform=!1);{const e=this._realObject?.receivingSurfaceY??0,i={};if(r&&(i.left=r.x,i.top=r.y),0!==e)i.zPos=0;else if(s.localPosition&&Number.isFinite(s.localPosition.z)){const t=this._realObject?.geometricOffsetY??0;i.zPos=s.localPosition.z+t}const n=this.acceptanceRotation?.(t,s);T.log({role:"target",contract:"acceptanceRotation",component:this,args:{carrier:W(t),slotId:s.id},result:n}),n&&(L.setFromQuaternion(new _(n.x,n.y,n.z,n.w),"XYZ"),i.rotationX=L.x,i.rotation=-L.y,i.rotationY=L.z);const o=this.normalizePose?.(t,s);"function"==typeof this.normalizePose&&T.log({role:"target",contract:"normalizePose",component:this,args:{carrier:W(t),slotId:s.id},result:o}),o&&Object.assign(i,o),Object.keys(i).length&&(t.setState?.(i),T.log({role:"target",contract:"receive:setState",component:this,args:{carrier:W(t),keys:Object.keys(i)}}))}this.trigger("transfer-received",{type:"transfer-received",component:t,container:this,slotId:s.id,preReceiveWorldPos:o,preReceiveWorldQuat:h}),T.log({role:"target",contract:"receive:done",component:this,args:{carrier:W(t),slotId:s.id}})}async dispatch(t,e,s={}){const i=new O({source:this,target:e,carrier:t,options:s,physical:async()=>{delete t[X]}}),r=await i.execute();"rolled-back"!==r.phase?this.trigger("transfer-dispatched",{type:"transfer-dispatched",component:t,container:this,target:e}):this.trigger("transfer-rejected",{type:"transfer-rejected",component:t,container:this,reason:r.rejectReason??"rejected"})}route(t){return null}resolveRoute(t,e){}rejectRoute(t,e="rejected"){this.trigger("transfer-rejected",{type:"transfer-rejected",component:t,container:this,reason:e})}acceptanceRotation(t,e){}canAccept(t){const e=(()=>{const e=this.slots;if(!e.length)return{ok:!1,reason:"no-slots-defined"};const s=this.findSlot(t);if(!s){const s=t?.state?.type??t?.type;for(const t of e)if(!t.allowedTypes?.length||!s||t.allowedTypes.includes(s))return{ok:!1,reason:"all-slots-full"};return{ok:!1,reason:"type-not-accepted"}}return{ok:!0,slot:s}})();return T.log({role:"target",contract:"canAccept",component:this,args:{carrier:W(t)},result:e.ok?{ok:!0,slotId:e.slot.id}:{ok:!1,reason:e.reason}}),e}accept(t,e){return this.receive(t,e)}deliveryWorldRotation(t){const e=this.acceptanceRotation?.(t);if(!e)return;const s=this._realObject?.object3d;if(!s)return;s.updateWorldMatrix(!0,!1);const i=new _;s.getWorldQuaternion(i);const r=new _(e.x,e.y,e.z,e.w);return i.clone().multiply(r)}deliveryWorldPosition(t){const e=this._realObject,s=e?.object3d;if(!s)return;s.updateWorldMatrix(!0,!1);const i=new p;s.getWorldPosition(i);const r=e.receivingSurfaceY;if("number"==typeof r&&0!==r){const t=e.geometricOffsetY??0,n=new p(0,r-t,0);return s.localToWorld(n),{x:i.x,y:n.y,z:i.z}}return{x:i.x,y:i.y,z:i.z}}attachPointFor(t){const e=t?.[X];if(!e)return null;const s=this.slots.find(t=>t.id===e);return s?{position:s.localPosition??{x:0,y:0,z:0},rotation:s.localRotation??{x:0,y:0,z:0},slotId:s.id}:null}_countOccupied(t){const e=this.components;return e?e.filter(e=>e.parent===this&&e[X]===t).length:0}}}function V(t){if(!t||"object"!=typeof t)return!1;const e=t;return"function"==typeof e.canReserveAtJoinPoint&&"function"==typeof e.reserveAtJoinPoint&&"function"==typeof e.commitReservation&&"function"==typeof e.releaseReservation&&e.carrierMap instanceof Map}function Q(t){if(!t||"object"!=typeof t)return!1;const e=t;return"function"==typeof e.slotAt&&"function"==typeof e.findFreeSlot&&"function"==typeof e.findSlotsWithSKU&&"function"==typeof e.reservePut&&"function"==typeof e.reservePick&&"function"==typeof e.commitReservation&&"function"==typeof e.releaseReservation&&e.slots instanceof Map}function D(t){return`${t.level}.${t.bay}.${t.depth}`}function H(t){const e=t.split(".");if(3!==e.length)return null;const[s,i,r]=e.map(t=>Number.parseInt(t,10));return Number.isFinite(s)&&Number.isFinite(i)&&Number.isFinite(r)?{level:s,bay:i,depth:r}:null}let $=1;function B(t,e){return t.startSimMs<e.endSimMs&&e.startSimMs<t.endSimMs}const G={resolveConflict:(t,e)=>t.priority!==e.priority?t.priority<e.priority?"b-yields":"a-yields":t.id<e.id?"b-yields":"a-yields"};class J{constructor(t=G){this._byResource=new Map,this._byReserver=new Map,this._listeners=new Set,this._conflictLog=[],this._maxConflictLog=1e3,this._yieldPolicy=t}add(t){const e={...t,id:"res-"+$++},s=(this._byResource.get(e.resource)??[]).filter(t=>B(t.timeWindow,e.timeWindow));if(0===s.length)return this._insert(e),this._emit({kind:"added",reservation:e}),{ok:!0,reservation:e};const i=s.map(t=>{const s=this._yieldPolicy.resolveConflict(e,t);return{a:e,b:t,decision:s}});if(i.every(t=>"b-yields"===t.decision)){const i=s.slice();for(const t of i)this._remove(t),this._emit({kind:"evicted",reservation:t,by:e});return this._insert(e),this._emit({kind:"added",reservation:e}),this._appendConflictLog({simTime:e.timeWindow.startSimMs,resource:e.resource,proposed:t,existing:i,outcome:"preempted"}),{ok:"preempted",reservation:e,evicted:i}}return this._appendConflictLog({simTime:e.timeWindow.startSimMs,resource:e.resource,proposed:t,existing:s.slice(),outcome:"rejected"}),{ok:!1,conflicts:i}}conflictLog(){return[...this._conflictLog]}setMaxConflictLog(t){this._maxConflictLog=Math.max(1,t)}_appendConflictLog(t){this._conflictLog.push(t),this._conflictLog.length>this._maxConflictLog&&this._conflictLog.shift()}conflicts(t,e){return(this._byResource.get(t)??[]).filter(t=>B(t.timeWindow,e))}release(t){this._remove(t)&&this._emit({kind:"released",reservation:t})}releaseAllOf(t){const e=(this._byReserver.get(t)??[]).slice();for(const t of e)this._remove(t),this._emit({kind:"released",reservation:t});return e}forResource(t){return[...this._byResource.get(t)??[]]}forReserver(t){return[...this._byReserver.get(t)??[]]}all(){const t=[];for(const e of this._byResource.values())t.push(...e);return t}clear(){this._byResource.clear(),this._byReserver.clear(),this._conflictLog.length=0}subscribe(t){return this._listeners.add(t),()=>{this._listeners.delete(t)}}_insert(t){let e=this._byResource.get(t.resource);e||(e=[],this._byResource.set(t.resource,e));const s=e.findIndex(e=>e.timeWindow.startSimMs>t.timeWindow.startSimMs);s<0?e.push(t):e.splice(s,0,t);let i=this._byReserver.get(t.reserverId);i||(i=[],this._byReserver.set(t.reserverId,i)),i.push(t)}_remove(t){const e=this._byResource.get(t.resource);if(!e)return!1;const s=e.findIndex(e=>e.id===t.id);if(s<0)return!1;e.splice(s,1),0===e.length&&this._byResource.delete(t.resource);const i=this._byReserver.get(t.reserverId);if(i){const e=i.findIndex(e=>e.id===t.id);e>=0&&i.splice(e,1),0===i.length&&this._byReserver.delete(t.reserverId)}return!0}_emit(t){this._listeners.forEach(e=>e(t))}}const U=new J;"undefined"!=typeof globalThis&&(globalThis.__THINGS_SCENE_RESERVATION_TABLE__=U);class K{constructor(){this.nodes=new Map,this.edges=new Map,this.laneEndpoints=new Map}addNode(t){this.nodes.has(t.id)||(this.nodes.set(t.id,t),this.edges.set(t.id,[]))}addEdge(t){const e=this.edges.get(t.fromNode);if(!e)throw new Error(`NavGraph.addEdge: source node not found: ${t.fromNode}`);if(!this.nodes.has(t.toNode))throw new Error(`NavGraph.addEdge: target node not found: ${t.toNode}`);e.push(t)}edgesFrom(t){return this.edges.get(t)??[]}findNearestNode(t){let e=null,s=1/0;for(const i of this.nodes.values()){const r=tt(i.position,t);r<s&&(s=r,e=i)}return e}}function tt(t,e){const s=t.x-e.x,i=t.y-e.y,r=t.z-e.z;return s*s+i*i+r*r}function et(t,e){return Math.sqrt(tt(t,e))}function st(t,e,s={}){const i=new K,r=s.defaultSpeed??100;for(const e of t){const t=e.geometry.centerPoints;if(t.length<2)continue;const s=`${e.id}:start`,n=`${e.id}:end`;i.addNode({id:s,position:t[0],type:"lane-start"}),i.addNode({id:n,position:t[t.length-1],type:"lane-end"}),i.laneEndpoints.set(e.id,{startNodeId:s,endNodeId:n});let o=0;for(let e=1;e<t.length;e++)o+=et(t[e-1],t[e]);const h=o/(e.speedLimit??r)*1e3;i.addEdge({fromNode:s,toNode:n,resource:e.id,distance:o,durationMs:h,forward:!0}),"twoway"===e.direction&&i.addEdge({fromNode:n,toNode:s,resource:e.id,distance:o,durationMs:h,forward:!1})}for(const t of e){if(t.lanes.length<2)continue;const e=[];for(const s of t.lanes){const r=i.laneEndpoints.get(s);if(!r)continue;const n=i.nodes.get(r.startNodeId).position,o=i.nodes.get(r.endNodeId).position;let h=0,a=0,c=0;for(const e of t.lanes){if(e===s)continue;const t=i.laneEndpoints.get(e);if(!t)continue;const r=i.nodes.get(t.startNodeId).position,l=i.nodes.get(t.endNodeId).position;h+=Math.min(tt(n,r),tt(n,l)),a+=Math.min(tt(o,r),tt(o,l)),c++}if(0===c)continue;const l=h<a?r.startNodeId:r.endNodeId;e.push({laneId:s,nodeId:l,pos:i.nodes.get(l).position})}for(let s=0;s<e.length;s++)for(let r=0;r<e.length;r++){if(s===r)continue;const n=e[s],o=e[r],h=et(n.pos,o.pos);i.addEdge({fromNode:n.nodeId,toNode:o.nodeId,resource:t.id,distance:h,durationMs:t.crossingTimeMs,forward:!0})}}return i}function it(t,e,s,i={}){const r=t.nodes.get(e),n=t.nodes.get(s);if(!r||!n)return null;const o=i.speed?.max??100,h=e=>{const s=t.nodes.get(e);var i,r;return(i=s.position,r=n.position,Math.sqrt(function(t,e){const s=t.x-e.x,i=t.y-e.y,r=t.z-e.z;return s*s+i*i+r*r}(i,r)))/o*1e3},a=new Map,c=new Set,l=new Set,u={nodeId:e,gScore:0,fScore:h(e)};a.set(e,u),c.add(e);const d=i.startSimMs??0,y=i.deadlineSimMs;for(;c.size>0;){let e=null,i=null;for(const t of c){const s=a.get(t);(!i||s.fScore<i.fScore||s.fScore===i.fScore&&t<e)&&(i=s,e=t)}if(!i||!e)return null;if(e===s){const t=[];let e=i,s=0;for(;e&&e.cameFromEdge;){const i=e.cameFromEdge,r=d+(e.gScore-i.durationMs);t.unshift({resource:i.resource,timeWindow:{startSimMs:r,endSimMs:r+i.durationMs},fromPos:i.fromPos,toPos:i.toPos}),s+=i.distance,e=a.get(i.fromNodeId)}const r=i.gScore;return void 0!==y&&d+r>y?null:{segments:t,totalDurationMs:r,totalDistance:s}}c.delete(e),l.add(e);for(const s of t.edgesFrom(e)){if(l.has(s.toNode))continue;const e=i.gScore+s.durationMs,r=a.get(s.toNode);if(!r||e<r.gScore){const i=t.nodes.get(s.fromNode),r=t.nodes.get(s.toNode),n={nodeId:s.toNode,gScore:e,fScore:e+h(s.toNode),cameFromEdge:{fromNodeId:s.fromNode,resource:s.resource,distance:s.distance,durationMs:s.durationMs,fromPos:i.position,toPos:r.position}};a.set(s.toNode,n),c.add(s.toNode)}}}return null}function rt(t,e,s=0,i){return t.segments.map(t=>({resource:t.resource,timeWindow:t.timeWindow,reserverId:e,priority:s,metadata:i}))}const nt=.5;function ot(t){const e=t.bulge;return null!=e&&Number.isFinite(e)&&Math.abs(e)>=.5}function ht(t,e,s){const i=e.x-t.x,r=e.y-t.y,n=Math.sqrt(i*i+r*r);if(0===n||!Number.isFinite(s)||Math.abs(s)<1e-9)return null;const o=Math.abs(s),h=(n*n+4*o*o)/(8*o),a=s>0?1:-1,c=h-o,l=(t.x+e.x)/2-a*(r/n)*c,u=(t.y+e.y)/2-a*-(i/n)*c;return{cx:l,cy:u,radius:h,startAngle:Math.atan2(t.y-u,t.x-l),endAngle:Math.atan2(e.y-u,e.x-l),clockwise:s<0}}function at(t,e,s=0,i=16){const r=e.x-t.x,n=e.y-t.y,o=Math.sqrt(r*r+n*n);if(0===o)return null;const h=n/o,a=-(r/o),c=Number.isFinite(s)?s:0,l=Math.abs(c)>=1e-6?c:i;return{x:(t.x+e.x)/2+h*l,y:(t.y+e.y)/2+a*l,perpX:h,perpY:a}}function ct(t,e,s){const i=e.x-t.x,r=e.y-t.y,n=Math.sqrt(i*i+r*r);if(0===n)return 0;const o=r/n,h=-(i/n),a=(t.x+e.x)/2,c=(t.y+e.y)/2;let l=(s.x-a)*o+(s.y-c)*h;if(Math.abs(l)<.5)return 0;return l>n&&(l=n),l<-n&&(l=-n),l}function lt(t,e){const s=t.radius,i=Number.isFinite(e)?e:0;return null!=s&&Number.isFinite(s)?Math.max(0,s):Math.max(0,i)}function ut(t,e,s,i,r=16){const n=t.x-e.x,o=t.y-e.y,h=Math.sqrt(n*n+o*o);if(0===h)return null;const a=s.x-e.x,c=s.y-e.y,l=Math.sqrt(a*a+c*c);if(0===l)return null;const u=n/h+a/l,d=o/h+c/l,y=Math.sqrt(u*u+d*d);if(y<1e-9)return null;const _=u/y,p=d/y,f=Math.max(i,r);return{x:e.x+_*f,y:e.y+p*f,bisectorX:_,bisectorY:p}}function dt(t,e,s,i){const r=t.x-e.x,n=t.y-e.y,o=Math.sqrt(r*r+n*n),h=s.x-e.x,a=s.y-e.y,c=Math.sqrt(h*h+a*a);if(0===o||0===c)return 0;const l=r/o+h/c,u=n/o+a/c,d=Math.sqrt(l*l+u*u);if(d<1e-9)return 0;const y=l/d,_=u/d,p=(i.x-e.x)*y+(i.y-e.y)*_,f=Math.min(o,c)/2;return Math.max(0,Math.min(p,f))}function yt(t){if(0===t.length)return 0;let e;for(const s of t){const t=s.z??0;if(!Number.isFinite(t))return null;if(void 0===e)e=t;else if(Math.abs(t-e)>1e-9)return null}return e??0}const _t={closed:!0,round:0,divisions:24};class pt{constructor(t,e){this.points=t,this.closed=e;const s=[0];for(let e=1;e<t.length;e++){const i=t[e].x-t[e-1].x,r=t[e].y-t[e-1].y;s.push(s[e-1]+Math.sqrt(i*i+r*r))}this.cumulative=s,this.length=s[s.length-1]??0}sample(t){const e=this.length;if(0===this.points.length)return{x:0,y:0,theta:0};if(0===e)return{x:this.points[0].x,y:this.points[0].y,theta:0};let s=t;this.closed?s=(t%e+e)%e:s<0?s=0:s>e&&(s=e);const i=this.cumulative;let r=0,n=i.length-2;for(;r<n;){const t=r+n>>1;i[t+1]<=s?r=t+1:n=t}const o=i[r+1]-i[r],h=o>0?(s-i[r])/o:0,a=this.points[r],c=this.points[r+1],l=c.x-a.x,u=c.y-a.y;return{x:a.x+l*h,y:a.y+u*h,theta:0===l&&0===u?0:Math.atan2(u,l)}}}function ft(t,e={}){const s={..._t,...e},i=t.length;if(0===i)return new pt([],s.closed);if(1===i)return new pt([{x:t[0].x,y:t[0].y}],s.closed);const r=[],n=(t,e)=>{if(r.length>0){const s=r[r.length-1];if(Math.abs(s.x-t)<1e-9&&Math.abs(s.y-e)<1e-9)return}r.push({x:t,y:e})},o=(s.closed,i);for(let e=0;e<o;e++){const r=0===e?s.closed?i-1:-1:e-1,o=e===i-1?s.closed?0:-1:e+1,h=r>=0?t[r]:null,a=t[e],c=o>=0?t[o]:null;if(h&&h.x===a.x&&h.y===a.y)continue;const l=h&&c?lt(a,s.round):0;let u,d,y,_;if(h){const t=Math.sqrt((h.x-a.x)**2+(h.y-a.y)**2),e=0!==t?Math.atan2(h.x-a.x,h.y-a.y):0,s=Math.min(l,t/2);u=Math.sin(e)*s+a.x,d=Math.cos(e)*s+a.y}else u=a.x,d=a.y;if(c){const t=Math.sqrt((c.x-a.x)**2+(c.y-a.y)**2),e=0!==t?Math.atan2(c.x-a.x,c.y-a.y):0,s=Math.min(l,t/2);y=Math.sin(e)*s+a.x,_=Math.cos(e)*s+a.y}else y=a.x,_=a.y;if(n(u,d),l>0&&h&&c)for(let t=1;t<=s.divisions;t++){const e=t/s.divisions,i=1-e;n(i*i*u+2*i*e*a.x+e*e*y,i*i*d+2*i*e*a.y+e*e*_)}else u===y&&d===_||n(y,_);if(c&&ot(a)){const t=lt(c,s.round),e=Math.sqrt((a.x-c.x)**2+(a.y-c.y)**2),i=0!==e?Math.atan2(a.x-c.x,a.y-c.y):0,r=Math.min(t,e/2),o=ht({x:y,y:_},{x:Math.sin(i)*r+c.x,y:Math.cos(i)*r+c.y},a.bulge);if(o){let t=o.endAngle-o.startAngle;if(o.clockwise)for(;t>0;)t-=2*Math.PI;else for(;t<0;)t+=2*Math.PI;for(let e=1;e<=s.divisions;e++){const i=e/s.divisions,r=o.startAngle+t*i;n(o.cx+o.radius*Math.cos(r),o.cy+o.radius*Math.sin(r))}}}}if(s.closed&&r.length>0){const t=r[0],e=r[r.length-1];(Math.abs(e.x-t.x)>1e-9||Math.abs(e.y-t.y)>1e-9)&&r.push({x:t.x,y:t.y})}return new pt(r,s.closed)}function mt(t,e){return ft(t,e).length}export{nt as BULGE_EPSILON,l as CenteringSlotStrategy,Z as ContainerCapacity,a as FixedSlotStrategy,K as NavGraph,pt as PolygonPathPolyline,J as ReservationTable,X as TRANSFER_SLOT_KEY,O as Transfer,D as addressKey,st as buildNavGraph,ct as bulgeFromDrag,at as bulgeHandlePosition,h as chooseNearestPickupFrame,ht as computeArcParams,ut as cornerHandlePosition,dt as cornerRadiusFromDrag,lt as effectiveCornerRadius,o as filterByToolType,c as fixedSlotStrategy,ft as flattenPolygonPath,I as globalSimClock,ot as hasArc,V as isCarrierLine,Q as isStorageRack,H as parseAddressKey,it as planPathAStar,rt as planToReservations,mt as polygonPathLength,e as quatFromYaw,P as receiptToJSON,r as rectangularFootprintFrames,U as reservationTable,G as standardYieldPolicy,n as topApproachFrame,Y as transferLog,T as transferTracer,yt as uniformZ};
|