@hatiolab/things-scene 10.0.0-beta.9 → 10.0.0-beta.90
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.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/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.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.d.ts +5 -0
- package/dist-types/components/component.d.ts.map +1 -1
- package/dist-types/components/container-abstract.d.ts +34 -1
- package/dist-types/components/container-abstract.d.ts.map +1 -1
- package/dist-types/components/container.d.ts +1 -1
- 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/generic-placeholders.d.ts +287 -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 +1 -1
- package/dist-types/components/html-overlay-container.d.ts.map +1 -1
- package/dist-types/components/html-overlay-element.d.ts.map +1 -1
- 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/line.d.ts +2 -1
- package/dist-types/components/line.d.ts.map +1 -1
- package/dist-types/components/mixins/gltf-component.d.ts +276 -0
- package/dist-types/components/mixins/gltf-component.d.ts.map +1 -0
- package/dist-types/components/mixins/html-element.d.ts.map +1 -1
- package/dist-types/components/mixins/move-handle.d.ts.map +1 -1
- package/dist-types/components/mixins/three-d-only.d.ts +243 -0
- package/dist-types/components/mixins/three-d-only.d.ts.map +1 -0
- 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/popup-container.d.ts +25 -0
- package/dist-types/components/popup-container.d.ts.map +1 -0
- package/dist-types/components/popup.d.ts +30 -0
- 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/root-container.d.ts +11 -4
- package/dist-types/components/root-container.d.ts.map +1 -1
- package/dist-types/components/service-component.d.ts +264 -0
- package/dist-types/components/service-component.d.ts.map +1 -0
- 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/data-spread-decorator.d.ts +16 -0
- package/dist-types/decorator/decorators/data-spread-decorator.d.ts.map +1 -1
- 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 +14 -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/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/providers.d.ts +20 -3
- package/dist-types/interfaces/providers.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/layer/action/popup.d.ts +13 -0
- package/dist-types/layer/action/popup.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 +53 -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/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 +69 -0
- package/dist-types/search/search-overlay.d.ts.map +1 -0
- 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/place.d.ts.map +1 -1
- package/dist-types/things-scene/application-context.d.ts +43 -0
- package/dist-types/things-scene/application-context.d.ts.map +1 -1
- package/dist-types/things-scene/create.d.ts +38 -3
- package/dist-types/things-scene/create.d.ts.map +1 -1
- package/dist-types/things-scene/index.d.ts +10 -0
- package/dist-types/things-scene/index.d.ts.map +1 -1
- package/dist-types/things-scene/scene.d.ts +64 -1
- 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 +9 -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 +2 -3
- package/dist-types/threed/environments/factory-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/home-environment.d.ts +2 -3
- package/dist-types/threed/environments/home-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/office-environment.d.ts +2 -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 +2 -3
- package/dist-types/threed/environments/warehouse-environment.d.ts.map +1 -1
- package/dist-types/threed/factories/backdrop.d.ts +525 -0
- package/dist-types/threed/factories/backdrop.d.ts.map +1 -0
- package/dist-types/threed/factories/banner.d.ts +35 -34
- package/dist-types/threed/factories/banner.d.ts.map +1 -1
- package/dist-types/threed/factories/camera.d.ts +34 -33
- package/dist-types/threed/factories/camera.d.ts.map +1 -1
- package/dist-types/threed/factories/cube.d.ts +34 -33
- 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 +502 -0
- package/dist-types/threed/factories/decal.d.ts.map +1 -0
- package/dist-types/threed/factories/floor-plate.d.ts +10 -0
- package/dist-types/threed/factories/floor-plate.d.ts.map +1 -0
- package/dist-types/threed/factories/gltf-object.d.ts +286 -68
- 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.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 +34 -33
- 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 +34 -33
- 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 +20 -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 +3 -0
- 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 +6 -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 +109 -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 +1 -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 +6 -0
- package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
- package/dist-types/threed/real-object-gltf.d.ts +42 -12
- 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 +3 -0
- package/dist-types/threed/real-object-text.d.ts.map +1 -1
- package/dist-types/threed/real-object.d.ts +131 -6
- 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 +142 -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/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 +42 -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 +7 -0
- package/dist-types/transfer/index.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/types.d.ts +285 -0
- package/dist-types/transfer/types.d.ts.map +1 -0
- package/dist-types/transition/transition-effect.d.ts +91 -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/package.json +12 -1
- package/things-scene-min.js +12 -13
- package/things-scene-min.js.map +1 -1
- package/things-scene-transfer.mjs +1 -0
- package/things-scene.mjs +8 -9
- package/things-scene.mjs.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixed-slot-strategy.d.ts","sourceRoot":"","sources":["../../src/transfer/fixed-slot-strategy.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEpE,qBAAa,iBAAkB,YAAW,mBAAmB;IAC3D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKhF,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM;CAGpC;AAED,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,mBAA0B,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { Vec3, Size3, Bounds3, SlotArrangement, GridShape, SlotDef, SlotAssignment, TransferOptions, StaticPolicy, DynamicPolicy, PendingPolicy, ConnectionPolicy, Port, TransferEventType, TransferEvent, CarrierAttachPoint, ArrangementStrategy, Transferable, NavigationTarget, NavigationOptions, Movable, ArticulatedCapability, MissionStatus, VehicleMission, MissionExecutor, SensorPoint, SpawnPoint, SinkPoint } from './types.js';
|
|
2
|
+
export { FixedSlotStrategy, fixedSlotStrategy } from './fixed-slot-strategy.js';
|
|
3
|
+
export { CenteringSlotStrategy } from './centering-slot-strategy.js';
|
|
4
|
+
export { ContainerCapacity, TRANSFER_SLOT_KEY } from './container-capacity.js';
|
|
5
|
+
export type { SimulationClock } from './simulation-clock.js';
|
|
6
|
+
export { globalSimClock } from './simulation-clock.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,IAAI,EACJ,KAAK,EACL,OAAO,EACP,eAAe,EACf,SAAS,EACT,OAAO,EACP,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,IAAI,EACJ,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface SimulationClock {
|
|
2
|
+
/**
|
|
3
|
+
* Simulated time elapsed since clock creation (ms).
|
|
4
|
+
* Advances only when speed > 0 and the clock is running.
|
|
5
|
+
*/
|
|
6
|
+
readonly now: number;
|
|
7
|
+
/**
|
|
8
|
+
* Time scale factor.
|
|
9
|
+
* 1.0 = real-time
|
|
10
|
+
* 2.0 = double speed
|
|
11
|
+
* 0 = paused (tick() returns 0, now stays fixed)
|
|
12
|
+
* Setting speed resumes a paused clock.
|
|
13
|
+
*/
|
|
14
|
+
speed: number;
|
|
15
|
+
readonly isPaused: boolean;
|
|
16
|
+
pause(): void;
|
|
17
|
+
resume(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Called from a requestAnimationFrame loop with the real wall-clock delta.
|
|
20
|
+
* Returns the scaled simulation delta that components should use for physics.
|
|
21
|
+
*
|
|
22
|
+
* If paused (speed === 0), returns 0 and does not advance `now`.
|
|
23
|
+
* Clamps realDeltaMs to 200 ms to prevent spiral-of-death on tab resume.
|
|
24
|
+
*/
|
|
25
|
+
tick(realDeltaMs: number): number;
|
|
26
|
+
/**
|
|
27
|
+
* Advance the clock by exactly `dt` simulation milliseconds, bypassing speed.
|
|
28
|
+
* Intended for unit tests and deterministic replay — do NOT call from RAF.
|
|
29
|
+
*/
|
|
30
|
+
step(dt: number): void;
|
|
31
|
+
/** Register a listener called after each tick / step with the scaled delta. */
|
|
32
|
+
onTick(listener: (dt: number) => void): () => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The scene-wide SimulationClock instance.
|
|
36
|
+
*
|
|
37
|
+
* ConveyanceContainer, Mover and all time-dependent mixins call:
|
|
38
|
+
* const dt = globalSimClock.tick(realDeltaMs)
|
|
39
|
+
*
|
|
40
|
+
* Tests use:
|
|
41
|
+
* globalSimClock.step(100) // advance 100 ms deterministically
|
|
42
|
+
* globalSimClock.speed = 5 // run at 5× for the next tick
|
|
43
|
+
*/
|
|
44
|
+
export declare const globalSimClock: SimulationClock;
|
|
45
|
+
//# sourceMappingURL=simulation-clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulation-clock.d.ts","sourceRoot":"","sources":["../../src/transfer/simulation-clock.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAEpB;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAE1B,KAAK,IAAI,IAAI,CAAA;IACb,MAAM,IAAI,IAAI,CAAA;IAEd;;;;;;OAMG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;IAEjC;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAEtB,+EAA+E;IAC/E,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CACnD;AAyDD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,eAAwC,CAAA"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
export type Vec3 = {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
z: number;
|
|
5
|
+
};
|
|
6
|
+
export type Size3 = {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
depth: number;
|
|
10
|
+
};
|
|
11
|
+
export type Bounds3 = Vec3 & Size3;
|
|
12
|
+
/**
|
|
13
|
+
* How items are arranged within a slot.
|
|
14
|
+
* 'single' — one item, fixed position (fork tip, TCP, simple cell)
|
|
15
|
+
* 'stack-y' — items stacked along +Y (crane forks, pallet stack)
|
|
16
|
+
* 'queue-z' — items queued along +Z / belt axis (conveyor)
|
|
17
|
+
* 'grid-xz' — items arranged in an XZ grid (AGV deck, pallet)
|
|
18
|
+
*/
|
|
19
|
+
export type SlotArrangement = 'single' | 'stack-y' | 'queue-z' | 'grid-xz';
|
|
20
|
+
/** Optional grid dimensions for 'grid-xz' arrangement. */
|
|
21
|
+
export type GridShape = {
|
|
22
|
+
cols: number;
|
|
23
|
+
rows: number;
|
|
24
|
+
};
|
|
25
|
+
/** Describes one logical slot within a Transferable container. */
|
|
26
|
+
export interface SlotDef {
|
|
27
|
+
id: string;
|
|
28
|
+
/** Local position of the slot origin within the container (scene units). */
|
|
29
|
+
localPosition?: Vec3;
|
|
30
|
+
localRotation?: Vec3;
|
|
31
|
+
/** Component types that may occupy this slot. Empty = any type allowed. */
|
|
32
|
+
allowedTypes?: string[];
|
|
33
|
+
/** Maximum occupant count (default 1). */
|
|
34
|
+
maxCount?: number;
|
|
35
|
+
arrangement?: SlotArrangement;
|
|
36
|
+
gridShape?: GridShape;
|
|
37
|
+
}
|
|
38
|
+
/** Runtime assignment — which slot a component currently occupies. */
|
|
39
|
+
export interface SlotAssignment {
|
|
40
|
+
slotId: string;
|
|
41
|
+
index: number;
|
|
42
|
+
}
|
|
43
|
+
export interface TransferOptions {
|
|
44
|
+
slotId?: string;
|
|
45
|
+
animated?: boolean;
|
|
46
|
+
duration?: number;
|
|
47
|
+
ease?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Pre-wired to a fixed component reference; resolved at design time.
|
|
51
|
+
* Used for static conveyors and fixed-route connections.
|
|
52
|
+
*/
|
|
53
|
+
export interface StaticPolicy {
|
|
54
|
+
kind: 'static';
|
|
55
|
+
targetRef: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Target resolved at runtime by evaluating an expression against the board model.
|
|
59
|
+
* Used for dynamic routing (sorter lane logic, WCS-driven divert).
|
|
60
|
+
*/
|
|
61
|
+
export interface DynamicPolicy {
|
|
62
|
+
kind: 'dynamic';
|
|
63
|
+
resolverExpr: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Transfer is suspended until an external signal (WCS/MES event) resolves.
|
|
67
|
+
* The component waits at the port; a timeout fires fallback after `timeoutMs`.
|
|
68
|
+
*/
|
|
69
|
+
export interface PendingPolicy {
|
|
70
|
+
kind: 'pending';
|
|
71
|
+
timeoutMs?: number;
|
|
72
|
+
fallbackRef?: string;
|
|
73
|
+
}
|
|
74
|
+
export type ConnectionPolicy = StaticPolicy | DynamicPolicy | PendingPolicy;
|
|
75
|
+
/** Directional connection point on a Transferable component. */
|
|
76
|
+
export interface Port {
|
|
77
|
+
id: string;
|
|
78
|
+
direction: 'input' | 'output';
|
|
79
|
+
slotId?: string;
|
|
80
|
+
policy?: ConnectionPolicy;
|
|
81
|
+
}
|
|
82
|
+
export type TransferEventType = 'transfer-received' | 'transfer-dispatched' | 'transfer-pending' | 'transfer-routed' | 'transfer-rejected';
|
|
83
|
+
export interface TransferEvent {
|
|
84
|
+
type: TransferEventType;
|
|
85
|
+
component: any;
|
|
86
|
+
container: any;
|
|
87
|
+
slotId?: string;
|
|
88
|
+
target?: any;
|
|
89
|
+
reason?: string;
|
|
90
|
+
}
|
|
91
|
+
/** The 3D attach frame that a carrier exposes for its payload. */
|
|
92
|
+
export interface CarrierAttachPoint {
|
|
93
|
+
position: Vec3;
|
|
94
|
+
rotation: Vec3;
|
|
95
|
+
slotId: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Determines WHERE within a slot a new item should be placed, and how
|
|
99
|
+
* existing items are laid out as occupancy changes.
|
|
100
|
+
*
|
|
101
|
+
* Implementations live in scene-base (FixedSlot, Stack, Queue, Grid, Shelf, Gravity).
|
|
102
|
+
* things-scene ships a minimal FixedSlotStrategy as the default.
|
|
103
|
+
*/
|
|
104
|
+
export interface ArrangementStrategy {
|
|
105
|
+
/**
|
|
106
|
+
* Returns the local position (left/top/z) for the item within the container.
|
|
107
|
+
* `component` is the item being placed — strategies may use its state.width/height
|
|
108
|
+
* to compute dimension-aware positions (e.g. centering).
|
|
109
|
+
* Returns null if no position should be applied (use current/world-preserved position).
|
|
110
|
+
*/
|
|
111
|
+
positionAt(index: number, slotDef: SlotDef, occupantCount: number, component?: any): Vec3 | null;
|
|
112
|
+
/** Maximum number of items this strategy can hold in one slot. */
|
|
113
|
+
capacity(slotDef: SlotDef): number;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The central abstraction for anything that can receive and dispatch components.
|
|
117
|
+
*
|
|
118
|
+
* ALL domain-specific verbs (pick/place, induct/eject, store/retrieve, fetch/deposit)
|
|
119
|
+
* are aliases that ultimately delegate to `receive()` and `dispatch()`.
|
|
120
|
+
*
|
|
121
|
+
* Implementors must be ContainerAbstract subclasses so that `reparent()` is available.
|
|
122
|
+
*/
|
|
123
|
+
export interface Transferable {
|
|
124
|
+
/**
|
|
125
|
+
* Pure, synchronous capacity check.
|
|
126
|
+
* Must NOT mutate state — called on every drag-over frame.
|
|
127
|
+
*/
|
|
128
|
+
canReceive(component: any): boolean;
|
|
129
|
+
/** Returns the best available SlotDef for `component`, or null if none. */
|
|
130
|
+
findSlot(component: any): SlotDef | null;
|
|
131
|
+
/** Reparent `component` into this container. Fires 'transfer-received'. */
|
|
132
|
+
receive(component: any, options?: TransferOptions): Promise<void> | void;
|
|
133
|
+
/** Move `component` to `target.receive()`. Fires 'transfer-dispatched'. */
|
|
134
|
+
dispatch(component: any, target: Transferable, options?: TransferOptions): Promise<void> | void;
|
|
135
|
+
/**
|
|
136
|
+
* Determine the next target for `component`.
|
|
137
|
+
* Returns null → triggers 'transfer-pending' event.
|
|
138
|
+
* May be async for WCS-driven (pending) routing.
|
|
139
|
+
*/
|
|
140
|
+
route(component: any): Transferable | null | Promise<Transferable | null>;
|
|
141
|
+
/**
|
|
142
|
+
* WCS / MES resolves a previously pending route by providing the target.
|
|
143
|
+
* Call path: WCS event → scene.findById(id).resolveRoute(component, target)
|
|
144
|
+
*/
|
|
145
|
+
resolveRoute(component: any, target: Transferable): void;
|
|
146
|
+
/**
|
|
147
|
+
* WCS / MES rejects or times out a pending route.
|
|
148
|
+
* Triggers fallback ref (PendingPolicy.fallbackRef) or 'transfer-rejected'.
|
|
149
|
+
*/
|
|
150
|
+
rejectRoute(component: any, reason?: string): void;
|
|
151
|
+
/** Returns the 3D attach frame for a payload held in this container. */
|
|
152
|
+
attachPointFor(component: any): CarrierAttachPoint | null;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The destination a Movable navigates toward.
|
|
156
|
+
* - component: dock beside another Transferable (e.g. conveyor input port)
|
|
157
|
+
* - point: absolute scene-unit coordinate
|
|
158
|
+
* - node: named node in a pre-defined graph (AGV / OHT)
|
|
159
|
+
*/
|
|
160
|
+
export type NavigationTarget = {
|
|
161
|
+
kind: 'component';
|
|
162
|
+
ref: Transferable;
|
|
163
|
+
} | {
|
|
164
|
+
kind: 'point';
|
|
165
|
+
pos: Vec3;
|
|
166
|
+
} | {
|
|
167
|
+
kind: 'node';
|
|
168
|
+
nodeId: string;
|
|
169
|
+
};
|
|
170
|
+
export interface NavigationOptions {
|
|
171
|
+
speed?: number;
|
|
172
|
+
arriveThreshold?: number;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Self-navigation capability for vehicles (Forklift, AGV, AMR, OHT).
|
|
176
|
+
* The vehicle's whole body moves to the destination, then Transfer happens.
|
|
177
|
+
*
|
|
178
|
+
* Contrast with ArticulatedCapability where only the internal mechanism moves.
|
|
179
|
+
*/
|
|
180
|
+
export interface Movable {
|
|
181
|
+
navigate(destination: NavigationTarget, options?: NavigationOptions): Promise<void>;
|
|
182
|
+
stop(): void;
|
|
183
|
+
readonly position: Vec3;
|
|
184
|
+
readonly isMoving: boolean;
|
|
185
|
+
/** Determines which NavigationStrategy is used. */
|
|
186
|
+
readonly navigationMode: 'graph' | 'free' | 'constrained';
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Capability for devices whose internal mechanism (arm, mast, fork carriage)
|
|
190
|
+
* extends to reach a pickup/dropoff point — without moving the device body.
|
|
191
|
+
*
|
|
192
|
+
* Used by: RobotArm (6-DOF IK), ASRSCrane (XY rail), BridgeCrane (XYZ gantry),
|
|
193
|
+
* Lift/Hoist (Y-axis), linear Manipulator.
|
|
194
|
+
*
|
|
195
|
+
* Contrast with Movable where the whole vehicle navigates to the destination.
|
|
196
|
+
*/
|
|
197
|
+
export interface ArticulatedCapability {
|
|
198
|
+
/**
|
|
199
|
+
* Extend the internal mechanism so the end-effector reaches `target`.
|
|
200
|
+
* Resolves when the end-effector arrives at the target position.
|
|
201
|
+
*/
|
|
202
|
+
reach(target: Transferable | Vec3, options?: TransferOptions): Promise<void>;
|
|
203
|
+
/**
|
|
204
|
+
* Retract the mechanism to its safe / home position.
|
|
205
|
+
* `home: true` returns to the configured homePosition / homeJoints state.
|
|
206
|
+
*/
|
|
207
|
+
retract(options?: {
|
|
208
|
+
home?: boolean;
|
|
209
|
+
duration?: number;
|
|
210
|
+
}): Promise<void>;
|
|
211
|
+
/** Current end-effector position (TCP, hook, fork tip) in scene coordinates. */
|
|
212
|
+
readonly endEffectorPosition: Vec3;
|
|
213
|
+
/** Kinematic workspace check — false means reach() would fail or collide. */
|
|
214
|
+
canReach(target: Transferable | Vec3): boolean;
|
|
215
|
+
}
|
|
216
|
+
export type MissionStatus = 'queued' | 'navigating-to-pickup' | 'picking' | 'navigating-to-dropoff' | 'placing' | 'done' | 'failed';
|
|
217
|
+
export interface VehicleMission {
|
|
218
|
+
readonly id: string;
|
|
219
|
+
readonly pickupTarget: Transferable;
|
|
220
|
+
readonly dropoffTarget: Transferable;
|
|
221
|
+
readonly priority: number;
|
|
222
|
+
/** Filled after a successful pick (receive). */
|
|
223
|
+
payload?: any;
|
|
224
|
+
status: MissionStatus;
|
|
225
|
+
/** simClock.now at mission start. */
|
|
226
|
+
readonly startedAt?: number;
|
|
227
|
+
readonly completedAt?: number;
|
|
228
|
+
readonly failReason?: string;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Manages an ordered queue of VehicleMissions for a single vehicle.
|
|
232
|
+
* Missions execute one at a time; the queue is drained in priority order.
|
|
233
|
+
*/
|
|
234
|
+
export interface MissionExecutor {
|
|
235
|
+
/** Add a mission to the queue. Resolves when the mission reaches 'done'. */
|
|
236
|
+
enqueue(mission: Omit<VehicleMission, 'id' | 'status'>): Promise<VehicleMission>;
|
|
237
|
+
/** Cancel a queued or in-progress mission by ID. */
|
|
238
|
+
cancel(missionId: string): void;
|
|
239
|
+
readonly currentMission: VehicleMission | null;
|
|
240
|
+
readonly missionQueue: readonly VehicleMission[];
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* A virtual sensor mounted on a Transferable container (conveyor, rack gate, etc.).
|
|
244
|
+
* When a component passes through its detection zone, it fires a scene event
|
|
245
|
+
* that WCS uses to make routing decisions (→ resolveRoute / rejectRoute).
|
|
246
|
+
*
|
|
247
|
+
* Common use: sorter entry sensor triggers PendingPolicy, WCS decides lane.
|
|
248
|
+
*/
|
|
249
|
+
export interface SensorPoint {
|
|
250
|
+
readonly id: string;
|
|
251
|
+
/** Local position within the parent container (scene units). */
|
|
252
|
+
readonly localPosition: Vec3;
|
|
253
|
+
readonly sensorType: 'presence' | 'identity' | 'weight';
|
|
254
|
+
/** Detection radius (scene units). Default: component bounding-box overlap. */
|
|
255
|
+
readonly detectionRadius?: number;
|
|
256
|
+
/** Called when a component enters the detection zone. */
|
|
257
|
+
onDetect(component: any): void;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* SpawnPoint: where cargo enters the simulation.
|
|
261
|
+
* Creates components and injects them into the connected Transferable chain.
|
|
262
|
+
* Examples: production line end, receiving dock, WCS inject command.
|
|
263
|
+
*/
|
|
264
|
+
export interface SpawnPoint extends Transferable {
|
|
265
|
+
/** Create a new component of `type` and route it into the system. */
|
|
266
|
+
spawn(type: string, initialState?: Record<string, any>): any;
|
|
267
|
+
/** Components generated per simulated minute. */
|
|
268
|
+
readonly spawnRate: number;
|
|
269
|
+
readonly spawnPattern: 'uniform' | 'burst' | 'schedule';
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* SinkPoint: where cargo leaves the simulation.
|
|
273
|
+
* Calling receive() on a SinkPoint removes the component from the scene
|
|
274
|
+
* and increments throughput counters.
|
|
275
|
+
* Examples: shipping dock, quality-pass exit, virtual out-gate.
|
|
276
|
+
*/
|
|
277
|
+
export interface SinkPoint extends Transferable {
|
|
278
|
+
/** Total components consumed since simulation start. */
|
|
279
|
+
readonly throughput: number;
|
|
280
|
+
/** Components per simulated hour (rolling average). */
|
|
281
|
+
readonly throughputPerHour: number;
|
|
282
|
+
/** simClock.now of the last received component. */
|
|
283
|
+
readonly lastReceivedAt: number;
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transfer/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
interface WorldState {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
rotation: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
interface State3D {
|
|
9
|
+
pos: any;
|
|
10
|
+
quat: any;
|
|
11
|
+
fromScale?: {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
z: number;
|
|
15
|
+
};
|
|
16
|
+
toScale?: {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
z: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
interface ReparentState {
|
|
23
|
+
fromWorld?: WorldState;
|
|
24
|
+
toWorld?: WorldState;
|
|
25
|
+
from3D?: State3D;
|
|
26
|
+
to3D?: State3D;
|
|
27
|
+
duration: number;
|
|
28
|
+
startTime: number;
|
|
29
|
+
progress: number;
|
|
30
|
+
keepSuppressed?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* TransitionEffect — reparent 전환의 모든 것을 소유한다.
|
|
34
|
+
*
|
|
35
|
+
* - 상태: Map<Component, ReparentState>
|
|
36
|
+
* - 타이밍: 자체 RAF loop
|
|
37
|
+
* - 2D 렌더링: transition canvas (lazy 생성/제거)
|
|
38
|
+
* - 3D 보간: object3d position/quaternion 직접 조작
|
|
39
|
+
* - 정리: suppressTransform 해제, canvas 제거
|
|
40
|
+
*/
|
|
41
|
+
export default class TransitionEffect {
|
|
42
|
+
private active;
|
|
43
|
+
private rafId;
|
|
44
|
+
private root;
|
|
45
|
+
private _canvas;
|
|
46
|
+
private _ctx;
|
|
47
|
+
constructor(root: any);
|
|
48
|
+
isReparenting(component: any): boolean;
|
|
49
|
+
getState(component: any): ReparentState | null;
|
|
50
|
+
begin(component: any, options: {
|
|
51
|
+
fromWorld?: WorldState;
|
|
52
|
+
toWorld?: WorldState;
|
|
53
|
+
from3D?: State3D;
|
|
54
|
+
to3D?: State3D;
|
|
55
|
+
duration: number;
|
|
56
|
+
ease?: string;
|
|
57
|
+
/**
|
|
58
|
+
* When true, cleanup3D() will NOT reset suppressTransform to false and will
|
|
59
|
+
* NOT call realObj.update(). Use this when the caller's own tick loop takes
|
|
60
|
+
* over position control after the transition.
|
|
61
|
+
*/
|
|
62
|
+
keepSuppressed?: boolean;
|
|
63
|
+
}): void;
|
|
64
|
+
cancel(component: any): void;
|
|
65
|
+
/**
|
|
66
|
+
* 2D transition canvas에 렌더링 — postrender()에서 호출
|
|
67
|
+
*/
|
|
68
|
+
renderComponent(component: any, modelLayer: any): void;
|
|
69
|
+
/**
|
|
70
|
+
* draw cycle 시작 시 호출 — canvas clear
|
|
71
|
+
*/
|
|
72
|
+
beginDraw(): void;
|
|
73
|
+
/**
|
|
74
|
+
* draw cycle 종료 시 호출 — canvas restore
|
|
75
|
+
*/
|
|
76
|
+
endDraw(): void;
|
|
77
|
+
/**
|
|
78
|
+
* model-layer resize 시 호출 — canvas 크기 동기화
|
|
79
|
+
*/
|
|
80
|
+
resize(): void;
|
|
81
|
+
dispose(): void;
|
|
82
|
+
private ensureCanvas;
|
|
83
|
+
private removeCanvas;
|
|
84
|
+
private startLoop;
|
|
85
|
+
private stopLoop;
|
|
86
|
+
private tick;
|
|
87
|
+
private complete;
|
|
88
|
+
private cleanup3D;
|
|
89
|
+
}
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=transition-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transition-effect.d.ts","sourceRoot":"","sources":["../../src/transition/transition-effect.ts"],"names":[],"mappings":"AAcA,UAAU,UAAU;IAClB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,UAAU,OAAO;IACf,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,GAAG,CAAA;IACT,SAAS,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,OAAO,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9C;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,IAAI,CAAK;IAGjB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,IAAI,CAAwC;gBAExC,IAAI,EAAE,GAAG;IAMrB,aAAa,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO;IAItC,QAAQ,CAAC,SAAS,EAAE,GAAG,GAAG,aAAa,GAAG,IAAI;IAI9C,KAAK,CACH,SAAS,EAAE,GAAG,EACd,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,UAAU,CAAA;QACtB,OAAO,CAAC,EAAE,UAAU,CAAA;QACpB,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb;;;;WAIG;QACH,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB,GACA,IAAI;IAgDP,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;IAK5B;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI;IAoCtD;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,MAAM,IAAI,IAAI;IASd,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;IAoDZ,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,SAAS;CAalB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bounding.d.ts","sourceRoot":"","sources":["../../src/types/bounding.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"bounding.d.ts","sourceRoot":"","sources":["../../src/types/bounding.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAA;AAEnE,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GACd,UAAU,GACV,aAAa,GACb,aAAa,GACb,YAAY,GACZ,eAAe,GACf,eAAe,GACf,WAAW,GACX,cAAc,GACd,cAAc,CAAA;AAElB;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,KAAK,EAAE,CAAA;AAE1B;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IAEd,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IAEf,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IAEf,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAA;IAEd,kCAAkC;IAClC,MAAM,EAAE,KAAK,CAAA;IAEb,yDAAyD;IACzD,IAAI,CAAC,EAAE,IAAI,CAAA;IAEX,kFAAkF;IAClF,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAElC,6BAA6B;IAC7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAE3C,+EAA+E;IAC/E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC,4DAA4D;IAC5D,aAAa,IAAI,MAAM,CAAA;IAEvB,yDAAyD;IACzD,qBAAqB,CAAC,IAAI,MAAM,CAAA;CACjC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatiolab/things-scene",
|
|
3
|
-
"version": "10.0.0-beta.
|
|
3
|
+
"version": "10.0.0-beta.90",
|
|
4
4
|
"description": "A high-performance 2D/3D scene graph library for building interactive visual editors, combining HTML5 Canvas and Three.js to enable facility visualization, data-driven animations, and real-time monitoring dashboards",
|
|
5
5
|
"main": "things-scene-min.js",
|
|
6
6
|
"module": "things-scene.mjs",
|
|
7
7
|
"browser": "things-scene.mjs",
|
|
8
8
|
"types": "dist-types/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist-types/index.d.ts",
|
|
12
|
+
"node": "./things-scene-transfer.mjs",
|
|
13
|
+
"import": "./things-scene.mjs",
|
|
14
|
+
"require": "./things-scene-min.js",
|
|
15
|
+
"default": "./things-scene-min.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
9
18
|
"files": [
|
|
10
19
|
"things-scene-min.js",
|
|
11
20
|
"things-scene-min.js.map",
|
|
12
21
|
"things-scene.mjs",
|
|
13
22
|
"things-scene.mjs.map",
|
|
23
|
+
"things-scene-transfer.mjs",
|
|
14
24
|
"dist-types/"
|
|
15
25
|
],
|
|
16
26
|
"sideEffects": false,
|
|
@@ -64,6 +74,7 @@
|
|
|
64
74
|
"lit": "^3.0.0",
|
|
65
75
|
"mocha": "^11.0.0",
|
|
66
76
|
"prettier": "^3.0.0",
|
|
77
|
+
"puppeteer": "^24.39.1",
|
|
67
78
|
"rimraf": "^6.0.0",
|
|
68
79
|
"rollup": "^4.0.0",
|
|
69
80
|
"should": "^13.2.3",
|