@hatiolab/figure-model 0.5.0 → 0.5.2

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 (136) hide show
  1. package/dist/asset-types.d.ts +1 -1
  2. package/dist/asset-types.d.ts.map +1 -1
  3. package/dist/asset.d.ts.map +1 -1
  4. package/dist/asset.js +6 -5
  5. package/dist/asset.js.map +1 -1
  6. package/dist/authoring-actions.d.ts +2 -795
  7. package/dist/authoring-actions.d.ts.map +1 -1
  8. package/dist/authoring-actions.js +66 -3777
  9. package/dist/authoring-actions.js.map +1 -1
  10. package/dist/authoring-bindings.d.ts +35 -0
  11. package/dist/authoring-bindings.d.ts.map +1 -0
  12. package/dist/authoring-bindings.js +241 -0
  13. package/dist/authoring-bindings.js.map +1 -0
  14. package/dist/authoring-dimensions.d.ts +10 -0
  15. package/dist/authoring-dimensions.d.ts.map +1 -0
  16. package/dist/authoring-dimensions.js +88 -0
  17. package/dist/authoring-dimensions.js.map +1 -0
  18. package/dist/authoring-fastening.d.ts +24 -0
  19. package/dist/authoring-fastening.d.ts.map +1 -0
  20. package/dist/authoring-fastening.js +562 -0
  21. package/dist/authoring-fastening.js.map +1 -0
  22. package/dist/authoring-geometry.d.ts +119 -0
  23. package/dist/authoring-geometry.d.ts.map +1 -0
  24. package/dist/authoring-geometry.js +419 -0
  25. package/dist/authoring-geometry.js.map +1 -0
  26. package/dist/authoring-nodes.d.ts +77 -0
  27. package/dist/authoring-nodes.d.ts.map +1 -0
  28. package/dist/authoring-nodes.js +310 -0
  29. package/dist/authoring-nodes.js.map +1 -0
  30. package/dist/authoring-occupancy.d.ts +28 -0
  31. package/dist/authoring-occupancy.d.ts.map +1 -0
  32. package/dist/authoring-occupancy.js +784 -0
  33. package/dist/authoring-occupancy.js.map +1 -0
  34. package/dist/authoring-proportion.d.ts +27 -0
  35. package/dist/authoring-proportion.d.ts.map +1 -0
  36. package/dist/authoring-proportion.js +378 -0
  37. package/dist/authoring-proportion.js.map +1 -0
  38. package/dist/authoring-size.d.ts +17 -0
  39. package/dist/authoring-size.d.ts.map +1 -0
  40. package/dist/authoring-size.js +140 -0
  41. package/dist/authoring-size.js.map +1 -0
  42. package/dist/authoring-types.d.ts +753 -0
  43. package/dist/authoring-types.d.ts.map +1 -0
  44. package/dist/authoring-types.js +42 -0
  45. package/dist/authoring-types.js.map +1 -0
  46. package/dist/command-preview.d.ts +1 -1
  47. package/dist/command-preview.d.ts.map +1 -1
  48. package/dist/command-preview.js +1 -0
  49. package/dist/command-preview.js.map +1 -1
  50. package/dist/contract.d.ts +142 -3
  51. package/dist/contract.d.ts.map +1 -1
  52. package/dist/contract.js +1 -1
  53. package/dist/contract.js.map +1 -1
  54. package/dist/cost.d.ts.map +1 -1
  55. package/dist/cost.js +3 -0
  56. package/dist/cost.js.map +1 -1
  57. package/dist/create.d.ts +36 -0
  58. package/dist/create.d.ts.map +1 -1
  59. package/dist/create.js +60 -0
  60. package/dist/create.js.map +1 -1
  61. package/dist/document.d.ts.map +1 -1
  62. package/dist/document.js +4 -3
  63. package/dist/document.js.map +1 -1
  64. package/dist/editor-workspace.d.ts +3 -3
  65. package/dist/editor-workspace.d.ts.map +1 -1
  66. package/dist/examples.d.ts.map +1 -1
  67. package/dist/examples.js +3 -1
  68. package/dist/examples.js.map +1 -1
  69. package/dist/gate.d.ts.map +1 -1
  70. package/dist/gate.js +2 -0
  71. package/dist/gate.js.map +1 -1
  72. package/dist/graph-types.d.ts +3 -2
  73. package/dist/graph-types.d.ts.map +1 -1
  74. package/dist/graph.d.ts.map +1 -1
  75. package/dist/graph.js +13 -7
  76. package/dist/graph.js.map +1 -1
  77. package/dist/index.d.ts +10 -4
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +8 -2
  80. package/dist/index.js.map +1 -1
  81. package/dist/joint-list.js +1 -1
  82. package/dist/joint-list.js.map +1 -1
  83. package/dist/joint-part-edits.d.ts +40 -0
  84. package/dist/joint-part-edits.d.ts.map +1 -0
  85. package/dist/joint-part-edits.js +488 -0
  86. package/dist/joint-part-edits.js.map +1 -0
  87. package/dist/joint-writing.d.ts +50 -0
  88. package/dist/joint-writing.d.ts.map +1 -0
  89. package/dist/joint-writing.js +847 -0
  90. package/dist/joint-writing.js.map +1 -0
  91. package/dist/json.d.ts.map +1 -1
  92. package/dist/json.js +11 -8
  93. package/dist/json.js.map +1 -1
  94. package/dist/kernel-version.d.ts +1 -1
  95. package/dist/kernel-version.js +1 -1
  96. package/dist/package.d.ts +15 -3
  97. package/dist/package.d.ts.map +1 -1
  98. package/dist/package.js +58 -0
  99. package/dist/package.js.map +1 -1
  100. package/dist/part-edit.d.ts +1 -1
  101. package/dist/part-edit.d.ts.map +1 -1
  102. package/dist/part-edit.js +7 -4
  103. package/dist/part-edit.js.map +1 -1
  104. package/dist/proposal.d.ts +1 -1
  105. package/dist/proposal.d.ts.map +1 -1
  106. package/dist/proposal.js +5 -2
  107. package/dist/proposal.js.map +1 -1
  108. package/dist/render-batches.d.ts +10 -2
  109. package/dist/render-batches.d.ts.map +1 -1
  110. package/dist/render-batches.js +19 -5
  111. package/dist/render-batches.js.map +1 -1
  112. package/dist/resize-plan.d.ts +1 -1
  113. package/dist/resize-plan.d.ts.map +1 -1
  114. package/dist/robots.d.ts.map +1 -1
  115. package/dist/robots.js +3 -1
  116. package/dist/robots.js.map +1 -1
  117. package/dist/room.d.ts +1 -1
  118. package/dist/room.d.ts.map +1 -1
  119. package/dist/room.js +2 -1
  120. package/dist/room.js.map +1 -1
  121. package/dist/shape-edit.js +4 -4
  122. package/dist/shape-edit.js.map +1 -1
  123. package/dist/shape-ops.d.ts +62 -7
  124. package/dist/shape-ops.d.ts.map +1 -1
  125. package/dist/shape-ops.js +117 -8
  126. package/dist/shape-ops.js.map +1 -1
  127. package/dist/slot-layout-presets.d.ts +102 -0
  128. package/dist/slot-layout-presets.d.ts.map +1 -0
  129. package/dist/slot-layout-presets.js +185 -0
  130. package/dist/slot-layout-presets.js.map +1 -0
  131. package/dist/slot-layout.d.ts +16 -1
  132. package/dist/slot-layout.d.ts.map +1 -1
  133. package/dist/slot-layout.js.map +1 -1
  134. package/docs/modeller-interaction-performance-2026-10-07.md +40 -8
  135. package/docs/shape-contract.md +46 -0
  136. package/package.json +1 -1
@@ -0,0 +1,35 @@
1
+ import type { FigureAsset } from './asset-types.ts';
2
+ import { type FigureAuthoringAction, type FigureBindingPlace } from './authoring-types.ts';
3
+ type Dynamic = any;
4
+ export declare function addBinding(asset: Dynamic, a: Extract<FigureAuthoringAction, {
5
+ kind: 'add-binding';
6
+ }>): Dynamic;
7
+ export declare function removeBinding(asset: Dynamic, a: {
8
+ kind: 'remove-binding';
9
+ id: string;
10
+ }): Dynamic;
11
+ export declare function setSlotLayout(asset: Dynamic, a: Extract<FigureAuthoringAction, {
12
+ kind: 'set-slot-layout';
13
+ }>): Dynamic;
14
+ export declare function removeSlotLayout(asset: Dynamic): Dynamic;
15
+ /**
16
+ * A figure's slot layout as `set-slot-layout` takes it back (ADR-0118): its label, role and layout, and each anchor as
17
+ * the part and the face it stands on -- read from the faces the declaration names. Undefined when it has none. A screen
18
+ * edits from this and sends the whole command again; it never reads the graph itself.
19
+ */
20
+ export declare function figureSlotLayoutOf(asset: {
21
+ document: {
22
+ model: {
23
+ nodes: readonly Dynamic[];
24
+ };
25
+ capabilities: {
26
+ slotLayout?: Dynamic;
27
+ };
28
+ };
29
+ }): Omit<Extract<FigureAuthoringAction, {
30
+ kind: 'set-slot-layout';
31
+ }>, 'kind'> | undefined;
32
+ /** The places a figure has: its declared bindings, then the slots its slot layout unfolds into. */
33
+ export declare function figureBindingsOf(asset: FigureAsset): FigureBindingPlace[];
34
+ export {};
35
+ //# sourceMappingURL=authoring-bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-bindings.d.ts","sourceRoot":"","sources":["../src/authoring-bindings.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAA;AAG7B,KAAK,OAAO,GAAG,GAAG,CAAA;AAqBlB,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,GAAG,OAAO,CA4C9G;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAOhG;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC,GAAG,OAAO,CAsDrH;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMxD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE;IAAE,QAAQ,EAAE;QAAE,KAAK,EAAE;YAAE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;SAAE,CAAC;QAAC,YAAY,EAAE;YAAE,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GACpG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,CAcvF;AAaD,mGAAmG;AACnG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAgDzE"}
@@ -0,0 +1,241 @@
1
+ /*
2
+ * Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ /*
5
+ * The bindings and slot layouts a figure declares on its faces.
6
+ */
7
+ import { figureSlotPlacesOf } from "./slot-places.js";
8
+ import { validateSlotLayout, persistenceIssues } from "./slot-layout.js";
9
+ import { AXES } from "./words.js";
10
+ import { FIGURE_FACES } from "./authoring-types.js";
11
+ import { fail, nodeById, writerOf, constantOf, dropIfUnused, stringsIn } from "./authoring-nodes.js";
12
+ /** The feature node for one face of a placed part: the one already there, or a new one. */
13
+ function faceFeatureOf(m, place, face) {
14
+ const found = m.nodes.find((n) => n.op === 'feature@1' && n.args[0] === place.args[0] && n.params?.name === face);
15
+ if (found)
16
+ return found;
17
+ const id = `${place.id}.face.${face}`;
18
+ if (nodeById(m, id))
19
+ fail('SCHEMA', place.id, `${id} is already a node that is not this face`);
20
+ const node = {
21
+ id,
22
+ op: 'feature@1',
23
+ args: [place.args[0]],
24
+ outputs: { pose: `${id}.value` },
25
+ params: { frame: `${id}.frame`, name: face }
26
+ };
27
+ m.nodes.push(node);
28
+ return node;
29
+ }
30
+ export function addBinding(asset, a) {
31
+ const m = asset.document.model;
32
+ const bindings = asset.document.capabilities.bindings;
33
+ const id = typeof a.id === 'string' ? a.id.trim() : '';
34
+ if (!id)
35
+ fail('SCHEMA', 'binding', 'a place needs an id');
36
+ const label = typeof a.label === 'string' ? a.label.trim() : '';
37
+ if (!label)
38
+ fail('SCHEMA', id, 'a place needs a name a person reads');
39
+ const at = bindings.findIndex(b => b.id === id);
40
+ if (at >= 0 && !a.replace)
41
+ fail('DUPLICATE_BINDING', id, 'a place with this id exists; replace it explicitly');
42
+ if (a.role !== 'seat' && a.role !== 'grip')
43
+ fail('ROLE', id, 'a place is a seat or a grip');
44
+ if (!Object.hasOwn(FIGURE_FACES, String(a.face)))
45
+ fail('SCHEMA', id, `${String(a.face)} is not a face`);
46
+ const place = nodeById(m, a.part);
47
+ if (!place || place.op !== 'place@1')
48
+ fail('TARGET_ABSENT', id, `${String(a.part)} is not a placed part`);
49
+ const accepts = [
50
+ ...new Set((Array.isArray(a.accepts) ? a.accepts : []).map(one => String(one).trim()).filter(Boolean))
51
+ ];
52
+ if (!accepts.length)
53
+ fail('SCHEMA', id, 'name at least one type it takes');
54
+ if (!Number.isSafeInteger(a.capacity) || a.capacity < 1)
55
+ fail('CAPACITY', id, 'how many it holds is a whole number from 1');
56
+ const feature = faceFeatureOf(m, place, a.face);
57
+ const binding = {
58
+ id,
59
+ label,
60
+ role: a.role,
61
+ frame: feature.params.frame,
62
+ pose: { placement: place.outputs.placed, feature: feature.outputs.pose },
63
+ accepts,
64
+ capacity: a.capacity
65
+ };
66
+ if (a.region) {
67
+ const sizes = AXES.map(axis => a.region[axis]);
68
+ if (sizes.some(mm => typeof mm !== 'number' || !Number.isFinite(mm) || mm <= 0))
69
+ fail('REGION', id, 'the room is three lengths above 0 mm');
70
+ binding.region = {
71
+ kind: 'centered-box',
72
+ dimensions: sizes.map((mm, i) => constantOf(m, 'mm', mm, `${id}.region.${AXES[i]}`))
73
+ };
74
+ }
75
+ const before = at >= 0 ? bindings[at] : null;
76
+ if (at >= 0)
77
+ bindings[at] = binding;
78
+ else
79
+ bindings.push(binding);
80
+ if (before)
81
+ dropBindingRefs(asset, before);
82
+ return asset;
83
+ }
84
+ export function removeBinding(asset, a) {
85
+ const bindings = asset.document.capabilities.bindings;
86
+ const at = bindings.findIndex(b => b.id === a.id);
87
+ if (at < 0)
88
+ fail('TARGET_ABSENT', String(a.id), 'no place has this id');
89
+ const [gone] = bindings.splice(at, 1);
90
+ dropBindingRefs(asset, gone);
91
+ return asset;
92
+ }
93
+ export function setSlotLayout(asset, a) {
94
+ const m = asset.document.model;
95
+ const label = typeof a.label === 'string' ? a.label.trim() : '';
96
+ if (!label)
97
+ fail('SCHEMA', 'slotLayout', 'a slot layout needs a name a person reads', { reason: 'slot-layout-label-missing' });
98
+ if (a.role !== 'seat' && a.role !== 'grip')
99
+ fail('ROLE', 'slotLayout', 'its slots are seats or grips');
100
+ if (!Array.isArray(a.anchors) || !a.anchors.length)
101
+ fail('SCHEMA', 'slotLayout', 'name at least one anchor', { reason: 'slot-anchors-missing' });
102
+ const seen = new Set();
103
+ const anchors = a.anchors.map(w => {
104
+ const id = typeof w?.id === 'string' ? w.id.trim() : '';
105
+ if (!id)
106
+ fail('SCHEMA', 'slotLayout', 'an anchor needs an id');
107
+ if (seen.has(id))
108
+ fail('SCHEMA', 'slotLayout', `two anchors are called ${id}`, { reason: 'slot-anchor-duplicate', anchor: id });
109
+ seen.add(id);
110
+ if (!Object.hasOwn(FIGURE_FACES, String(w.face)))
111
+ fail('SCHEMA', 'slotLayout', `${String(w.face)} is not a face`);
112
+ if (FIGURE_FACES[w.face] !== 'y')
113
+ fail('SLOT_LAYOUT_FACE', 'slotLayout', 'an anchor is the top or the bottom of a part', { reason: 'slot-anchor-not-flat', anchor: id, part: String(w.part), face: String(w.face) });
114
+ const place = nodeById(m, w.part);
115
+ if (!place || place.op !== 'place@1')
116
+ fail('TARGET_ABSENT', 'slotLayout', `${String(w.part)} is not a placed part`, { reason: 'slot-anchor-no-part', anchor: id, part: String(w.part) });
117
+ return { id, place, face: w.face };
118
+ });
119
+ const layout = structuredClone(a.layout);
120
+ const issues = validateSlotLayout(layout, { anchors: seen });
121
+ const problems = issues.length ? issues : persistenceIssues(layout);
122
+ if (problems.length)
123
+ fail('SLOT_LAYOUT', `slotLayout.layout.${problems[0].path}`, problems.map(i => `${i.code} at ${i.path}`).join('; '), { reason: 'slot-layout-issues', issues: problems });
124
+ const declaration = {
125
+ label,
126
+ role: a.role,
127
+ anchors: anchors.map(x => ({ id: x.id, frame: '', pose: { placement: x.place.outputs.placed, feature: '' } })),
128
+ layout
129
+ };
130
+ const taken = new Set(asset.document.capabilities.bindings.map((b) => b.id));
131
+ for (const slot of figureSlotPlacesOf(declaration)) {
132
+ if (!slot.accepts.length)
133
+ fail('SCHEMA', slot.id, 'name at least one type each slot takes', { reason: 'slot-accepts-empty', slot: slot.id });
134
+ if (taken.has(slot.id))
135
+ fail('DUPLICATE_BINDING', slot.id, 'a place with this id exists', { reason: 'slot-id-taken', slot: slot.id });
136
+ }
137
+ // The faces are added to the graph only once the layout is sound, so a refused one leaves the figure as it was.
138
+ anchors.forEach((x, i) => {
139
+ const feature = faceFeatureOf(m, x.place, x.face);
140
+ declaration.anchors[i].frame = feature.params.frame;
141
+ declaration.anchors[i].pose.feature = feature.outputs.pose;
142
+ });
143
+ const before = asset.document.capabilities.slotLayout;
144
+ asset.document.capabilities.slotLayout = declaration;
145
+ const kept = new Set(declaration.anchors.map(x => x.pose.feature));
146
+ for (const old of (before?.anchors ?? []))
147
+ if (!kept.has(old.pose.feature))
148
+ dropIfUnused(asset, old.pose.feature);
149
+ return asset;
150
+ }
151
+ export function removeSlotLayout(asset) {
152
+ const before = asset.document.capabilities.slotLayout;
153
+ if (!before)
154
+ fail('TARGET_ABSENT', 'slotLayout', 'this figure has no slot layout');
155
+ delete asset.document.capabilities.slotLayout;
156
+ for (const old of before.anchors)
157
+ dropIfUnused(asset, old.pose.feature);
158
+ return asset;
159
+ }
160
+ /**
161
+ * A figure's slot layout as `set-slot-layout` takes it back (ADR-0118): its label, role and layout, and each anchor as
162
+ * the part and the face it stands on -- read from the faces the declaration names. Undefined when it has none. A screen
163
+ * edits from this and sends the whole command again; it never reads the graph itself.
164
+ */
165
+ export function figureSlotLayoutOf(asset) {
166
+ const declared = asset.document.capabilities.slotLayout;
167
+ if (!declared)
168
+ return undefined;
169
+ const nodes = asset.document.model.nodes;
170
+ return {
171
+ label: declared.label,
172
+ role: declared.role,
173
+ anchors: declared.anchors.map((a) => ({
174
+ id: a.id,
175
+ part: nodes.find(n => n.op === 'place@1' && n.outputs?.placed === a.pose.placement)?.id,
176
+ face: nodes.find(n => n.op === 'feature@1' && n.outputs?.pose === a.pose.feature)?.params?.name
177
+ })),
178
+ layout: structuredClone(declared.layout)
179
+ };
180
+ }
181
+ /** The face and the room a place read, once nothing else reads them. */
182
+ function dropBindingRefs(asset, binding) {
183
+ const m = asset.document.model;
184
+ const refs = [binding.pose?.feature, ...(binding.contacts ?? []).map((c) => c.feature)].filter(Boolean);
185
+ for (const ref of refs)
186
+ dropIfUnused(asset, ref);
187
+ const declared = new Set([...stringsIn(asset.occupancy), ...stringsIn(asset.document.capabilities)]);
188
+ for (const ref of binding.region?.dimensions ?? [])
189
+ if (!declared.has(ref) && !m.nodes.some((n) => n.args.includes(ref)))
190
+ m.constants = m.constants.filter((c) => c.id !== ref);
191
+ }
192
+ /** The places a figure has: its declared bindings, then the slots its slot layout unfolds into. */
193
+ export function figureBindingsOf(asset) {
194
+ const m = asset.document.model;
195
+ const constant = (ref) => m.constants.find((c) => c.id === ref)?.value;
196
+ const declared = asset.document.capabilities.bindings.map((b) => {
197
+ const surface = typeof b.pose === 'string' ? null : b.pose;
198
+ const place = surface
199
+ ? m.nodes.find((n) => n.op === 'place@1' && n.outputs.placed === surface.placement)
200
+ : null;
201
+ const feature = surface ? writerOf(m, surface.feature) : null;
202
+ const sizes = (b.region?.dimensions ?? []).map(constant);
203
+ return {
204
+ id: b.id,
205
+ label: b.label,
206
+ role: b.role,
207
+ part: place?.id ?? null,
208
+ face: feature?.params?.name ?? null,
209
+ accepts: [...b.accepts],
210
+ capacity: b.capacity,
211
+ region: sizes.length === 3 && sizes.every((v) => typeof v === 'number')
212
+ ? { x: sizes[0], y: sizes[1], z: sizes[2] }
213
+ : null
214
+ };
215
+ });
216
+ const slots = figureSlotPlacesOf(asset.document.capabilities.slotLayout).map(p => {
217
+ const place = m.nodes.find((n) => n.op === 'place@1' && n.outputs.placed === p.pose.placement);
218
+ const feature = writerOf(m, p.pose.feature);
219
+ return {
220
+ id: p.id,
221
+ label: p.label,
222
+ role: p.role,
223
+ part: place?.id ?? null,
224
+ face: feature?.params?.name ?? null,
225
+ accepts: [...p.accepts],
226
+ capacity: p.capacity,
227
+ region: { x: p.allowed.width, y: p.allowed.height, z: p.allowed.depth },
228
+ slot: {
229
+ tier: p.tier,
230
+ slot: p.slot,
231
+ anchorId: p.anchorId,
232
+ tierPosition: { ...p.tierPosition },
233
+ tierRotation: p.tierRotation,
234
+ offset: { ...p.offset },
235
+ rotation: p.rotation
236
+ }
237
+ };
238
+ });
239
+ return [...declared, ...slots];
240
+ }
241
+ //# sourceMappingURL=authoring-bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-bindings.js","sourceRoot":"","sources":["../src/authoring-bindings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { FigureAuthoringAction } from './authoring-types.ts';
2
+ type Dynamic = any;
3
+ export declare function linkDimension(asset: Dynamic, a: Extract<FigureAuthoringAction, {
4
+ kind: 'link-dimension';
5
+ }>): Dynamic;
6
+ export declare function unlinkDimension(asset: Dynamic, a: Extract<FigureAuthoringAction, {
7
+ kind: 'unlink-dimension';
8
+ }>): Dynamic;
9
+ export {};
10
+ //# sourceMappingURL=authoring-dimensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-dimensions.d.ts","sourceRoot":"","sources":["../src/authoring-dimensions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAA4C,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAgB3G,KAAK,OAAO,GAAG,GAAG,CAAA;AAElB,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAAG,OAAO,CAgDpH;AAWD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,GAC9D,OAAO,CAuBT"}
@@ -0,0 +1,88 @@
1
+ /*
2
+ * Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import { fail, nodeById, writerOf, namer, scaled, termRefs, sumOf, stableDimension, ownInput, followsAlready, dropIfUnused } from "./authoring-nodes.js";
5
+ import { rewriteJoints } from "./joint-writing.js";
6
+ export function linkDimension(asset, a) {
7
+ const m = asset.document.model;
8
+ const path = `${a.part}.${a.axis}`;
9
+ const mine = stableDimension(m, a.part, a.axis, path);
10
+ if (followsAlready(m, a.part, a.axis) && !a.replace)
11
+ fail('DIMENSION_LINKED', path, `${a.part}'s ${a.axis} already follows something; pass replace to change what it follows, or unlink it first`);
12
+ const sum = Object.hasOwn(a, 'sum');
13
+ const terms = sum
14
+ ? a.sum
15
+ : [
16
+ {
17
+ from: a.source,
18
+ ...(a.times !== undefined ? { times: a.times } : {})
19
+ }
20
+ ];
21
+ const plus = a.plus ?? 0;
22
+ /* Each term is checked for a loop as a one-term link is: none may read the measure it would set. */
23
+ for (const t of Array.isArray(terms) ? terms : [])
24
+ if (t?.from?.of === 'part' && t.from.part === a.part && t.from.axis === a.axis)
25
+ fail('DIMENSION_CYCLE', path, `${a.part}'s ${a.axis} cannot follow itself`);
26
+ const refs = termRefs(m, asset, terms, plus, path);
27
+ for (const [i, { ref }] of refs.entries()) {
28
+ const source = terms[i].from;
29
+ if (ref === mine)
30
+ fail('DIMENSION_CYCLE', path, `${a.part}'s ${a.axis} cannot follow itself`);
31
+ if (reaches(m, ref, mine))
32
+ fail('DIMENSION_CYCLE', path, `${String(source.of === 'part' ? source.part : source.of)} already follows ${a.part}'s ${a.axis}`);
33
+ }
34
+ const name = namer(m, `${a.part}.${a.axis}`);
35
+ const value = sum
36
+ ? scaled(m, name, sumOf(m, name, refs, 'follows.sum'), 1, plus, 'follows')
37
+ : scaled(m, name, refs[0].ref, refs[0].k, plus, 'follows');
38
+ const node = nodeById(m, `${a.part}.dimension.${a.axis}`);
39
+ const was = node.args[0];
40
+ const owned = ownInput(m, a.part, was) ? was : `${a.part}.size.${a.axis}`;
41
+ node.args = [value, node.args[1]];
42
+ // Joints read this part's size; made again from their records, they read the size as it now is.
43
+ if (asset.joints?.length)
44
+ rewriteJoints(asset);
45
+ // The part's own control is no longer read by anything; leaving it would show a dial that changes nothing.
46
+ dropIfUnused(asset, was, owned);
47
+ return asset;
48
+ }
49
+ /** Whether one value is worked out from another, so a link cannot be made to close a loop. */
50
+ function reaches(m, from, target, seen = new Set()) {
51
+ if (from === target)
52
+ return true;
53
+ if (seen.has(from))
54
+ return false;
55
+ seen.add(from);
56
+ const writer = writerOf(m, from);
57
+ return !!writer && writer.args.some((ref) => reaches(m, ref, target, seen));
58
+ }
59
+ export function unlinkDimension(asset, a) {
60
+ const m = asset.document.model;
61
+ const path = `${a.part}.${a.axis}`;
62
+ if (!(Number.isFinite(a.mm) && a.mm > 0))
63
+ fail('GEOMETRY_DOMAIN', path, 'a positive length is required');
64
+ stableDimension(m, a.part, a.axis, path);
65
+ if (!followsAlready(m, a.part, a.axis))
66
+ fail('EDIT_TARGET', path, `${a.part}'s ${a.axis} does not follow anything`);
67
+ const id = `${a.part}.size.${a.axis}`;
68
+ /*
69
+ The part's own field may still be there: the declared room was measured from it and still reads it, so it stayed
70
+ when the measure began to follow (ADR-0097). Setting the measure back to fixed takes that field back -- it is the
71
+ part's own number -- rather than refusing (found 2026-09-27: 「고정으로 되돌리기」 failed on any figure with a room).
72
+ Only a field of the part's own kind: anything else by that name is refused as before.
73
+ */
74
+ const kept = m.inputs.find((i) => i.id === id);
75
+ if (kept && !(kept.role === 'design' && kept.unit === 'mm'))
76
+ fail('DUPLICATE_WRITER', path, `${id} already exists`);
77
+ if (!kept)
78
+ m.inputs.push({ id, unit: 'mm', min: Number.MIN_VALUE, max: Number.MAX_VALUE, role: 'design' });
79
+ asset.designInputs[id] = a.mm;
80
+ const node = nodeById(m, `${a.part}.dimension.${a.axis}`);
81
+ const was = node.args[0];
82
+ node.args = [id, node.args[1]];
83
+ if (asset.joints?.length)
84
+ rewriteJoints(asset);
85
+ dropIfUnused(asset, was);
86
+ return asset;
87
+ }
88
+ //# sourceMappingURL=authoring-dimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-dimensions.js","sourceRoot":"","sources":["../src/authoring-dimensions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type Axis } from './words.ts';
2
+ import { type FigureAuthoringAction, type FigureMotionRequest } from './authoring-types.ts';
3
+ type Dynamic = any;
4
+ export declare function attach(asset: Dynamic, a: Extract<FigureAuthoringAction, {
5
+ kind: 'attach';
6
+ }>, twist?: {
7
+ axis: Axis;
8
+ deg: number;
9
+ }): Dynamic;
10
+ export declare function addMotion(asset: Dynamic, a: FigureMotionRequest, follow?: {
11
+ terms: Array<{
12
+ of: string;
13
+ k: number;
14
+ }>;
15
+ c: number;
16
+ sum: boolean;
17
+ }, sign?: 1 | -1): Dynamic;
18
+ /** "This part does not move any more." The control it created goes with it, and so does its clip. */
19
+ export declare function removeMotion(asset: Dynamic, a: {
20
+ kind: 'remove-motion';
21
+ part: string;
22
+ }): Dynamic;
23
+ export {};
24
+ //# sourceMappingURL=authoring-fastening.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-fastening.d.ts","sourceRoot":"","sources":["../src/authoring-fastening.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,IAAI,EAAQ,MAAM,YAAY,CAAA;AAC5C,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAA;AAgC7B,KAAK,OAAO,GAAG,GAAG,CAAA;AAElB,wBAAgB,MAAM,CACpB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EACrD,KAAK,CAAC,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClC,OAAO,CA+NT;AAkLD,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,mBAAmB,EACtB,MAAM,CAAC,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,EAC7E,IAAI,GAAE,CAAC,GAAG,CAAC,CAAK,GACf,OAAO,CA8KT;AAED,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAsBhG"}