@hatiolab/things-scene 10.0.0-beta.79 → 10.0.0-beta.80
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/component-data.d.ts +22 -0
- package/dist-types/components/component-data.d.ts.map +1 -1
- package/dist-types/components/drawer/stroke.d.ts.map +1 -1
- package/dist-types/components/index.d.ts +1 -0
- package/dist-types/components/index.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/threed/factories/decal.d.ts +502 -0
- package/dist-types/threed/factories/decal.d.ts.map +1 -0
- 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/index.d.ts +3 -0
- package/dist-types/threed/index.d.ts.map +1 -1
- package/dist-types/threed/real-object.d.ts +51 -0
- package/dist-types/threed/real-object.d.ts.map +1 -1
- package/dist-types/threed/utils/dispose.d.ts.map +1 -1
- package/package.json +1 -1
- package/things-scene-min.js +10 -10
- package/things-scene-min.js.map +1 -1
- package/things-scene.mjs +2 -2
- package/things-scene.mjs.map +1 -1
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
import type { ComponentNature } from '../../interfaces/types.js';
|
|
2
|
+
import type { IRealObject } from '../../interfaces/real-object.js';
|
|
3
|
+
import Shape from '../../components/shape.js';
|
|
4
|
+
import { RealObjectMesh } from '../real-object-mesh.js';
|
|
5
|
+
export declare class Decal3D extends RealObjectMesh {
|
|
6
|
+
/** Lay the decal on the floor (z-fighting safe) — same as RealObjectText. */
|
|
7
|
+
protected get syncZPosOffset(): number;
|
|
8
|
+
get geometricOffsetY(): number;
|
|
9
|
+
buildGeometry(): void;
|
|
10
|
+
/**
|
|
11
|
+
* Rebuild geometry on resize — PlaneGeometry doesn't scale cleanly via
|
|
12
|
+
* `object3d.scale` because the y-rotation we applied bakes the plane
|
|
13
|
+
* orientation into the geometry; scaling would distort the plane normal.
|
|
14
|
+
*
|
|
15
|
+
* Full rebuild (clear+build) so the selection handle's position stays in
|
|
16
|
+
* sync with the new corner. Optimizing geometry-only here saves one
|
|
17
|
+
* material allocation but leaves the handle floating where the old corner
|
|
18
|
+
* used to be.
|
|
19
|
+
*/
|
|
20
|
+
updateDimension(): void;
|
|
21
|
+
/** Override material build to ensure DoubleSide visibility. */
|
|
22
|
+
buildMaterial(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Selection handle: the decal's plane defaults to non-raycastable (via
|
|
25
|
+
* `ThreeDOnly.raycastTargetDefault = false`) so contents on top stay
|
|
26
|
+
* selectable. The handle is the only click target — small, editor-only,
|
|
27
|
+
* positioned near the decal so it's visually associated with it.
|
|
28
|
+
*/
|
|
29
|
+
build(): void;
|
|
30
|
+
}
|
|
31
|
+
declare const Decal_base: {
|
|
32
|
+
new (...args: any[]): {
|
|
33
|
+
is3dish(): boolean;
|
|
34
|
+
get hasTextProperty(): boolean;
|
|
35
|
+
get capturable(): boolean;
|
|
36
|
+
render(_ctx: CanvasRenderingContext2D): void;
|
|
37
|
+
_app: any;
|
|
38
|
+
_model: any;
|
|
39
|
+
_state: any;
|
|
40
|
+
_delta: any;
|
|
41
|
+
_animation: any;
|
|
42
|
+
_animate: any;
|
|
43
|
+
_parent: any;
|
|
44
|
+
_disposed: any;
|
|
45
|
+
_textHidden: any;
|
|
46
|
+
_text_substitutor: any;
|
|
47
|
+
_value_substitutor: any;
|
|
48
|
+
_mappings: any;
|
|
49
|
+
_realObject: IRealObject | undefined;
|
|
50
|
+
_cachedState: any;
|
|
51
|
+
updatedAt: any;
|
|
52
|
+
fontSize: any;
|
|
53
|
+
__cache__: any;
|
|
54
|
+
created(): void;
|
|
55
|
+
added(parent: any): void;
|
|
56
|
+
removed(parent: any): void;
|
|
57
|
+
ready(): Promise<void>;
|
|
58
|
+
touch(): void;
|
|
59
|
+
clearCache(...attrs: any[]): void;
|
|
60
|
+
removeSelf(completely: any): void;
|
|
61
|
+
resetAnimation(): void;
|
|
62
|
+
dispose(): void;
|
|
63
|
+
get nature(): ComponentNature;
|
|
64
|
+
get disposed(): boolean;
|
|
65
|
+
isLayer(): boolean;
|
|
66
|
+
isGroup(): boolean;
|
|
67
|
+
isContainer(): this is import("../../types/component.js").Container;
|
|
68
|
+
isLine(): boolean;
|
|
69
|
+
isRoot(): boolean;
|
|
70
|
+
isRootModel(): boolean;
|
|
71
|
+
get is3dMode(): boolean;
|
|
72
|
+
isIn3DSpace(): boolean;
|
|
73
|
+
isTemplate(): boolean;
|
|
74
|
+
isHTMLElement(): boolean;
|
|
75
|
+
isConnectable(): boolean;
|
|
76
|
+
isIdentifiable(): boolean;
|
|
77
|
+
isPositionable(): boolean;
|
|
78
|
+
replaceRefids(replaceMap: any): void;
|
|
79
|
+
get(property: any): any;
|
|
80
|
+
set(props: any, propval?: any): any;
|
|
81
|
+
getState(property: any): any;
|
|
82
|
+
setState(props: any, propval?: any): any;
|
|
83
|
+
get model(): any;
|
|
84
|
+
get state(): any;
|
|
85
|
+
get hierarchy(): any;
|
|
86
|
+
get volatile(): never[];
|
|
87
|
+
_applyProps(target: any, props: any, options: any): /*elided*/ any;
|
|
88
|
+
contains(x: number, y: number): boolean;
|
|
89
|
+
move(offset: {
|
|
90
|
+
x: number;
|
|
91
|
+
y: number;
|
|
92
|
+
}, ...args: boolean[]): void;
|
|
93
|
+
symmetryX(x?: number): void;
|
|
94
|
+
symmetryY(y: number): void;
|
|
95
|
+
adjustResize(bounds: import("../../index.js").BOUNDS, origin_bounds: import("../../index.js").BOUNDS, diagonal: boolean): {
|
|
96
|
+
left: any;
|
|
97
|
+
top: any;
|
|
98
|
+
width: any;
|
|
99
|
+
height: any;
|
|
100
|
+
};
|
|
101
|
+
adjustRotation(rotation: number, step: boolean): number;
|
|
102
|
+
outline(progress: number): any;
|
|
103
|
+
get bounds(): import("../../index.js").BOUNDS;
|
|
104
|
+
set bounds(b: import("../../index.js").BOUNDS);
|
|
105
|
+
get center(): import("../../index.js").POINT;
|
|
106
|
+
set center(p: import("../../index.js").POINT);
|
|
107
|
+
get location(): import("../../index.js").POINT;
|
|
108
|
+
set location(l: import("../../index.js").POINT);
|
|
109
|
+
get rotate(): import("../../index.js").POINT;
|
|
110
|
+
set rotate(r: import("../../index.js").POINT);
|
|
111
|
+
get dimension(): import("../../index.js").DIMENSION;
|
|
112
|
+
set dimension(d: import("../../index.js").DIMENSION);
|
|
113
|
+
get path(): import("../../index.js").POINT[];
|
|
114
|
+
set path(p: import("../../index.js").POINT[]);
|
|
115
|
+
get drawPath(): import("../../index.js").POINT[];
|
|
116
|
+
get rotatePoint(): import("../../index.js").POINT;
|
|
117
|
+
get mutable(): boolean;
|
|
118
|
+
get resizable(): boolean;
|
|
119
|
+
get rotatable(): boolean;
|
|
120
|
+
buildRealObject(): IRealObject | undefined;
|
|
121
|
+
get realObject(): IRealObject | undefined;
|
|
122
|
+
draw(context?: import("../../index.js").SceneRenderContext): void;
|
|
123
|
+
prerender(context: import("../../index.js").SceneRenderContext): void;
|
|
124
|
+
postrender(context: import("../../index.js").SceneRenderContext): void;
|
|
125
|
+
prepare(resolve: (component: import("../../index.js").Component) => void, reject: (reason: any) => void): void;
|
|
126
|
+
prepareIf(condition: boolean): void;
|
|
127
|
+
drawText(context: import("../../index.js").SceneRenderContext): void;
|
|
128
|
+
drawStroke(context: import("../../index.js").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
129
|
+
drawFill(context: import("../../index.js").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
130
|
+
get strokeStyle(): any;
|
|
131
|
+
set strokeStyle(v: any);
|
|
132
|
+
get fillStyle(): any;
|
|
133
|
+
set fillStyle(v: any);
|
|
134
|
+
get fontColor(): string;
|
|
135
|
+
set fontColor(v: string);
|
|
136
|
+
get rotation(): number;
|
|
137
|
+
set rotation(v: number);
|
|
138
|
+
get decorators(): string[];
|
|
139
|
+
get decotag(): string;
|
|
140
|
+
get hidden(): boolean;
|
|
141
|
+
set hidden(v: boolean);
|
|
142
|
+
get tag(): string;
|
|
143
|
+
set tag(v: string);
|
|
144
|
+
get appendum(): any;
|
|
145
|
+
set appendum(v: any);
|
|
146
|
+
defaultTextSubstitutor(): string;
|
|
147
|
+
textLines(context?: import("../../index.js").SceneRenderContext): any[][];
|
|
148
|
+
get font(): string;
|
|
149
|
+
get lineHeight(): number;
|
|
150
|
+
get textSubstitutor(): () => string;
|
|
151
|
+
get text(): string;
|
|
152
|
+
set text(v: string);
|
|
153
|
+
get textBounds(): import("../../index.js").BOUNDS;
|
|
154
|
+
get textRotation(): number;
|
|
155
|
+
get textHidden(): boolean;
|
|
156
|
+
set textHidden(v: boolean);
|
|
157
|
+
animate(opts: import("../../index.js").AnimationConfig): any;
|
|
158
|
+
effect(context: import("../../index.js").SceneRenderContext, model: any): void;
|
|
159
|
+
serialize(...others: any[]): string;
|
|
160
|
+
trim(): void;
|
|
161
|
+
closeScene(data: any): void;
|
|
162
|
+
delta(attr?: string | object, value?: any): any;
|
|
163
|
+
invalidate(): void;
|
|
164
|
+
get value(): any;
|
|
165
|
+
set value(v: any);
|
|
166
|
+
get data(): any;
|
|
167
|
+
set data(v: any);
|
|
168
|
+
set tap(v: any);
|
|
169
|
+
get mappings(): any[];
|
|
170
|
+
get retention(): number;
|
|
171
|
+
get animation(): import("../../index.js").AnimationController | undefined;
|
|
172
|
+
get started(): boolean;
|
|
173
|
+
set started(v: boolean);
|
|
174
|
+
get controls(): import("../../index.js").Control[] | undefined;
|
|
175
|
+
findFirst(finder: string | ((c: import("../../index.js").Component) => boolean), ...others: any[]): import("../../index.js").Component | undefined;
|
|
176
|
+
findAll(s: string | ((c: import("../../index.js").Component) => boolean), ...others: any[]): any[] | undefined;
|
|
177
|
+
capture(x: number, y: number, except?: (c: import("../../index.js").Component) => boolean): any;
|
|
178
|
+
findAnchor(name: string): any;
|
|
179
|
+
isDescendible(container: import("../../index.js").Component): boolean;
|
|
180
|
+
getContext(component?: unknown): any;
|
|
181
|
+
get root(): import("../../index.js").Component;
|
|
182
|
+
get rootModel(): import("../../index.js").Component;
|
|
183
|
+
get parent(): import("../../index.js").Component;
|
|
184
|
+
set parent(v: import("../../index.js").Component);
|
|
185
|
+
get anchors(): import("../../index.js").Anchor[];
|
|
186
|
+
get scalable(): boolean;
|
|
187
|
+
get stuck(): boolean;
|
|
188
|
+
get position(): string;
|
|
189
|
+
get origin(): string;
|
|
190
|
+
get offset(): import("../../index.js").POINT;
|
|
191
|
+
get app(): import("../../index.js").ApplicationContext;
|
|
192
|
+
drawEffect(context: import("../../index.js").SceneRenderContext): void;
|
|
193
|
+
prepareFill(resolve: Function, reject: Function): void;
|
|
194
|
+
prepareFillIf(condition: boolean): void;
|
|
195
|
+
onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
|
|
196
|
+
drawImage(context: import("../../index.js").SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
|
|
197
|
+
mutateBounds(logic: ((bounds: import("../../index.js").BOUNDS) => import("../../index.js").BOUNDS | void) | null, context?: any): void;
|
|
198
|
+
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;
|
|
199
|
+
access(accessor: string): any;
|
|
200
|
+
substitute(template: string, data: any): string | undefined;
|
|
201
|
+
onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
|
|
202
|
+
onchangeData(after: Record<string, any>, before: Record<string, any>): void;
|
|
203
|
+
buildMappings(): void;
|
|
204
|
+
executeMappings(force?: boolean): void;
|
|
205
|
+
disposeMappings(): void;
|
|
206
|
+
ondropfile(transfered: FileList, files: string[]): void;
|
|
207
|
+
transcoordS2P(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
208
|
+
transcoordP2S(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
209
|
+
transcoordS2T(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
210
|
+
transcoordT2P(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
211
|
+
transcoordT2S(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
212
|
+
transcoordS2TR(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
213
|
+
transcoordS2O(x: number, y: number, target: import("../../index.js").Component): import("../../index.js").POINT;
|
|
214
|
+
transcoordC2S(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
215
|
+
transcoordS2C(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
216
|
+
toParent(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
217
|
+
fromParent(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
218
|
+
toScene(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
219
|
+
fromScene(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
220
|
+
toLocal(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
221
|
+
toGlobal(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
222
|
+
toOther(x: number, y: number, target: import("../../index.js").Component): import("../../index.js").POINT;
|
|
223
|
+
on(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
224
|
+
off(name?: string | object, callback?: Function, context?: any): /*elided*/ any;
|
|
225
|
+
once(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
226
|
+
trigger(name: string, ...args: any[]): /*elided*/ any;
|
|
227
|
+
delegate_on(delegator: any): /*elided*/ any;
|
|
228
|
+
delegate_off(delegator: any): /*elided*/ any;
|
|
229
|
+
onchange(after: Record<string, any>, before: Record<string, any>): void;
|
|
230
|
+
calculateBounds?(): void;
|
|
231
|
+
oncreate_element?(element: HTMLElement): void;
|
|
232
|
+
removeComponent(component: import("../../index.js").Component, ghost?: boolean): void;
|
|
233
|
+
addComponent(component: import("../../index.js").Component, ghost?: boolean): void;
|
|
234
|
+
insertComponentAt(component: import("../../index.js").Component, index: number, ghost?: boolean): void;
|
|
235
|
+
getOverlay(component: import("../../index.js").Component): HTMLElement | undefined;
|
|
236
|
+
findById(id: string): import("../../index.js").Component | undefined;
|
|
237
|
+
findByRefid(ref: string | number): import("../../index.js").Component | undefined;
|
|
238
|
+
findAllById(id: string): import("../../index.js").Component[];
|
|
239
|
+
resize(): void;
|
|
240
|
+
fit(type?: string): void;
|
|
241
|
+
get components(): import("../../index.js").Component[] | undefined;
|
|
242
|
+
get layout(): any;
|
|
243
|
+
get auxOverlay(): HTMLElement | undefined;
|
|
244
|
+
get isReady(): boolean;
|
|
245
|
+
get unitScale(): number;
|
|
246
|
+
get selected(): import("../../index.js").Component[];
|
|
247
|
+
set selected(_v: import("../../index.js").Component[]);
|
|
248
|
+
get focused(): import("../../index.js").Component | null;
|
|
249
|
+
set focused(_v: import("../../index.js").Component | null);
|
|
250
|
+
get hasSameParentForAllSelected(): boolean;
|
|
251
|
+
set hasSameParentForAllSelected(_v: boolean);
|
|
252
|
+
get fitMode(): string | undefined;
|
|
253
|
+
set fitMode(_v: string | undefined);
|
|
254
|
+
get element(): HTMLElement | null;
|
|
255
|
+
set element(_v: HTMLElement | null);
|
|
256
|
+
};
|
|
257
|
+
raycastTargetDefault: boolean;
|
|
258
|
+
} & {
|
|
259
|
+
new (...args: any[]): {
|
|
260
|
+
contains(x: number, y: number): boolean;
|
|
261
|
+
get path(): {
|
|
262
|
+
x: any;
|
|
263
|
+
y: any;
|
|
264
|
+
}[];
|
|
265
|
+
set path(path: {
|
|
266
|
+
x: any;
|
|
267
|
+
y: any;
|
|
268
|
+
}[]);
|
|
269
|
+
get anchors(): {
|
|
270
|
+
name: string;
|
|
271
|
+
position: {
|
|
272
|
+
x: any;
|
|
273
|
+
y: any;
|
|
274
|
+
};
|
|
275
|
+
}[];
|
|
276
|
+
get bounds(): any;
|
|
277
|
+
set bounds(bounds: any);
|
|
278
|
+
render(ctx: CanvasRenderingContext2D): void;
|
|
279
|
+
_app: any;
|
|
280
|
+
_model: any;
|
|
281
|
+
_state: any;
|
|
282
|
+
_delta: any;
|
|
283
|
+
_animation: any;
|
|
284
|
+
_animate: any;
|
|
285
|
+
_parent: any;
|
|
286
|
+
_disposed: any;
|
|
287
|
+
_textHidden: any;
|
|
288
|
+
_text_substitutor: any;
|
|
289
|
+
_value_substitutor: any;
|
|
290
|
+
_mappings: any;
|
|
291
|
+
_realObject: IRealObject | undefined;
|
|
292
|
+
_cachedState: any;
|
|
293
|
+
updatedAt: any;
|
|
294
|
+
fontSize: any;
|
|
295
|
+
__cache__: any;
|
|
296
|
+
created(): void;
|
|
297
|
+
added(parent: any): void;
|
|
298
|
+
removed(parent: any): void;
|
|
299
|
+
ready(): Promise<void>;
|
|
300
|
+
touch(): void;
|
|
301
|
+
clearCache(...attrs: any[]): void;
|
|
302
|
+
removeSelf(completely: any): void;
|
|
303
|
+
resetAnimation(): void;
|
|
304
|
+
dispose(): void;
|
|
305
|
+
get nature(): ComponentNature;
|
|
306
|
+
get disposed(): boolean;
|
|
307
|
+
isLayer(): boolean;
|
|
308
|
+
isGroup(): boolean;
|
|
309
|
+
isContainer(): this is import("../../types/component.js").Container;
|
|
310
|
+
isLine(): boolean;
|
|
311
|
+
isRoot(): boolean;
|
|
312
|
+
isRootModel(): boolean;
|
|
313
|
+
is3dish(): boolean;
|
|
314
|
+
get is3dMode(): boolean;
|
|
315
|
+
isIn3DSpace(): boolean;
|
|
316
|
+
isTemplate(): boolean;
|
|
317
|
+
isHTMLElement(): boolean;
|
|
318
|
+
isConnectable(): boolean;
|
|
319
|
+
isIdentifiable(): boolean;
|
|
320
|
+
isPositionable(): boolean;
|
|
321
|
+
replaceRefids(replaceMap: any): void;
|
|
322
|
+
get(property: any): any;
|
|
323
|
+
set(props: any, propval?: any): any;
|
|
324
|
+
getState(property: any): any;
|
|
325
|
+
setState(props: any, propval?: any): any;
|
|
326
|
+
get model(): any;
|
|
327
|
+
get state(): any;
|
|
328
|
+
get hierarchy(): any;
|
|
329
|
+
get volatile(): never[];
|
|
330
|
+
_applyProps(target: any, props: any, options: any): /*elided*/ any;
|
|
331
|
+
move(offset: {
|
|
332
|
+
x: number;
|
|
333
|
+
y: number;
|
|
334
|
+
}, ...args: boolean[]): void;
|
|
335
|
+
symmetryX(x?: number): void;
|
|
336
|
+
symmetryY(y: number): void;
|
|
337
|
+
adjustResize(bounds: import("../../index.js").BOUNDS, origin_bounds: import("../../index.js").BOUNDS, diagonal: boolean): {
|
|
338
|
+
left: any;
|
|
339
|
+
top: any;
|
|
340
|
+
width: any;
|
|
341
|
+
height: any;
|
|
342
|
+
};
|
|
343
|
+
adjustRotation(rotation: number, step: boolean): number;
|
|
344
|
+
outline(progress: number): any;
|
|
345
|
+
get center(): import("../../index.js").POINT;
|
|
346
|
+
set center(p: import("../../index.js").POINT);
|
|
347
|
+
get location(): import("../../index.js").POINT;
|
|
348
|
+
set location(l: import("../../index.js").POINT);
|
|
349
|
+
get rotate(): import("../../index.js").POINT;
|
|
350
|
+
set rotate(r: import("../../index.js").POINT);
|
|
351
|
+
get dimension(): import("../../index.js").DIMENSION;
|
|
352
|
+
set dimension(d: import("../../index.js").DIMENSION);
|
|
353
|
+
get drawPath(): import("../../index.js").POINT[];
|
|
354
|
+
get rotatePoint(): import("../../index.js").POINT;
|
|
355
|
+
get mutable(): boolean;
|
|
356
|
+
get resizable(): boolean;
|
|
357
|
+
get rotatable(): boolean;
|
|
358
|
+
buildRealObject(): IRealObject | undefined;
|
|
359
|
+
get realObject(): IRealObject | undefined;
|
|
360
|
+
draw(context?: import("../../index.js").SceneRenderContext): void;
|
|
361
|
+
prerender(context: import("../../index.js").SceneRenderContext): void;
|
|
362
|
+
postrender(context: import("../../index.js").SceneRenderContext): void;
|
|
363
|
+
prepare(resolve: (component: import("../../index.js").Component) => void, reject: (reason: any) => void): void;
|
|
364
|
+
prepareIf(condition: boolean): void;
|
|
365
|
+
drawText(context: import("../../index.js").SceneRenderContext): void;
|
|
366
|
+
drawStroke(context: import("../../index.js").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
367
|
+
drawFill(context: import("../../index.js").SceneRenderContext, override?: Record<string, unknown>): void;
|
|
368
|
+
get strokeStyle(): any;
|
|
369
|
+
set strokeStyle(v: any);
|
|
370
|
+
get fillStyle(): any;
|
|
371
|
+
set fillStyle(v: any);
|
|
372
|
+
get fontColor(): string;
|
|
373
|
+
set fontColor(v: string);
|
|
374
|
+
get rotation(): number;
|
|
375
|
+
set rotation(v: number);
|
|
376
|
+
get decorators(): string[];
|
|
377
|
+
get decotag(): string;
|
|
378
|
+
get hidden(): boolean;
|
|
379
|
+
set hidden(v: boolean);
|
|
380
|
+
get tag(): string;
|
|
381
|
+
set tag(v: string);
|
|
382
|
+
get appendum(): any;
|
|
383
|
+
set appendum(v: any);
|
|
384
|
+
defaultTextSubstitutor(): string;
|
|
385
|
+
textLines(context?: import("../../index.js").SceneRenderContext): any[][];
|
|
386
|
+
get font(): string;
|
|
387
|
+
get lineHeight(): number;
|
|
388
|
+
get textSubstitutor(): () => string;
|
|
389
|
+
get text(): string;
|
|
390
|
+
set text(v: string);
|
|
391
|
+
get textBounds(): import("../../index.js").BOUNDS;
|
|
392
|
+
get textRotation(): number;
|
|
393
|
+
get textHidden(): boolean;
|
|
394
|
+
set textHidden(v: boolean);
|
|
395
|
+
get hasTextProperty(): boolean;
|
|
396
|
+
animate(opts: import("../../index.js").AnimationConfig): any;
|
|
397
|
+
effect(context: import("../../index.js").SceneRenderContext, model: any): void;
|
|
398
|
+
serialize(...others: any[]): string;
|
|
399
|
+
trim(): void;
|
|
400
|
+
closeScene(data: any): void;
|
|
401
|
+
delta(attr?: string | object, value?: any): any;
|
|
402
|
+
invalidate(): void;
|
|
403
|
+
get value(): any;
|
|
404
|
+
set value(v: any);
|
|
405
|
+
get data(): any;
|
|
406
|
+
set data(v: any);
|
|
407
|
+
set tap(v: any);
|
|
408
|
+
get mappings(): any[];
|
|
409
|
+
get retention(): number;
|
|
410
|
+
get animation(): import("../../index.js").AnimationController | undefined;
|
|
411
|
+
get started(): boolean;
|
|
412
|
+
set started(v: boolean);
|
|
413
|
+
get controls(): import("../../index.js").Control[] | undefined;
|
|
414
|
+
findFirst(finder: string | ((c: import("../../index.js").Component) => boolean), ...others: any[]): import("../../index.js").Component | undefined;
|
|
415
|
+
findAll(s: string | ((c: import("../../index.js").Component) => boolean), ...others: any[]): any[] | undefined;
|
|
416
|
+
capture(x: number, y: number, except?: (c: import("../../index.js").Component) => boolean): any;
|
|
417
|
+
findAnchor(name: string): any;
|
|
418
|
+
isDescendible(container: import("../../index.js").Component): boolean;
|
|
419
|
+
getContext(component?: unknown): any;
|
|
420
|
+
get root(): import("../../index.js").Component;
|
|
421
|
+
get rootModel(): import("../../index.js").Component;
|
|
422
|
+
get parent(): import("../../index.js").Component;
|
|
423
|
+
set parent(v: import("../../index.js").Component);
|
|
424
|
+
get scalable(): boolean;
|
|
425
|
+
get stuck(): boolean;
|
|
426
|
+
get capturable(): boolean;
|
|
427
|
+
get position(): string;
|
|
428
|
+
get origin(): string;
|
|
429
|
+
get offset(): import("../../index.js").POINT;
|
|
430
|
+
get app(): import("../../index.js").ApplicationContext;
|
|
431
|
+
drawEffect(context: import("../../index.js").SceneRenderContext): void;
|
|
432
|
+
prepareFill(resolve: Function, reject: Function): void;
|
|
433
|
+
prepareFillIf(condition: boolean): void;
|
|
434
|
+
onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
|
|
435
|
+
drawImage(context: import("../../index.js").SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
|
|
436
|
+
mutateBounds(logic: ((bounds: import("../../index.js").BOUNDS) => import("../../index.js").BOUNDS | void) | null, context?: any): void;
|
|
437
|
+
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;
|
|
438
|
+
access(accessor: string): any;
|
|
439
|
+
substitute(template: string, data: any): string | undefined;
|
|
440
|
+
onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
|
|
441
|
+
onchangeData(after: Record<string, any>, before: Record<string, any>): void;
|
|
442
|
+
buildMappings(): void;
|
|
443
|
+
executeMappings(force?: boolean): void;
|
|
444
|
+
disposeMappings(): void;
|
|
445
|
+
ondropfile(transfered: FileList, files: string[]): void;
|
|
446
|
+
transcoordS2P(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
447
|
+
transcoordP2S(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
448
|
+
transcoordS2T(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
449
|
+
transcoordT2P(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
450
|
+
transcoordT2S(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
451
|
+
transcoordS2TR(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
452
|
+
transcoordS2O(x: number, y: number, target: import("../../index.js").Component): import("../../index.js").POINT;
|
|
453
|
+
transcoordC2S(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
454
|
+
transcoordS2C(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
455
|
+
toParent(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
456
|
+
fromParent(x: number, y: number, rp?: import("../../index.js").POINT): import("../../index.js").POINT;
|
|
457
|
+
toScene(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
458
|
+
fromScene(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
459
|
+
toLocal(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
460
|
+
toGlobal(x: number, y: number, top?: import("../../index.js").Component): import("../../index.js").POINT;
|
|
461
|
+
toOther(x: number, y: number, target: import("../../index.js").Component): import("../../index.js").POINT;
|
|
462
|
+
on(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
463
|
+
off(name?: string | object, callback?: Function, context?: any): /*elided*/ any;
|
|
464
|
+
once(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
465
|
+
trigger(name: string, ...args: any[]): /*elided*/ any;
|
|
466
|
+
delegate_on(delegator: any): /*elided*/ any;
|
|
467
|
+
delegate_off(delegator: any): /*elided*/ any;
|
|
468
|
+
onchange(after: Record<string, any>, before: Record<string, any>): void;
|
|
469
|
+
calculateBounds?(): void;
|
|
470
|
+
oncreate_element?(element: HTMLElement): void;
|
|
471
|
+
removeComponent(component: import("../../index.js").Component, ghost?: boolean): void;
|
|
472
|
+
addComponent(component: import("../../index.js").Component, ghost?: boolean): void;
|
|
473
|
+
insertComponentAt(component: import("../../index.js").Component, index: number, ghost?: boolean): void;
|
|
474
|
+
getOverlay(component: import("../../index.js").Component): HTMLElement | undefined;
|
|
475
|
+
findById(id: string): import("../../index.js").Component | undefined;
|
|
476
|
+
findByRefid(ref: string | number): import("../../index.js").Component | undefined;
|
|
477
|
+
findAllById(id: string): import("../../index.js").Component[];
|
|
478
|
+
resize(): void;
|
|
479
|
+
fit(type?: string): void;
|
|
480
|
+
get components(): import("../../index.js").Component[] | undefined;
|
|
481
|
+
get layout(): any;
|
|
482
|
+
get auxOverlay(): HTMLElement | undefined;
|
|
483
|
+
get isReady(): boolean;
|
|
484
|
+
get unitScale(): number;
|
|
485
|
+
get selected(): import("../../index.js").Component[];
|
|
486
|
+
set selected(_v: import("../../index.js").Component[]);
|
|
487
|
+
get focused(): import("../../index.js").Component | null;
|
|
488
|
+
set focused(_v: import("../../index.js").Component | null);
|
|
489
|
+
get hasSameParentForAllSelected(): boolean;
|
|
490
|
+
set hasSameParentForAllSelected(_v: boolean);
|
|
491
|
+
get fitMode(): string | undefined;
|
|
492
|
+
set fitMode(_v: string | undefined);
|
|
493
|
+
get element(): HTMLElement | null;
|
|
494
|
+
set element(_v: HTMLElement | null);
|
|
495
|
+
};
|
|
496
|
+
} & typeof Shape;
|
|
497
|
+
export declare class Decal extends Decal_base {
|
|
498
|
+
buildRealObject(): IRealObject | undefined;
|
|
499
|
+
get nature(): ComponentNature;
|
|
500
|
+
}
|
|
501
|
+
export {};
|
|
502
|
+
//# sourceMappingURL=decal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decal.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/decal.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,MAAM,2BAA2B,CAAA;AAI7C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,qBAAa,OAAQ,SAAQ,cAAc;IACzC,6EAA6E;IAC7E,SAAS,KAAK,cAAc,WAE3B;IAED,IAAa,gBAAgB,WAE5B;IAED,aAAa;IAUb;;;;;;;;;OASG;IACH,eAAe;IAIf,+DAA+D;IAC/D,aAAa;IAQb;;;;;OAKG;IACH,KAAK;CAeN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUD,qBACa,KAAM,SAAQ,UAA2B;IACpD,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,IAAI,eAAe,CAE5B;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import type Component from '../components/component.js';
|
|
3
|
+
export interface SelectionHandleOptions {
|
|
4
|
+
/** Sphere radius (scene units). Default 5. */
|
|
5
|
+
size?: number;
|
|
6
|
+
/** Diffuse color (hex int). Default 0x44aacc (cyan). */
|
|
7
|
+
color?: number;
|
|
8
|
+
/** Emissive accent color (hex int). Default 0x224466. */
|
|
9
|
+
emissive?: number;
|
|
10
|
+
/** Position relative to parent. Default [0, 0, 0]. */
|
|
11
|
+
position?: [number, number, number];
|
|
12
|
+
/** Initial visibility. Default = `component.app.isEditMode`. */
|
|
13
|
+
visible?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates a small handle mesh suitable for selecting an otherwise non-
|
|
17
|
+
* raycastable 3D component. Returns the mesh — caller adds it to their
|
|
18
|
+
* scene-graph root (typically `this.object3d.add(handle)`).
|
|
19
|
+
*/
|
|
20
|
+
export declare function createSelectionHandle3D(component: Component, options?: SelectionHandleOptions): THREE.Mesh;
|
|
21
|
+
//# sourceMappingURL=handle-3d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-3d.d.ts","sourceRoot":"","sources":["../../src/threed/handle-3d.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAEvD,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAWD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,sBAA2B,GACnC,KAAK,CAAC,IAAI,CAsDZ"}
|
|
@@ -16,6 +16,7 @@ import './factories/gltf-object.js';
|
|
|
16
16
|
import './factories/light.js';
|
|
17
17
|
import './factories/wall.js';
|
|
18
18
|
import './factories/floor-plate.js';
|
|
19
|
+
import './factories/decal.js';
|
|
19
20
|
import './factories/line.js';
|
|
20
21
|
import './factories/polyline.js';
|
|
21
22
|
import './factories/ortholine.js';
|
|
@@ -68,6 +69,8 @@ export { ThreeContainer } from './three-container.js';
|
|
|
68
69
|
export * from './managers/index.js';
|
|
69
70
|
export { buildArrow3D } from './arrow-3d.js';
|
|
70
71
|
export type { ArrowStyle3D, TipType, TipSize, LineDash } from './arrow-3d.js';
|
|
72
|
+
export { createSelectionHandle3D } from './handle-3d.js';
|
|
73
|
+
export type { SelectionHandleOptions } from './handle-3d.js';
|
|
71
74
|
export { disposeObject3D } from './utils/dispose.js';
|
|
72
75
|
export { projectToScreen } from './utils/project.js';
|
|
73
76
|
export { createCanvasTexture, renderCanvasTexture } from './texture/canvas-texture.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/threed/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/threed/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,24 @@ export declare abstract class RealObject<T extends THREE.Object3D = THREE.Object
|
|
|
51
51
|
get cx(): number;
|
|
52
52
|
get cy(): number;
|
|
53
53
|
get cz(): number;
|
|
54
|
+
/**
|
|
55
|
+
* 실제 사용되는 zPos 값. depth의 effectiveDepth와 짝을 이루는 NaN-safe getter.
|
|
56
|
+
*
|
|
57
|
+
* Resolution chain:
|
|
58
|
+
* 1. `state.zPos` — 명시 값 (단, finite number 만 인정 — `0` 도 valid)
|
|
59
|
+
* 2. `component.effectiveZPos` — Placeable 의 archetype-derived zPos
|
|
60
|
+
* (placement + align + parent context 고려)
|
|
61
|
+
* 3. `0` — 최후 fallback. 바닥에 놓는 의미.
|
|
62
|
+
*
|
|
63
|
+
* NaN/Infinity 가 명시적 값으로 들어오면 1단계에서 거부되어 2~3단계로
|
|
64
|
+
* 흘러간다. property panel 의 빈 input 이 NaN 으로 commit 되어도 이 게터를
|
|
65
|
+
* 통하면 위치가 무한대로 튀지 않는다.
|
|
66
|
+
*
|
|
67
|
+
* Note: depth 와 달리 `0` 은 valid 한 zPos 값(바닥). Number.isFinite 만
|
|
68
|
+
* 체크하고 양수 검사는 하지 않는다 — 음수 zPos 도 매달린 컴포넌트에서
|
|
69
|
+
* 정상 사용 사례.
|
|
70
|
+
*/
|
|
71
|
+
get effectiveZPos(): number;
|
|
54
72
|
/**
|
|
55
73
|
* object3d.position과 볼륨 바닥면 사이의 Y 거리. (= syncZPosOffset 중 "기하" 부분)
|
|
56
74
|
*
|
|
@@ -105,6 +123,18 @@ export declare abstract class RealObject<T extends THREE.Object3D = THREE.Object
|
|
|
105
123
|
/**
|
|
106
124
|
* 실제 사용되는 depth 값. 서브클래스가 auto-compute depth를 사용하면 오버라이드한다.
|
|
107
125
|
* (예: conveyor의 effectiveDepth = depth || Math.min(width, height) * 1.5)
|
|
126
|
+
*
|
|
127
|
+
* Resolution chain (each layer used only if the previous yielded a valid
|
|
128
|
+
* positive finite number):
|
|
129
|
+
* 1. `state.depth` — explicit user value
|
|
130
|
+
* 2. `component.effectiveDepth` — Placeable's resolution (uses the
|
|
131
|
+
* class's `static defaultDepth` against current Heights config).
|
|
132
|
+
* Undefined if the component isn't Placeable or has no defaultDepth.
|
|
133
|
+
* 3. `1` — last-resort sentinel that keeps geometry from collapsing.
|
|
134
|
+
*
|
|
135
|
+
* NaN explicitly handled in step 1: a property-panel input that produces
|
|
136
|
+
* NaN (e.g. parseFloat of an empty string) won't poison every downstream
|
|
137
|
+
* Math.* call. Falls through to the placement default instead.
|
|
108
138
|
*/
|
|
109
139
|
get effectiveDepth(): number;
|
|
110
140
|
updatePosition(): void;
|
|
@@ -122,6 +152,27 @@ export declare abstract class RealObject<T extends THREE.Object3D = THREE.Object
|
|
|
122
152
|
updateStrokeStyle(): void;
|
|
123
153
|
updateFillStyle(): void;
|
|
124
154
|
updateText(): void;
|
|
155
|
+
/**
|
|
156
|
+
* Raycast opt-out for atmospheric / decoration / environment components.
|
|
157
|
+
*
|
|
158
|
+
* Some components (Decal, Backdrop, future Camera/Light volumes) are
|
|
159
|
+
* physically large but conceptually "container-less wrappers" — they
|
|
160
|
+
* shouldn't catch clicks on their main geometry because doing so would
|
|
161
|
+
* block selection of the contents placed within or on top of them.
|
|
162
|
+
*
|
|
163
|
+
* Resolution order (each layer overrides the previous):
|
|
164
|
+
* 1. class.raycastTargetDefault — sticky default per component class
|
|
165
|
+
* (ThreeDOnly mixin sets this to false; normal components leave true)
|
|
166
|
+
* 2. state.raycastTarget — per-instance override from the
|
|
167
|
+
* component's state. Lets the user opt back in or out.
|
|
168
|
+
*
|
|
169
|
+
* When the resolved value is false, every descendant has `raycast` replaced
|
|
170
|
+
* with a no-op — EXCEPT children marked `userData.alwaysRaycast = true`
|
|
171
|
+
* (e.g. selection handles created by `createSelectionHandle3D`). That
|
|
172
|
+
* preserves a small, intentional click target while the bulk of the
|
|
173
|
+
* geometry stays click-through.
|
|
174
|
+
*/
|
|
175
|
+
protected _applyRaycastTarget(): void;
|
|
125
176
|
/**
|
|
126
177
|
* 기즈모 드래그 결과를 컴포넌트 상태에 역변환하여 반영한다.
|
|
127
178
|
* Object3D → Component 방향의 동기화.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object.d.ts","sourceRoot":"","sources":["../../src/threed/real-object.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,wBAAwB,CAAA;AAK/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"real-object.d.ts","sourceRoot":"","sources":["../../src/threed/real-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispose.d.ts","sourceRoot":"","sources":["../../../src/threed/utils/dispose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAwB9B,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"dispose.d.ts","sourceRoot":"","sources":["../../../src/threed/utils/dispose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAwB9B,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,QAmBlD"}
|