@hatiolab/things-scene 10.0.0-beta.125 → 10.0.0-beta.127
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/dist-types/components/container-abstract.d.ts +2 -6
- package/dist-types/components/container-abstract.d.ts.map +1 -1
- package/dist-types/components/data/data.d.ts.map +1 -1
- package/dist-types/components/line.d.ts.map +1 -1
- package/dist-types/components/mixins/holdable.d.ts +12 -0
- package/dist-types/components/mixins/holdable.d.ts.map +1 -0
- package/dist-types/components/mixins/move-handle.d.ts +9 -16
- package/dist-types/components/mixins/move-handle.d.ts.map +1 -1
- package/dist-types/components/polyline.d.ts +6 -0
- package/dist-types/components/polyline.d.ts.map +1 -1
- package/dist-types/components/root-container.d.ts +0 -11
- package/dist-types/components/root-container.d.ts.map +1 -1
- package/dist-types/diagnostics/contract-inspector.d.ts +1 -1
- package/dist-types/diagnostics/contract-inspector.d.ts.map +1 -1
- package/dist-types/diagnostics/data-lag-tracker.d.ts +31 -25
- package/dist-types/diagnostics/data-lag-tracker.d.ts.map +1 -1
- package/dist-types/diagnostics/inspector.d.ts +15 -15
- package/dist-types/diagnostics/inspector.d.ts.map +1 -1
- package/dist-types/diagnostics/loading-overlay.d.ts.map +1 -1
- package/dist-types/flow/auto-route.d.ts +36 -0
- package/dist-types/flow/auto-route.d.ts.map +1 -0
- package/dist-types/flow/face-anchors.d.ts +26 -0
- package/dist-types/flow/face-anchors.d.ts.map +1 -0
- package/dist-types/flow/flow-engine.d.ts +122 -0
- package/dist-types/flow/flow-engine.d.ts.map +1 -0
- package/dist-types/flow/flow-graph-coordinator.d.ts +80 -0
- package/dist-types/flow/flow-graph-coordinator.d.ts.map +1 -0
- package/dist-types/flow/flow-graph-validator.d.ts +33 -0
- package/dist-types/flow/flow-graph-validator.d.ts.map +1 -0
- package/dist-types/flow/flow-graph.d.ts +76 -0
- package/dist-types/flow/flow-graph.d.ts.map +1 -0
- package/dist-types/flow/flow-introspection.d.ts +36 -0
- package/dist-types/flow/flow-introspection.d.ts.map +1 -0
- package/dist-types/flow/flow-node.d.ts +69 -0
- package/dist-types/flow/flow-node.d.ts.map +1 -0
- package/dist-types/flow/flow-orientation-coordinator.d.ts +13 -0
- package/dist-types/flow/flow-orientation-coordinator.d.ts.map +1 -0
- package/dist-types/flow/flow-orientation.d.ts +42 -0
- package/dist-types/flow/flow-orientation.d.ts.map +1 -0
- package/dist-types/flow/flow-trace.d.ts +5 -0
- package/dist-types/flow/flow-trace.d.ts.map +1 -0
- package/dist-types/flow/index.d.ts +16 -0
- package/dist-types/flow/index.d.ts.map +1 -0
- package/dist-types/flow/segment-topology.d.ts +225 -0
- package/dist-types/flow/segment-topology.d.ts.map +1 -0
- package/dist-types/flow/station-host-inference.d.ts +23 -0
- package/dist-types/flow/station-host-inference.d.ts.map +1 -0
- package/dist-types/items/arrangement/centering-queue-strategy.d.ts +10 -0
- package/dist-types/items/arrangement/centering-queue-strategy.d.ts.map +1 -0
- package/dist-types/items/arrangement/gravity-strategy.d.ts +9 -0
- package/dist-types/items/arrangement/gravity-strategy.d.ts.map +1 -0
- package/dist-types/items/arrangement/grid-strategy.d.ts +11 -0
- package/dist-types/items/arrangement/grid-strategy.d.ts.map +1 -0
- package/dist-types/items/arrangement/index.d.ts +7 -0
- package/dist-types/items/arrangement/index.d.ts.map +1 -0
- package/dist-types/items/arrangement/queue-strategy.d.ts +9 -0
- package/dist-types/items/arrangement/queue-strategy.d.ts.map +1 -0
- package/dist-types/items/arrangement/shelf-strategy.d.ts +11 -0
- package/dist-types/items/arrangement/shelf-strategy.d.ts.map +1 -0
- package/dist-types/items/arrangement/stack-strategy.d.ts +9 -0
- package/dist-types/items/arrangement/stack-strategy.d.ts.map +1 -0
- package/dist-types/items/capacity-mixin.d.ts +298 -0
- package/dist-types/items/capacity-mixin.d.ts.map +1 -0
- package/dist-types/items/capacity.d.ts +53 -0
- package/dist-types/items/capacity.d.ts.map +1 -0
- package/dist-types/items/index.d.ts +5 -0
- package/dist-types/items/index.d.ts.map +1 -0
- package/dist-types/items/items-data-binding.d.ts +79 -0
- package/dist-types/items/items-data-binding.d.ts.map +1 -0
- package/dist-types/items/slot-record.d.ts +23 -0
- package/dist-types/items/slot-record.d.ts.map +1 -0
- package/dist-types/layer/modeler/index.d.ts +1 -0
- package/dist-types/layer/modeler/index.d.ts.map +1 -1
- package/dist-types/layer/modeler/move-handle-icon.d.ts +2 -0
- package/dist-types/layer/modeler/move-handle-icon.d.ts.map +1 -0
- package/dist-types/layer/modeler/move-handle-modeler.d.ts +18 -0
- package/dist-types/layer/modeler/move-handle-modeler.d.ts.map +1 -0
- package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
- package/dist-types/layer/modeling-layer.d.ts +10 -0
- package/dist-types/layer/modeling-layer.d.ts.map +1 -1
- package/dist-types/layer/selection-layer.d.ts +1 -1
- package/dist-types/layer/selection-layer.d.ts.map +1 -1
- package/dist-types/things-scene/application-context.d.ts +6 -2
- package/dist-types/things-scene/application-context.d.ts.map +1 -1
- package/dist-types/things-scene/index.d.ts +5 -2
- package/dist-types/things-scene/index.d.ts.map +1 -1
- package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -1
- package/dist-types/threed/three-capability.d.ts +2 -2
- package/dist-types/threed/three-capability.d.ts.map +1 -1
- package/dist-types/transfer/container-capacity-helpers.d.ts +18 -0
- package/dist-types/transfer/container-capacity-helpers.d.ts.map +1 -0
- package/dist-types/transfer/container-capacity.d.ts +5 -374
- package/dist-types/transfer/container-capacity.d.ts.map +1 -1
- package/dist-types/transfer/index.d.ts +3 -0
- package/dist-types/transfer/index.d.ts.map +1 -1
- package/dist-types/transfer/transferable-mixin.d.ts +259 -0
- package/dist-types/transfer/transferable-mixin.d.ts.map +1 -0
- package/package.json +1 -1
- package/things-scene-min.js +7 -7
- package/things-scene-min.js.map +1 -1
- package/things-scene-transfer.mjs +3 -2
- package/things-scene.mjs +3 -3
- package/things-scene.mjs.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-topology.d.ts","sourceRoot":"","sources":["../../src/flow/segment-topology.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,CAAA;AAE1B,gEAAgE;AAChE,MAAM,WAAW,QAAQ;IACvB,8EAA8E;IAC9E,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClC,kDAAkD;IAClD,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,4DAA4D;IAC5D,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;mDAC+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,EAAE,CAAA;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,eAAe,CA+D7C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,EAAE,CAAA;CAC7C,GAAG;IAAE,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,IAAI,CAsB5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxD,GAAG,eAAe,CAsClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAChF,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAC9D,GAAG,eAAe,CA+BlB;AAGD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,QAAQ,EACb,SAAS,GAAE,cAAmB,GAC7B,OAAO,CA6BT;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAChF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,SAAI,GAAG,OAAO,CAehG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAChC,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,EAAE,aAAa,GAClB,MAAM,CAsDR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,aAAa,EACrB,aAAa,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACxC,MAAM,SAAI,GACT,OAAO,CAOT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,eAAe,EAC7B,UAAU,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC,EAC5F,SAAS,CAAC,EAAE,cAAc,GACzB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CA4CtB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface StationHostCandidate {
|
|
2
|
+
id: string;
|
|
3
|
+
component: any;
|
|
4
|
+
distance: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* StationHost 자격 duck — *_register_*_* 메서드 보유로 sorter 류만 매칭 (chute 처럼
|
|
8
|
+
* routingLinks 만 가진 노드는 제외).
|
|
9
|
+
*/
|
|
10
|
+
export declare function isStationHost(c: any): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* 가까운 StationHost 자동 발견 — root 트리를 walk 하며 StationHost 자격 노드 중 입구
|
|
13
|
+
* 거리 최소. 동률은 id lexical order — 결정론 보장. 미발견 시 null.
|
|
14
|
+
*
|
|
15
|
+
* @param entry chute/induct 의 입구 좌표 (board frame)
|
|
16
|
+
* @param root root component
|
|
17
|
+
* @param exclude self (자기 자신 제외)
|
|
18
|
+
*/
|
|
19
|
+
export declare function findNearestStationHost(entry: {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
}, root: any, exclude?: any): StationHostCandidate | null;
|
|
23
|
+
//# sourceMappingURL=station-host-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"station-host-inference.d.ts","sourceRoot":"","sources":["../../src/flow/station-host-inference.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,GAAG,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AASD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAO7C;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/B,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,GAAG,GACZ,oBAAoB,GAAG,IAAI,CAmB7B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ArrangementStrategy, SlotDef, Vec3 } from '../../transfer/types.js';
|
|
2
|
+
export declare class CenteringQueueStrategy implements ArrangementStrategy {
|
|
3
|
+
private readonly owner;
|
|
4
|
+
private readonly itemSpacing;
|
|
5
|
+
private readonly axis;
|
|
6
|
+
constructor(owner: any, itemSpacing?: number, axis?: 'horizontal' | 'vertical');
|
|
7
|
+
positionAt(index: number, slotDef: SlotDef, _occupantCount: number, component?: any): Vec3 | null;
|
|
8
|
+
capacity(slotDef: SlotDef): number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=centering-queue-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"centering-queue-strategy.d.ts","sourceRoot":"","sources":["../../../src/items/arrangement/centering-queue-strategy.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAEjF,qBAAa,sBAAuB,YAAW,mBAAmB;IAE9D,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFJ,KAAK,EAAE,GAAG,EACV,WAAW,SAAI,EACf,IAAI,GAAE,YAAY,GAAG,UAAyB;IAGjE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;IA0BjG,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAGnC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrangementStrategy, SlotDef, Vec3 } from '../../transfer/types.js';
|
|
2
|
+
export declare class GravityStrategy implements ArrangementStrategy {
|
|
3
|
+
/** Height of a single item; determines vertical stacking step (scene units). */
|
|
4
|
+
readonly itemHeight: number;
|
|
5
|
+
constructor(itemHeight?: number);
|
|
6
|
+
positionAt(index: number, slotDef: SlotDef, _occupantCount: number): Vec3 | null;
|
|
7
|
+
capacity(slotDef: SlotDef): number;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=gravity-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravity-strategy.d.ts","sourceRoot":"","sources":["../../../src/items/arrangement/gravity-strategy.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAEjF,qBAAa,eAAgB,YAAW,mBAAmB;IACzD,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;gBAEf,UAAU,SAAI;IAI1B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAahF,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAGnC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ArrangementStrategy, SlotDef, Vec3 } from '../../transfer/types.js';
|
|
2
|
+
export declare class GridStrategy implements ArrangementStrategy {
|
|
3
|
+
/** Distance between column centres (X axis, scene units). */
|
|
4
|
+
readonly colSpacing: number;
|
|
5
|
+
/** Distance between row centres (Z axis, scene units). */
|
|
6
|
+
readonly rowSpacing: number;
|
|
7
|
+
constructor(colSpacing?: number, rowSpacing?: number);
|
|
8
|
+
positionAt(index: number, slotDef: SlotDef, _occupantCount: number): Vec3 | null;
|
|
9
|
+
capacity(slotDef: SlotDef): number;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=grid-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid-strategy.d.ts","sourceRoot":"","sources":["../../../src/items/arrangement/grid-strategy.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAEjF,qBAAa,YAAa,YAAW,mBAAmB;IACtD,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;gBAEf,UAAU,SAAI,EAAE,UAAU,SAAI;IAK1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAmBhF,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAKnC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { StackStrategy } from './stack-strategy.js';
|
|
2
|
+
export { QueueStrategy } from './queue-strategy.js';
|
|
3
|
+
export { CenteringQueueStrategy } from './centering-queue-strategy.js';
|
|
4
|
+
export { GridStrategy } from './grid-strategy.js';
|
|
5
|
+
export { ShelfStrategy } from './shelf-strategy.js';
|
|
6
|
+
export { GravityStrategy } from './gravity-strategy.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/items/arrangement/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrangementStrategy, SlotDef, Vec3 } from '../../transfer/types.js';
|
|
2
|
+
export declare class QueueStrategy implements ArrangementStrategy {
|
|
3
|
+
/** Distance between item centres along the Z axis (scene units). */
|
|
4
|
+
readonly itemSpacing: number;
|
|
5
|
+
constructor(itemSpacing?: number);
|
|
6
|
+
positionAt(index: number, slotDef: SlotDef, _occupantCount: number): Vec3 | null;
|
|
7
|
+
capacity(slotDef: SlotDef): number;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=queue-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-strategy.d.ts","sourceRoot":"","sources":["../../../src/items/arrangement/queue-strategy.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAEjF,qBAAa,aAAc,YAAW,mBAAmB;IACvD,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;gBAEhB,WAAW,SAAI;IAI3B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAYhF,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAGnC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ArrangementStrategy, SlotDef, Vec3 } from '../../transfer/types.js';
|
|
2
|
+
export declare class ShelfStrategy implements ArrangementStrategy {
|
|
3
|
+
/** Horizontal (X) spacing between items on a shelf (scene units). */
|
|
4
|
+
readonly itemWidth: number;
|
|
5
|
+
/** Vertical (Y) spacing between shelf levels (scene units). */
|
|
6
|
+
readonly shelfHeight: number;
|
|
7
|
+
constructor(itemWidth?: number, shelfHeight?: number);
|
|
8
|
+
positionAt(index: number, slotDef: SlotDef, _occupantCount: number): Vec3 | null;
|
|
9
|
+
capacity(slotDef: SlotDef): number;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=shelf-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shelf-strategy.d.ts","sourceRoot":"","sources":["../../../src/items/arrangement/shelf-strategy.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAEjF,qBAAa,aAAc,YAAW,mBAAmB;IACvD,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;gBAEhB,SAAS,SAAI,EAAE,WAAW,SAAI;IAK1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAmBhF,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAKnC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrangementStrategy, SlotDef, Vec3 } from '../../transfer/types.js';
|
|
2
|
+
export declare class StackStrategy implements ArrangementStrategy {
|
|
3
|
+
/** Vertical gap between items (scene units). */
|
|
4
|
+
readonly itemSpacing: number;
|
|
5
|
+
constructor(itemSpacing?: number);
|
|
6
|
+
positionAt(index: number, slotDef: SlotDef, _occupantCount: number): Vec3 | null;
|
|
7
|
+
capacity(slotDef: SlotDef): number;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=stack-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-strategy.d.ts","sourceRoot":"","sources":["../../../src/items/arrangement/stack-strategy.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAEjF,qBAAa,aAAc,YAAW,mBAAmB;IACvD,gDAAgD;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;gBAEhB,WAAW,SAAI;IAI3B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAYhF,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAGnC"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import type { SlotDef, CarrierAttachPoint, ArrangementStrategy, CarrierDims, PlacementContext, SeatingPose } from '../transfer/types.js';
|
|
2
|
+
import type Component from '../components/component.js';
|
|
3
|
+
type Constructor<T = object> = new (...args: any[]) => T;
|
|
4
|
+
/**
|
|
5
|
+
* Capacity (keep) 믹스인. subclass 는 `get slots()` 만 override; 나머지 default.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Capacity<TBase extends Constructor<Component>>(Base: TBase): {
|
|
8
|
+
new (...args: any[]): {
|
|
9
|
+
/** Declare the slot topology of this container. */
|
|
10
|
+
get slots(): SlotDef[];
|
|
11
|
+
/**
|
|
12
|
+
* ArrangementStrategy used when `slots` is empty or slotDef has no arrangement.
|
|
13
|
+
* Override in subclass to supply richer strategies (Stack, Queue, Grid, etc.).
|
|
14
|
+
*/
|
|
15
|
+
get arrangementStrategy(): ArrangementStrategy;
|
|
16
|
+
canReceive(component: any): boolean;
|
|
17
|
+
findSlot(component: any): SlotDef | null;
|
|
18
|
+
/**
|
|
19
|
+
* carrier 의 받아들일 회전 (parent-local quaternion). 기본 identity.
|
|
20
|
+
* 회전이 필요한 holder (induct = belt 진행 방향, rack cell = grid 정렬 등)
|
|
21
|
+
* 는 이 메소드만 override 하면 receive() 가 atomic 하게 적용한다.
|
|
22
|
+
*/
|
|
23
|
+
acceptanceRotation(_carrier: any, _slot?: SlotDef): {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
z: number;
|
|
27
|
+
w: number;
|
|
28
|
+
} | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Phase G5 — physical mover 가 query 하는 delivery world rotation.
|
|
31
|
+
* delivery.world = holder.world.quat × acceptanceRotation_local
|
|
32
|
+
*/
|
|
33
|
+
deliveryWorldRotation(carrier: any): {
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
z: number;
|
|
37
|
+
w: number;
|
|
38
|
+
} | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Phase G9 — physical mover 가 query 하는 delivery world position.
|
|
41
|
+
* receivingSurfaceY 가 있으면 belt 표면 위, 없으면 holder origin.
|
|
42
|
+
*/
|
|
43
|
+
deliveryWorldPosition(_carrier: any): {
|
|
44
|
+
x: number;
|
|
45
|
+
y: number;
|
|
46
|
+
z: number;
|
|
47
|
+
} | undefined;
|
|
48
|
+
attachPointFor(component: any): CarrierAttachPoint | null;
|
|
49
|
+
/**
|
|
50
|
+
* Phase PS — PlacementSurface contract 의 default 구현.
|
|
51
|
+
* 기존 합성 경로와 *수치 동일* 한 안착 pose 를 holder object3d local frame 으로 반환 (I5).
|
|
52
|
+
*/
|
|
53
|
+
placementFor(carrier: CarrierDims | any, ctx?: PlacementContext): SeatingPose | null;
|
|
54
|
+
/**
|
|
55
|
+
* Phase PS P3a — SeatingPose.position.y (holder object3d local) → state.zPos 역산.
|
|
56
|
+
* 받침면도 slot.localPosition.z 도 없는 holder 는 null (zPos 보존 semantics).
|
|
57
|
+
*/
|
|
58
|
+
_zPosFromSeatY(seatY: number, carrierDepth: any, slot: SlotDef): number | null;
|
|
59
|
+
/**
|
|
60
|
+
* 받침면의 직관적 local Y — raw `receivingSurfaceY` 에서 상쇄분 제거. null = 받침면 명세 없음.
|
|
61
|
+
*/
|
|
62
|
+
_receivingSurfaceLocalY(): number | null;
|
|
63
|
+
/**
|
|
64
|
+
* Count children currently assigned to `slotId`. 자식이 `parent === this` 일 때만 count.
|
|
65
|
+
*/
|
|
66
|
+
_countOccupied(slotId: string): number;
|
|
67
|
+
_app: any;
|
|
68
|
+
_model: any;
|
|
69
|
+
_state: any;
|
|
70
|
+
_delta: any;
|
|
71
|
+
_animation: any;
|
|
72
|
+
_animate: any;
|
|
73
|
+
_parent: any;
|
|
74
|
+
_disposed: any;
|
|
75
|
+
_textHidden: any;
|
|
76
|
+
_text_substitutor: any;
|
|
77
|
+
_value_substitutor: any;
|
|
78
|
+
_mappings: any;
|
|
79
|
+
_realObject: import("../index.js").IRealObject | undefined;
|
|
80
|
+
_cachedState: any;
|
|
81
|
+
updatedAt: any;
|
|
82
|
+
fontSize: any;
|
|
83
|
+
__cache__: any;
|
|
84
|
+
created(): void;
|
|
85
|
+
added(parent: any): void;
|
|
86
|
+
removed(parent: any): void;
|
|
87
|
+
ready(): Promise<void>;
|
|
88
|
+
touch(): void;
|
|
89
|
+
clearCache(...attrs: any[]): void;
|
|
90
|
+
removeSelf(completely: any): void;
|
|
91
|
+
resetAnimation(): void;
|
|
92
|
+
dispose(): void;
|
|
93
|
+
get nature(): import("../index.js").ComponentNature;
|
|
94
|
+
get disposed(): boolean;
|
|
95
|
+
isLayer(): boolean;
|
|
96
|
+
isGroup(): boolean;
|
|
97
|
+
isContainer(): this is import("../types/component.js").Container;
|
|
98
|
+
isLine(): boolean;
|
|
99
|
+
isRoot(): boolean;
|
|
100
|
+
isRootModel(): boolean;
|
|
101
|
+
is3dish(): boolean;
|
|
102
|
+
get is3dMode(): boolean;
|
|
103
|
+
isIn3DSpace(): boolean;
|
|
104
|
+
isTemplate(): boolean;
|
|
105
|
+
isHTMLElement(): boolean;
|
|
106
|
+
isConnectable(): boolean;
|
|
107
|
+
isIdentifiable(): boolean;
|
|
108
|
+
isPositionable(): boolean;
|
|
109
|
+
replaceRefids(replaceMap: any): void;
|
|
110
|
+
get(property: any): any;
|
|
111
|
+
set(props: any, propval?: any): any;
|
|
112
|
+
getState(property: any): any;
|
|
113
|
+
setState(props: Partial<import("../index.js").State> | string, propval?: any): any;
|
|
114
|
+
get model(): any;
|
|
115
|
+
get state(): import("../index.js").State;
|
|
116
|
+
get refid(): any;
|
|
117
|
+
get hierarchy(): any;
|
|
118
|
+
get volatile(): never[];
|
|
119
|
+
_applyProps(target: any, props: any, options: any): /*elided*/ any;
|
|
120
|
+
contains(x: number, y: number): boolean;
|
|
121
|
+
move(offset: {
|
|
122
|
+
x: number;
|
|
123
|
+
y: number;
|
|
124
|
+
}, ...args: boolean[]): void;
|
|
125
|
+
symmetryX(x?: number): void;
|
|
126
|
+
symmetryY(y: number): void;
|
|
127
|
+
adjustResize(bounds: import("../index.js").BOUNDS, origin_bounds: import("../index.js").BOUNDS, diagonal: boolean): {
|
|
128
|
+
left: any;
|
|
129
|
+
top: any;
|
|
130
|
+
width: any;
|
|
131
|
+
height: any;
|
|
132
|
+
};
|
|
133
|
+
adjustRotation(rotation: number, step: boolean): number;
|
|
134
|
+
outline(progress: number): any;
|
|
135
|
+
get bounds(): import("../index.js").BOUNDS;
|
|
136
|
+
set bounds(b: import("../index.js").BOUNDS);
|
|
137
|
+
get center(): import("../index.js").POINT;
|
|
138
|
+
set center(p: import("../index.js").POINT);
|
|
139
|
+
get location(): import("../index.js").POINT;
|
|
140
|
+
set location(l: import("../index.js").POINT);
|
|
141
|
+
get rotate(): import("../index.js").POINT;
|
|
142
|
+
set rotate(r: import("../index.js").POINT);
|
|
143
|
+
get dimension(): import("../index.js").DIMENSION;
|
|
144
|
+
set dimension(d: import("../index.js").DIMENSION);
|
|
145
|
+
get path(): import("../index.js").POINT[];
|
|
146
|
+
set path(p: import("../index.js").POINT[]);
|
|
147
|
+
get drawPath(): import("../index.js").POINT[];
|
|
148
|
+
get rotatePoint(): import("../index.js").POINT;
|
|
149
|
+
get mutable(): boolean;
|
|
150
|
+
get resizable(): boolean;
|
|
151
|
+
get rotatable(): boolean;
|
|
152
|
+
buildRealObject(): import("../index.js").IRealObject | undefined;
|
|
153
|
+
get realObject(): import("../index.js").IRealObject | undefined;
|
|
154
|
+
draw(context?: import("../index.js").SceneRenderContext): void;
|
|
155
|
+
prerender(context: import("../index.js").SceneRenderContext): void;
|
|
156
|
+
render(context: import("../index.js").SceneRenderContext): void;
|
|
157
|
+
postrender(context: import("../index.js").SceneRenderContext): void;
|
|
158
|
+
prepare(resolve: (component: Component) => void, reject: (reason: any) => void): void;
|
|
159
|
+
prepareIf(condition: boolean): void;
|
|
160
|
+
drawText(context: import("../index.js").SceneRenderContext): void;
|
|
161
|
+
drawStroke(context: import("../index.js").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
162
|
+
drawFill(context: import("../index.js").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
163
|
+
get strokeStyle(): any;
|
|
164
|
+
set strokeStyle(v: any);
|
|
165
|
+
get fillStyle(): any;
|
|
166
|
+
set fillStyle(v: any);
|
|
167
|
+
get fontColor(): string;
|
|
168
|
+
set fontColor(v: string);
|
|
169
|
+
get rotation(): number;
|
|
170
|
+
set rotation(v: number);
|
|
171
|
+
get decorators(): string[];
|
|
172
|
+
get decotag(): string;
|
|
173
|
+
get hidden(): boolean;
|
|
174
|
+
set hidden(v: boolean);
|
|
175
|
+
get tag(): string;
|
|
176
|
+
set tag(v: string);
|
|
177
|
+
get appendum(): any;
|
|
178
|
+
set appendum(v: any);
|
|
179
|
+
defaultTextSubstitutor(): string;
|
|
180
|
+
textLines(context?: import("../index.js").SceneRenderContext): any[][];
|
|
181
|
+
get font(): string;
|
|
182
|
+
get lineHeight(): number;
|
|
183
|
+
get textSubstitutor(): () => string;
|
|
184
|
+
get text(): string;
|
|
185
|
+
set text(v: string);
|
|
186
|
+
get textBounds(): import("../index.js").BOUNDS;
|
|
187
|
+
get textRotation(): number;
|
|
188
|
+
get textHidden(): boolean;
|
|
189
|
+
set textHidden(v: boolean);
|
|
190
|
+
get hasTextProperty(): boolean;
|
|
191
|
+
animate(opts: import("../index.js").AnimationConfig): any;
|
|
192
|
+
effect(context: import("../index.js").SceneRenderContext, model: any): void;
|
|
193
|
+
serialize(...others: any[]): string;
|
|
194
|
+
trim(): void;
|
|
195
|
+
closeScene(data: any): void;
|
|
196
|
+
delta(attr?: string | object, value?: any): any;
|
|
197
|
+
invalidate(): void;
|
|
198
|
+
get value(): any;
|
|
199
|
+
set value(v: any);
|
|
200
|
+
get data(): any;
|
|
201
|
+
set data(v: any);
|
|
202
|
+
set tap(v: any);
|
|
203
|
+
get mappings(): any[];
|
|
204
|
+
get retention(): number;
|
|
205
|
+
get animation(): import("../index.js").AnimationController | undefined;
|
|
206
|
+
get started(): boolean;
|
|
207
|
+
set started(v: boolean);
|
|
208
|
+
get controls(): import("../index.js").Control[] | undefined;
|
|
209
|
+
findFirst(finder: string | ((c: Component) => boolean), ...others: any[]): Component | undefined;
|
|
210
|
+
findAll(s: string | ((c: Component) => boolean), ...others: any[]): any[] | undefined;
|
|
211
|
+
capture(x: number, y: number, except?: (c: Component) => boolean): any;
|
|
212
|
+
findAnchor(name: string): any;
|
|
213
|
+
isDescendible(container: Component | any): boolean;
|
|
214
|
+
getContext(component?: unknown): any;
|
|
215
|
+
get root(): Component;
|
|
216
|
+
get rootModel(): Component;
|
|
217
|
+
get parent(): Component;
|
|
218
|
+
set parent(v: Component);
|
|
219
|
+
get anchors(): import("../index.js").Anchor[];
|
|
220
|
+
get scalable(): boolean;
|
|
221
|
+
get stuck(): boolean;
|
|
222
|
+
get capturable(): boolean;
|
|
223
|
+
get position(): string;
|
|
224
|
+
get origin(): string;
|
|
225
|
+
get offset(): import("../index.js").POINT;
|
|
226
|
+
get app(): import("../index.js").ApplicationContext;
|
|
227
|
+
drawEffect(context: import("../index.js").SceneRenderContext): void;
|
|
228
|
+
prepareFill(resolve: Function, reject: Function): void;
|
|
229
|
+
prepareFillIf(condition: boolean): void;
|
|
230
|
+
onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
|
|
231
|
+
drawImage(context: import("../index.js").SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
|
|
232
|
+
mutateBounds(logic: ((bounds: import("../index.js").BOUNDS) => import("../index.js").BOUNDS | void) | null, context?: any): void;
|
|
233
|
+
mutatePath(beforeLogic: ((path: import("../index.js").POINT[]) => import("../index.js").POINT[] | void) | null, afterLogic: ((path: import("../index.js").POINT[]) => import("../index.js").POINT[] | void) | null, context?: any): void;
|
|
234
|
+
access(accessor: string): any;
|
|
235
|
+
substitute(template: string, data: any): string | undefined;
|
|
236
|
+
onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
|
|
237
|
+
onchangeData(after: Record<string, any>, before: Record<string, any>): void;
|
|
238
|
+
buildMappings(): void;
|
|
239
|
+
executeMappings(force?: boolean): void;
|
|
240
|
+
disposeMappings(): void;
|
|
241
|
+
ondropfile(transfered: FileList, files: string[]): void;
|
|
242
|
+
transcoordS2P(x: number, y: number, rp?: import("../index.js").POINT): import("../index.js").POINT;
|
|
243
|
+
transcoordP2S(x: number, y: number, rp?: import("../index.js").POINT): import("../index.js").POINT;
|
|
244
|
+
transcoordS2T(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
245
|
+
transcoordT2P(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
246
|
+
transcoordT2S(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
247
|
+
transcoordS2TR(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
248
|
+
transcoordS2O(x: number, y: number, target: Component): import("../index.js").POINT;
|
|
249
|
+
transcoordC2S(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
250
|
+
transcoordS2C(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
251
|
+
toParent(x: number, y: number, rp?: import("../index.js").POINT): import("../index.js").POINT;
|
|
252
|
+
fromParent(x: number, y: number, rp?: import("../index.js").POINT): import("../index.js").POINT;
|
|
253
|
+
toScene(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
254
|
+
fromScene(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
255
|
+
toLocal(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
256
|
+
toGlobal(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
257
|
+
toOther(x: number, y: number, target: Component): import("../index.js").POINT;
|
|
258
|
+
on<K extends keyof import("../index.js").ComponentEventMap>(name: K, callback: (...args: import("../index.js").ComponentEventMap[K]) => void, context?: any): /*elided*/ any;
|
|
259
|
+
on(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
260
|
+
off<K extends keyof import("../index.js").ComponentEventMap>(name: K, callback?: ((...args: import("../index.js").ComponentEventMap[K]) => void) | undefined, context?: any): /*elided*/ any;
|
|
261
|
+
off(name?: string | object, callback?: Function, context?: any): /*elided*/ any;
|
|
262
|
+
once<K extends keyof import("../index.js").ComponentEventMap>(name: K, callback: (...args: import("../index.js").ComponentEventMap[K]) => void, context?: any): /*elided*/ any;
|
|
263
|
+
once(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
264
|
+
trigger<K extends keyof import("../index.js").ComponentEventMap>(name: K, ...args: import("../index.js").ComponentEventMap[K]): /*elided*/ any;
|
|
265
|
+
trigger(name: string, ...args: any[]): /*elided*/ any;
|
|
266
|
+
delegate_on(delegator: any): /*elided*/ any;
|
|
267
|
+
delegate_off(delegator: any): /*elided*/ any;
|
|
268
|
+
onchange(after: Record<string, any>, before: Record<string, any>): void;
|
|
269
|
+
calculateBounds?(): void;
|
|
270
|
+
oncreate_element?(element: HTMLElement): void;
|
|
271
|
+
removeComponent(component: Component, ghost?: boolean): void;
|
|
272
|
+
addComponent(component: Component, ghost?: boolean): void;
|
|
273
|
+
insertComponentAt(component: Component, index: number, ghost?: boolean): void;
|
|
274
|
+
getOverlay(component: Component): HTMLElement | undefined;
|
|
275
|
+
findById(id: string): Component | undefined;
|
|
276
|
+
findByRefid(ref: string | number): Component | undefined;
|
|
277
|
+
findAllById(id: string): Component[];
|
|
278
|
+
resize(): void;
|
|
279
|
+
fit(type?: string): void;
|
|
280
|
+
get components(): Component[] | undefined;
|
|
281
|
+
get layout(): any;
|
|
282
|
+
get auxOverlay(): HTMLElement | undefined;
|
|
283
|
+
get isReady(): boolean;
|
|
284
|
+
get unitScale(): number;
|
|
285
|
+
get selected(): Component[];
|
|
286
|
+
set selected(_v: Component[]);
|
|
287
|
+
get focused(): Component | null;
|
|
288
|
+
set focused(_v: Component | null);
|
|
289
|
+
get hasSameParentForAllSelected(): boolean;
|
|
290
|
+
set hasSameParentForAllSelected(_v: boolean);
|
|
291
|
+
get fitMode(): string | undefined;
|
|
292
|
+
set fitMode(_v: string | undefined);
|
|
293
|
+
get element(): HTMLElement | null;
|
|
294
|
+
set element(_v: HTMLElement | null);
|
|
295
|
+
};
|
|
296
|
+
} & TBase;
|
|
297
|
+
export {};
|
|
298
|
+
//# sourceMappingURL=capacity-mixin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacity-mixin.d.ts","sourceRoot":"","sources":["../../src/items/capacity-mixin.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,OAAO,EACP,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAKvD,KAAK,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAExD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK;kBAL7B,GAAG,EAAE;QAU9C,mDAAmD;qBACtC,OAAO,EAAE;QAItB;;;WAGG;mCACwB,mBAAmB;8BAMxB,GAAG,GAAG,OAAO;4BAWf,GAAG,GAAG,OAAO,GAAG,IAAI;QAyCxC;;;;WAIG;qCAC0B,GAAG,UAAU,OAAO,GAAG;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS;QAI9G;;;WAGG;uCAC4B,GAAG,GAAG;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS;QAe/F;;;WAGG;wCAC6B,GAAG,GAAG;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS;kCAoB3D,GAAG,GAAG,kBAAkB,GAAG,IAAI;QAczD;;;WAGG;8BACmB,WAAW,GAAG,GAAG,QAAO,gBAAgB,GAAQ,WAAW,GAAG,IAAI;QAyDxF;;;WAGG;8BACmB,MAAM,gBAAgB,GAAG,QAAQ,OAAO,GAAG,MAAM,GAAG,IAAI;QAa9E;;WAEG;mCACwB,MAAM,GAAG,IAAI;QASxC;;WAEG;+BACoB,MAAM,GAAG,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAMzC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type Component from '../components/component.js';
|
|
2
|
+
/**
|
|
3
|
+
* Capacity contract — Holder 가 자기 보유 한도를 노출.
|
|
4
|
+
*
|
|
5
|
+
* 모든 method optional — 기본 fallback: SlottedHolder 의 slotIds().length / emptySlotIds().length.
|
|
6
|
+
*/
|
|
7
|
+
export interface Capacity {
|
|
8
|
+
/** 최대 capacity. -1 또는 Infinity 이면 무한. */
|
|
9
|
+
capacity(): number;
|
|
10
|
+
/** 남은 자리. capacity() - 점유된 수. */
|
|
11
|
+
available(): number;
|
|
12
|
+
/** capacity 도달 여부. available() === 0. */
|
|
13
|
+
isFull(): boolean;
|
|
14
|
+
/** 자리 생김 event listener — Producer 의 resume trigger. */
|
|
15
|
+
onAvailable?(listener: () => void): () => void;
|
|
16
|
+
/** capacity 도달 event listener — Producer 의 pause trigger. */
|
|
17
|
+
onFull?(listener: () => void): () => void;
|
|
18
|
+
}
|
|
19
|
+
/** duck-type. */
|
|
20
|
+
export declare function hasCapacity(x: any): x is Capacity;
|
|
21
|
+
/**
|
|
22
|
+
* 일반 helper — Capacity capability 미구현 컴포넌트도 SlottedHolder 라면 default 추론.
|
|
23
|
+
*/
|
|
24
|
+
export declare function inferCapacity(component: Component | any): {
|
|
25
|
+
capacity: number;
|
|
26
|
+
available: number;
|
|
27
|
+
isFull: boolean;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Capacity event emitter — Holder 가 자기 status 변경 시 호출하는 helper.
|
|
31
|
+
* setState({ data }) / reparent 후 호출. 변화 없으면 비용 0.
|
|
32
|
+
*/
|
|
33
|
+
export declare class CapacityEventTracker {
|
|
34
|
+
private wasFull;
|
|
35
|
+
private availableListeners;
|
|
36
|
+
private fullListeners;
|
|
37
|
+
/**
|
|
38
|
+
* Holder 의 현 capacity 상태 확인 + 변화 시 listener 호출.
|
|
39
|
+
* `current` = 현재 available count. 0 이면 full.
|
|
40
|
+
*/
|
|
41
|
+
notify(currentAvailable: number): void;
|
|
42
|
+
onAvailable(listener: () => void): () => void;
|
|
43
|
+
onFull(listener: () => void): () => void;
|
|
44
|
+
dispose(): void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Auto-wire — Producer ↔ Holder 의 자동 back-pressure.
|
|
48
|
+
*
|
|
49
|
+
* Holder 가 full 되면 producer.pauseEmit / 자리 생기면 resumeEmit.
|
|
50
|
+
* 반환: cleanup function — 양 listener 모두 해제.
|
|
51
|
+
*/
|
|
52
|
+
export declare function autoWireBackPressure(producer: any, holder: Capacity | any): () => void;
|
|
53
|
+
//# sourceMappingURL=capacity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacity.d.ts","sourceRoot":"","sources":["../../src/items/capacity.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAEvD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,yCAAyC;IACzC,QAAQ,IAAI,MAAM,CAAA;IAElB,iCAAiC;IACjC,SAAS,IAAI,MAAM,CAAA;IAEnB,yCAAyC;IACzC,MAAM,IAAI,OAAO,CAAA;IAEjB,wDAAwD;IACxD,WAAW,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAE9C,6DAA6D;IAC7D,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC1C;AAED,iBAAiB;AACjB,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,QAAQ,CAMjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,CAuBA;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,aAAa,CAAwB;IAE7C;;;OAGG;IACH,MAAM,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAetC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAQ7C,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAQxC,OAAO,IAAI,IAAI;CAIhB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,GAAG,EACb,MAAM,EAAE,QAAQ,GAAG,GAAG,GACrB,MAAM,IAAI,CAiBZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/items/index.ts"],"names":[],"mappings":"AAOA,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { SlotRecord } from './slot-record.js';
|
|
2
|
+
type Ctor<T = {}> = new (...args: any[]) => T;
|
|
3
|
+
/**
|
|
4
|
+
* FlowNode-shape interface (mixin Base 제약). _items 어휘 + handoverIn / removeItem
|
|
5
|
+
* 가용성 보증. (실제 type 의존 회피 — circular import 방지.)
|
|
6
|
+
*/
|
|
7
|
+
interface FlowNodeShape {
|
|
8
|
+
_items: any[];
|
|
9
|
+
handoverIn(carrier: any, options?: any): void;
|
|
10
|
+
removeItem(item: any, silent?: boolean): void;
|
|
11
|
+
slotIds?(): string[];
|
|
12
|
+
}
|
|
13
|
+
export declare function ItemsDataBinding<TBase extends Ctor<FlowNodeShape>>(Base: TBase): {
|
|
14
|
+
new (...args: any[]): {
|
|
15
|
+
/**
|
|
16
|
+
* data getter — _items + slotIds() → SlotRecord[] snapshot.
|
|
17
|
+
* 빈 slot 도 record (itemId: null) — 점유 상태 가시.
|
|
18
|
+
*
|
|
19
|
+
* RecordStorage 자손은 state.data 그대로 반환 (D-6, 2026-06-20).
|
|
20
|
+
*/
|
|
21
|
+
get data(): SlotRecord[];
|
|
22
|
+
/**
|
|
23
|
+
* data setter — external records → _items reconcile (3-step diff).
|
|
24
|
+
*
|
|
25
|
+
* RecordStorage 자손 (RackGrid / Stockpile / StorageRack — records-only) 은
|
|
26
|
+
* state.data 직접 path 우선 — ItemsDataBinding 의 reconcile 우회 (D-6, 2026-06-20).
|
|
27
|
+
* RecordStorage 의 obtainCarrier 가 transient materialize 담당, _items 는 미사용.
|
|
28
|
+
*/
|
|
29
|
+
set data(records: ReadonlyArray<SlotRecord> | undefined);
|
|
30
|
+
_reconcileItems(records: ReadonlyArray<SlotRecord>): void;
|
|
31
|
+
_exportSlotRecords(): SlotRecord[];
|
|
32
|
+
/**
|
|
33
|
+
* record 정체성 key — default = `slotId`. holder 가 carrier ID 기반 추적 원하면
|
|
34
|
+
* `record.itemId` 또는 `record.itemRefid` 사용으로 override.
|
|
35
|
+
*/
|
|
36
|
+
_recordKey(record: SlotRecord): string;
|
|
37
|
+
/**
|
|
38
|
+
* default record build — holder override 권장 (도메인 확장 field 추가).
|
|
39
|
+
*
|
|
40
|
+
* itemState 산출:
|
|
41
|
+
* 1. _businessFields() 명시 시 → 화이트리스트만 (정공)
|
|
42
|
+
* 2. 미명시 시 → visual blacklist 제외 (fallback, back-compat)
|
|
43
|
+
*
|
|
44
|
+
* 사용자 인사이트 (2026-06-20): *_아이템의 모든 속성이 데이타가 될 필요는 없다.
|
|
45
|
+
* 비즈니스적인 속성이 훨씬 중요_* — 도메인 holder 가 sku / batch / weight / expiry
|
|
46
|
+
* 등 자기 비즈니스 속성 명시 책임.
|
|
47
|
+
*/
|
|
48
|
+
_slotRecordOf(slotId: string, carrier: any | null): SlotRecord;
|
|
49
|
+
/**
|
|
50
|
+
* carrier.state → itemState 추출. 도메인 자손이 _businessFields() override 로
|
|
51
|
+
* 화이트리스트 명시 권장 — 정공 path. 미명시 시 visual blacklist 제외 (fallback).
|
|
52
|
+
*/
|
|
53
|
+
_extractItemState(carrier: any): Record<string, any> | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* 도메인 자손이 명시 — record.itemState 에 포함시킬 *_비즈니스 속성 화이트리스트_*.
|
|
56
|
+
*
|
|
57
|
+
* - 명시 (정공): `['sku', 'batch', 'weight', 'expiry']` — 그 field 만 export.
|
|
58
|
+
* - 미명시 (fallback): visual / scene transform 속성 자동 제외 + 나머지 spread.
|
|
59
|
+
*
|
|
60
|
+
* 사용자 인사이트 (2026-06-20): *_도메인 속성_* 이 진정한 data — 도메인 holder 가
|
|
61
|
+
* 자기 비즈니스 속성 명시 책임.
|
|
62
|
+
*/
|
|
63
|
+
_businessFields(): readonly string[] | null;
|
|
64
|
+
/**
|
|
65
|
+
* record → carrier 인스턴스. default = things-scene Component.register lookup
|
|
66
|
+
* (record.itemType 의 등록된 type class 인스턴스 생성). 도메인 holder 가
|
|
67
|
+
* 특수 factory (custom args, validation, factory pool 등) 필요 시 override.
|
|
68
|
+
*
|
|
69
|
+
* record.itemType 미명시 또는 등록 안 된 type 시 null (reconcile 의 추가 단계 skip).
|
|
70
|
+
*/
|
|
71
|
+
_createItemFromRecord(record: SlotRecord): any | null;
|
|
72
|
+
_items: any[];
|
|
73
|
+
handoverIn(carrier: any, options?: any): void;
|
|
74
|
+
removeItem(item: any, silent?: boolean): void;
|
|
75
|
+
slotIds?(): string[];
|
|
76
|
+
};
|
|
77
|
+
} & TBase;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=items-data-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items-data-binding.d.ts","sourceRoot":"","sources":["../../src/items/items-data-binding.ts"],"names":[],"mappings":"AAyDA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AA+B7C;;;GAGG;AACH,UAAU,aAAa;IACrB,MAAM,EAAE,GAAG,EAAE,CAAA;IACb,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IAC7C,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,OAAO,CAAC,IAAI,MAAM,EAAE,CAAA;CACrB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK;kBA1C7C,GAAG,EAAE;QAgEnC;;;;;WAKG;oBACS,UAAU,EAAE;QA1BxB;;;;;;WAMG;0BACe,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS;iCA4B9B,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI;8BA4CnC,UAAU,EAAE;QAkClC;;;WAGG;2BACgB,UAAU,GAAG,MAAM;QAItC;;;;;;;;;;WAUG;8BACmB,MAAM,WAAW,GAAG,GAAG,IAAI,GAAG,UAAU;QAgB9D;;;WAGG;mCACwB,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;QAuBhE;;;;;;;;WAQG;2BACgB,SAAS,MAAM,EAAE,GAAG,IAAI;QAI3C;;;;;;WAMG;sCAC2B,UAAU,GAAG,GAAG,GAAG,IAAI;gBA3M/C,GAAG,EAAE;4BACO,GAAG,YAAY,GAAG,GAAG,IAAI;yBAC5B,GAAG,WAAW,OAAO,GAAG,IAAI;oBACjC,MAAM,EAAE;;UA0NrB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface SlotRecord {
|
|
2
|
+
/** slot 식별자 (holder 안 유일). 예: 'forks' / 'cell-3-0-2' / 'slide' / 'pos-7' */
|
|
3
|
+
slotId?: string;
|
|
4
|
+
/** 점유 상태 — item 의 *_비즈니스 식별자_* (sku / sscc / lot 등). 없으면 null.
|
|
5
|
+
* refid(things-scene 내부 정적/동적 영역 인덱스)는 절대 넣지 않는다 — data 영속 시 영역 오염. */
|
|
6
|
+
itemId?: string | null;
|
|
7
|
+
/** item 도메인 type — 'pallet' / 'parcel' / 'tote' 등 */
|
|
8
|
+
itemType?: string;
|
|
9
|
+
/** item 의 추가 state snapshot (도메인 확장 — left/top/rotation/etc.) */
|
|
10
|
+
itemState?: Record<string, any>;
|
|
11
|
+
/** slot 정적 메타 — capacity / kind 등 (holder 가 정의) */
|
|
12
|
+
slotMeta?: Record<string, any>;
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated D-1 (2026-06-20) — back-compat. cellId 기반 records (RackGrid /
|
|
15
|
+
* Stockpile / RecordStorage) 와 호환 위해 잔존. 새 코드는 `slotId` 사용.
|
|
16
|
+
*/
|
|
17
|
+
cellId?: string;
|
|
18
|
+
/** @deprecated 도메인 자유 field — back-compat. */
|
|
19
|
+
type?: string;
|
|
20
|
+
/** holder 별 도메인 확장 field 자유 (extends SlotRecord 권장). */
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=slot-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot-record.d.ts","sourceRoot":"","sources":["../../src/items/slot-record.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;4EACwE;IACxE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEtB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE/B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,wDAAwD;IACxD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB"}
|
|
@@ -5,4 +5,5 @@ export { default as PathHandler } from './path-handler.js';
|
|
|
5
5
|
export { default as AnchorHandler } from './anchor-handler.js';
|
|
6
6
|
export { default as Resizer } from './resizer.js';
|
|
7
7
|
export { default as Rotator } from './rotator.js';
|
|
8
|
+
export { default as MoveHandleModeler } from './move-handle-modeler.js';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|