@hatiolab/things-scene 10.0.6 → 10.1.1
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/diagnostics/inspector.d.ts +47 -0
- package/dist-types/diagnostics/inspector.d.ts.map +1 -1
- package/dist-types/figure/figure-blueprint.d.ts +123 -0
- package/dist-types/figure/figure-blueprint.d.ts.map +1 -0
- package/dist-types/figure/figure-instance.d.ts +299 -0
- package/dist-types/figure/figure-instance.d.ts.map +1 -0
- package/dist-types/figure/figure-palette.d.ts +37 -0
- package/dist-types/figure/figure-palette.d.ts.map +1 -0
- package/dist-types/figure/figure-part-component.d.ts +324 -0
- package/dist-types/figure/figure-part-component.d.ts.map +1 -0
- package/dist-types/figure/figure-real-object.d.ts +92 -0
- package/dist-types/figure/figure-real-object.d.ts.map +1 -0
- package/dist-types/figure/figure-registry.d.ts +71 -0
- package/dist-types/figure/figure-registry.d.ts.map +1 -0
- package/dist-types/figure/index.d.ts +13 -0
- package/dist-types/figure/index.d.ts.map +1 -0
- package/dist-types/interfaces/real-object.d.ts +34 -0
- package/dist-types/interfaces/real-object.d.ts.map +1 -1
- package/dist-types/layer/model-layer.d.ts +9 -2
- package/dist-types/layer/model-layer.d.ts.map +1 -1
- package/dist-types/model/arrange.d.ts +61 -0
- package/dist-types/model/arrange.d.ts.map +1 -0
- package/dist-types/model/index.d.ts +1 -0
- package/dist-types/model/index.d.ts.map +1 -1
- package/dist-types/things-scene/index.d.ts +1 -0
- package/dist-types/things-scene/index.d.ts.map +1 -1
- package/dist-types/threed/common.d.ts +8 -0
- package/dist-types/threed/common.d.ts.map +1 -1
- package/dist-types/threed/coordinate-ground.d.ts +51 -0
- package/dist-types/threed/coordinate-ground.d.ts.map +1 -0
- package/dist-types/threed/factories/camera.d.ts +1 -1
- package/dist-types/threed/factories/cube.d.ts +8 -0
- package/dist-types/threed/factories/cube.d.ts.map +1 -1
- package/dist-types/threed/factories/cylinder.d.ts +17 -0
- package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
- package/dist-types/threed/factories/sphere.d.ts +11 -0
- package/dist-types/threed/factories/sphere.d.ts.map +1 -1
- package/dist-types/threed/factories/wall.d.ts +8 -0
- package/dist-types/threed/factories/wall.d.ts.map +1 -1
- package/dist-types/threed/floor/floor.d.ts +22 -0
- package/dist-types/threed/floor/floor.d.ts.map +1 -1
- package/dist-types/threed/geometry-bank.d.ts +64 -0
- package/dist-types/threed/geometry-bank.d.ts.map +1 -0
- package/dist-types/threed/index.d.ts +8 -0
- package/dist-types/threed/index.d.ts.map +1 -1
- package/dist-types/threed/instanced-set.d.ts +211 -0
- package/dist-types/threed/instanced-set.d.ts.map +1 -0
- package/dist-types/threed/managers/event-manager3d.d.ts +7 -0
- package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts +8 -0
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/renderer-manager.d.ts +3 -3
- package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/scene-manager.d.ts +33 -9
- package/dist-types/threed/managers/scene-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/types.d.ts +10 -0
- package/dist-types/threed/managers/types.d.ts.map +1 -1
- package/dist-types/threed/material-3d.d.ts +9 -0
- package/dist-types/threed/material-3d.d.ts.map +1 -1
- package/dist-types/threed/parted-real-object.d.ts +79 -0
- package/dist-types/threed/parted-real-object.d.ts.map +1 -0
- package/dist-types/threed/real-object-camera-meshed.d.ts +1 -1
- package/dist-types/threed/real-object-dom-texture.d.ts +2 -2
- package/dist-types/threed/real-object-extrude.d.ts +14 -0
- package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
- package/dist-types/threed/real-object-gltf.d.ts +11 -0
- package/dist-types/threed/real-object-gltf.d.ts.map +1 -1
- package/dist-types/threed/real-object-mesh.d.ts +79 -2
- package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
- package/dist-types/threed/real-object-plane-2d.d.ts +2 -2
- package/dist-types/threed/real-object-scene.d.ts +2 -2
- package/dist-types/threed/real-object-service.d.ts +2 -2
- package/dist-types/threed/real-object.d.ts +46 -2
- package/dist-types/threed/real-object.d.ts.map +1 -1
- package/dist-types/threed/segments.d.ts +49 -0
- package/dist-types/threed/segments.d.ts.map +1 -0
- package/dist-types/threed/three-capability.d.ts +18 -0
- package/dist-types/threed/three-capability.d.ts.map +1 -1
- package/dist-types/threed/three-container.d.ts +8 -3
- package/dist-types/threed/three-container.d.ts.map +1 -1
- package/dist-types/threed/top-outline.d.ts +37 -0
- package/dist-types/threed/top-outline.d.ts.map +1 -0
- package/dist-types/threed/utils/dispose.d.ts.map +1 -1
- package/dist-types/transition/transition-effect.d.ts.map +1 -1
- package/package.json +3 -3
- package/things-scene-min.js +11 -11
- package/things-scene-min.js.map +1 -1
- package/things-scene-transfer.mjs +3 -3
- package/things-scene.mjs +3 -3
- package/things-scene.mjs.map +1 -1
|
@@ -1,10 +1,50 @@
|
|
|
1
1
|
import type { ComponentNature } from '../interfaces/types.js';
|
|
2
2
|
import type { Material3D, ResolvedMaterial3D } from '../threed/material-3d.js';
|
|
3
|
+
/**
|
|
4
|
+
* 재질이 그려지지 않을 조건 — **왜 화면이 검은지**를 말해 준다.
|
|
5
|
+
*
|
|
6
|
+
* 이것을 두는 이유. PBR 에서 완전한 금속은 확산 성분이 없어 보이는 것이 전부 반사다.
|
|
7
|
+
* 반사할 환경(IBL)이 없으면 저작자가 고른 색과 무관하게 검게 나온다. 그때 저작자는
|
|
8
|
+
* 색을 잘못 골랐다고 생각한다 — 화면이 원인을 알려 주지 않기 때문이다.
|
|
9
|
+
*/
|
|
10
|
+
export interface MaterialVisibilityWarning {
|
|
11
|
+
code: 'metal-without-environment';
|
|
12
|
+
/** 사람이 읽는 사유. 그대로 보여도 된다. */
|
|
13
|
+
message: string;
|
|
14
|
+
/** 판단에 쓴 값. */
|
|
15
|
+
metalness: number;
|
|
16
|
+
}
|
|
3
17
|
interface ThreedInfo {
|
|
4
18
|
is3dish: boolean;
|
|
5
19
|
type: string;
|
|
6
20
|
material3d?: Material3D;
|
|
7
21
|
resolved?: ResolvedMaterial3D;
|
|
22
|
+
/**
|
|
23
|
+
* 재질을 나눠 쓰고 있나.
|
|
24
|
+
*
|
|
25
|
+
* 대량으로 놓이는 컴포넌트(캐리어·선반 칸·롤러)는 재질을 나눠 써야 한다. 안 나눠
|
|
26
|
+
* 쓰면 인스턴스 수만큼 재질이 생긴다 — 캐리어 1만 개면 재질 1만 개다.
|
|
27
|
+
*
|
|
28
|
+
* `violated` 는 「나눠 써야 한다고 선언했는데 못 쓰고 있다」는 뜻이고, 그때
|
|
29
|
+
* `reason` 이 무엇을 고쳐야 하는지 말한다.
|
|
30
|
+
*
|
|
31
|
+
* 판단할 수 없으면(3D 오브젝트가 아직 없는 등) `undefined` 다 — **나눠 쓴다고
|
|
32
|
+
* 단정하지 않는다.**
|
|
33
|
+
*/
|
|
34
|
+
materialSharing?: {
|
|
35
|
+
shared: boolean;
|
|
36
|
+
required: boolean;
|
|
37
|
+
violated: boolean;
|
|
38
|
+
reason?: string;
|
|
39
|
+
bankKey?: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* 이 재질이 의도대로 안 보일 조건. 없으면 빈 배열이다.
|
|
43
|
+
*
|
|
44
|
+
* **비어 있다는 것과 「모른다」는 것은 다르다** — 판단할 수 없었으면 `undefined` 다
|
|
45
|
+
* (씬을 못 찾은 경우 등).
|
|
46
|
+
*/
|
|
47
|
+
visibilityWarnings?: MaterialVisibilityWarning[];
|
|
8
48
|
nodeNames?: string[];
|
|
9
49
|
animationNames?: string[];
|
|
10
50
|
nodes?: Record<string, any>;
|
|
@@ -181,6 +221,13 @@ declare class SceneInspector {
|
|
|
181
221
|
* Material3D, GLTF 노드/애니메이션 등.
|
|
182
222
|
*/
|
|
183
223
|
getThreedInfo(componentId: string, sceneIndex?: number): ThreedInfo | null;
|
|
224
|
+
/**
|
|
225
|
+
* 반사할 환경이 없는데 금속성이 높으면 알린다.
|
|
226
|
+
*
|
|
227
|
+
* 문턱 0.5 — 그 아래는 확산 성분이 남아 색이 보인다. 1.0 은 완전히 검게 나온다.
|
|
228
|
+
* 문턱을 넘었다고 잘못된 것은 아니다. 환경을 주면 의도대로 보인다.
|
|
229
|
+
*/
|
|
230
|
+
private _materialVisibilityWarnings;
|
|
184
231
|
private _getScene;
|
|
185
232
|
private _cleanup;
|
|
186
233
|
private _findComponent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/inspector.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE9E,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/diagnostics/inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 청사진을 **읽는 쪽**의 계약.
|
|
3
|
+
*
|
|
4
|
+
* 정본은 `@hatiolab/figure-model` 의 `FigureBlueprint` 다. 여기 있는 것은 그 형식 중
|
|
5
|
+
* things-scene 이 실제로 읽는 부분만 적은 것이며, **의존성을 만들지 않으려고** 형식을
|
|
6
|
+
* 다시 적었다.
|
|
7
|
+
*
|
|
8
|
+
* figure-model 은 이미 npm 에 있으므로(`@hatiolab/figure-model`) `import type` 으로
|
|
9
|
+
* 받아 이 중복을 지울 수 있다 — 타입만 받으면 런타임 의존이 생기지 않는다. 배포되는
|
|
10
|
+
* 라이브러리의 의존성 목록을 바꾸는 일이라 아직 하지 않았다.
|
|
11
|
+
*
|
|
12
|
+
* **두 벌이 되면 어긋날 수 있다.** 그래서 `test/fixtures/figure-blueprint-sample.json`
|
|
13
|
+
* 에 figure-model 이 실제로 낸 청사진을 넣어 두고, 시험이 그것을 이 형식으로 읽는다.
|
|
14
|
+
* figure-model 의 형식이 바뀌면 표본을 다시 뽑을 때 시험이 깨진다.
|
|
15
|
+
*
|
|
16
|
+
* 좌표 규약은 figure-model 의 `PartTransform` 과 같다 — **3D 도구들이 쓰는 그대로**
|
|
17
|
+
* `x` 오른쪽, `y` 위, `z` 앞이고, `position` 은 부품 **중심**의 자리이며 기준은
|
|
18
|
+
* `base` 상자의 중심 (0,0,0) 이다. 크기는 `size.x`·`size.y`·`size.z` 로 부른다.
|
|
19
|
+
*
|
|
20
|
+
* **컴포넌트 state 의 낱말과 다르다.** state 는 `width`·`height`·`depth` 이고 그쪽은
|
|
21
|
+
* `depth` 가 높이다. 환산은 `figure-real-object.ts` 의 `updateDimension` 한 곳에서만
|
|
22
|
+
* 한다 — 그 밖에서는 청사진의 축을 그대로 three 에 넘긴다(three 도 y 가 위다).
|
|
23
|
+
*/
|
|
24
|
+
export type FigurePrimitiveKind = 'cube' | 'wall' | 'cylinder' | 'sphere' | 'rect' | 'polygon';
|
|
25
|
+
export type FigureMaterialSlot = 'cap' | 'side';
|
|
26
|
+
export type FigureSizingRule = 'scale' | 'fixed' | 'stretch' | 'repeat';
|
|
27
|
+
export type FigureAnimationKind = 'fade' | 'heartbeat' | 'moving' | 'outline' | 'rotation' | 'vibration' | 'waypoint';
|
|
28
|
+
export interface FigureVec3 {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
z: number;
|
|
32
|
+
}
|
|
33
|
+
export interface FigurePartTransform {
|
|
34
|
+
/** 부품 중심의 자리. */
|
|
35
|
+
position: FigureVec3;
|
|
36
|
+
/** 축별 크기. */
|
|
37
|
+
size: FigureVec3;
|
|
38
|
+
rotation?: Partial<FigureVec3>;
|
|
39
|
+
}
|
|
40
|
+
export interface FigurePartMaterial {
|
|
41
|
+
/** 팔레트 토큰. 값이 아니라 이름이다 — 해석은 그리는 쪽이 한다. */
|
|
42
|
+
token?: string;
|
|
43
|
+
preset?: 'default' | 'metal' | 'glass' | 'plastic' | 'wood' | 'ceramic' | 'rubber';
|
|
44
|
+
flatShading?: boolean;
|
|
45
|
+
transparent?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface FigurePartShape {
|
|
48
|
+
/** polygon 의 단면. `base` 좌표계의 점들. */
|
|
49
|
+
path?: {
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
}[];
|
|
53
|
+
/** rect 의 모서리 반경. */
|
|
54
|
+
round?: number;
|
|
55
|
+
}
|
|
56
|
+
export interface FigureBlueprintMember {
|
|
57
|
+
name: string;
|
|
58
|
+
primitive: FigurePrimitiveKind;
|
|
59
|
+
/** GeometryBank 키. 치수가 들어 있다. */
|
|
60
|
+
geometryKey: string;
|
|
61
|
+
transform: FigurePartTransform;
|
|
62
|
+
sizing: FigureSizingRule;
|
|
63
|
+
repeat?: {
|
|
64
|
+
axis: 'x' | 'y' | 'z';
|
|
65
|
+
gap: number;
|
|
66
|
+
};
|
|
67
|
+
shape?: FigurePartShape;
|
|
68
|
+
triangles: number;
|
|
69
|
+
}
|
|
70
|
+
export interface FigureBlueprintGroup {
|
|
71
|
+
materialKey: string;
|
|
72
|
+
material: FigurePartMaterial;
|
|
73
|
+
slot?: FigureMaterialSlot;
|
|
74
|
+
/** 애니메이션 포인트에 걸린 묶음. 걸리면 부품 하나만 든다. */
|
|
75
|
+
animated: boolean;
|
|
76
|
+
members: FigureBlueprintMember[];
|
|
77
|
+
}
|
|
78
|
+
export interface FigureBlueprintPoint {
|
|
79
|
+
/** 어느 부품인가. `FigureBlueprintMember.name`. */
|
|
80
|
+
name: string;
|
|
81
|
+
kind: FigureAnimationKind;
|
|
82
|
+
axis?: 'x' | 'y' | 'z';
|
|
83
|
+
pivot?: FigureVec3;
|
|
84
|
+
}
|
|
85
|
+
export interface FigureBlueprintLabel {
|
|
86
|
+
name: string;
|
|
87
|
+
source: string;
|
|
88
|
+
when: 'always' | 'zoomed' | 'selected' | 'abnormal';
|
|
89
|
+
/** 어느 부품에 붙나. */
|
|
90
|
+
at: string;
|
|
91
|
+
}
|
|
92
|
+
export interface FigureBlueprint {
|
|
93
|
+
version: number;
|
|
94
|
+
type: string;
|
|
95
|
+
/** 기준 크기(축별). `base.y` 가 높이다. */
|
|
96
|
+
base: FigureVec3;
|
|
97
|
+
anchor?: FigureVec3;
|
|
98
|
+
budget: {
|
|
99
|
+
triangles: number;
|
|
100
|
+
groups: number;
|
|
101
|
+
};
|
|
102
|
+
groups: FigureBlueprintGroup[];
|
|
103
|
+
points: FigureBlueprintPoint[];
|
|
104
|
+
labels: FigureBlueprintLabel[];
|
|
105
|
+
violations: {
|
|
106
|
+
code: string;
|
|
107
|
+
message: string;
|
|
108
|
+
actual?: number;
|
|
109
|
+
limit?: number;
|
|
110
|
+
}[];
|
|
111
|
+
}
|
|
112
|
+
/** 이 판올림이 읽을 수 있는 청사진 판. */
|
|
113
|
+
export declare const SUPPORTED_BLUEPRINT_VERSION = 1;
|
|
114
|
+
/**
|
|
115
|
+
* 청사진의 형태를 확인한다 — **읽기 전에 한 번**, 등록 시점에.
|
|
116
|
+
*
|
|
117
|
+
* 그리는 시점이 아니라 등록 시점에 보는 이유는, 잘못된 청사진이 프레임마다 조용히
|
|
118
|
+
* 실패하는 대신 등록에서 한 번 크게 실패하게 하려는 것이다.
|
|
119
|
+
*
|
|
120
|
+
* 문제를 찾으면 사람이 읽을 수 있는 사유 목록을 돌려준다. 비어 있으면 읽을 수 있다.
|
|
121
|
+
*/
|
|
122
|
+
export declare function blueprintProblems(value: unknown): string[];
|
|
123
|
+
//# sourceMappingURL=figure-blueprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figure-blueprint.d.ts","sourceRoot":"","sources":["../../src/figure/figure-blueprint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import Component from '../components/component.js';
|
|
2
|
+
import Shape from '../components/shape.js';
|
|
3
|
+
import type { SceneRenderContext } from '../interfaces/rendering.js';
|
|
4
|
+
import type { IRealObject } from '../interfaces/real-object.js';
|
|
5
|
+
import type { ComponentNature } from '../interfaces/types.js';
|
|
6
|
+
declare const FigureInstance_base: {
|
|
7
|
+
new (...args: any[]): {
|
|
8
|
+
contains(x: number, y: number): boolean;
|
|
9
|
+
get path(): {
|
|
10
|
+
x: any;
|
|
11
|
+
y: any;
|
|
12
|
+
}[];
|
|
13
|
+
set path(path: {
|
|
14
|
+
x: any;
|
|
15
|
+
y: any;
|
|
16
|
+
}[]);
|
|
17
|
+
get anchors(): {
|
|
18
|
+
name: string;
|
|
19
|
+
position: {
|
|
20
|
+
x: any;
|
|
21
|
+
y: any;
|
|
22
|
+
};
|
|
23
|
+
}[];
|
|
24
|
+
get bounds(): any;
|
|
25
|
+
set bounds(bounds: any);
|
|
26
|
+
render(ctx: CanvasRenderingContext2D): void;
|
|
27
|
+
_app: any;
|
|
28
|
+
_model: any;
|
|
29
|
+
_state: any;
|
|
30
|
+
_delta: any;
|
|
31
|
+
_animation: any;
|
|
32
|
+
_animate: any;
|
|
33
|
+
_parent: any;
|
|
34
|
+
_disposed: any;
|
|
35
|
+
_textHidden: any;
|
|
36
|
+
_text_substitutor: any;
|
|
37
|
+
_value_substitutor: any;
|
|
38
|
+
_mappings: any;
|
|
39
|
+
_realObject: IRealObject | undefined;
|
|
40
|
+
_cachedState: any;
|
|
41
|
+
updatedAt: any;
|
|
42
|
+
fontSize: any;
|
|
43
|
+
__cache__: any;
|
|
44
|
+
created(): void;
|
|
45
|
+
added(parent: import("../types/component.js").Container): void;
|
|
46
|
+
removed(parent: import("../types/component.js").Container): void;
|
|
47
|
+
ready(): Promise<void>;
|
|
48
|
+
_readyInvoked: boolean;
|
|
49
|
+
invokeReady(): void | Promise<void>;
|
|
50
|
+
touch(): void;
|
|
51
|
+
clearCache(...attrs: string[]): void;
|
|
52
|
+
removeSelf(completely?: boolean): void;
|
|
53
|
+
resetAnimation(): void;
|
|
54
|
+
dispose(): void;
|
|
55
|
+
get nature(): ComponentNature;
|
|
56
|
+
get disposed(): boolean;
|
|
57
|
+
isLayer(): boolean;
|
|
58
|
+
isGroup(): boolean;
|
|
59
|
+
isContainer(): this is import("../types/component.js").Container;
|
|
60
|
+
isLine(): boolean;
|
|
61
|
+
isRoot(): boolean;
|
|
62
|
+
isRootModel(): boolean;
|
|
63
|
+
is3dish(): boolean;
|
|
64
|
+
get is3dMode(): boolean;
|
|
65
|
+
isIn3DSpace(): boolean;
|
|
66
|
+
isTemplate(): boolean;
|
|
67
|
+
isHTMLElement(): boolean;
|
|
68
|
+
isConnectable(): boolean;
|
|
69
|
+
isIdentifiable(): boolean;
|
|
70
|
+
isPositionable(): boolean;
|
|
71
|
+
replaceRefids(replaceMap: Record<string, string>): void;
|
|
72
|
+
get(property: string): any;
|
|
73
|
+
set(props: any, propval?: any): any;
|
|
74
|
+
getState(property: string): any;
|
|
75
|
+
setState(props: Partial<import("../index.js").State> | string, propval?: any): any;
|
|
76
|
+
get model(): any;
|
|
77
|
+
get state(): import("../index.js").State;
|
|
78
|
+
get refid(): any;
|
|
79
|
+
get hierarchy(): any;
|
|
80
|
+
get volatile(): string[];
|
|
81
|
+
_applyProps(target: Record<string, any>, props: Record<string, any>, options: import("../components/component.js").ApplyPropsOptions): /*elided*/ any;
|
|
82
|
+
move(offset: {
|
|
83
|
+
x: number;
|
|
84
|
+
y: number;
|
|
85
|
+
}, ...args: boolean[]): void;
|
|
86
|
+
symmetryX(x?: number): void;
|
|
87
|
+
symmetryY(y: number): void;
|
|
88
|
+
adjustResize(bounds: import("../index.js").BOUNDS, origin_bounds: import("../index.js").BOUNDS, diagonal: boolean): {
|
|
89
|
+
left: any;
|
|
90
|
+
top: any;
|
|
91
|
+
width: any;
|
|
92
|
+
height: any;
|
|
93
|
+
};
|
|
94
|
+
adjustRotation(rotation: number, step: boolean): number;
|
|
95
|
+
outline(progress: number): any;
|
|
96
|
+
get center(): import("../index.js").POINT;
|
|
97
|
+
set center(p: import("../index.js").POINT);
|
|
98
|
+
get location(): import("../index.js").POINT;
|
|
99
|
+
set location(l: import("../index.js").POINT);
|
|
100
|
+
get rotate(): import("../index.js").POINT;
|
|
101
|
+
set rotate(r: import("../index.js").POINT);
|
|
102
|
+
get dimension(): import("../index.js").DIMENSION;
|
|
103
|
+
set dimension(d: import("../index.js").DIMENSION);
|
|
104
|
+
get drawPath(): import("../index.js").POINT[];
|
|
105
|
+
get rotatePoint(): import("../index.js").POINT;
|
|
106
|
+
get mutable(): boolean;
|
|
107
|
+
get resizable(): boolean;
|
|
108
|
+
get rotatable(): boolean;
|
|
109
|
+
buildRealObject(): IRealObject | undefined;
|
|
110
|
+
get realObject(): IRealObject | undefined;
|
|
111
|
+
draw(context?: SceneRenderContext): void;
|
|
112
|
+
prerender(context: SceneRenderContext): void;
|
|
113
|
+
postrender(context: SceneRenderContext): void;
|
|
114
|
+
prepare(resolve: (component: Component) => void, reject: (reason: any) => void): void;
|
|
115
|
+
prepareIf(condition: boolean): void;
|
|
116
|
+
drawText(context: SceneRenderContext): void;
|
|
117
|
+
drawStroke(context: SceneRenderContext, override?: Record<string, unknown>): void;
|
|
118
|
+
drawFill(context: SceneRenderContext, override?: Record<string, unknown>): void;
|
|
119
|
+
get strokeStyle(): any;
|
|
120
|
+
set strokeStyle(v: any);
|
|
121
|
+
get fillStyle(): any;
|
|
122
|
+
set fillStyle(v: any);
|
|
123
|
+
get fontColor(): string;
|
|
124
|
+
set fontColor(v: string);
|
|
125
|
+
get rotation(): number;
|
|
126
|
+
set rotation(v: number);
|
|
127
|
+
get decorators(): string[];
|
|
128
|
+
get decotag(): string;
|
|
129
|
+
get hidden(): boolean;
|
|
130
|
+
set hidden(v: boolean);
|
|
131
|
+
get tag(): string;
|
|
132
|
+
set tag(v: string);
|
|
133
|
+
get appendum(): any;
|
|
134
|
+
set appendum(v: any);
|
|
135
|
+
defaultTextSubstitutor(): string;
|
|
136
|
+
textLines(context?: SceneRenderContext): any[][];
|
|
137
|
+
get font(): string;
|
|
138
|
+
get lineHeight(): number;
|
|
139
|
+
get textSubstitutor(): () => string;
|
|
140
|
+
get text(): string;
|
|
141
|
+
set text(v: string);
|
|
142
|
+
get textBounds(): import("../index.js").BOUNDS;
|
|
143
|
+
get textRotation(): number;
|
|
144
|
+
get textHidden(): boolean;
|
|
145
|
+
set textHidden(v: boolean);
|
|
146
|
+
get hasTextProperty(): boolean;
|
|
147
|
+
animate(opts: import("../index.js").AnimationConfig): any;
|
|
148
|
+
effect(context: SceneRenderContext, model: any): void;
|
|
149
|
+
serialize(...others: any[]): string;
|
|
150
|
+
trim(): void;
|
|
151
|
+
closeScene(data: any): void;
|
|
152
|
+
delta(attr?: string | object, value?: any): any;
|
|
153
|
+
invalidate(): void;
|
|
154
|
+
get value(): any;
|
|
155
|
+
set value(v: any);
|
|
156
|
+
get data(): any;
|
|
157
|
+
set data(v: any);
|
|
158
|
+
set tap(v: any);
|
|
159
|
+
get mappings(): any[];
|
|
160
|
+
get retention(): number;
|
|
161
|
+
get animation(): import("../index.js").AnimationController | undefined;
|
|
162
|
+
get started(): boolean;
|
|
163
|
+
set started(v: boolean);
|
|
164
|
+
get controls(): import("../index.js").Control[] | undefined;
|
|
165
|
+
findFirst(finder: string | ((c: Component) => boolean), ...others: any[]): Component | undefined;
|
|
166
|
+
findAll(s: string | ((c: Component) => boolean), ...others: any[]): any[] | undefined;
|
|
167
|
+
capture(x: number, y: number, except?: (c: Component) => boolean): any;
|
|
168
|
+
findAnchor(name: string): any;
|
|
169
|
+
isDescendible(container: Component | any): boolean;
|
|
170
|
+
getContext(component?: unknown): any;
|
|
171
|
+
get root(): Component;
|
|
172
|
+
get rootModel(): Component;
|
|
173
|
+
get parent(): Component;
|
|
174
|
+
set parent(v: Component);
|
|
175
|
+
get scalable(): boolean;
|
|
176
|
+
get stuck(): boolean;
|
|
177
|
+
get capturable(): boolean;
|
|
178
|
+
get position(): string;
|
|
179
|
+
get origin(): string;
|
|
180
|
+
get offset(): import("../index.js").POINT;
|
|
181
|
+
get app(): import("../index.js").ApplicationContext;
|
|
182
|
+
drawEffect(context: SceneRenderContext): void;
|
|
183
|
+
prepareFill(resolve: Function, reject: Function): void;
|
|
184
|
+
prepareFillIf(condition: boolean): void;
|
|
185
|
+
onchangeFill(after: Record<string, any>, before: Record<string, any>): void;
|
|
186
|
+
drawImage(context: SceneRenderContext, image: HTMLImageElement, left: number, top: number, width: number, height: number): void;
|
|
187
|
+
mutateBounds(logic: ((bounds: import("../index.js").BOUNDS) => import("../index.js").BOUNDS | void) | null, context?: any): void;
|
|
188
|
+
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;
|
|
189
|
+
access(accessor: string): any;
|
|
190
|
+
substitute(template: string, data: any): string | undefined;
|
|
191
|
+
onchangeMappings(after: Record<string, any>, before: Record<string, any>): void;
|
|
192
|
+
onchangeData(after: Record<string, any>, before: Record<string, any>): void;
|
|
193
|
+
buildMappings(): void;
|
|
194
|
+
executeMappings(force?: boolean): void;
|
|
195
|
+
disposeMappings(): void;
|
|
196
|
+
ondropfile(transfered: FileList, files: string[]): void;
|
|
197
|
+
transcoordS2P(x: number, y: number, rp?: import("../index.js").POINT): import("../index.js").POINT;
|
|
198
|
+
transcoordP2S(x: number, y: number, rp?: import("../index.js").POINT): import("../index.js").POINT;
|
|
199
|
+
transcoordS2T(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
200
|
+
transcoordT2P(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
201
|
+
transcoordT2S(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
202
|
+
transcoordS2TR(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
203
|
+
transcoordS2O(x: number, y: number, target: Component): import("../index.js").POINT;
|
|
204
|
+
transcoordC2S(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
205
|
+
transcoordS2C(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
206
|
+
toParent(x: number, y: number, rp?: import("../index.js").POINT): import("../index.js").POINT;
|
|
207
|
+
fromParent(x: number, y: number, rp?: import("../index.js").POINT): import("../index.js").POINT;
|
|
208
|
+
toScene(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
209
|
+
fromScene(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
210
|
+
toLocal(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
211
|
+
toGlobal(x: number, y: number, top?: Component): import("../index.js").POINT;
|
|
212
|
+
toOther(x: number, y: number, target: Component): import("../index.js").POINT;
|
|
213
|
+
on<K extends keyof import("../index.js").ComponentEventMap>(name: K, callback: (...args: import("../index.js").ComponentEventMap[K]) => void, context?: any): /*elided*/ any;
|
|
214
|
+
on(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
215
|
+
off<K extends keyof import("../index.js").ComponentEventMap>(name: K, callback?: ((...args: import("../index.js").ComponentEventMap[K]) => void) | undefined, context?: any): /*elided*/ any;
|
|
216
|
+
off(name?: string | object, callback?: Function, context?: any): /*elided*/ any;
|
|
217
|
+
once<K extends keyof import("../index.js").ComponentEventMap>(name: K, callback: (...args: import("../index.js").ComponentEventMap[K]) => void, context?: any): /*elided*/ any;
|
|
218
|
+
once(name: string | object, callback: Function, context?: any): /*elided*/ any;
|
|
219
|
+
trigger<K extends keyof import("../index.js").ComponentEventMap>(name: K, ...args: import("../index.js").ComponentEventMap[K]): /*elided*/ any;
|
|
220
|
+
trigger(name: string, ...args: any[]): /*elided*/ any;
|
|
221
|
+
delegate_on(delegator: any): /*elided*/ any;
|
|
222
|
+
delegate_off(delegator: any): /*elided*/ any;
|
|
223
|
+
onchange(after: Record<string, any>, before: Record<string, any>): void;
|
|
224
|
+
calculateBounds?(): void;
|
|
225
|
+
oncreate_element?(element: HTMLElement): void;
|
|
226
|
+
removeComponent(component: Component, ghost?: boolean): void;
|
|
227
|
+
addComponent(component: Component, ghost?: boolean): void;
|
|
228
|
+
insertComponentAt(component: Component, index: number, ghost?: boolean): void;
|
|
229
|
+
getOverlay(component: Component): HTMLElement | undefined;
|
|
230
|
+
findById(id: string): Component | undefined;
|
|
231
|
+
findByRefid(ref: string | number): Component | undefined;
|
|
232
|
+
findAllById(id: string): Component[];
|
|
233
|
+
resize(): void;
|
|
234
|
+
fit(type?: string): void;
|
|
235
|
+
get components(): Component[] | undefined;
|
|
236
|
+
get layout(): any;
|
|
237
|
+
get auxOverlay(): HTMLElement | undefined;
|
|
238
|
+
get isReady(): boolean;
|
|
239
|
+
get unitScale(): number;
|
|
240
|
+
get selected(): Component[];
|
|
241
|
+
set selected(_v: Component[]);
|
|
242
|
+
get focused(): Component | null;
|
|
243
|
+
set focused(_v: Component | null);
|
|
244
|
+
get hasSameParentForAllSelected(): boolean;
|
|
245
|
+
set hasSameParentForAllSelected(_v: boolean);
|
|
246
|
+
get fitMode(): string | undefined;
|
|
247
|
+
set fitMode(_v: string | undefined);
|
|
248
|
+
get element(): HTMLElement | null;
|
|
249
|
+
set element(_v: HTMLElement | null);
|
|
250
|
+
};
|
|
251
|
+
} & typeof Shape;
|
|
252
|
+
export declare class FigureInstance extends FigureInstance_base {
|
|
253
|
+
/**
|
|
254
|
+
* 이 타입을 그리는 것이 FigureInstance 임을 등록한다. `registerFigure()` 가 부른다.
|
|
255
|
+
*
|
|
256
|
+
* 청사진 등록과 컴포넌트 타입 등록이 늘 함께 일어나야, 보드가 `type` 만 적고도
|
|
257
|
+
* 세워진다.
|
|
258
|
+
*/
|
|
259
|
+
static registerType(type: string): void;
|
|
260
|
+
get hasTextProperty(): boolean;
|
|
261
|
+
is3dish(): boolean;
|
|
262
|
+
get nature(): ComponentNature;
|
|
263
|
+
buildRealObject(): IRealObject | undefined;
|
|
264
|
+
/** 이 인스턴스가 그리는 청사진. 등록이 지워졌으면 null 이다. */
|
|
265
|
+
get figure(): import("./figure-registry.js").PreparedFigure | null;
|
|
266
|
+
render(ctx: SceneRenderContext): void;
|
|
267
|
+
/**
|
|
268
|
+
* 부품 하나의 톱뷰 윤곽을 현재 path 에 그린다. `ox`·`oy` 는 캔버스에 놓인 원점이다.
|
|
269
|
+
*
|
|
270
|
+
* ## 회전을 반영한다
|
|
271
|
+
*
|
|
272
|
+
* 3D 는 도는데 2D 가 안 돌면 **같은 물건이 두 화면에서 다르게** 보인다. 위에서
|
|
273
|
+
* 내려다보므로 축마다 뜻이 다르다.
|
|
274
|
+
*
|
|
275
|
+
* y 회전 평면 안에서 도는 것이다. 그대로 돌려 그린다 — 정확하다
|
|
276
|
+
* x·z 회전 부품이 **기울어진다.** 발자국의 모양 자체가 달라져서 원기둥이 타원
|
|
277
|
+
* 비슷한 것이 되고 상자는 육각형 그림자가 된다
|
|
278
|
+
*
|
|
279
|
+
* 기울어진 것은 **회전한 상자의 평면 경계**로 근사한다. 실제 그림자보다 조금 크게
|
|
280
|
+
* 잡히지만, 안 돌린 채로 두면 「어디에 걸리는지」를 아예 못 보여 준다.
|
|
281
|
+
*/
|
|
282
|
+
private tracePart;
|
|
283
|
+
/** 부품의 평면 윤곽을 `cx`·`cy` 를 중심으로 그린다. 회전은 부르는 쪽이 이미 걸었다. */
|
|
284
|
+
private traceShape;
|
|
285
|
+
/**
|
|
286
|
+
* 청사진을 못 찾았을 때. **빈 자리로 두지 않는다** — 아무것도 안 그리면 보는 사람은
|
|
287
|
+
* 컴포넌트가 없는 것인지 청사진이 없는 것인지 알 수 없다. 자리와 타입 이름을 보인다.
|
|
288
|
+
*/
|
|
289
|
+
private renderMissing;
|
|
290
|
+
/**
|
|
291
|
+
* Shape 의 drawFill·drawStroke 를 타지 않는다.
|
|
292
|
+
*
|
|
293
|
+
* 부품마다 제 색으로 이미 칠했다. 그리고 인스턴스의 `fillStyle` 은 「청사진 색을
|
|
294
|
+
* 전부 덮어라」는 뜻이 아니다 — 그렇게 읽으면 저작한 색이 통째로 사라진다.
|
|
295
|
+
*/
|
|
296
|
+
postrender(context: SceneRenderContext): void;
|
|
297
|
+
}
|
|
298
|
+
export default FigureInstance;
|
|
299
|
+
//# sourceMappingURL=figure-instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figure-instance.d.ts","sourceRoot":"","sources":["../../src/figure/figure-instance.ts"],"names":[],"mappings":"AAIA,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,MAAM,wBAAwB,CAAA;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgF7D,qBAAa,cAAe,SAAQ,mBAAe;IACjD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIvC,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,OAAO,IAAI,OAAO;IAIlB,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,0CAA0C;IAC1C,IAAI,MAAM,yDAET;IAED,MAAM,CAAC,GAAG,EAAE,kBAAkB;IA6B9B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,SAAS;IA6CjB,0DAA0D;IAC1D,OAAO,CAAC,UAAU;IAmDlB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;;OAKG;IACM,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;CAGvD;AAMD,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 팔레트 — 청사진의 색 **토큰**을 실제 색으로 옮긴다.
|
|
3
|
+
*
|
|
4
|
+
* 청사진은 `'#4a9eff'` 가 아니라 `'palette.primary'` 를 담는다. 값을 구우면 테마를
|
|
5
|
+
* 바꿔도 따라오지 않고, 저작한 자산 수백 개를 하나씩 고쳐야 한다.
|
|
6
|
+
*
|
|
7
|
+
* 토큰 수를 적게 두는 것은 미감과 성능 양쪽의 근거다 — 색이 적으면 화면이 정돈되고,
|
|
8
|
+
* MaterialBank 의 키도 그만큼만 생긴다.
|
|
9
|
+
*/
|
|
10
|
+
export type FigurePalette = Readonly<Record<string, string>>;
|
|
11
|
+
/**
|
|
12
|
+
* 기본 팔레트.
|
|
13
|
+
*
|
|
14
|
+
* **여기 든 이름이 저작에서 고를 수 있는 전부다.** 자유색을 허용하지 않는 것이
|
|
15
|
+
* 「감각적인 로우폴리」의 첫 규칙이고, 동시에 재질 키를 묶는 근거다.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_PALETTE: FigurePalette;
|
|
18
|
+
/** 팔레트가 바뀔 때마다 오른다. 해석해 둔 색을 다시 풀어야 하는지 판단하는 데 쓴다. */
|
|
19
|
+
export declare function paletteVersion(): number;
|
|
20
|
+
/** 팔레트를 등록한다. 같은 이름이면 갈아 끼운다. */
|
|
21
|
+
export declare function registerPalette(name: string, palette: FigurePalette): void;
|
|
22
|
+
/** 쓸 팔레트를 고른다. 없는 이름이면 던진다 — 조용히 기본으로 돌아가지 않는다. */
|
|
23
|
+
export declare function setActivePalette(name: string): void;
|
|
24
|
+
export declare function activePaletteName(): string;
|
|
25
|
+
export declare function activePalette(): FigurePalette;
|
|
26
|
+
/**
|
|
27
|
+
* 토큰을 색으로 옮긴다. **모르는 토큰이면 던진다.**
|
|
28
|
+
*
|
|
29
|
+
* 회색 같은 것으로 갈음하지 않는다 — 그러면 저작자는 자기가 고른 색이 안 나온 것을
|
|
30
|
+
* 팔레트 탓인지 저작 실수인지 알 수 없다. 등록 시점에 한 번 크게 실패하는 편이 낫다.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveToken(token: string): string;
|
|
33
|
+
/** 토큰이 없는 부품에 쓸 색. 청사진이 색을 안 정했다는 뜻이지 오류는 아니다. */
|
|
34
|
+
export declare const UNTOKENED_COLOR: string;
|
|
35
|
+
/** 시험을 위해 처음 상태로 되돌린다. */
|
|
36
|
+
export declare function resetPalettes(): void;
|
|
37
|
+
//# sourceMappingURL=figure-palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figure-palette.d.ts","sourceRoot":"","sources":["../../src/figure/figure-palette.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,aAO7B,CAAA;AAOD,sDAAsD;AACtD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,iCAAiC;AACjC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAG1E;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CASnD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,aAAa,IAAI,aAAa,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASlD;AAED,kDAAkD;AAClD,eAAO,MAAM,eAAe,QAAsC,CAAA;AAElE,0BAA0B;AAC1B,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
|