@hatiolab/figure-model 0.1.36 → 0.1.37
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/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/v3-asset-types.d.ts +89 -16
- package/dist/v3-asset-types.d.ts.map +1 -1
- package/dist/v3-asset.d.ts.map +1 -1
- package/dist/v3-asset.js +34 -25
- package/dist/v3-asset.js.map +1 -1
- package/dist/v3-authoring-actions.d.ts +97 -0
- package/dist/v3-authoring-actions.d.ts.map +1 -0
- package/dist/v3-authoring-actions.js +384 -0
- package/dist/v3-authoring-actions.js.map +1 -0
- package/dist/v3-capabilities.d.ts.map +1 -1
- package/dist/v3-capabilities.js +4 -77
- package/dist/v3-capabilities.js.map +1 -1
- package/dist/v3-driver.d.ts +24 -1
- package/dist/v3-driver.d.ts.map +1 -1
- package/dist/v3-driver.js +68 -2
- package/dist/v3-driver.js.map +1 -1
- package/dist/v3-from-v2.d.ts +25 -1
- package/dist/v3-from-v2.d.ts.map +1 -1
- package/dist/v3-from-v2.js +598 -21
- package/dist/v3-from-v2.js.map +1 -1
- package/dist/v3-gate.d.ts +59 -6
- package/dist/v3-gate.d.ts.map +1 -1
- package/dist/v3-gate.js +291 -45
- package/dist/v3-gate.js.map +1 -1
- package/dist/v3-graph-types.d.ts +9 -1
- package/dist/v3-graph-types.d.ts.map +1 -1
- package/dist/v3-graph.d.ts.map +1 -1
- package/dist/v3-graph.js +53 -1
- package/dist/v3-graph.js.map +1 -1
- package/dist/v3-kernel-version.d.ts +1 -1
- package/dist/v3-kernel-version.js +1 -1
- package/dist/v3-mesh-compare.d.ts +2 -5
- package/dist/v3-mesh-compare.d.ts.map +1 -1
- package/dist/v3-mesh-compare.js +2 -145
- package/dist/v3-mesh-compare.js.map +1 -1
- package/dist/v3-shape-sampling.d.ts +14 -0
- package/dist/v3-shape-sampling.d.ts.map +1 -0
- package/dist/v3-shape-sampling.js +120 -0
- package/dist/v3-shape-sampling.js.map +1 -0
- package/dist/v3-surface.d.ts +15 -0
- package/dist/v3-surface.d.ts.map +1 -0
- package/dist/v3-surface.js +104 -0
- package/dist/v3-surface.js.map +1 -0
- package/docs/prototypes/v3-asset.schema.json +0 -8
- package/docs/v3-asset-persistence.md +1 -1
- package/docs/v3-legacy-risk-audit-2026-09-23.md +39 -0
- package/docs/v3-operator-contracts.md +1 -0
- package/docs/v3-shape-dimension-contract.md +111 -0
- package/package.json +1 -1
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/*
|
|
5
|
+
* What a person is trying to say when they build a figure, as commands.
|
|
6
|
+
*
|
|
7
|
+
* The four things the hand-written sliding gate needed and the authoring API had no word for (V3 designer's
|
|
8
|
+
* ruling 2026-09-23): a dimension that follows something, a part fastened to a face, a part that moves, and the
|
|
9
|
+
* room the figure takes up. This file carries the first two; the other two follow.
|
|
10
|
+
*
|
|
11
|
+
* Every command here is pure. It clones the asset, edits the clone, compiles it, and returns it — so a command
|
|
12
|
+
* that fails throws with the original untouched, and one command is one step to undo. Part ids never change, so
|
|
13
|
+
* a reference an author or a connector holds keeps pointing at the same part after any of these.
|
|
14
|
+
*
|
|
15
|
+
* Frames. A part's placement is built from three nodes that are never merged, so adding one does not erase
|
|
16
|
+
* another (V3 designer's ruling: attachment and motion must not overwrite the same pose):
|
|
17
|
+
*
|
|
18
|
+
* <id>.local --<id>.pose--> <id>.seat --<id>.motion--> <parent>.local --<parent>.world--> asset
|
|
19
|
+
*
|
|
20
|
+
* `<id>.pose` is where the part sits on what it is fastened to. `<id>.motion` is how it moves from there, and is
|
|
21
|
+
* absent until something makes it move. `<parent>.world` is the parent's own chain, so moving or resizing the
|
|
22
|
+
* parent carries the child with it. A part that is fastened to nothing poses straight into the asset frame.
|
|
23
|
+
*/
|
|
24
|
+
import { compileV3Asset } from "./v3-asset.js";
|
|
25
|
+
import { V3ContractError } from "./v3-contract.js";
|
|
26
|
+
import { AXES } from "./types.js";
|
|
27
|
+
const fail = (code, path, message) => {
|
|
28
|
+
throw new V3ContractError(code, path, message);
|
|
29
|
+
};
|
|
30
|
+
/** The six faces of a box-shaped part, and the axis each one faces along. */
|
|
31
|
+
export const V3_FACES = { left: 'x', right: 'x', bottom: 'y', top: 'y', back: 'z', front: 'z' };
|
|
32
|
+
const SIGN = { left: -1, right: 1, bottom: -1, top: 1, back: -1, front: 1 };
|
|
33
|
+
const OPPOSITE = { left: 'right', right: 'left', bottom: 'top', top: 'bottom', back: 'front', front: 'back' };
|
|
34
|
+
const clone = (asset) => structuredClone(asset);
|
|
35
|
+
const nodeById = (m, id) => m.nodes.find((n) => n.id === id);
|
|
36
|
+
const writerOf = (m, ref) => m.nodes.find((n) => Object.values(n.outputs).includes(ref));
|
|
37
|
+
/** A part an authoring command can work with, and the pieces of it those commands need. */
|
|
38
|
+
function partOf(m, id, path) {
|
|
39
|
+
const place = nodeById(m, id);
|
|
40
|
+
if (!place || place.op !== 'place@1')
|
|
41
|
+
fail('TARGET_ABSENT', path, `${id} is not a placed part`);
|
|
42
|
+
const shape = writerOf(m, place.args[0]);
|
|
43
|
+
if (!shape)
|
|
44
|
+
fail('TARGET_ABSENT', path, `${id} has no shape`);
|
|
45
|
+
const pose = nodeById(m, `${id}.pose`);
|
|
46
|
+
if (!pose || pose.op !== 'rigid@1')
|
|
47
|
+
fail('EDIT_TARGET', path, `${id} is not posed by a rigid@1 this command can read`);
|
|
48
|
+
return { place, shape, pose };
|
|
49
|
+
}
|
|
50
|
+
/** The three size references of a box-shaped part, or a refusal naming what it is instead. */
|
|
51
|
+
function sizeRefsOf(m, id, path) {
|
|
52
|
+
const { shape } = partOf(m, id, path);
|
|
53
|
+
if (shape.op !== 'box-shape@1' && shape.op !== 'rounded-box@1' && shape.op !== 'rounded-box@2')
|
|
54
|
+
fail('EDIT_TARGET', path, `${id} is a ${shape.op}; a face of it is not an axis-aligned plane this command can measure`);
|
|
55
|
+
return { x: shape.args[0], y: shape.args[1], z: shape.args[2] };
|
|
56
|
+
}
|
|
57
|
+
/** A part with no turn in its pose: a face of a turned body is not the plane this command assumes. */
|
|
58
|
+
function requireUnturned(m, asset, id, path) {
|
|
59
|
+
const { pose } = partOf(m, id, path);
|
|
60
|
+
for (const ref of pose.args.slice(3, 6)) {
|
|
61
|
+
const constant = m.constants.find((c) => c.id === ref);
|
|
62
|
+
const value = constant ? constant.value : asset.designInputs[ref];
|
|
63
|
+
if (value === undefined || value !== 0)
|
|
64
|
+
fail('EDIT_TARGET', path, `${id} is turned; fastening a turned part by its faces is not covered by this command`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** Fresh node ids under a part, so two commands never claim one id. */
|
|
68
|
+
function namer(m, prefix) {
|
|
69
|
+
const taken = new Set([...m.nodes.map((n) => n.id), ...m.nodes.flatMap((n) => Object.values(n.outputs)), ...m.constants.map((c) => c.id), ...m.inputs.map((i) => i.id)]);
|
|
70
|
+
return (hint) => {
|
|
71
|
+
let id = `${prefix}.${hint}`;
|
|
72
|
+
for (let k = 2; taken.has(id) || taken.has(`${id}.value`); k++)
|
|
73
|
+
id = `${prefix}.${hint}.${k}`;
|
|
74
|
+
taken.add(id);
|
|
75
|
+
taken.add(`${id}.value`);
|
|
76
|
+
return id;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/** A constant, reusing one that already holds the same number in the same unit. */
|
|
80
|
+
function constantOf(m, unit, value, hint) {
|
|
81
|
+
const found = m.constants.find((c) => c.unit === unit && c.value === value);
|
|
82
|
+
if (found)
|
|
83
|
+
return found.id;
|
|
84
|
+
const id = `${hint}.${unit}.${String(value).replace(/[^0-9a-zA-Z]/g, '_')}`;
|
|
85
|
+
m.constants.push({ id, unit, value });
|
|
86
|
+
return id;
|
|
87
|
+
}
|
|
88
|
+
/** value = ref × times + plus, written as nodes, and folded away when there is nothing to do. */
|
|
89
|
+
function scaled(m, name, ref, times, plus, hint) {
|
|
90
|
+
let out = ref;
|
|
91
|
+
if (times !== 1) {
|
|
92
|
+
const id = name(`${hint}.times`);
|
|
93
|
+
m.nodes.push({ id, op: 'mul@1', args: [out, constantOf(m, 'ratio', times, 'k')], outputs: { value: `${id}.value` } });
|
|
94
|
+
out = `${id}.value`;
|
|
95
|
+
}
|
|
96
|
+
if (plus !== 0) {
|
|
97
|
+
const id = name(`${hint}.plus`);
|
|
98
|
+
m.nodes.push({ id, op: 'add@1', args: [out, constantOf(m, 'mm', plus, 'd')], outputs: { value: `${id}.value` } });
|
|
99
|
+
out = `${id}.value`;
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
function sourceRef(m, asset, source, path) {
|
|
104
|
+
if (!source || typeof source !== 'object')
|
|
105
|
+
fail('SCHEMA', path, 'a dimension source is required');
|
|
106
|
+
if (source.of === 'instance') {
|
|
107
|
+
const id = `size.${source.axis}`;
|
|
108
|
+
if (!m.inputs.some((i) => i.id === id))
|
|
109
|
+
fail('TARGET_ABSENT', path, `the instance has no ${id}; declare it before following it`);
|
|
110
|
+
return id;
|
|
111
|
+
}
|
|
112
|
+
if (source.of === 'input') {
|
|
113
|
+
const input = m.inputs.find((i) => i.id === source.input);
|
|
114
|
+
if (!input)
|
|
115
|
+
fail('TARGET_ABSENT', path, `${source.input} is not an input of this asset`);
|
|
116
|
+
if (input.role === 'state')
|
|
117
|
+
fail('EDIT_TARGET', path, `${source.input} is a state input; a dimension that follows state is a different declaration`);
|
|
118
|
+
return source.input;
|
|
119
|
+
}
|
|
120
|
+
if (source.of === 'part')
|
|
121
|
+
return sizeRefsOf(m, source.part, path)[source.axis];
|
|
122
|
+
return fail('SCHEMA', path, `${String(source.of)} is not a dimension source`);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Whether this side of the part already follows something. A part created by the authoring API reads its own
|
|
126
|
+
* `<id>.size.<axis>` input and nothing else; anything else in that argument is a link, whether it is a chain of
|
|
127
|
+
* nodes or the followed value used directly.
|
|
128
|
+
*/
|
|
129
|
+
const followsAlready = (part, axis, ref) => ref !== `${part}.size.${axis}`;
|
|
130
|
+
function linkDimension(asset, a) {
|
|
131
|
+
const m = asset.document.model;
|
|
132
|
+
const path = `${a.part}.${a.axis}`;
|
|
133
|
+
const sizes = sizeRefsOf(m, a.part, path);
|
|
134
|
+
const current = sizes[a.axis];
|
|
135
|
+
if (followsAlready(a.part, a.axis, current) && !a.replace)
|
|
136
|
+
fail('DIMENSION_LINKED', path, `${a.part}'s ${a.axis} already follows something; pass replace to change what it follows, or unlink it first`);
|
|
137
|
+
const times = a.times ?? 1;
|
|
138
|
+
const plus = a.plus ?? 0;
|
|
139
|
+
if (!Number.isFinite(times) || !Number.isFinite(plus))
|
|
140
|
+
fail('SCHEMA', path, 'finite times and plus required');
|
|
141
|
+
const from = sourceRef(m, asset, a.source, path);
|
|
142
|
+
if (from === current)
|
|
143
|
+
fail('DIMENSION_CYCLE', path, `${a.part}'s ${a.axis} cannot follow itself`);
|
|
144
|
+
const name = namer(m, `${a.part}.${a.axis}`);
|
|
145
|
+
const value = scaled(m, name, from, times, plus, 'follows');
|
|
146
|
+
if (value === from && a.source.of === 'part' && a.source.part === a.part)
|
|
147
|
+
fail('DIMENSION_CYCLE', path, `${a.part}'s ${a.axis} cannot follow itself`);
|
|
148
|
+
const shape = partOf(m, a.part, path).shape;
|
|
149
|
+
shape.args = shape.args.map((ref) => (ref === current ? value : ref));
|
|
150
|
+
// The part's own input is no longer read by anything; leaving it would show a control that changes nothing.
|
|
151
|
+
dropIfUnused(asset, current, `${a.part}.size.${a.axis}`);
|
|
152
|
+
return asset;
|
|
153
|
+
}
|
|
154
|
+
function unlinkDimension(asset, a) {
|
|
155
|
+
const m = asset.document.model;
|
|
156
|
+
const path = `${a.part}.${a.axis}`;
|
|
157
|
+
if (!(Number.isFinite(a.mm) && a.mm > 0))
|
|
158
|
+
fail('GEOMETRY_DOMAIN', path, 'a positive length is required');
|
|
159
|
+
const sizes = sizeRefsOf(m, a.part, path);
|
|
160
|
+
const current = sizes[a.axis];
|
|
161
|
+
if (!followsAlready(a.part, a.axis, current))
|
|
162
|
+
fail('EDIT_TARGET', path, `${a.part}'s ${a.axis} does not follow anything`);
|
|
163
|
+
const id = `${a.part}.size.${a.axis}`;
|
|
164
|
+
if (m.inputs.some((i) => i.id === id))
|
|
165
|
+
fail('DUPLICATE_WRITER', path, `${id} already exists`);
|
|
166
|
+
m.inputs.push({ id, unit: 'mm', min: Number.MIN_VALUE, max: Number.MAX_VALUE, role: 'design' });
|
|
167
|
+
asset.designInputs[id] = a.mm;
|
|
168
|
+
const shape = partOf(m, a.part, path).shape;
|
|
169
|
+
shape.args = shape.args.map((ref) => (ref === current ? id : ref));
|
|
170
|
+
dropIfUnused(asset, current);
|
|
171
|
+
return asset;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Remove a value nothing reads any more, and whatever fed only it. An input is removed only when it is the one
|
|
175
|
+
* this command owns — the part's own dimension control. A shared input, such as the instance's size, stays even
|
|
176
|
+
* when the command that stopped reading it was the last reader: it is the author's, not this command's.
|
|
177
|
+
*/
|
|
178
|
+
function dropIfUnused(asset, ref, ownedInput) {
|
|
179
|
+
const m = asset.document.model;
|
|
180
|
+
const referenced = (r) => m.nodes.some((n) => n.args.includes(r) || Object.values(n.params ?? {}).includes(r)) || Object.values(asset.occupancy?.bounds ?? {}).some((b) => b.min === r || b.max === r);
|
|
181
|
+
if (referenced(ref))
|
|
182
|
+
return;
|
|
183
|
+
const input = m.inputs.findIndex((i) => i.id === ref);
|
|
184
|
+
if (input >= 0) {
|
|
185
|
+
if (ref !== ownedInput)
|
|
186
|
+
return;
|
|
187
|
+
m.inputs.splice(input, 1);
|
|
188
|
+
delete asset.designInputs[ref];
|
|
189
|
+
delete asset.stateDefaults[ref];
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const writer = writerOf(m, ref);
|
|
193
|
+
if (!writer || writer.op === 'place@1' || Object.values(writer.outputs).some((r) => r !== ref && referenced(r)))
|
|
194
|
+
return;
|
|
195
|
+
m.nodes = m.nodes.filter((n) => n !== writer);
|
|
196
|
+
for (const arg of writer.args)
|
|
197
|
+
dropIfUnused(asset, arg);
|
|
198
|
+
}
|
|
199
|
+
/** Which part each part is fastened to, read from the frames rather than from a second record of it. */
|
|
200
|
+
function parentOf(m, id) {
|
|
201
|
+
if (!nodeById(m, `${id}.chain`))
|
|
202
|
+
return null;
|
|
203
|
+
// The seat's own frame leads either to a motion node or, when the part does not move, to an identity rigid.
|
|
204
|
+
const above = nodeById(m, `${id}.motion`) ?? nodeById(m, `${id}.seat.rigid`);
|
|
205
|
+
const match = /^(.*)\.local$/.exec(String(above?.params?.to));
|
|
206
|
+
return match && match[1] !== id ? match[1] : null;
|
|
207
|
+
}
|
|
208
|
+
function attach(asset, a) {
|
|
209
|
+
const m = asset.document.model;
|
|
210
|
+
const path = `${a.part} to ${a.to?.part}`;
|
|
211
|
+
if (!a.to || typeof a.to !== 'object')
|
|
212
|
+
fail('SCHEMA', path, 'a target part and face are required');
|
|
213
|
+
if (a.part === a.to.part)
|
|
214
|
+
fail('ATTACH_CYCLE', path, 'a part cannot be fastened to itself');
|
|
215
|
+
for (const face of [a.face, a.to.face])
|
|
216
|
+
if (!Object.hasOwn(V3_FACES, String(face)))
|
|
217
|
+
fail('SCHEMA', path, `${String(face)} is not a face`);
|
|
218
|
+
const facing = a.facing ?? 'meet';
|
|
219
|
+
if (facing !== 'meet' && facing !== 'flush')
|
|
220
|
+
fail('SCHEMA', path, `${String(facing)} is neither meet nor flush`);
|
|
221
|
+
const gap = a.gap ?? 0;
|
|
222
|
+
if (!Number.isFinite(gap))
|
|
223
|
+
fail('SCHEMA', path, 'a finite gap is required');
|
|
224
|
+
const axis = V3_FACES[a.to.face];
|
|
225
|
+
if (V3_FACES[a.face] !== axis)
|
|
226
|
+
fail('ATTACH_FACE', path, `${a.face} faces along ${V3_FACES[a.face]} and ${a.to.face} along ${axis}; fastening them would need a turn, which this command does not do`);
|
|
227
|
+
if (facing === 'meet' && a.face !== OPPOSITE[a.to.face])
|
|
228
|
+
fail('ATTACH_FACE', path, `to meet ${a.to.face}, ${a.part} offers its ${OPPOSITE[a.to.face]}; pass flush to lay ${a.face} in the same plane instead`);
|
|
229
|
+
if (facing === 'flush' && a.face !== a.to.face)
|
|
230
|
+
fail('ATTACH_FACE', path, `to lie flush with ${a.to.face}, ${a.part} offers its ${a.to.face}`);
|
|
231
|
+
if (parentOf(m, a.part) && !a.replace)
|
|
232
|
+
fail('ATTACH_REPLACED', path, `${a.part} is already fastened to ${parentOf(m, a.part)}; pass replace to move it, or detach it first`);
|
|
233
|
+
// A part cannot end up its own ancestor.
|
|
234
|
+
for (let up = a.to.part; up; up = parentOf(m, up))
|
|
235
|
+
if (up === a.part)
|
|
236
|
+
fail('ATTACH_CYCLE', path, `${a.to.part} already hangs from ${a.part}`);
|
|
237
|
+
const mine = sizeRefsOf(m, a.part, path);
|
|
238
|
+
const theirs = sizeRefsOf(m, a.to.part, path);
|
|
239
|
+
requireUnturned(m, asset, a.part, path);
|
|
240
|
+
requireUnturned(m, asset, a.to.part, path);
|
|
241
|
+
const name = namer(m, `${a.part}.on.${a.to.part}`);
|
|
242
|
+
const half = (ref, hint) => scaled(m, name, ref, 0.5, 0, hint);
|
|
243
|
+
const sign = SIGN[a.to.face];
|
|
244
|
+
/*
|
|
245
|
+
Along the face's own axis. `meet`: the part's centre is half its own depth past the target's face, plus the
|
|
246
|
+
gap. `flush`: the part's centre is half its own depth back from that face, so its named face lies in it.
|
|
247
|
+
*/
|
|
248
|
+
const reach = facing === 'meet' ? sign * (gap + 0) : -sign * 0;
|
|
249
|
+
void reach;
|
|
250
|
+
const ownHalf = half(mine[axis], `half.${axis}`);
|
|
251
|
+
const theirHalf = half(theirs[axis], `their.half.${axis}`);
|
|
252
|
+
const outward = facing === 'meet' ? sign : -sign;
|
|
253
|
+
const alongId = name(`along.${axis}`);
|
|
254
|
+
m.nodes.push({ id: alongId, op: 'add@1', args: [scaled(m, name, theirHalf, sign, 0, `face.${axis}`), scaled(m, name, ownHalf, outward, gap * outward, `stand.${axis}`)], outputs: { value: `${alongId}.value` } });
|
|
255
|
+
const translation = { x: '', y: '', z: '' };
|
|
256
|
+
translation[axis] = `${alongId}.value`;
|
|
257
|
+
// Across the face. Centred by default; min and max keep the two parts' edges level as either is resized.
|
|
258
|
+
for (const other of AXES.filter(x => x !== axis)) {
|
|
259
|
+
const how = a.align?.[other] ?? 'centre';
|
|
260
|
+
if (how === 'centre')
|
|
261
|
+
translation[other] = constantOf(m, 'mm', 0, 'd');
|
|
262
|
+
else if (typeof how === 'object' && how && Number.isFinite(how.mm))
|
|
263
|
+
translation[other] = constantOf(m, 'mm', how.mm, 'd');
|
|
264
|
+
else if (how === 'min' || how === 'max') {
|
|
265
|
+
const s = how === 'min' ? -1 : 1;
|
|
266
|
+
const id = name(`align.${other}`);
|
|
267
|
+
m.nodes.push({
|
|
268
|
+
id,
|
|
269
|
+
op: 'add@1',
|
|
270
|
+
args: [scaled(m, name, half(theirs[other], `their.half.${other}`), s, 0, `edge.${other}`), scaled(m, name, half(mine[other], `half.${other}`), -s, 0, `inset.${other}`)],
|
|
271
|
+
outputs: { value: `${id}.value` }
|
|
272
|
+
});
|
|
273
|
+
translation[other] = `${id}.value`;
|
|
274
|
+
}
|
|
275
|
+
else
|
|
276
|
+
fail('SCHEMA', path, `${String(how)} is not an alignment`);
|
|
277
|
+
}
|
|
278
|
+
reseat(asset, a.part, `${a.to.part}.local`, [translation.x, translation.y, translation.z]);
|
|
279
|
+
return asset;
|
|
280
|
+
}
|
|
281
|
+
function detach(asset, a) {
|
|
282
|
+
const m = asset.document.model;
|
|
283
|
+
const path = a.part;
|
|
284
|
+
const parent = parentOf(m, a.part);
|
|
285
|
+
if (!parent)
|
|
286
|
+
fail('EDIT_TARGET', path, `${a.part} is not fastened to anything`);
|
|
287
|
+
// Where it stands now, kept as plain numbers in the asset frame, so detaching does not move it.
|
|
288
|
+
const evaluated = compileV3Asset(asset).evaluate();
|
|
289
|
+
const here = evaluated.geometry.find((g) => g.id === a.part);
|
|
290
|
+
if (!here)
|
|
291
|
+
fail('TARGET_ABSENT', path, `${a.part} is not drawn`);
|
|
292
|
+
const at = AXES.map((_axis, i) => constantOf(m, 'mm', round6(here.pose.t[i]), 'd'));
|
|
293
|
+
reseat(asset, a.part, asset.document.capabilities.assetFrame, at);
|
|
294
|
+
return asset;
|
|
295
|
+
}
|
|
296
|
+
const round6 = (v) => Math.round(v * 1e6) / 1e6;
|
|
297
|
+
/**
|
|
298
|
+
* Put a part's pose on a new frame with a new translation, and rebuild the chain that carries it to the asset.
|
|
299
|
+
* The part's own id, its shape and its `placed` reference all stay as they were.
|
|
300
|
+
*/
|
|
301
|
+
function reseat(asset, id, to, translation) {
|
|
302
|
+
const m = asset.document.model;
|
|
303
|
+
const { place, pose } = partOf(m, id, id);
|
|
304
|
+
const old = pose.args.slice(0, 3);
|
|
305
|
+
pose.args = [...translation, ...pose.args.slice(3)];
|
|
306
|
+
pose.params = { ...pose.params, to: `${id}.seat` };
|
|
307
|
+
const motion = nodeById(m, `${id}.motion`);
|
|
308
|
+
if (motion)
|
|
309
|
+
motion.params = { ...motion.params, from: `${id}.seat`, to };
|
|
310
|
+
// seat → the frame it is fastened to. Without a motion node the seat is that frame, through an identity rigid.
|
|
311
|
+
let chain = nodeById(m, `${id}.chain`);
|
|
312
|
+
if (!chain) {
|
|
313
|
+
chain = { id: `${id}.chain`, op: 'compose@1', args: ['', pose.outputs.pose], outputs: { pose: `${id}.chain.value` } };
|
|
314
|
+
m.nodes.push(chain);
|
|
315
|
+
}
|
|
316
|
+
let seat = nodeById(m, `${id}.seat.rigid`);
|
|
317
|
+
if (!motion) {
|
|
318
|
+
const zero = constantOf(m, 'mm', 0, 'd');
|
|
319
|
+
const noTurn = constantOf(m, 'deg', 0, 'a');
|
|
320
|
+
if (!seat) {
|
|
321
|
+
seat = { id: `${id}.seat.rigid`, op: 'rigid@1', args: [zero, zero, zero, noTurn, noTurn, noTurn], outputs: { pose: `${id}.seat.value` }, params: { from: `${id}.seat`, to } };
|
|
322
|
+
m.nodes.push(seat);
|
|
323
|
+
}
|
|
324
|
+
else
|
|
325
|
+
seat.params = { ...seat.params, to };
|
|
326
|
+
chain.args = [seat.outputs.pose, pose.outputs.pose];
|
|
327
|
+
}
|
|
328
|
+
else
|
|
329
|
+
chain.args = [motion.outputs.pose, pose.outputs.pose];
|
|
330
|
+
const parent = /^(.*)\.local$/.exec(to);
|
|
331
|
+
let world = nodeById(m, `${id}.world`);
|
|
332
|
+
if (parent && parent[1] !== id) {
|
|
333
|
+
const above = nodeById(m, `${parent[1]}.world`)?.outputs?.pose ?? nodeById(m, `${parent[1]}.chain`)?.outputs?.pose ?? nodeById(m, `${parent[1]}.pose`).outputs.pose;
|
|
334
|
+
if (!world) {
|
|
335
|
+
world = { id: `${id}.world`, op: 'compose@1', args: [above, chain.outputs.pose], outputs: { pose: `${id}.world.value` } };
|
|
336
|
+
m.nodes.push(world);
|
|
337
|
+
}
|
|
338
|
+
else
|
|
339
|
+
world.args = [above, chain.outputs.pose];
|
|
340
|
+
place.args = [place.args[0], world.outputs.pose];
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
if (world)
|
|
344
|
+
m.nodes = m.nodes.filter((n) => n !== world);
|
|
345
|
+
place.args = [place.args[0], chain.outputs.pose];
|
|
346
|
+
}
|
|
347
|
+
for (const ref of old)
|
|
348
|
+
dropIfUnused(asset, ref);
|
|
349
|
+
}
|
|
350
|
+
/** Apply one authoring command. Throws on any refusal, leaving the asset it was given untouched. */
|
|
351
|
+
export function applyV3Authoring(source, action) {
|
|
352
|
+
compileV3Asset(source);
|
|
353
|
+
if (!action || typeof action !== 'object')
|
|
354
|
+
fail('SCHEMA', 'action', 'an authoring action is required');
|
|
355
|
+
const asset = clone(source);
|
|
356
|
+
switch (action.kind) {
|
|
357
|
+
case 'link-dimension':
|
|
358
|
+
linkDimension(asset, action);
|
|
359
|
+
break;
|
|
360
|
+
case 'unlink-dimension':
|
|
361
|
+
unlinkDimension(asset, action);
|
|
362
|
+
break;
|
|
363
|
+
case 'attach':
|
|
364
|
+
attach(asset, action);
|
|
365
|
+
break;
|
|
366
|
+
case 'detach':
|
|
367
|
+
detach(asset, action);
|
|
368
|
+
break;
|
|
369
|
+
default:
|
|
370
|
+
fail('SCHEMA', 'action', `${String(action.kind)} is not an authoring action`);
|
|
371
|
+
}
|
|
372
|
+
compileV3Asset(asset);
|
|
373
|
+
return asset;
|
|
374
|
+
}
|
|
375
|
+
/** What each part is fastened to, for a reader that wants the structure rather than the graph. */
|
|
376
|
+
export function v3AttachmentsOf(asset) {
|
|
377
|
+
const m = asset.document.model;
|
|
378
|
+
const out = {};
|
|
379
|
+
for (const n of m.nodes)
|
|
380
|
+
if (n.op === 'place@1')
|
|
381
|
+
out[n.id] = parentOf(m, n.id);
|
|
382
|
+
return out;
|
|
383
|
+
}
|
|
384
|
+
//# sourceMappingURL=v3-authoring-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-authoring-actions.js","sourceRoot":"","sources":["../src/v3-authoring-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-capabilities.d.ts","sourceRoot":"","sources":["../src/v3-capabilities.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"v3-capabilities.d.ts","sourceRoot":"","sources":["../src/v3-capabilities.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAgBjE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,sBAAsB,CAElG"}
|
package/dist/v3-capabilities.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { compileV3Graph as compile } from "./v3-graph.js";
|
|
3
3
|
import { V3ContractError as ContractError } from "./v3-contract.js";
|
|
4
4
|
import { FIGURE_CAPABILITIES } from "./types.js";
|
|
5
|
+
import { resolveV3Surface, evaluateV3Surface } from "./v3-surface.js";
|
|
5
6
|
const fail = (code, path, message) => {
|
|
6
7
|
throw new ContractError(code, path, message);
|
|
7
8
|
};
|
|
@@ -53,60 +54,7 @@ function compileInternal(model, declaration) {
|
|
|
53
54
|
if (t.kind !== 'transform' || t.to !== doc.assetFrame || (from !== undefined && t.from !== from))
|
|
54
55
|
fail('FRAME_TYPE', path, 'transform must map declared local frame to assetFrame');
|
|
55
56
|
};
|
|
56
|
-
const resolveSurface = (contact, path) => {
|
|
57
|
-
fields(contact, ['placement', 'feature'], [], path);
|
|
58
|
-
const placedType = typeOf(contact.placement, path), featureType = typeOf(contact.feature, path);
|
|
59
|
-
const place = writers.get(contact.placement), feature = writers.get(contact.feature);
|
|
60
|
-
let source = place, selection;
|
|
61
|
-
if (place?.op === 'select-item@1') {
|
|
62
|
-
const repeat = writers.get(place.args[0]), assembly = repeat?.op === 'repeat@1' ? writers.get(repeat.args[1]) : null;
|
|
63
|
-
if (assembly?.op !== 'assembly@1' || !assembly.args.includes(place.params.member))
|
|
64
|
-
fail('SURFACE_PROVENANCE', path, 'selected member must belong to the referenced repeat assembly');
|
|
65
|
-
source = writers.get(place.params.member);
|
|
66
|
-
if (source?.op !== 'member@1')
|
|
67
|
-
fail('SURFACE_PROVENANCE', path, 'selected source must be a declared template member');
|
|
68
|
-
if (model.inputs.some((i) => i.id === place.args[1] && i.role === 'state'))
|
|
69
|
-
fail('TARGET_STATE', path, 'binding target index must not change as animation state');
|
|
70
|
-
selection = { collection: place.args[0], index: place.args[1], member: place.params.member };
|
|
71
|
-
}
|
|
72
|
-
else if (place?.op !== 'place@1')
|
|
73
|
-
fail('SURFACE_PROVENANCE', path, 'actual placement or selected repeated member required');
|
|
74
|
-
if (feature?.op !== 'feature@1')
|
|
75
|
-
fail('SURFACE_PROVENANCE', path, 'provider feature required');
|
|
76
|
-
if (placedType.kind !== 'placed' || placedType.frame !== doc.assetFrame || featureType.kind !== 'transform')
|
|
77
|
-
fail('FRAME_TYPE', path, 'contact must be in asset frame');
|
|
78
|
-
if (source.args[0] !== feature.args[0])
|
|
79
|
-
fail('SURFACE_OWNER', path, 'feature belongs to a different shape declaration');
|
|
80
|
-
const provider = types[feature.args[0]].provider, face = feature.params.name;
|
|
81
|
-
const normals = {
|
|
82
|
-
left: [-1, 0, 0],
|
|
83
|
-
right: [1, 0, 0],
|
|
84
|
-
bottom: [0, -1, 0],
|
|
85
|
-
top: [0, 1, 0],
|
|
86
|
-
back: [0, 0, -1],
|
|
87
|
-
front: [0, 0, 1],
|
|
88
|
-
start: [0, -1, 0],
|
|
89
|
-
end: [0, 1, 0]
|
|
90
|
-
};
|
|
91
|
-
const allowed = provider === 'box'
|
|
92
|
-
? ['left', 'right', 'bottom', 'top', 'back', 'front']
|
|
93
|
-
: provider === 'roundedBox'
|
|
94
|
-
? ['bottom', 'top']
|
|
95
|
-
: provider === 'cylinder'
|
|
96
|
-
? ['start', 'end']
|
|
97
|
-
: [];
|
|
98
|
-
if (!allowed.includes(face))
|
|
99
|
-
fail('SURFACE_UNSUPPORTED', path, 'feature is not a supported planar surface');
|
|
100
|
-
return {
|
|
101
|
-
...contact,
|
|
102
|
-
geometryId: selection ? null : place.id,
|
|
103
|
-
selection,
|
|
104
|
-
provider,
|
|
105
|
-
face,
|
|
106
|
-
frame: featureType.from,
|
|
107
|
-
normal: normals[face]
|
|
108
|
-
};
|
|
109
|
-
};
|
|
57
|
+
const resolveSurface = (contact, path) => resolveV3Surface({ types, writers, model, assetFrame: doc.assetFrame }, contact, path);
|
|
110
58
|
const poses = new Map();
|
|
111
59
|
for (const b of doc.bindings) {
|
|
112
60
|
fields(b, ['id', 'label', 'role', 'frame', 'pose', 'accepts', 'capacity'], ['region', 'contacts'], 'binding');
|
|
@@ -164,28 +112,7 @@ function compileInternal(model, declaration) {
|
|
|
164
112
|
fields(requests, [], [...ids], 'requests');
|
|
165
113
|
// Entire result is produced atomically; a failed graph/binding cannot return partial success.
|
|
166
114
|
const result = plan.evaluate(input);
|
|
167
|
-
const evaluateSurface = (s) =>
|
|
168
|
-
const placed = result.values[s.placement], local = result.values[s.feature], r = placed.pose.r;
|
|
169
|
-
const normal = r.map((row) => row.reduce((v, x, i) => v + x * s.normal[i], 0));
|
|
170
|
-
const t = r.map((row, j) => placed.pose.t[j] + row.reduce((v, x, i) => v + x * local.t[i], 0));
|
|
171
|
-
let geometryId = s.geometryId;
|
|
172
|
-
if (s.selection) {
|
|
173
|
-
const q = s.selection, item = result.values[q.collection].items.find((g) => g.index === result.values[q.index] && g.key === q.member);
|
|
174
|
-
if (!item)
|
|
175
|
-
fail('TARGET_ABSENT', s.placement, 'selected repeated item is absent');
|
|
176
|
-
geometryId = item.id;
|
|
177
|
-
}
|
|
178
|
-
return {
|
|
179
|
-
placement: s.placement,
|
|
180
|
-
feature: s.feature,
|
|
181
|
-
geometryId,
|
|
182
|
-
provider: s.provider,
|
|
183
|
-
face: s.face,
|
|
184
|
-
pose: { r: r.map((row) => [...row]), t },
|
|
185
|
-
normal,
|
|
186
|
-
provenance: 'verified-planar-surface'
|
|
187
|
-
};
|
|
188
|
-
};
|
|
115
|
+
const evaluateSurface = (s) => evaluateV3Surface(result.values, s);
|
|
189
116
|
const bindings = doc.bindings.map((b) => {
|
|
190
117
|
let region = null;
|
|
191
118
|
if (b.region) {
|
|
@@ -227,7 +154,7 @@ function compileInternal(model, declaration) {
|
|
|
227
154
|
}
|
|
228
155
|
};
|
|
229
156
|
});
|
|
230
|
-
return { geometry: result.geometry, bindings };
|
|
157
|
+
return { geometry: result.geometry, bindings, values: result.values };
|
|
231
158
|
}
|
|
232
159
|
};
|
|
233
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-capabilities.js","sourceRoot":"","sources":["../src/v3-capabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"v3-capabilities.js","sourceRoot":"","sources":["../src/v3-capabilities.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EAAE,cAAc,IAAI,OAAO,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGrE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe,EAAS,EAAE;IAClE,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAC9C,CAAC,CAAA;AACD,SAAS,MAAM,CAAC,CAAU,EAAE,QAAkB,EAAE,QAAkB,EAAE,IAAY;IAC9E,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAA;IAC5F,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;YAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;IACxF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;AACnH,CAAC;AACD,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,IAAY,EAAE,EAAE;IACxC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,0BAA0B,CAAC,CAAA;AAC1F,CAAC,CAAA;AACD,MAAM,UAAU,qBAAqB,CAAC,KAAc,EAAE,WAAoB;IACxE,OAAO,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;AAC5C,CAAC;AACD,SAAS,eAAe,CAAC,KAAc,EAAE,WAAoB;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EACzB,GAAG,GAAY,eAAe,CAAC,WAAW,CAAC,EAC3C,KAAK,GAAY,IAAI,CAAC,WAAW,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CACnB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE,CACjC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAiC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CACnG,CACF,EACD,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IACtB,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAA;IAC7E,IAAI,GAAG,CAAC,OAAO,KAAK,iBAAiB;QAAE,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACnF,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IAClC,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,uGAAuG;QACvG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;QACxE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK;YACvB,IAAI,CAAE,mBAAyC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACzD,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACpG,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAA;IACjH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAA;IAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7B,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QAC3C,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACf,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QAChE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAA;IACD,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,IAAa,EAAE,EAAE;QAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;YAC9F,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,uDAAuD,CAAC,CAAA;IACrF,CAAC,CAAA;IACD,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,IAAY,EAAW,EAAE,CACjE,gBAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACxF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;IACvB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAA;QAC7G,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;QAC7D,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;QAClE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACb,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,mDAAmD,CAAC,CAAA;QAC/G,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;aAC3D,CAAC;YACJ,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YACtC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;gBAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,kDAAkD,CAAC,CAAA;YACrG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QACpB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAA;QACrG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAA;QACjG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC;YACrD,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAA;QAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAA;YAC9D,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc;gBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAA;YAC5F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;gBACzE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,qCAAqC,CAAC,CAAA;YAC7D,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU;gBACnC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,mCAAmC,CAAC,CAAA;QAChH,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAA;YAC9E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,EACpB,QAAQ,GAAG,EAAE,CAAA;YACf,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;gBAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;gBAChE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;gBACvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACb,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IACD,OAAO;QACL,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC;QACnC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5C,QAAQ,CAAC,KAA6B,EAAE,WAAoC,EAAE;YAC5E,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,UAAU,CAAC,CAAA;YAC1C,8FAA8F;YAC9F,MAAM,MAAM,GAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC5C,MAAM,eAAe,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACpF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE;gBAC/C,IAAI,MAAM,GAAG,IAAI,CAAA;gBACjB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACb,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC/E,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,qCAAqC,CAAC,CAAA;oBACpE,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CAAA;gBAC9C,CAAC;gBACD,IAAI,WAAW,GAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA;gBACzE,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;oBACxB,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAA;oBACtD,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;oBAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC;wBACrD,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,iDAAiD,CAAC,CAAA;oBAC5E,MAAM,OAAO,GAAG,EAAE,CAAA;oBAClB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;oBAClE,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ;wBAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;oBAC3D,WAAW,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAA;gBAC5E,CAAC;gBACD,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,EAC9D,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBACnE,OAAO;oBACL,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;oBAChD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxD,MAAM;oBACN,QAAQ;oBACR,MAAM,EAAE;wBACN,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;wBACpC,WAAW;wBACX,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,0BAA0B,EAAE;wBACrE,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE;wBAC1D,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE;qBACxD;iBACF,CAAA;YACH,CAAC,CAAC,CAAA;YACF,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;QACvE,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/v3-driver.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { V3Asset, V3Driver } from './v3-asset-types.ts';
|
|
1
|
+
import type { V3Asset, V3Driver, V3StateInputPolicy } from './v3-asset-types.ts';
|
|
2
2
|
/** Refuses a driver list the contract does not allow. Called by `compileV3Asset`. */
|
|
3
3
|
export declare function validateV3Drivers(asset: V3Asset): void;
|
|
4
4
|
/** Wraps an angle into [-half, half) for the unit: half is 180 for degrees, π for radians. */
|
|
@@ -13,4 +13,27 @@ export declare function driverValue(driver: V3Driver, timeSeconds: number, unit?
|
|
|
13
13
|
* the driver or an external input is the active control source; this returns the drivers' side only.
|
|
14
14
|
*/
|
|
15
15
|
export declare function driverStates(asset: V3Asset, timeSeconds: number): Record<string, number>;
|
|
16
|
+
/** Refuses a `stateInputs` map the contract does not allow. Called by `compileV3Asset`. */
|
|
17
|
+
export declare function validateV3StateInputs(asset: V3Asset): void;
|
|
18
|
+
/**
|
|
19
|
+
* One step of a state value toward a target (V3 designer's ruling 2026-09-22).
|
|
20
|
+
*
|
|
21
|
+
* The rule lives here, not in each consumer: the renderer, a thumbnail and a test all call this. Straight
|
|
22
|
+
* line, no easing — the whole range of the input takes `sweep` seconds, so a half-range move takes half
|
|
23
|
+
* that. A machine moves at its own speed; it does not perform.
|
|
24
|
+
*
|
|
25
|
+
* **A new target part-way through continues from where the value is now.** That is why this takes the current
|
|
26
|
+
* value rather than a start and a progress: setting a new target can never make the figure jump.
|
|
27
|
+
*
|
|
28
|
+
* `sweep` of 0, or none, arrives at once. A state read from real equipment is a measurement, not a command,
|
|
29
|
+
* so the consumer applies it directly instead of calling this — a measured value must not be smoothed into
|
|
30
|
+
* something the machine never did.
|
|
31
|
+
*/
|
|
32
|
+
export declare function advanceStateValue(current: number, target: number, input: {
|
|
33
|
+
min: number;
|
|
34
|
+
max: number;
|
|
35
|
+
sweep?: number;
|
|
36
|
+
}, dtSeconds: number): number;
|
|
37
|
+
/** The policy for one state input, or an empty one. */
|
|
38
|
+
export declare function stateInputPolicy(asset: V3Asset, id: string): V3StateInputPolicy;
|
|
16
39
|
//# sourceMappingURL=v3-driver.d.ts.map
|
package/dist/v3-driver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-driver.d.ts","sourceRoot":"","sources":["../src/v3-driver.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"v3-driver.d.ts","sourceRoot":"","sources":["../src/v3-driver.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAWhF,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA4CtD;AAiBD,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAKzE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,KAAK,GAAG,KAAK,GAAG,OAAiB,GAAG,MAAM,CAqBlH;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxF;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAe1D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACnD,SAAS,EAAE,MAAM,GAChB,MAAM,CAWR;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,kBAAkB,CAE/E"}
|