@hatiolab/things-scene 10.1.101 → 10.1.103

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.
Files changed (40) hide show
  1. package/dist-types/figure/figure-capability.d.ts +129 -20
  2. package/dist-types/figure/figure-capability.d.ts.map +1 -1
  3. package/dist-types/figure/figure-component.d.ts +2 -2
  4. package/dist-types/figure/figure-component.d.ts.map +1 -1
  5. package/dist-types/figure/figure-data-reading.d.ts +8 -2
  6. package/dist-types/figure/figure-data-reading.d.ts.map +1 -1
  7. package/dist-types/figure/figure-inputs.d.ts +48 -5
  8. package/dist-types/figure/figure-inputs.d.ts.map +1 -1
  9. package/dist-types/figure/figure-instance.d.ts +5 -3
  10. package/dist-types/figure/figure-instance.d.ts.map +1 -1
  11. package/dist-types/figure/figure-legend.d.ts +58 -0
  12. package/dist-types/figure/figure-legend.d.ts.map +1 -0
  13. package/dist-types/figure/figure-placed-asset.d.ts +17 -1
  14. package/dist-types/figure/figure-placed-asset.d.ts.map +1 -1
  15. package/dist-types/figure/figure-real-object.d.ts +6 -19
  16. package/dist-types/figure/figure-real-object.d.ts.map +1 -1
  17. package/dist-types/figure/figure-registry.d.ts +6 -2
  18. package/dist-types/figure/figure-registry.d.ts.map +1 -1
  19. package/dist-types/figure/figure-rig.d.ts +13 -4
  20. package/dist-types/figure/figure-rig.d.ts.map +1 -1
  21. package/dist-types/figure/figure-top-view.d.ts +3 -2
  22. package/dist-types/figure/figure-top-view.d.ts.map +1 -1
  23. package/dist-types/figure/index.d.ts +2 -2
  24. package/dist-types/figure/index.d.ts.map +1 -1
  25. package/dist-types/items/index.d.ts +1 -1
  26. package/dist-types/items/index.d.ts.map +1 -1
  27. package/dist-types/items/item-types.d.ts +4 -1
  28. package/dist-types/items/item-types.d.ts.map +1 -1
  29. package/dist-types/items/item.d.ts +10 -0
  30. package/dist-types/items/item.d.ts.map +1 -1
  31. package/dist-types/threed/three-capability.d.ts +1 -0
  32. package/dist-types/threed/three-capability.d.ts.map +1 -1
  33. package/package.json +2 -2
  34. package/things-scene-min.js +2 -2
  35. package/things-scene-min.js.map +1 -1
  36. package/things-scene-transfer.mjs +1 -1
  37. package/things-scene.mjs +3 -3
  38. package/things-scene.mjs.map +1 -1
  39. package/dist-types/figure/figure-status.d.ts +0 -52
  40. package/dist-types/figure/figure-status.d.ts.map +0 -1
@@ -24,42 +24,151 @@
24
24
  */
25
25
  import Component from '../components/component.js';
26
26
  import type { SlotDef } from '../transfer/types.js';
27
- import type { FigureCapability, FigureBindingDeclaration } from '@hatiolab/figure-model';
27
+ import type { FigureAsset, FigureCapability, FigureBindingDeclaration, FigureDataBinding, FigureDataField } from '@hatiolab/figure-model';
28
28
  type Ctor<T = object> = new (...args: any[]) => T;
29
29
  /**
30
- * 저작이 고를 수 있는 능력 — **목록은 형식이 갖는다.**
31
- *
32
- * 한동안 이 목록이 여기에만 있었다. 그래서 figure-model 의 `validate` 가 이름을 못 봤고,
33
- * `capabilities: ['hoist']` 가 검증을 지나고 **발행을 지나** 여기 와서 죽었다. 게이트는
34
- * 사실이 사는 곳에 있어야 한다(ADR-0051 ④).
35
- *
36
- * 지금은 **형식이 선언하고 씬이 소비한다.** 이 이름으로 다시 내보내는 것은 소비처가 이미
37
- * 이 이름을 쓰기 때문이고, 값은 형식의 것 그대로다.
30
+ * 저작이 고를 수 있는 공용 능력 — **목록은 형식이 갖는다**(ADR-0051 ④). 소비자 능력은 형식이 이름의 꼴만 알고, 뜻은 등록한 제품의
31
+ * descriptor 가 갖는다(ADR-0167).
38
32
  */
39
33
  export declare const FIGURE_CAPABILITIES: readonly ["Capacity", "Holdable", "Transferable", "FlowNode"];
40
34
  export type FigureCapabilityName = FigureCapability;
35
+ /** 한 설정 칸: 모델러가 그리는 모양(ADR-0167 결정 12). */
36
+ export type FigureCapabilitySetting =
37
+ /** 부품 여럿을 고른다(미리보기에서 누르기). */
38
+ {
39
+ key: string;
40
+ kind: 'parts';
41
+ label: string;
42
+ required?: boolean;
43
+ }
44
+ /** 상태 입력 하나와, 고정된 키마다 그 입력의 값 하나. 줄을 더하거나 지우지 않는다. */
45
+ | {
46
+ key: string;
47
+ kind: 'input-table';
48
+ label: string;
49
+ keys: readonly string[];
50
+ start: Readonly<Record<string, number>>;
51
+ required?: boolean;
52
+ };
53
+ /** 능력이 읽는 고정 데이터 칸: 작성자가 바인딩하지 않고, 데이터 탭이 읽기 전용으로 보인다(ADR-0167 결정 14). */
54
+ export interface FigureCapabilityDataField {
55
+ name: string;
56
+ label?: string;
57
+ }
41
58
  /**
42
- * 이름 → 그 능력을 얹는 mixin. **선언과 구현이 만나는 한 곳이다.**
59
+ * 능력의 정의(ADR-0167 결정 3) — 데이터다. 이름, 화면 말, 설명, 판, 필요한 것, 속성 패널에 더할 속성, 읽는 고정 데이터, 자산 쪽
60
+ * 설정의 칸, 그 설정의 검사. 모델러와 장면이 같은 것을 읽는다.
43
61
  *
44
- * 표로 두는 이유는 **양쪽으로 셀 수 있게** 하기 위해서다 — 선언된 이름마다 여기 항목이
45
- * 있고, 여기 항목마다 선언이 있다. `if` 로 흩어 두면 한쪽에만 있는 것이 조용히 남는다
46
- * (ADR-0036 ③ 개정의 「양방향」).
62
+ * needs 한 줄에 하나가 반드시 있어야 하는 것: 공용 이름, 다른 소비자 이름, `item`(자산 맨 위 `item` 표시). 배열인 줄은 그중
63
+ * 하나(`Transferable` → Capacity 나 FlowNode).
64
+ */
65
+ export interface FigureCapabilityDescriptor {
66
+ name: string;
67
+ label: string;
68
+ note: string;
69
+ version: string;
70
+ needs: ReadonlyArray<string | readonly string[]>;
71
+ properties?: NonNullable<import('../interfaces/types.js').ComponentNature['properties']>;
72
+ data?: readonly FigureCapabilityDataField[];
73
+ settings?: readonly FigureCapabilitySetting[];
74
+ /** 자산 쪽 설정(`capabilities.extensions[name]`)과 자산을 보고 받지 못하는 까닭을 말한다. 없으면 빈 목록. */
75
+ check?: (settings: Record<string, unknown> | undefined, asset: FigureAsset) => string[];
76
+ /**
77
+ * 이 능력이 피규어에 더하는 데이터 칸과 연결(ADR-0167 결정 12 「엔진은 하나」): 능력이 정한 칸 · 범례 역할 · 부품 · 고정 표를 ADR-0166
78
+ * 엔진에 넘긴다. 작성자는 적지 않고, 장면이 피규어를 등록할 때 자산에 더해 함께 검사한다. 자산이 이미 가진 같은 이름의 칸은 그대로 둔다.
79
+ */
80
+ dataInterface?: (settings: Record<string, unknown> | undefined, asset: FigureAsset) => {
81
+ schema?: FigureDataField[];
82
+ bindings: FigureDataBinding[];
83
+ } | undefined;
84
+ /**
85
+ * 이 능력이 피규어에서 맡는 대상(ADR-0167 결정 17): 아이템 목록, 색 · 효과를 주는 부품, 값을 주는 상태 입력. 능력이 등록된 장면에서는
86
+ * 같은 대상의 피규어 바인딩이 쉬고 능력이 하나뿐인 작성자다. 등록되지 않은 장면에서는 바인딩이 일한다.
87
+ */
88
+ takes?: (settings: Record<string, unknown> | undefined, asset: FigureAsset) => FigureCapabilityTargets;
89
+ }
90
+ /** 소비자 능력이 맡는 대상(ADR-0167 결정 17). */
91
+ export interface FigureCapabilityTargets {
92
+ /** 피규어의 아이템 목록 */
93
+ items?: boolean;
94
+ /** 색 · 효과를 주는 부품 */
95
+ parts?: readonly string[];
96
+ /** 값을 주는 상태 입력 */
97
+ inputs?: readonly string[];
98
+ }
99
+ /** 소비자 능력이 맡아 쉬는 피규어 바인딩(ADR-0167 결정 17): 통째로, 또는 표의 그 부품 · 입력만. */
100
+ export interface FigureRestingBinding {
101
+ id: string;
102
+ /** 맡은 능력의 이름 */
103
+ capability: string;
104
+ /** 바인딩 전체가 쉬는지. 아니면 표의 `parts` · `inputs` 만 쉰다. */
105
+ whole: boolean;
106
+ parts: string[];
107
+ inputs: string[];
108
+ }
109
+ type CapabilityMixin = (base: Ctor<Component>) => Ctor<Component>;
110
+ /**
111
+ * 능력은 **등록 한 길**로 들어온다(ADR-0167 결정 1): descriptor 와 장면이 조립하는 믹스인. 공용 넷도 이 길로 들어온다. 모델러는
112
+ * 믹스인 없이 descriptor 만 등록한다: 그 능력의 이름 · 속성 · 표는 미리보기에도 들고, 제품의 동작만 없다. 같은 이름을 다시 등록하면 앞의 것을 갈아 끼우고, 조립해 둔 클래스는
113
+ * 버린다. 돌려주는 것은 등록을 거두는 함수다.
47
114
  */
48
- export declare const CAPABILITY_MIXINS: Readonly<Record<FigureCapabilityName, (base: Ctor<Component>) => Ctor<Component>>>;
49
- /** 저작 화면이 사다리를 그릴 때 쓰는 설명. 모델러의 「능력」 탭이 읽는다. */
50
- export declare const FIGURE_CAPABILITY_NOTES: Readonly<Record<FigureCapabilityName, string>>;
115
+ export declare function registerFigureCapability(descriptor: FigureCapabilityDescriptor, mixin?: CapabilityMixin): () => void;
116
+ /** 등록된 능력의 정의, 공용 넷이 먼저. 모델러의 「능력」 탭이 읽는다. */
117
+ export declare function figureCapabilityDescriptors(): FigureCapabilityDescriptor[];
118
+ /** 이름의 정의, 없으면 undefined. */
119
+ export declare const figureCapabilityDescriptorOf: (name: string) => FigureCapabilityDescriptor | undefined;
120
+ /** 등록이 바뀔 때 알림을 받는다(모델러가 목록을 다시 그린다). */
121
+ export declare function onFigureCapabilitiesChanged(listener: () => void): () => void;
51
122
  /**
52
123
  * A figure's places (its bindings and the slots its slot layout unfolds into, a seat or a grip) as the scene's
53
- * `SlotDef`. What a place takes is always named, so `allowedTypes` is always written; how many it holds is its capacity.
124
+ * `SlotDef`. What a place takes is its item types, or any item when it names none (an empty `allowedTypes`); how many it
125
+ * holds is its capacity.
54
126
  */
55
127
  export declare function slotsFromBindings(bindings: readonly Pick<FigureBindingDeclaration, 'id' | 'capacity' | 'accepts'>[]): SlotDef[];
128
+ /** 조립에서 빠진 소비자 능력과 그 까닭(ADR-0167 결정 5): 등록되지 않음, 믹스인 없음, 필요한 것 없음, 설정을 받지 못함. */
129
+ export interface FigureCapabilityIssue {
130
+ code: 'CAPABILITY_UNREGISTERED' | 'CAPABILITY_NEEDS' | 'CAPABILITY_SETTINGS';
131
+ severity: 'warning';
132
+ name: string;
133
+ reasons?: string[];
134
+ }
135
+ /**
136
+ * 선언한 능력 가운데 이 장면이 조립하는 것과 빼는 것(ADR-0167 결정 4 · 5). 공용 이름의 오타와 공용 능력의 필요한 것 없음은 던진다 —
137
+ * 형식이 이미 거절하는 것이다. 소비자 능력은 등록되지 않았거나(믹스인 없음 포함), 필요한 것이 없거나, 설정을 받지 못하면 그 능력만
138
+ * 빼고 까닭을 남긴다. 자산이 주어지면 `item` 필요와 설정 검사도 본다.
139
+ */
140
+ export declare function figureCapabilitiesAssembled(capabilities: readonly string[], asset?: FigureAsset): {
141
+ names: string[];
142
+ issues: FigureCapabilityIssue[];
143
+ };
56
144
  /**
57
145
  * 선언한 능력으로 클래스를 조립한다. 같은 조합이면 같은 클래스를 돌려준다.
58
146
  *
59
- * 모르는 이름이면 **던진다.** 오타 하나가 「능력이 있는 줄 알았는데 없는」 피규어를 만들고,
60
- * 그것은 물건을 넘기려는 순간에야 드러난다.
147
+ * 공용 이름의 오타는 **던진다.** 오타 하나가 「능력이 있는 줄 알았는데 없는」 피규어를 만들고, 그것은 물건을 넘기려는 순간에야
148
+ * 드러난다. 장면에 등록되지 않은 소비자 능력은 그 능력만 빼고 조립한다(ADR-0167 결정 5, `figureCapabilitiesAssembled`).
149
+ */
150
+ export declare function figureClassFor(base: unknown, capabilities?: readonly string[], placement?: string, asset?: FigureAsset): unknown;
151
+ /**
152
+ * 이 장면에서 피규어가 입은 소비자 능력이 맡아 쉬는 바인딩(ADR-0167 결정 17): 능력이 아이템 목록을 맡으면 items 바인딩, 상태 입력을 맡으면
153
+ * 그 입력의 값 바인딩, 부품 · 입력을 맡으면 표 연결의 그 대상. 이 장면이 조립하는 능력만 맡는다 — 등록되지 않았으면 바인딩이 일한다.
154
+ * 아이템은 능력의 동작(믹스인)이 쓰므로, 모델러처럼 descriptor 만 등록한 장면에서는 맡지 않는다(작성자가 없어지지 않게). 부품 · 입력은
155
+ * descriptor 의 표가 쓰므로 그대로 맡는다.
156
+ */
157
+ export declare function figureBindingsResting(asset: FigureAsset): FigureRestingBinding[];
158
+ /**
159
+ * 피규어가 입은 소비자 능력이 그 제품의 장면에서 맡는 바인딩(ADR-0167 결정 17): 모델러가 「그 제품에서는 능력이 맡음」을 보일 때 읽는다.
160
+ * 이 장면에서 쉬는지와 달리, 능력의 동작이 여기 등록됐는지는 묻지 않는다.
161
+ */
162
+ export declare function figureBindingsTakenOver(asset: FigureAsset): FigureRestingBinding[];
163
+ /**
164
+ * 피규어가 입은 소비자 능력으로 이 장면이 그리는 자산(ADR-0167 결정 12 · 17). 능력이 맡는 대상의 바인딩은 쉬고(결정 17), 능력이 정한 데이터
165
+ * 칸과 연결을 더한다. 조립에 드는 능력만 그렇게 하고, 더한 자산을 커널이 받지 않으면 그 능력은 더하지 않고 까닭을 남긴다. 할 것이 없으면
166
+ * 자산 그대로다.
61
167
  */
62
- export declare function figureClassFor(base: unknown, capabilities?: readonly string[], placement?: string): unknown;
168
+ export declare function figureAssetWithCapabilities(asset: FigureAsset): {
169
+ asset: FigureAsset;
170
+ issues: FigureCapabilityIssue[];
171
+ };
63
172
  /** 시험을 위해 조립한 클래스를 버린다. */
64
173
  export declare function resetFigureClasses(): void;
65
174
  export {};
@@ -1 +1 @@
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;AAOlD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAInD,OAAO,KAAK,EAAuB,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAI7G,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;AAEF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,wBAAwB,EAAE,IAAI,GAAG,UAAU,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,CAE/H;AA8FD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAqC/G;AA8DD,2BAA2B;AAC3B,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"figure-capability.d.ts","sourceRoot":"","sources":["../../src/figure/figure-capability.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** `figure-instance.ts` calls this. An application may put another class in its place. */
2
2
  export declare function useFigureComponent(clazz: unknown): void;
3
- /** Registers the component type for a figure, with its capability names and placement. */
4
- export declare function registerFigureType(type: string, capabilities?: readonly string[], placement?: string): void;
3
+ /** Registers the component type for a figure, with its capability names and placement, and the asset its capabilities check. */
4
+ export declare function registerFigureType(type: string, capabilities?: readonly string[], placement?: string, asset?: unknown): void;
5
5
  //# sourceMappingURL=figure-component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"figure-component.d.ts","sourceRoot":"","sources":["../../src/figure/figure-component.ts"],"names":[],"mappings":"AAcA,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEvD;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAE/G"}
1
+ {"version":3,"file":"figure-component.d.ts","sourceRoot":"","sources":["../../src/figure/figure-component.ts"],"names":[],"mappings":"AAcA,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEvD;AAED,gIAAgI;AAChI,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAEhI"}
@@ -19,8 +19,14 @@ export interface FigureDataResult {
19
19
  speed?: number;
20
20
  paused?: boolean;
21
21
  }>;
22
- /** Each status port's code, as the data gave it; the template that shows it is the consumer's. */
23
- status: Record<string, string>;
22
+ /** Each part's colour and effect its tables give (ADR-0166 4); a later table over an earlier one. */
23
+ parts: Record<string, {
24
+ color?: string;
25
+ effect?: {
26
+ kind: 'blink' | 'glow';
27
+ hz?: number;
28
+ };
29
+ }>;
24
30
  /** The instance's position (mm) and heading (degrees), each with the seconds it takes to get there. */
25
31
  pose: Partial<Record<'x' | 'y' | 'z' | 'heading', {
26
32
  value: number;
@@ -1 +1 @@
1
- {"version":3,"file":"figure-data-reading.d.ts","sourceRoot":"","sources":["../../src/figure/figure-data-reading.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAqC,cAAc,EAA0B,eAAe,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE9J,8FAA8F;AAC9F,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,GAAG,WAAW,CAAA;KAAE,CAAC,CAAA;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAC3E,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,uGAAuG;IACvG,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IACtF,0FAA0F;IAC1F,KAAK,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAAA;CAC9E;AAED,0HAA0H;AAC1H,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEvE,eAAO,MAAM,iBAAiB,EAAE,gBAA8H,CAAA;AAoE9J,mFAAmF;AACnF,qBAAa,gBAAgB;IAGf,QAAQ,CAAC,IAAI,EAAE,cAAc;IAFzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE,cAAc;IAezC;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;KAAE,GAAG;QACxE,MAAM,EAAE,gBAAgB,CAAA;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;YAAC,MAAM,EAAE,gBAAgB,CAAA;SAAE,CAAC,CAAA;QACxF,UAAU,EAAE,oBAAoB,EAAE,CAAA;QAClC,YAAY,EAAE,oBAAoB,EAAE,CAAA;KACrC;IAsCD,wGAAwG;IACxG,OAAO,CAAC,OAAO;CA+BhB"}
1
+ {"version":3,"file":"figure-data-reading.d.ts","sourceRoot":"","sources":["../../src/figure/figure-data-reading.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAA0C,cAAc,EAA0B,eAAe,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAEnK,8FAA8F;AAC9F,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,GAAG,WAAW,CAAA;KAAE,CAAC,CAAA;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAC3E,qGAAqG;IACrG,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;YAAC,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;IAC3F,uGAAuG;IACvG,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IACtF,0FAA0F;IAC1F,KAAK,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAAA;CAC9E;AAED,0HAA0H;AAC1H,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEvE,eAAO,MAAM,iBAAiB,EAAE,gBAA6H,CAAA;AAoE7J,mFAAmF;AACnF,qBAAa,gBAAgB;IAGf,QAAQ,CAAC,IAAI,EAAE,cAAc;IAFzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE,cAAc;IAezC;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;KAAE,GAAG;QACxE,MAAM,EAAE,gBAAgB,CAAA;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;YAAC,MAAM,EAAE,gBAAgB,CAAA;SAAE,CAAC,CAAA;QACxF,UAAU,EAAE,oBAAoB,EAAE,CAAA;QAClC,YAAY,EAAE,oBAAoB,EAAE,CAAA;KACrC;IAsCD,wGAAwG;IACxG,OAAO,CAAC,OAAO;CA+BhB"}
@@ -1,13 +1,33 @@
1
1
  import { type FigureAsset, type FigureDataPlan, type FigureDataValue, type FigureDataValueIssue, type FigureMotionPlan, type FigureMotionSettingResolved } from '@hatiolab/figure-model';
2
2
  import { type FigureDataResult, type FigureDataSource } from './figure-data-reading.js';
3
- /** Why something given to the figure was not taken: the code and reason, and the values it named. */
3
+ import { type FigureChosenLegend, type FigureLegendNote, type FigureLegendSource } from './figure-legend.js';
4
+ /**
5
+ * What given to the figure was not taken, and why: the code and reason, and the values it named. `refused`: an input
6
+ * refused whole, the one before kept. `note`: a part of a legend or a table left out alone, the rest taken (ADR-0166 9).
7
+ */
4
8
  export interface FigureRuntimeIssue {
5
- /** Which input it came from: the live data, the saved values, or the saved motion settings. */
6
- source: 'live' | 'manual' | 'motion';
7
- code: 'DATA_INTERFACE' | 'DATA_VALUE' | 'MOTION_SETTING';
9
+ /** Which input it came from: the live data, the saved values, the saved motion settings, or a table's legend. */
10
+ source: 'live' | 'manual' | 'motion' | 'legend';
11
+ severity: 'refused' | 'note';
12
+ code: 'DATA_INTERFACE' | 'DATA_VALUE' | 'MOTION_SETTING' | 'LEGEND_ABSENT' | 'LEGEND_SHAPE' | 'LEGEND_VALUE' | 'CODE_UNMATCHED';
8
13
  reason: string;
9
14
  issues?: FigureDataValueIssue[];
10
15
  group?: string;
16
+ /** A table binding, the legend role and name, the key of the look, the column and the target it went to. */
17
+ binding?: string;
18
+ role?: string;
19
+ legend?: string;
20
+ key?: string;
21
+ column?: string;
22
+ id?: string;
23
+ value?: unknown;
24
+ }
25
+ /** Which look a table binding shows now: its value, the key it matched (`default`, or none), and the table it came from. */
26
+ export interface FigureTableUse {
27
+ value: FigureDataValue | undefined;
28
+ key: string | null;
29
+ source: FigureLegendSource;
30
+ legend?: string;
11
31
  }
12
32
  /** What a call did: taken, refused with why, or skipped as older than what was already taken. */
13
33
  export interface FigureApplyResult {
@@ -28,6 +48,10 @@ export declare class FigureInputs {
28
48
  private values;
29
49
  private motionSettings;
30
50
  private refused;
51
+ private legends;
52
+ private legendNotes;
53
+ private notes;
54
+ private uses;
31
55
  constructor(asset: FigureAsset);
32
56
  /**
33
57
  * The component's data, whole. `null` or `undefined` lets go of it. Data with any value the figure cannot take is
@@ -44,8 +68,18 @@ export declare class FigureInputs {
44
68
  figureValues?: unknown;
45
69
  motion?: unknown;
46
70
  }): FigureApplyResult;
71
+ /**
72
+ * The legends chosen for the tables' roles (`pickFigureLegends`): a role left out shows by the figure's own table. The
73
+ * same legends again (each the same value, from the same place) read nothing again. Returns whether they changed.
74
+ */
75
+ setThemes(chosen: {
76
+ legends: Record<string, FigureChosenLegend>;
77
+ notes?: FigureLegendNote[];
78
+ }): boolean;
47
79
  /** What the figure's data moves now. */
48
80
  get data(): FigureDataResult;
81
+ /** Each table binding's look now: its value, the key it matched and the table it came from, by binding id. */
82
+ get tableUses(): Readonly<Record<string, FigureTableUse>>;
49
83
  /** Each binding's value now and where it came from, by binding id. */
50
84
  get dataValues(): Readonly<Record<string, {
51
85
  value: FigureDataValue | undefined;
@@ -53,10 +87,19 @@ export declare class FigureInputs {
53
87
  }>>;
54
88
  /** Each motion group's clip, speed and pause now, and whether the data or the board chose them. */
55
89
  get motion(): Readonly<Record<string, FigureMotionSettingResolved>>;
56
- /** Why the last things given were refused; empty when all were taken. */
90
+ /** Why the last things given were refused, and what of the legends and tables was left out; empty when all were taken. */
57
91
  diagnostics(): readonly FigureRuntimeIssue[];
58
92
  private refuse;
59
93
  private clear;
60
94
  private recompute;
95
+ /**
96
+ * A table binding's code through its table -- the chosen legend whole, else the figure's own -- and the look's columns
97
+ * to the binding's targets. A column the binding has no target for is another figure's in a legend shared by many, and
98
+ * a value for an input it does not name too: passed over without a word. A column a target cannot take is a note.
99
+ */
100
+ private showTable;
101
+ /** The state inputs' ranges, by id. */
102
+ private get ranges();
103
+ private _ranges?;
61
104
  }
62
105
  //# sourceMappingURL=figure-inputs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"figure-inputs.d.ts","sourceRoot":"","sources":["../../src/figure/figure-inputs.ts"],"names":[],"mappings":"AAkBA,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAErB,KAAK,2BAA2B,EACjC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAuC,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE5H,qGAAqG;AACrG,MAAM,WAAW,kBAAkB;IACjC,+FAA+F;IAC/F,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACpC,IAAI,EAAE,gBAAgB,GAAG,YAAY,GAAG,gBAAgB,CAAA;IACxD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,iGAAiG;AACjG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAC7B;AAID,qBAAa,YAAY;IAaX,QAAQ,CAAC,KAAK,EAAE,WAAW;IAZvC,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAAmD;IACvE,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,MAAM,CAAuF;IACrG,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,OAAO,CAA2B;gBAErB,KAAK,EAAE,WAAW;IAOvC;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAmBzD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,iBAAiB;IA4BpF,wCAAwC;IACxC,IAAI,IAAI,IAAI,gBAAgB,CAE3B;IAED,sEAAsE;IACtE,IAAI,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC,CAE3G;IAED,mGAAmG;IACnG,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAElE;IAED,yEAAyE;IACzE,WAAW,IAAI,SAAS,kBAAkB,EAAE;IAI5C,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,SAAS;CAQlB"}
1
+ {"version":3,"file":"figure-inputs.d.ts","sourceRoot":"","sources":["../../src/figure/figure-inputs.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { SceneRenderContext } from '../interfaces/rendering.js';
4
4
  import type { IRealObject } from '../interfaces/real-object.js';
5
5
  import type { ComponentNature } from '../interfaces/types.js';
6
6
  import { FigureInputs } from './figure-inputs.js';
7
+ import { type FigureAsset } from '@hatiolab/figure-model';
7
8
  import './figure-item-look.js';
8
9
  declare const FigureInstance_base: {
9
10
  new (...args: any[]): {
@@ -255,7 +256,7 @@ export declare class FigureInstance extends FigureInstance_base {
255
256
  * Registers FigureInstance as what draws this type. `registerFigure()` calls it, so registering the asset and
256
257
  * registering the component type always happen together and a board that names only `type` stands up.
257
258
  */
258
- static registerType(type: string, capabilities?: readonly string[], placement?: string): void;
259
+ static registerType(type: string, capabilities?: readonly string[], placement?: string, asset?: FigureAsset): void;
259
260
  /**
260
261
  * 이 타입이 어느 면에 붙나 — **클래스의 사실이지 인스턴스의 사실이 아니다.**
261
262
  *
@@ -281,8 +282,9 @@ export declare class FigureInstance extends FigureInstance_base {
281
282
  * choice each (ADR-0051 §8);
282
283
  * - its motion groups -- \`state.motion\`, per group the clip, the speed 0–3 and a pause (ADR-0051 §3.2);
283
284
  * - and, read only, its data as it takes it (\`figure-data\`): shape, values and their sources, refusals;
284
- * - its status template (\`figure-status\`, \`state.statusTemplate\`) for a figure with status ports: the template
285
- * chosen and each code's look, what was not taken (ADR-0051 2.3).
285
+ * - the legends it shows its tables by (\`figure-legends\`, \`state.legends\`, legend role → legend name) for a figure
286
+ * whose tables a consumer may swap for legends (ADR-0166 11): a role left out takes the board's, the scene's of
287
+ * the role's name, or the figure's own table.
286
288
  * A map the figure has nothing for is not offered.
287
289
  */
288
290
  get nature(): ComponentNature;
@@ -1 +1 @@
1
- {"version":3,"file":"figure-instance.d.ts","sourceRoot":"","sources":["../../src/figure/figure-instance.ts"],"names":[],"mappings":"AAKA,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;AAS7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,uBAAuB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyC9B,qBAAa,cAAe,SAAQ,mBAAe;IACjD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAwBjG;;;;;;;;;OASG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAEzB,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,OAAO,IAAI,OAAO;IAIlB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,MAAM,IAAI,eAAe,CA+C5B;IAED,OAAO,CAAC,OAAO,CAAC,CAA+C;IAE/D;;;;OAIG;IACH,IAAI,YAAY,IAAI,YAAY,GAAG,SAAS,CAU3C;IAED,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,MAAM,CAAC,GAAG,EAAE,kBAAkB;IAsC9B,yGAAyG;IACzG,OAAO,KAAK,MAAM,GAEjB;IAED,qHAAqH;IACrH,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,QAAQ,CAEf;IAED,OAAO,CAAC,IAAI,CAAC,CAAsC;IAEnD;;;OAGG;IACH,OAAO,CAAC,OAAO;IAUf,0GAA0G;IAC1G,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;OAGG;IACH,OAAO,CAAC,SAAS;IAQjB,sDAAsD;IACtD,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAGnC;IAQD,YAAY,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO;;;;;;IAkBjH,KAAK,CAAC,MAAM,EAAE,GAAG;IAMjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAchE,OAAO,CAAC,MAAM,EAAE,GAAG;IAKnB,uEAAuE;IACvE,OAAO,CAAC,cAAc;IAiCtB,uEAAuE;IACvE,OAAO,CAAC,WAAW;IAiBnB;;;;OAIG;IACM,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;CAGvD;AAMD,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"figure-instance.d.ts","sourceRoot":"","sources":["../../src/figure/figure-instance.ts"],"names":[],"mappings":"AAKA,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;AAS7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAA8C,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAErG,OAAO,uBAAuB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyC9B,qBAAa,cAAe,SAAQ,mBAAe;IACjD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI;IAwBtH;;;;;;;;;OASG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAEzB,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,OAAO,IAAI,OAAO;IAIlB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,MAAM,IAAI,eAAe,CAkD5B;IAED,OAAO,CAAC,OAAO,CAAC,CAA+C;IAE/D;;;;OAIG;IACH,IAAI,YAAY,IAAI,YAAY,GAAG,SAAS,CAU3C;IAED,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,MAAM,CAAC,GAAG,EAAE,kBAAkB;IAsC9B,yGAAyG;IACzG,OAAO,KAAK,MAAM,GAEjB;IAED,qHAAqH;IACrH,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,QAAQ,CAEf;IAED,OAAO,CAAC,IAAI,CAAC,CAAsC;IAEnD;;;OAGG;IACH,OAAO,CAAC,OAAO;IAaf,0GAA0G;IAC1G,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;OAGG;IACH,OAAO,CAAC,SAAS;IAQjB,sDAAsD;IACtD,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAGnC;IAQD,YAAY,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO;;;;;;IAkBjH,KAAK,CAAC,MAAM,EAAE,GAAG;IAMjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAchE,OAAO,CAAC,MAAM,EAAE,GAAG;IAKnB,uEAAuE;IACvE,OAAO,CAAC,cAAc;IAiCtB,uEAAuE;IACvE,OAAO,CAAC,WAAW;IAiBnB;;;;OAIG;IACM,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;CAGvD;AAMD,eAAe,cAAc,CAAA"}
@@ -0,0 +1,58 @@
1
+ import type { FigureDataPlan, FigureDataTableBinding } from '@hatiolab/figure-model';
2
+ /**
3
+ * A choice for a role that names the figure's own table (the component's or the board's `legends`): the nearest choice
4
+ * wins, so the figure's table shows even where the board or the scene has a legend of the role.
5
+ */
6
+ export declare const FIGURE_OWN_TABLE = "@figure";
7
+ /** Where a table came from: the figure's own, or a legend a resolver, the component, the board or the scene's name gave. */
8
+ export type FigureLegendSource = 'figure' | 'resolver' | 'component' | 'board' | 'domain';
9
+ /** A legend chosen for a role: its value as given, where it was chosen, and its name when it has one. */
10
+ export interface FigureChosenLegend {
11
+ legend: unknown;
12
+ source: Exclude<FigureLegendSource, 'figure'>;
13
+ name?: string;
14
+ }
15
+ /** What choosing left out, said: a name chosen for a role that the scene does not have, a resolver that failed. */
16
+ export interface FigureLegendNote {
17
+ role: string;
18
+ binding: string;
19
+ reason: 'legend-absent' | 'resolver-failed';
20
+ name?: string;
21
+ source?: FigureLegendSource;
22
+ value?: unknown;
23
+ }
24
+ /** A consumer's own way to choose a legend for a role: the legend, or undefined to leave it to the next. */
25
+ export type FigureLegendResolver = (asked: {
26
+ component: any;
27
+ binding: FigureDataTableBinding;
28
+ role: string;
29
+ }) => unknown;
30
+ /**
31
+ * What follows the legend sources: told when a resolver comes or goes, or a consumer says its answers changed -- for
32
+ * every figure, or for the figures in one component.
33
+ */
34
+ export declare function onFigureLegendSourcesChanged(listener: (within?: unknown) => void): () => void;
35
+ /**
36
+ * A consumer's resolver would now answer otherwise -- its legend's content, the component a figure takes its legend
37
+ * from: every figure chooses again, or, given a component, the figures that are it or are in it. One that comes to the
38
+ * same look starts nothing again.
39
+ */
40
+ export declare function figureLegendSourcesChanged(within?: unknown): void;
41
+ /** A consumer's resolver, asked before the component's and the board's choices. Returns what takes it away again. */
42
+ export declare function registerFigureLegendResolver(resolver: FigureLegendResolver): () => void;
43
+ /** The legend roles a plan's tables may be given legends for, each with the first binding that names it. */
44
+ export declare function figureLegendRolesOf(plan: FigureDataPlan | null | undefined): Map<string, FigureDataTableBinding>;
45
+ /**
46
+ * The legends chosen for a plan's roles, by role, and what choosing left out. A role with no legend chosen anywhere is
47
+ * not in the result: its tables show by the figure's own.
48
+ */
49
+ export declare function pickFigureLegends(component: any, plan: FigureDataPlan | null | undefined): {
50
+ legends: Record<string, FigureChosenLegend>;
51
+ notes: FigureLegendNote[];
52
+ };
53
+ /**
54
+ * A legend's value as a table, or why it is none: an object as it is, a text read as JSON (a store that keeps text).
55
+ * A table's keys and entries are read later, one by one.
56
+ */
57
+ export declare function figureLegendTableOf(value: unknown): Record<string, unknown> | null;
58
+ //# sourceMappingURL=figure-legend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figure-legend.d.ts","sourceRoot":"","sources":["../../src/figure/figure-legend.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAEpF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,YAAY,CAAA;AAEzC,4HAA4H;AAC5H,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEzF,yGAAyG;AACzG,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,mHAAmH;AACnH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,eAAe,GAAG,iBAAiB,CAAA;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,4GAA4G;AAC5G,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAA;AAKxH;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAG7F;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAEjE;AAED,qHAAqH;AACrH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CASvF;AAED,4GAA4G;AAC5G,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAIhH;AAYD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAsCrK;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAUlF"}
@@ -18,6 +18,23 @@ export declare function figureAnchorFacesOf(anchors: readonly {
18
18
  width: number;
19
19
  depth: number;
20
20
  }>;
21
+ /**
22
+ * How much room the figure leaves over each anchor's face, in mm: from a top face up to the figure's highest point, from a
23
+ * bottom face down to its lowest. A slot's height when the author gives none (a forklift's forks: up to its mast). 0 when
24
+ * the face is the figure's top or bottom.
25
+ */
26
+ export declare function figureAnchorRoomOf(anchors: readonly {
27
+ id: string;
28
+ part?: string;
29
+ face?: string;
30
+ }[], geometry: readonly {
31
+ id: string;
32
+ shape?: Parameters<typeof figureShapeBoundsOf>[0];
33
+ pose?: {
34
+ r: number[][];
35
+ t: number[];
36
+ };
37
+ }[]): Record<string, number>;
21
38
  /** A placed figure as the editor's host reads it: its state, box and scene, and what it holds. */
22
39
  type PlacedFigure = {
23
40
  state: PlacedState & {
@@ -86,7 +103,6 @@ export declare function figurePlacementSlotLayoutOptions(placed: PlacedFigure |
86
103
  effective: SlotLayout;
87
104
  canUseDefault: boolean;
88
105
  live: boolean;
89
- acceptsRequired: boolean;
90
106
  unit: string;
91
107
  anchors: {
92
108
  part?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"figure-placed-asset.d.ts","sourceRoot":"","sources":["../../src/figure/figure-placed-asset.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,mBAAmB,EAOnB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAA;AAQ/B,KAAK,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE3D,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,CAOjF;AAED,qHAAqH;AACrH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,mBAAmB,GAAG,IAAI,CAGtG;AAeD,mHAAmH;AACnH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACjD,QAAQ,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,EAAE,GACrF,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CASlD;AAED,kGAAkG;AAClG,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,WAAW,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IACnG,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACnC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IACzC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACpF,CAAA;AAqBD;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS;;;cAyB1C,MAAM,GAAG,SAAS;cACzB,MAAM,GAAG,SAAS;;;mBA1DX,MAAM;mBAAS,MAAM;oBAAU,MAAM;;;;;;;;;;;sBAkExD;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;eAnF7E,MAAM;eAAS,MAAM;;;eAArB,MAAM;eAAS,MAAM;;uBAsEzB,UAAU;cAiBhC"}
1
+ {"version":3,"file":"figure-placed-asset.d.ts","sourceRoot":"","sources":["../../src/figure/figure-placed-asset.ts"],"names":[],"mappings":"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"}
@@ -5,20 +5,6 @@ import { type FigureRenderLevel } from '@hatiolab/figure-model';
5
5
  import { type ItemSeat } from '../items/item-seating.js';
6
6
  import { type RegisteredFigureFigure } from './figure-registry.js';
7
7
  import type { FigureRuntimeIssue } from './figure-inputs.js';
8
- import { type FigureStatusSource } from './figure-status.js';
9
- /** What of a port's status look was not taken, and why (ADR-0051 2.3). The rest of the look is taken. */
10
- export interface FigureStatusIssue {
11
- port: string;
12
- code: string;
13
- /** Where the look came from. */
14
- source: FigureStatusSource;
15
- /** A state input's value, the clip of the port's motion group, the colour, the effect, the values whole, or the resolver's answer. */
16
- target: 'state' | 'motion-clip' | 'color' | 'effect' | 'values' | 'resolver';
17
- /** The state input, or the motion group. */
18
- id?: string;
19
- reason: 'not-a-number' | 'out-of-range' | 'not-a-clip' | 'not-a-color' | 'not-an-effect' | 'not-a-record' | 'failed';
20
- value: unknown;
21
- }
22
8
  /** Where a thing held at a place hangs, as \`attachPointFor\` answers a holder. */
23
9
  export interface FigurePlaceAttachment {
24
10
  attach: THREE.Object3D;
@@ -51,12 +37,13 @@ export declare class FigureRealObject extends RealObject<THREE.Group> {
51
37
  get figure(): RegisteredFigureFigure | null;
52
38
  protected getObject3dInstance(): THREE.Group;
53
39
  build(): void;
54
- /** What its status ports' looks gave that was not taken (ADR-0051 2.3), as of the last lookup. */
55
- statusIssues: FigureStatusIssue[];
56
- private unfollowStatus?;
57
- private followStatusSources;
40
+ private unfollowLegends?;
41
+ private followLegendSources;
58
42
  private inputsChanged;
59
- /** What the component's inputs give, handed to the rig: the data's state values and colours, each group's setting. */
43
+ /**
44
+ * What the component's inputs give, handed to the rig: the data's state values and colours, the parts' looks its tables
45
+ * give by the legends chosen where it stands, each group's setting.
46
+ */
60
47
  private applyInputs;
61
48
  /**
62
49
  * Where the data says the figure stands (a pose binding, ADR-0051 §8): on the board's plan its centre at x and z, its
@@ -1 +1 @@
1
- {"version":3,"file":"figure-real-object.d.ts","sourceRoot":"","sources":["../../src/figure/figure-real-object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"figure-real-object.d.ts","sourceRoot":"","sources":["../../src/figure/figure-real-object.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,12 @@ export interface RegisteredFigureFigure {
6
6
  }
7
7
  /** Word when the registered figures change: an item drawn by its type's figure takes its look again. */
8
8
  export declare function onFiguresChanged(listener: () => void): () => void;
9
- /** Registers a asset under a figure type. Compiles it (or reuses the cache) so a bad asset fails here, not on a board. */
10
- export declare function registerFigure(type: string, asset: FigureAsset): RegisteredFigureFigure;
9
+ /**
10
+ * Registers a asset under a figure type. Compiles it (or reuses the cache) so a bad asset fails here, not on a board. A
11
+ * product's capability the asset wears adds its data fields and tables first (ADR-0167 decision 12): what the board
12
+ * draws by is the asset with them.
13
+ */
14
+ export declare function registerFigure(type: string, given: FigureAsset): RegisteredFigureFigure;
11
15
  export declare function getFigure(type: string): RegisteredFigureFigure | null;
12
16
  export declare function hasFigure(type: string): boolean;
13
17
  export declare function unregisterFigure(type: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"figure-registry.d.ts","sourceRoot":"","sources":["../../src/figure/figure-registry.ts"],"names":[],"mappings":"AAYA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAE7E,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,cAAc,CAAA;CACzB;AAKD,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAGjE;AAMD,0HAA0H;AAC1H,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,sBAAsB,CAQvF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAItD;AAED,wBAAgB,YAAY,IAAI,IAAI,CAGnC"}
1
+ {"version":3,"file":"figure-registry.d.ts","sourceRoot":"","sources":["../../src/figure/figure-registry.ts"],"names":[],"mappings":"AAYA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAE7E,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAGjF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,cAAc,CAAA;CACzB;AAKD,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAGjE;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,sBAAsB,CAUvF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAItD;AAED,wBAAgB,YAAY,IAAI,IAAI,CAGnC"}
@@ -124,6 +124,10 @@ export declare class FigureRig {
124
124
  private readonly commanded;
125
125
  /** Colours the data interface gives this instance by token; they win over the theme and the asset. */
126
126
  private paletteOverrides;
127
+ /** Colours a table gives this instance by part (ADR-0166 4): over the colour of the part's token. */
128
+ private partColours;
129
+ /** The bodies of the parts a table may give a look of their own: each drawn alone (figure-model's \`figureLookedBodiesOf\`). */
130
+ private readonly own;
127
131
  private motionPlanOf?;
128
132
  private theme;
129
133
  private readonly merge;
@@ -267,8 +271,13 @@ export declare class FigureRig {
267
271
  */
268
272
  setPaletteOverrides(colours: Record<string, string>): void;
269
273
  /**
270
- * Effects a status gives parts of this instance (status-template design §6): a part blinks -- shown dark half of each
271
- * cycle -- or glows in its colour. The whole map; a part left out shows plainly again.
274
+ * This instance's colours by part, from its tables (ADR-0166 4): the whole map, a part left out back to its token's
275
+ * colour. As with the token colours, the meshes take a material of the new colour from the bank.
276
+ */
277
+ setPartColours(colours: Record<string, string>): void;
278
+ /**
279
+ * Effects a table gives parts of this instance (ADR-0166 8): a part blinks -- shown dark half of each cycle -- or glows
280
+ * in its colour. The whole map; a part left out shows plainly again.
272
281
  */
273
282
  setPartEffects(effects: Record<string, {
274
283
  kind: 'blink' | 'glow';
@@ -277,8 +286,8 @@ export declare class FigureRig {
277
286
  private partEffects;
278
287
  private effectClock;
279
288
  private blinkDark;
280
- /** The effect on the part a body draws: by the part's id, its copies too (the id and a mark after it). */
281
- private effectOf;
289
+ /** The part a body draws: its own id, or for a row's copy the part it copies. */
290
+ private partOf;
282
291
  /** One frame of the blinking: dark in the second half of each cycle. Whether it turned. */
283
292
  private advanceEffects;
284
293
  /** The colours this instance draws with by token: the asset's, under its data's. */