@hatiolab/things-scene 10.0.0-beta.124 → 10.0.0-beta.126
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/clock/frame-clock.d.ts.map +1 -1
- package/dist-types/components/component-geometry.d.ts.map +1 -1
- package/dist-types/components/container-abstract.d.ts +2 -4
- package/dist-types/components/container-abstract.d.ts.map +1 -1
- package/dist-types/components/donut.d.ts.map +1 -1
- package/dist-types/components/html/reposition.d.ts.map +1 -1
- package/dist-types/components/index.d.ts +0 -1
- package/dist-types/components/index.d.ts.map +1 -1
- package/dist-types/components/info-window.d.ts.map +1 -1
- package/dist-types/components/line.d.ts.map +1 -1
- package/dist-types/components/local-ref.d.ts.map +1 -1
- package/dist-types/components/mixins/gltf-component.d.ts +1 -2
- package/dist-types/components/mixins/gltf-component.d.ts.map +1 -1
- package/dist-types/components/mixins/move-handle.d.ts +9 -4
- package/dist-types/components/mixins/move-handle.d.ts.map +1 -1
- package/dist-types/components/mutater/path.d.ts.map +1 -1
- package/dist-types/components/root-container.d.ts +12 -0
- package/dist-types/components/root-container.d.ts.map +1 -1
- package/dist-types/components/ruler.d.ts.map +1 -1
- package/dist-types/components/star.d.ts.map +1 -1
- package/dist-types/core/dom-to-image.d.ts.map +1 -1
- package/dist-types/core/logger.d.ts.map +1 -1
- package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts +0 -4
- package/dist-types/decorator/decorators/border-highlighting-decorator.d.ts.map +1 -1
- package/dist-types/decorator/decorators/bouncing-arrow-decorator.d.ts +0 -3
- package/dist-types/decorator/decorators/bouncing-arrow-decorator.d.ts.map +1 -1
- package/dist-types/interfaces/providers.d.ts.map +1 -1
- package/dist-types/layer/action/popup.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.map +1 -1
- 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/rotator.d.ts.map +1 -1
- package/dist-types/layer/modeling-layer.d.ts +3 -0
- package/dist-types/layer/modeling-layer.d.ts.map +1 -1
- package/dist-types/layer/selection-layer.d.ts +7 -0
- package/dist-types/layer/selection-layer.d.ts.map +1 -1
- package/dist-types/layer/snap-guide-layer.d.ts.map +1 -1
- package/dist-types/license/license.d.ts.map +1 -1
- package/dist-types/search/scene-search-engine.d.ts +0 -1
- package/dist-types/search/scene-search-engine.d.ts.map +1 -1
- package/dist-types/search/search-overlay.d.ts +0 -1
- package/dist-types/search/search-overlay.d.ts.map +1 -1
- package/dist-types/things-scene/api/zorder.d.ts.map +1 -1
- package/dist-types/things-scene/index.d.ts +2 -2
- package/dist-types/things-scene/index.d.ts.map +1 -1
- package/dist-types/things-scene/scene.d.ts +0 -1
- package/dist-types/things-scene/scene.d.ts.map +1 -1
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts +0 -1
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +0 -1
- package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -1
- package/dist-types/threed/real-object-text.d.ts.map +1 -1
- package/dist-types/threed/three-capability.d.ts +0 -1
- package/dist-types/threed/three-capability.d.ts.map +1 -1
- package/dist-types/transfer/index.d.ts +0 -3
- package/dist-types/transfer/index.d.ts.map +1 -1
- package/dist-types/transition/transition-effect.d.ts.map +1 -1
- package/package.json +1 -1
- package/things-scene-min.js +11 -11
- package/things-scene-min.js.map +1 -1
- package/things-scene-transfer.mjs +2 -2
- package/things-scene.mjs +3 -3
- package/things-scene.mjs.map +1 -1
- package/dist-types/components/mixins/holdable.d.ts +0 -272
- package/dist-types/components/mixins/holdable.d.ts.map +0 -1
- package/dist-types/transfer/storage-rack-capability.d.ts +0 -144
- package/dist-types/transfer/storage-rack-capability.d.ts.map +0 -1
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
import type Component from '../component.js';
|
|
2
|
-
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
3
|
-
export default function Holdable<T extends Constructor<Component>>(superclass: T): {
|
|
4
|
-
new (...args: any[]): {
|
|
5
|
-
_holdings: Component[];
|
|
6
|
-
addHolding(holding: Component): void;
|
|
7
|
-
removeHolding(holding: Component, silent?: boolean): void;
|
|
8
|
-
forEachHolding(fn: (holding: Component, index: number) => void, context?: any): void;
|
|
9
|
-
/**
|
|
10
|
-
* `_holdings` 읽기 alias — 도메인 중립 어휘 (holdings = holder 가 hold 하는 것).
|
|
11
|
-
* Inspector / Monitor / CarrierAnim2D 의 통합 발견 entry. DataSource binding
|
|
12
|
-
* (Phase 1-4 CarrierHolderWithDataBinding) 의 getter 와 호환.
|
|
13
|
-
*/
|
|
14
|
-
get holdings(): ReadonlyArray<Component>;
|
|
15
|
-
dispose(): void;
|
|
16
|
-
/**
|
|
17
|
-
* carrier 수신 — 이전 parent 에서 분리 (모델링 자식 또는 holdings 양쪽) +
|
|
18
|
-
* 3D handover (world-preserving attach) + `_holdings` 등록.
|
|
19
|
-
*/
|
|
20
|
-
handoverIn(carrier: Component, options?: {
|
|
21
|
-
toParent3D?: any;
|
|
22
|
-
/**
|
|
23
|
-
* Pre-handover world pose (Carrier Entry Capability, 2026-06-19). 제공되면
|
|
24
|
-
* Step 6 의 표준 entry transition 흐름이 `attachPointFor(carrier).entryTransition`
|
|
25
|
-
* 옵션을 참조해 TransitionEffect.begin 호출. 도메인이 자체 begin 호출하지
|
|
26
|
-
* 않아도 표준 entry animation 자동.
|
|
27
|
-
*/
|
|
28
|
-
fromWorldPose?: {
|
|
29
|
-
pos: any;
|
|
30
|
-
quat: any;
|
|
31
|
-
};
|
|
32
|
-
}): void;
|
|
33
|
-
/**
|
|
34
|
-
* carrier 송출 — `_holdings` 에서 제거. 3D detach 는 새 holder 의 handoverIn
|
|
35
|
-
* 이 attach (world-preserving) 시 자동 처리 — 별도 detach 안 함.
|
|
36
|
-
*/
|
|
37
|
-
handoverOut(carrier: Component): void;
|
|
38
|
-
/** in-parent draw — _components 자식 draw 끝난 후, translate(left,top) 안에서 호출. */
|
|
39
|
-
_drawHoldings(context: any): void;
|
|
40
|
-
/** hit-test — local 좌표 (holder bounds 내부) 기준. 역순 (위 → 아래). */
|
|
41
|
-
_captureHoldings(localX: number, localY: number, parentX: number, parentY: number, except?: (component: any) => boolean): any;
|
|
42
|
-
_app: any;
|
|
43
|
-
_model: any;
|
|
44
|
-
_state: any;
|
|
45
|
-
_delta: any;
|
|
46
|
-
_animation: any;
|
|
47
|
-
_animate: any;
|
|
48
|
-
_parent: any;
|
|
49
|
-
_disposed: any;
|
|
50
|
-
_textHidden: any;
|
|
51
|
-
_text_substitutor: any;
|
|
52
|
-
_value_substitutor: any;
|
|
53
|
-
_mappings: any;
|
|
54
|
-
_realObject: import("../../index.js").IRealObject | undefined;
|
|
55
|
-
_cachedState: any;
|
|
56
|
-
updatedAt: any;
|
|
57
|
-
fontSize: any;
|
|
58
|
-
__cache__: any;
|
|
59
|
-
created(): void;
|
|
60
|
-
added(parent: any): void;
|
|
61
|
-
removed(parent: any): void;
|
|
62
|
-
ready(): Promise<void>;
|
|
63
|
-
touch(): void;
|
|
64
|
-
clearCache(...attrs: any[]): void;
|
|
65
|
-
removeSelf(completely: any): void;
|
|
66
|
-
resetAnimation(): void;
|
|
67
|
-
get nature(): import("../../index.js").ComponentNature;
|
|
68
|
-
get disposed(): boolean;
|
|
69
|
-
isLayer(): boolean;
|
|
70
|
-
isGroup(): boolean;
|
|
71
|
-
isContainer(): this is import("../../types/component.js").Container;
|
|
72
|
-
isLine(): boolean;
|
|
73
|
-
isRoot(): boolean;
|
|
74
|
-
isRootModel(): boolean;
|
|
75
|
-
is3dish(): boolean;
|
|
76
|
-
get is3dMode(): boolean;
|
|
77
|
-
isIn3DSpace(): boolean;
|
|
78
|
-
isTemplate(): boolean;
|
|
79
|
-
isHTMLElement(): boolean;
|
|
80
|
-
isConnectable(): boolean;
|
|
81
|
-
isIdentifiable(): boolean;
|
|
82
|
-
isPositionable(): boolean;
|
|
83
|
-
replaceRefids(replaceMap: any): void;
|
|
84
|
-
get(property: any): any;
|
|
85
|
-
set(props: any, propval?: any): any;
|
|
86
|
-
getState(property: any): any;
|
|
87
|
-
setState(props: Partial<import("../../index.js").State> | string, propval?: any): any;
|
|
88
|
-
get model(): any;
|
|
89
|
-
get state(): import("../../index.js").State;
|
|
90
|
-
get refid(): any;
|
|
91
|
-
get hierarchy(): any;
|
|
92
|
-
get volatile(): never[];
|
|
93
|
-
_applyProps(target: any, props: any, options: any): /*elided*/ any;
|
|
94
|
-
contains(x: number, y: number): boolean;
|
|
95
|
-
move(offset: {
|
|
96
|
-
x: number;
|
|
97
|
-
y: number;
|
|
98
|
-
}, ...args: boolean[]): void;
|
|
99
|
-
symmetryX(x?: number): void;
|
|
100
|
-
symmetryY(y: number): void;
|
|
101
|
-
adjustResize(bounds: import("../../index.js").BOUNDS, origin_bounds: import("../../index.js").BOUNDS, diagonal: boolean): {
|
|
102
|
-
left: any;
|
|
103
|
-
top: any;
|
|
104
|
-
width: any;
|
|
105
|
-
height: any;
|
|
106
|
-
};
|
|
107
|
-
adjustRotation(rotation: number, step: boolean): number;
|
|
108
|
-
outline(progress: number): any;
|
|
109
|
-
get bounds(): import("../../index.js").BOUNDS;
|
|
110
|
-
set bounds(b: import("../../index.js").BOUNDS);
|
|
111
|
-
get center(): import("../../index.js").POINT;
|
|
112
|
-
set center(p: import("../../index.js").POINT);
|
|
113
|
-
get location(): import("../../index.js").POINT;
|
|
114
|
-
set location(l: import("../../index.js").POINT);
|
|
115
|
-
get rotate(): import("../../index.js").POINT;
|
|
116
|
-
set rotate(r: import("../../index.js").POINT);
|
|
117
|
-
get dimension(): import("../../index.js").DIMENSION;
|
|
118
|
-
set dimension(d: import("../../index.js").DIMENSION);
|
|
119
|
-
get path(): import("../../index.js").POINT[];
|
|
120
|
-
set path(p: import("../../index.js").POINT[]);
|
|
121
|
-
get drawPath(): import("../../index.js").POINT[];
|
|
122
|
-
get rotatePoint(): import("../../index.js").POINT;
|
|
123
|
-
get mutable(): boolean;
|
|
124
|
-
get resizable(): boolean;
|
|
125
|
-
get rotatable(): boolean;
|
|
126
|
-
buildRealObject(): import("../../index.js").IRealObject | undefined;
|
|
127
|
-
get realObject(): import("../../index.js").IRealObject | undefined;
|
|
128
|
-
draw(context?: import("../../index.js").SceneRenderContext): void;
|
|
129
|
-
prerender(context: import("../../index.js").SceneRenderContext): void;
|
|
130
|
-
render(context: import("../../index.js").SceneRenderContext): void;
|
|
131
|
-
postrender(context: import("../../index.js").SceneRenderContext): void;
|
|
132
|
-
prepare(resolve: (component: Component) => void, reject: (reason: any) => void): void;
|
|
133
|
-
prepareIf(condition: boolean): void;
|
|
134
|
-
drawText(context: import("../../index.js").SceneRenderContext): void;
|
|
135
|
-
drawStroke(context: import("../../index.js").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
136
|
-
drawFill(context: import("../../index.js").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
137
|
-
get strokeStyle(): any;
|
|
138
|
-
set strokeStyle(v: any);
|
|
139
|
-
get fillStyle(): any;
|
|
140
|
-
set fillStyle(v: any);
|
|
141
|
-
get fontColor(): string;
|
|
142
|
-
set fontColor(v: string);
|
|
143
|
-
get rotation(): number;
|
|
144
|
-
set rotation(v: number);
|
|
145
|
-
get decorators(): string[];
|
|
146
|
-
get decotag(): string;
|
|
147
|
-
get hidden(): boolean;
|
|
148
|
-
set hidden(v: boolean);
|
|
149
|
-
get tag(): string;
|
|
150
|
-
set tag(v: string);
|
|
151
|
-
get appendum(): any;
|
|
152
|
-
set appendum(v: any);
|
|
153
|
-
defaultTextSubstitutor(): string;
|
|
154
|
-
textLines(context?: import("../../index.js").SceneRenderContext): any[][];
|
|
155
|
-
get font(): string;
|
|
156
|
-
get lineHeight(): number;
|
|
157
|
-
get textSubstitutor(): () => string;
|
|
158
|
-
get text(): string;
|
|
159
|
-
set text(v: string);
|
|
160
|
-
get textBounds(): import("../../index.js").BOUNDS;
|
|
161
|
-
get textRotation(): number;
|
|
162
|
-
get textHidden(): boolean;
|
|
163
|
-
set textHidden(v: boolean);
|
|
164
|
-
get hasTextProperty(): boolean;
|
|
165
|
-
animate(opts: import("../../index.js").AnimationConfig): any;
|
|
166
|
-
effect(context: import("../../index.js").SceneRenderContext, model: any): void;
|
|
167
|
-
serialize(...others: any[]): string;
|
|
168
|
-
trim(): void;
|
|
169
|
-
closeScene(data: any): void;
|
|
170
|
-
delta(attr?: string | object, value?: any): any;
|
|
171
|
-
invalidate(): void;
|
|
172
|
-
get value(): any;
|
|
173
|
-
set value(v: any);
|
|
174
|
-
get data(): any;
|
|
175
|
-
set data(v: any);
|
|
176
|
-
set tap(v: any);
|
|
177
|
-
get mappings(): any[];
|
|
178
|
-
get retention(): number;
|
|
179
|
-
get animation(): import("../../index.js").AnimationController | undefined;
|
|
180
|
-
get started(): boolean;
|
|
181
|
-
set started(v: boolean);
|
|
182
|
-
get controls(): import("../../index.js").Control[] | undefined;
|
|
183
|
-
findFirst(finder: string | ((c: Component) => boolean), ...others: any[]): Component | undefined;
|
|
184
|
-
findAll(s: string | ((c: Component) => boolean), ...others: any[]): any[] | undefined;
|
|
185
|
-
capture(x: number, y: number, except?: (c: Component) => boolean): any;
|
|
186
|
-
findAnchor(name: string): any;
|
|
187
|
-
isDescendible(container: Component | any): boolean;
|
|
188
|
-
getContext(component?: unknown): any;
|
|
189
|
-
get root(): Component;
|
|
190
|
-
get rootModel(): Component;
|
|
191
|
-
get parent(): Component;
|
|
192
|
-
set parent(v: Component);
|
|
193
|
-
get anchors(): import("../../index.js").Anchor[];
|
|
194
|
-
get scalable(): boolean;
|
|
195
|
-
get stuck(): boolean;
|
|
196
|
-
get capturable(): boolean;
|
|
197
|
-
get position(): string;
|
|
198
|
-
get origin(): string;
|
|
199
|
-
get offset(): import("../../index.js").POINT;
|
|
200
|
-
get app(): import("../../index.js").ApplicationContext;
|
|
201
|
-
drawEffect(context: import("../../index.js").SceneRenderContext): void;
|
|
202
|
-
prepareFill(resolve: Function, reject: Function): void;
|
|
203
|
-
prepareFillIf(condition: boolean): void;
|
|
204
|
-
onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
|
|
205
|
-
drawImage(context: import("../../index.js").SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
|
|
206
|
-
mutateBounds(logic: ((bounds: import("../../index.js").BOUNDS) => import("../../index.js").BOUNDS | void) | null, context?: any): void;
|
|
207
|
-
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;
|
|
208
|
-
access(accessor: string): any;
|
|
209
|
-
substitute(template: string, data: any): string | undefined;
|
|
210
|
-
onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
|
|
211
|
-
onchangeData(after: Record<string, any>, before: Record<string, any>): void;
|
|
212
|
-
buildMappings(): void;
|
|
213
|
-
executeMappings(force?: boolean): void;
|
|
214
|
-
disposeMappings(): void;
|
|
215
|
-
ondropfile(transfered: FileList, files: string[]): void;
|
|
216
|
-
transcoordS2P(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
217
|
-
transcoordP2S(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
218
|
-
transcoordS2T(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
219
|
-
transcoordT2P(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
220
|
-
transcoordT2S(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
221
|
-
transcoordS2TR(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
222
|
-
transcoordS2O(x: number, y: number, target: Component): import("../../index.js").POINT;
|
|
223
|
-
transcoordC2S(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
224
|
-
transcoordS2C(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
225
|
-
toParent(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
226
|
-
fromParent(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
227
|
-
toScene(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
228
|
-
fromScene(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
229
|
-
toLocal(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
230
|
-
toGlobal(x: number, y: number, top?: Component): import("../../index.js").POINT;
|
|
231
|
-
toOther(x: number, y: number, target: Component): import("../../index.js").POINT;
|
|
232
|
-
on<K extends keyof import("../../index.js").ComponentEventMap>(name: K, callback: (...args: import("../../index.js").ComponentEventMap[K]) => void, context?: any): /*elided*/ any;
|
|
233
|
-
on(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
234
|
-
off<K extends keyof import("../../index.js").ComponentEventMap>(name: K, callback?: ((...args: import("../../index.js").ComponentEventMap[K]) => void) | undefined, context?: any): /*elided*/ any;
|
|
235
|
-
off(name?: string | object, callback?: Function, context?: any): /*elided*/ any;
|
|
236
|
-
once<K extends keyof import("../../index.js").ComponentEventMap>(name: K, callback: (...args: import("../../index.js").ComponentEventMap[K]) => void, context?: any): /*elided*/ any;
|
|
237
|
-
once(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
238
|
-
trigger<K extends keyof import("../../index.js").ComponentEventMap>(name: K, ...args: import("../../index.js").ComponentEventMap[K]): /*elided*/ any;
|
|
239
|
-
trigger(name: string, ...args: any[]): /*elided*/ any;
|
|
240
|
-
delegate_on(delegator: any): /*elided*/ any;
|
|
241
|
-
delegate_off(delegator: any): /*elided*/ any;
|
|
242
|
-
onchange(after: Record<string, any>, before: Record<string, any>): void;
|
|
243
|
-
calculateBounds?(): void;
|
|
244
|
-
oncreate_element?(element: HTMLElement): void;
|
|
245
|
-
removeComponent(component: Component, ghost?: boolean): void;
|
|
246
|
-
addComponent(component: Component, ghost?: boolean): void;
|
|
247
|
-
insertComponentAt(component: Component, index: number, ghost?: boolean): void;
|
|
248
|
-
getOverlay(component: Component): HTMLElement | undefined;
|
|
249
|
-
findById(id: string): Component | undefined;
|
|
250
|
-
findByRefid(ref: string | number): Component | undefined;
|
|
251
|
-
findAllById(id: string): Component[];
|
|
252
|
-
resize(): void;
|
|
253
|
-
fit(type?: string): void;
|
|
254
|
-
get components(): Component[] | undefined;
|
|
255
|
-
get layout(): any;
|
|
256
|
-
get auxOverlay(): HTMLElement | undefined;
|
|
257
|
-
get isReady(): boolean;
|
|
258
|
-
get unitScale(): number;
|
|
259
|
-
get selected(): Component[];
|
|
260
|
-
set selected(_v: Component[]);
|
|
261
|
-
get focused(): Component | null;
|
|
262
|
-
set focused(_v: Component | null);
|
|
263
|
-
get hasSameParentForAllSelected(): boolean;
|
|
264
|
-
set hasSameParentForAllSelected(_v: boolean);
|
|
265
|
-
get fitMode(): string | undefined;
|
|
266
|
-
set fitMode(_v: string | undefined);
|
|
267
|
-
get element(): HTMLElement | null;
|
|
268
|
-
set element(_v: HTMLElement | null);
|
|
269
|
-
};
|
|
270
|
-
} & T;
|
|
271
|
-
export {};
|
|
272
|
-
//# sourceMappingURL=holdable.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"holdable.d.ts","sourceRoot":"","sources":["../../../src/components/mixins/holdable.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAA;AAG5C,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAEpD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;kBAFvC,GAAG,EAAE;mBAI/B,SAAS,EAAE;4BAEF,SAAS,GAAG,IAAI;+BA0Bb,SAAS,WAAW,OAAO,GAAG,IAAI;2BAkBtC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,YAAY,GAAG,GAAG,IAAI;QAIpF;;;;WAIG;wBACa,aAAa,CAAC,SAAS,CAAC;;QAwBxC;;;WAGG;4BACiB,SAAS,YAAY;YACvC,UAAU,CAAC,EAAE,GAAG,CAAA;YAChB;;;;;eAKG;YACH,aAAa,CAAC,EAAE;gBAAE,GAAG,EAAE,GAAG,CAAC;gBAAC,IAAI,EAAE,GAAG,CAAA;aAAE,CAAA;SACxC,GAAG,IAAI;QA6GR;;;WAGG;6BACkB,SAAS,GAAG,IAAI;QASrC,6EAA6E;+BACtD,GAAG,GAAG,IAAI;QASjC,8DAA8D;iCAEpD,MAAM,UAAU,MAAM,WACrB,MAAM,WAAW,MAAM,WACvB,CAAC,SAAS,EAAE,GAAG,KAAK,OAAO,GACnC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBT"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import type { Pose6DOF } from '../math/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Rack slot 의 3D 주소. 일반적인 columned rack 의 (Y 층, X 가로 칸, Z 깊이) — 단
|
|
4
|
-
* 모든 rack 이 3 차원 grid 인 것은 아니다 (예: 1D linear bin shelf, 2D 평면 grid).
|
|
5
|
-
* 구현자가 unused 차원을 0 으로 두면 됨. opaque 한 key string (`level.bay.depth`)
|
|
6
|
-
* 으로 직렬화 / Map 키 사용.
|
|
7
|
-
*/
|
|
8
|
-
export interface StorageSlotAddress {
|
|
9
|
-
/** 층 (Y 축). 0 = 바닥 층. */
|
|
10
|
-
readonly level: number;
|
|
11
|
-
/** 가로 칸 (X 축, aisle 방향). 0 = aisle 시작. */
|
|
12
|
-
readonly bay: number;
|
|
13
|
-
/** 깊이 (Z 축, aisle 에서 안쪽). 0 = aisle 면 (가장 가까운 slot). */
|
|
14
|
-
readonly depth: number;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Slot 의 *현재 상태* — read-only. carrier 가 들어있으면 occupant 노출, 비어있으면
|
|
18
|
-
* null. capability 외부 (WMS, monitor, simulation viewer) 가 generic 활용.
|
|
19
|
-
*/
|
|
20
|
-
export interface StorageSlotState {
|
|
21
|
-
readonly address: StorageSlotAddress;
|
|
22
|
-
/**
|
|
23
|
-
* Crane fork 가 도달할 *world pose* — slot 의 입출고 자세. position = slot 의
|
|
24
|
-
* 들어가는 입구 (= depth=0 면) 의 중심, rotation = fork 가 들어갈 자세 (보통
|
|
25
|
-
* aisle 방향 ±Z).
|
|
26
|
-
*/
|
|
27
|
-
readonly pose: Pose6DOF;
|
|
28
|
-
/** Carrying 중인 박스/팰릿. null = empty. */
|
|
29
|
-
readonly occupant: unknown | null;
|
|
30
|
-
/**
|
|
31
|
-
* Slot 의 물리 제약. 선택. 구현자가 size / weight 제약을 노출하면 source 가
|
|
32
|
-
* pre-flight 매칭 가능.
|
|
33
|
-
*/
|
|
34
|
-
readonly capacity?: {
|
|
35
|
-
readonly maxWeight?: number;
|
|
36
|
-
readonly maxBounds?: {
|
|
37
|
-
width: number;
|
|
38
|
-
height: number;
|
|
39
|
-
depth: number;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Application 도메인 metadata. SKU, lot, expiry, owner 등. 구현자 자유. WMS 가
|
|
44
|
-
* `findSlotsWithSKU` 같은 query 결과의 부가 정보로 사용 가능.
|
|
45
|
-
*/
|
|
46
|
-
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Put (= 저장) 또는 Pick (= 출고) reservation. source (crane) 가 자기 movement
|
|
50
|
-
* 시작 전 capability 에게 받음. commit 후 slot.occupant 가 변경됨.
|
|
51
|
-
*
|
|
52
|
-
* `direction` 으로 의도 분리 — same address 라도 put vs pick 의 pose / 제약이
|
|
53
|
-
* 다를 수 있음 (예: AutoStore digging — pick 시 위의 박스들 먼저 옮겨야 함).
|
|
54
|
-
*/
|
|
55
|
-
export interface StorageReservation {
|
|
56
|
-
readonly address: StorageSlotAddress;
|
|
57
|
-
readonly pose: Pose6DOF;
|
|
58
|
-
readonly direction: 'put' | 'pick';
|
|
59
|
-
/** Capability 가 자기 식별 용 opaque token. source 는 의미 모름. */
|
|
60
|
-
readonly token: symbol;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Slot search 기준. 모든 필드 optional — 비우면 *아무* free slot 반환.
|
|
64
|
-
*/
|
|
65
|
-
export interface SlotSearchCriteria {
|
|
66
|
-
/** SKU / barcode / type 매칭 — 같은 SKU 의 인접 슬롯 우선 (consolidation). */
|
|
67
|
-
readonly sku?: string;
|
|
68
|
-
/** 특정 address 인근 (Manhattan distance) 선호 — crane 이동 거리 최소화. */
|
|
69
|
-
readonly near?: StorageSlotAddress;
|
|
70
|
-
/** Carrier 크기 / 무게 제약. capacity 와 매칭. */
|
|
71
|
-
readonly requires?: {
|
|
72
|
-
readonly minWeight?: number;
|
|
73
|
-
readonly minBounds?: {
|
|
74
|
-
width: number;
|
|
75
|
-
height: number;
|
|
76
|
-
depth: number;
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* StorageRack capability contract.
|
|
82
|
-
*
|
|
83
|
-
* 구현자 (rack, AS/RS, AutoStore 등) 가 자기 sim 의 detail (선반 geometry, occupant
|
|
84
|
-
* map, SKU index, 다중 shuttle 큐잉) 모두 내부 구현으로 캡슐화. source (crane,
|
|
85
|
-
* shuttle, forklift) 는 이 interface 만 사용.
|
|
86
|
-
*/
|
|
87
|
-
export interface StorageRack {
|
|
88
|
-
/**
|
|
89
|
-
* 모든 slot 의 현재 상태. address key (`${level}.${bay}.${depth}`) → state.
|
|
90
|
-
* Read-only. 향후 *write* 확장 (sim state restore 등) plan.
|
|
91
|
-
*/
|
|
92
|
-
readonly slots: ReadonlyMap<string, StorageSlotState>;
|
|
93
|
-
/**
|
|
94
|
-
* Address 로 직접 조회. 없으면 null (= 존재하지 않는 address, 또는 dispose 된 슬롯).
|
|
95
|
-
*/
|
|
96
|
-
slotAt(address: StorageSlotAddress): StorageSlotState | null;
|
|
97
|
-
/**
|
|
98
|
-
* Putaway 용 free slot 검색. 정책 (LIFO/FIFO, optimal location, ABC 분류 등) 은
|
|
99
|
-
* 구현자 내부 — source 는 결과 address 만 받음. null = 빈 slot 없음.
|
|
100
|
-
*/
|
|
101
|
-
findFreeSlot(criteria?: SlotSearchCriteria): StorageSlotAddress | null;
|
|
102
|
-
/**
|
|
103
|
-
* 특정 SKU 가 저장된 slot 들 반환. retrieval order 정책 (FIFO 등) 적용된 순서.
|
|
104
|
-
* 빈 배열 = 해당 SKU 없음.
|
|
105
|
-
*/
|
|
106
|
-
findSlotsWithSKU(sku: string): readonly StorageSlotAddress[];
|
|
107
|
-
/**
|
|
108
|
-
* Putaway reservation — source 가 carrier 를 *어떤 address* 에 놓을지 commit
|
|
109
|
-
* 가능한 약속. null = 그 address 가 currently 사용 불가 (이미 점유 / 제약 미충족).
|
|
110
|
-
*
|
|
111
|
-
* Side-effect: capability 가 slot 을 *예약 마크* (다른 reservation 차단). 단
|
|
112
|
-
* occupant 는 commit 시점에 변경.
|
|
113
|
-
*/
|
|
114
|
-
reservePut(address: StorageSlotAddress, item: unknown): StorageReservation | null;
|
|
115
|
-
/**
|
|
116
|
-
* Retrieval reservation — source 가 특정 address 의 박스를 *꺼낼* 약속.
|
|
117
|
-
* `expected` (optional) 로 occupant 확인 (예: WMS 의 SKU 가 실제 박스와 일치 검증).
|
|
118
|
-
* null = 그 address 가 비어있음 / 예상 박스 다름 / digging 필요 시그널.
|
|
119
|
-
*/
|
|
120
|
-
reservePick(address: StorageSlotAddress, expected?: unknown): StorageReservation | null;
|
|
121
|
-
/**
|
|
122
|
-
* Reservation 확정 — slot.occupant 가 갱신. put 이면 item 이 occupant 로 들어가고,
|
|
123
|
-
* pick 이면 occupant 가 빠지고 occupant 가 source 에게 ownership 이전.
|
|
124
|
-
*
|
|
125
|
-
* idempotent — 같은 token 으로 중복 호출 시 noop (구현자 자유).
|
|
126
|
-
*/
|
|
127
|
-
commitReservation(reservation: StorageReservation, item: unknown): void;
|
|
128
|
-
/**
|
|
129
|
-
* Reservation 취소 — 마크된 slot 해제. commit 후 호출 시 noop (idempotent).
|
|
130
|
-
* source 가 movement 도중 abort 했을 때 호출.
|
|
131
|
-
*/
|
|
132
|
-
releaseReservation(reservation: StorageReservation): void;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Duck typing — target 이 StorageRack 노출 했는지 check. capability registry 없이
|
|
136
|
-
* runtime 매칭. 새 rack type 추가 시 *이 함수 외 다른 코드 변경 없음*.
|
|
137
|
-
*/
|
|
138
|
-
export declare function isStorageRack(target: unknown): target is StorageRack;
|
|
139
|
-
/**
|
|
140
|
-
* Address ↔ string key 변환 — Map 키 / 직렬화 / 로그 출력 표준.
|
|
141
|
-
*/
|
|
142
|
-
export declare function addressKey(address: StorageSlotAddress): string;
|
|
143
|
-
export declare function parseAddressKey(key: string): StorageSlotAddress | null;
|
|
144
|
-
//# sourceMappingURL=storage-rack-capability.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-rack-capability.d.ts","sourceRoot":"","sources":["../../src/transfer/storage-rack-capability.ts"],"names":[],"mappings":"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"}
|