@hatiolab/things-scene 10.1.14 → 10.1.16
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/figure/figure-capability.d.ts +44 -5
- package/dist-types/figure/figure-capability.d.ts.map +1 -1
- package/package.json +2 -2
- 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,16 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 저작한 Figure 에 **능력을 입힌다.**
|
|
3
|
+
*
|
|
4
|
+
* 그리는 것만으로는 컨베이어가 컨베이어가 아니다. 물건을 받고 담고 흘려보내는 것은
|
|
5
|
+
* 씬의 capability mixin 이 하는 일이고, 손으로 쓴 컴포넌트는 클래스 선언 한 줄로 그것을
|
|
6
|
+
* 지고 있었다(`class Conveyor extends FlowNode(Polygon)`). 저작한 Figure 에는 그 한 줄을
|
|
7
|
+
* 쓸 자리가 없다 — 형식이 `capabilities: ['FlowNode']` 로 **선언**하고, 등록할 때 여기서
|
|
8
|
+
* 클래스를 조립한다.
|
|
9
|
+
*
|
|
10
|
+
* ## 사다리 셋
|
|
11
|
+
*
|
|
12
|
+
* 없음 그리기만 한다. 대부분의 도형이다
|
|
13
|
+
* 담는다 `Capacity` + `Holdable` — 자리가 있고 물건이 앉는다. 랙·팔레트·작업대
|
|
14
|
+
* 흐른다 `FlowNode` — 담는 것에 더해 받고 보낸다. 컨베이어·슈트·소터
|
|
15
|
+
*
|
|
16
|
+
* `FlowNode` 가 `Capacity`·`Transferable`·`Holdable` 을 스스로 흡수하므로 사다리 윗 칸이
|
|
17
|
+
* 아랫 칸을 포함한다. **셋을 다 적는 것과 `FlowNode` 만 적는 것이 같아야 한다** — 그래서
|
|
18
|
+
* 위에서부터 한 번만 적용한다.
|
|
19
|
+
*
|
|
20
|
+
* ## 클래스는 타입마다가 아니라 **능력 조합마다** 하나다
|
|
21
|
+
*
|
|
22
|
+
* 도형 100 개가 다 `FlowNode` 면 클래스는 하나다. 타입마다 만들면 프로토타입 체인이
|
|
23
|
+
* 100 벌이 되고, 그 100 벌이 하는 일이 전부 같다.
|
|
24
|
+
*/
|
|
25
|
+
import Component from '../components/component.js';
|
|
1
26
|
import type { SlotDef } from '../transfer/types.js';
|
|
2
27
|
import type { Port } from '../flow/flow-node.js';
|
|
3
28
|
import type { FigureBlueprintAnchor } from './figure-blueprint.js';
|
|
4
29
|
import { type InstanceScale } from './figure-sizing.js';
|
|
30
|
+
import type { FigureCapability } from '@hatiolab/figure-model';
|
|
31
|
+
type Ctor<T = object> = new (...args: any[]) => T;
|
|
5
32
|
/**
|
|
6
|
-
* 저작이 고를 수 있는
|
|
33
|
+
* 저작이 고를 수 있는 능력 — **목록은 형식이 갖는다.**
|
|
34
|
+
*
|
|
35
|
+
* 한동안 이 목록이 여기에만 있었다. 그래서 figure-model 의 `validate` 가 이름을 못 봤고,
|
|
36
|
+
* `capabilities: ['hoist']` 가 검증을 지나고 **발행을 지나** 여기 와서 죽었다. 게이트는
|
|
37
|
+
* 사실이 사는 곳에 있어야 한다(ADR-0051 ④).
|
|
7
38
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* 이름만 적어서 지게 하면 「선언은 있는데 동작이 없는」 것이 된다.
|
|
39
|
+
* 지금은 **형식이 선언하고 씬이 소비한다.** 이 이름으로 다시 내보내는 것은 소비처가 이미
|
|
40
|
+
* 이 이름을 쓰기 때문이고, 값은 형식의 것 그대로다.
|
|
11
41
|
*/
|
|
12
42
|
export declare const FIGURE_CAPABILITIES: readonly ["Capacity", "Holdable", "Transferable", "FlowNode"];
|
|
13
|
-
export type FigureCapabilityName =
|
|
43
|
+
export type FigureCapabilityName = FigureCapability;
|
|
44
|
+
/**
|
|
45
|
+
* 이름 → 그 능력을 얹는 mixin. **선언과 구현이 만나는 한 곳이다.**
|
|
46
|
+
*
|
|
47
|
+
* 표로 두는 이유는 **양쪽으로 셀 수 있게** 하기 위해서다 — 선언된 이름마다 여기 항목이
|
|
48
|
+
* 있고, 여기 항목마다 선언이 있다. `if` 로 흩어 두면 한쪽에만 있는 것이 조용히 남는다
|
|
49
|
+
* (ADR-0036 ③ 개정의 「양방향」).
|
|
50
|
+
*/
|
|
51
|
+
export declare const CAPABILITY_MIXINS: Readonly<Record<FigureCapabilityName, (base: Ctor<Component>) => Ctor<Component>>>;
|
|
14
52
|
/** 저작 화면이 사다리를 그릴 때 쓰는 설명. 모델러의 「능력」 탭이 읽는다. */
|
|
15
53
|
export declare const FIGURE_CAPABILITY_NOTES: Readonly<Record<FigureCapabilityName, string>>;
|
|
16
54
|
/**
|
|
@@ -44,4 +82,5 @@ export declare function portsFromAnchors(anchors: readonly FigureBlueprintAnchor
|
|
|
44
82
|
export declare function figureClassFor(base: unknown, capabilities?: readonly string[], placement?: string): unknown;
|
|
45
83
|
/** 시험을 위해 조립한 클래스를 버린다. */
|
|
46
84
|
export declare function resetFigureClasses(): void;
|
|
85
|
+
export {};
|
|
47
86
|
//# sourceMappingURL=figure-capability.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-capability.d.ts","sourceRoot":"","sources":["../../src/figure/figure-capability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"figure-capability.d.ts","sourceRoot":"","sources":["../../src/figure/figure-capability.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAKlD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,KAAK,IAAI,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAEjD;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,+DAAqB,CAAA;AAErD,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAM7G,CAAA;AAEJ,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAKjF,CAAA;AA4BF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,EAAE,CAaX;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,EAAE,CAIhH;AAuCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAqC/G;AA4DD,2BAA2B;AAC3B,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatiolab/things-scene",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.16",
|
|
4
4
|
"description": "A high-performance 2D/3D scene graph library for building interactive visual editors, combining HTML5 Canvas and Three.js to enable facility visualization, data-driven animations, and real-time monitoring dashboards",
|
|
5
5
|
"main": "things-scene-min.js",
|
|
6
6
|
"module": "things-scene.mjs",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
},
|
|
91
91
|
"homepage": "https://github.com/hatiolab/things-scene#readme",
|
|
92
92
|
"dependencies": {
|
|
93
|
-
"@hatiolab/figure-model": "^0.1.
|
|
93
|
+
"@hatiolab/figure-model": "^0.1.21",
|
|
94
94
|
"@wizpanda/super-gif": "^0.0.6",
|
|
95
95
|
"dompurify": "^3.3.1",
|
|
96
96
|
"jsonata": "^1.8.6",
|