@hatiolab/figure-model 0.4.2 → 0.4.4
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/asset.d.ts +2 -0
- package/dist/asset.d.ts.map +1 -1
- package/dist/asset.js +45 -4
- package/dist/asset.js.map +1 -1
- package/dist/authoring-actions.d.ts +12 -3
- package/dist/authoring-actions.d.ts.map +1 -1
- package/dist/authoring-actions.js +68 -27
- package/dist/authoring-actions.js.map +1 -1
- package/dist/capabilities.js +37 -20
- package/dist/capabilities.js.map +1 -1
- package/dist/editor-workspace.d.ts.map +1 -1
- package/dist/editor-workspace.js +2 -1
- package/dist/editor-workspace.js.map +1 -1
- package/dist/kernel-version.d.ts +1 -1
- package/dist/kernel-version.js +1 -1
- package/dist/part-edit.js +2 -1
- package/dist/part-edit.js.map +1 -1
- package/dist/proposal.js +1 -1
- package/dist/proposal.js.map +1 -1
- package/dist/release-contract.d.ts +1 -1
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +52 -3
- package/dist/release-contract.js.map +1 -1
- package/dist/slot-layout.d.ts +83 -38
- package/dist/slot-layout.d.ts.map +1 -1
- package/dist/slot-layout.js +198 -51
- package/dist/slot-layout.js.map +1 -1
- package/dist/slot-places.d.ts +20 -10
- package/dist/slot-places.d.ts.map +1 -1
- package/dist/slot-places.js +15 -10
- package/dist/slot-places.js.map +1 -1
- package/docs/modeller-interaction-performance-2026-10-07.md +6 -2
- package/package.json +2 -2
package/dist/slot-layout.js
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Slot layouts (ADR-0118): a holder's tiers, the slots
|
|
3
|
-
* slot, and whether it fits. Pure computation; nothing here knows a scene, a graph or a component.
|
|
2
|
+
* Slot layouts (ADR-0118): a holder's anchors, the tiers placed on them, the slots of each tier, how slots are numbered,
|
|
3
|
+
* where an item sits in a slot, and whether it fits. Pure computation; nothing here knows a scene, a graph or a component.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* (tier, slot), both counted from 1, and slot numbers restart on every tier. ROW and GRID slots are not stored: they are
|
|
7
|
-
* worked out from the rule, so thousands of slots are one rule. A slot's id is `t{tier}_s{slot}` -- a logical id, not
|
|
8
|
-
* the name of a node in any 3D asset.
|
|
5
|
+
* holder → anchor → tier → slot → item
|
|
9
6
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
7
|
+
* An anchor is a frame the holder gives: a position and a direction, and whatever moves it (a fork, a lift). The holder
|
|
8
|
+
* decides how many anchors there are; nothing here makes one. A tier is a group of slots placed on one anchor -- a shelf
|
|
9
|
+
* level, the load area of one fork. Several tiers may share an anchor, at the same height or not. A slot is one place an
|
|
10
|
+
* item is put; its address is (tier, slot). Tier numbers are the holder's own and slot numbers the tier's own: positive,
|
|
11
|
+
* unique, kept as they are when tiers or slots are removed or shown in another order -- never renumbered by height or
|
|
12
|
+
* position. ROW and GRID slots are not stored: they are worked out from the rule, so thousands of slots are one rule. A
|
|
13
|
+
* slot's id is `t{tier}_s{slot}` -- a logical id, not the name of a node in any 3D asset.
|
|
14
|
+
*
|
|
15
|
+
* Where an item is, each part said once:
|
|
16
|
+
* item in the world = holder × anchor × tier × slot × seat
|
|
17
|
+
* The anchor's frame is the holder's to give. Here a tier is placed in its anchor's frame (position, turn about the
|
|
18
|
+
* anchor's Y), a slot in its tier's (offset in X and Z, turn about Y), and an item in its slot (stack height, scale).
|
|
19
|
+
* Lengths are in whatever unit the layout is written in; nothing here converts them. Rotations are in degrees about Y.
|
|
13
20
|
*/
|
|
14
21
|
export function layoutIssue(code, path, params) {
|
|
15
22
|
return params ? { code, path, params } : { code, path };
|
|
16
23
|
}
|
|
24
|
+
/** The anchor at the holder's own origin, for a holder that gives no other. */
|
|
25
|
+
export const HOLDER_ANCHOR = 'holder';
|
|
17
26
|
/* ── checking a layout ───────────────────────────────────────────────────── */
|
|
18
27
|
const isFiniteNumber = (v) => typeof v === 'number' && Number.isFinite(v);
|
|
19
28
|
const isPositive = (v) => isFiniteNumber(v) && v > 0;
|
|
@@ -37,24 +46,38 @@ function checkSpec(spec, path, issues) {
|
|
|
37
46
|
* Everything wrong with a layout; an empty list is a sound one. stackLimit may be Infinity (no limit); a layout that is
|
|
38
47
|
* to be stored as JSON is also checked with `persistenceIssues`.
|
|
39
48
|
*/
|
|
40
|
-
export function validateSlotLayout(layout) {
|
|
49
|
+
export function validateSlotLayout(layout, options = {}) {
|
|
41
50
|
const issues = [];
|
|
42
51
|
if (!layout || !Array.isArray(layout.tiers) || layout.tiers.length === 0)
|
|
43
52
|
return [layoutIssue('TIERS_REQUIRED', 'tiers')];
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
const anchors = options.anchors ? new Set(options.anchors) : null;
|
|
54
|
+
const tierNos = new Set();
|
|
46
55
|
layout.tiers.forEach((tier, i) => {
|
|
47
56
|
const path = `tiers[${i}]`;
|
|
48
57
|
if (!tier || typeof tier !== 'object') {
|
|
49
58
|
issues.push(layoutIssue('OBJECT_REQUIRED', path));
|
|
50
59
|
return;
|
|
51
60
|
}
|
|
52
|
-
if (tier.tierNo
|
|
53
|
-
issues.push(layoutIssue('
|
|
54
|
-
if (
|
|
55
|
-
issues.push(layoutIssue('
|
|
56
|
-
else
|
|
57
|
-
|
|
61
|
+
if (!isPositiveInt(tier.tierNo))
|
|
62
|
+
issues.push(layoutIssue('POSITIVE_INTEGER_REQUIRED', `${path}.tierNo`));
|
|
63
|
+
else if (tierNos.has(tier.tierNo))
|
|
64
|
+
issues.push(layoutIssue('TIER_NUMBER_DUPLICATE', `${path}.tierNo`, { tierNo: tier.tierNo }));
|
|
65
|
+
else
|
|
66
|
+
tierNos.add(tier.tierNo);
|
|
67
|
+
if (typeof tier.anchorId !== 'string' || !tier.anchorId.trim())
|
|
68
|
+
issues.push(layoutIssue('ANCHOR_REQUIRED', `${path}.anchorId`));
|
|
69
|
+
else if (anchors && !anchors.has(tier.anchorId))
|
|
70
|
+
issues.push(layoutIssue('ANCHOR_UNKNOWN', `${path}.anchorId`, { anchorId: tier.anchorId }));
|
|
71
|
+
if (!['ON', 'IN', 'HANG'].includes(tier.mount))
|
|
72
|
+
issues.push(layoutIssue('MOUNT_INVALID', `${path}.mount`));
|
|
73
|
+
if (!tier.position || typeof tier.position !== 'object')
|
|
74
|
+
issues.push(layoutIssue('OBJECT_REQUIRED', `${path}.position`));
|
|
75
|
+
else
|
|
76
|
+
for (const k of ['x', 'y', 'z'])
|
|
77
|
+
if (!isFiniteNumber(tier.position[k]))
|
|
78
|
+
issues.push(layoutIssue('FINITE_NUMBER_REQUIRED', `${path}.position.${k}`));
|
|
79
|
+
if (!isFiniteNumber(tier.rotation))
|
|
80
|
+
issues.push(layoutIssue('FINITE_NUMBER_REQUIRED', `${path}.rotation`));
|
|
58
81
|
const l = tier.layout;
|
|
59
82
|
switch (l?.pattern) {
|
|
60
83
|
case 'SINGLE':
|
|
@@ -81,14 +104,24 @@ export function validateSlotLayout(layout) {
|
|
|
81
104
|
checkSpec(l.slot, `${path}.layout.slot`, issues);
|
|
82
105
|
break;
|
|
83
106
|
case 'CUSTOM': {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
slots.
|
|
107
|
+
if (!Array.isArray(l.slots)) {
|
|
108
|
+
issues.push(layoutIssue('ARRAY_REQUIRED', `${path}.layout.slots`));
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
if (!l.slots.length)
|
|
112
|
+
issues.push(layoutIssue('SLOTS_REQUIRED', `${path}.layout.slots`));
|
|
113
|
+
const slotNos = new Set();
|
|
114
|
+
l.slots.forEach((s, k) => {
|
|
115
|
+
const at = `${path}.layout.slots[${k}]`;
|
|
116
|
+
if (!isPositiveInt(s?.slotNo))
|
|
117
|
+
issues.push(layoutIssue('POSITIVE_INTEGER_REQUIRED', `${at}.slotNo`));
|
|
118
|
+
else if (slotNos.has(s.slotNo))
|
|
119
|
+
issues.push(layoutIssue('SLOT_NUMBER_DUPLICATE', `${at}.slotNo`, { slotNo: s.slotNo }));
|
|
120
|
+
else
|
|
121
|
+
slotNos.add(s.slotNo);
|
|
89
122
|
if (!isFiniteNumber(s?.offset?.x) || !isFiniteNumber(s?.offset?.z))
|
|
90
|
-
issues.push(layoutIssue('FINITE_NUMBER_REQUIRED', `${
|
|
91
|
-
checkSpec(s,
|
|
123
|
+
issues.push(layoutIssue('FINITE_NUMBER_REQUIRED', `${at}.offset`));
|
|
124
|
+
checkSpec(s, at, issues);
|
|
92
125
|
});
|
|
93
126
|
break;
|
|
94
127
|
}
|
|
@@ -126,6 +159,12 @@ export function slotCount(pattern) {
|
|
|
126
159
|
return pattern.slots.length;
|
|
127
160
|
}
|
|
128
161
|
}
|
|
162
|
+
/** A tier's slot numbers, in order. ROW and GRID count from 1; CUSTOM has the numbers it was given. */
|
|
163
|
+
export function slotNumbers(pattern) {
|
|
164
|
+
if (pattern.pattern === 'CUSTOM')
|
|
165
|
+
return pattern.slots.map(s => s.slotNo).sort((a, b) => a - b);
|
|
166
|
+
return Array.from({ length: slotCount(pattern) }, (_, i) => i + 1);
|
|
167
|
+
}
|
|
129
168
|
/** A GRID slot's number from its row r and column c (from 1), counted from the origin corner. */
|
|
130
169
|
export function gridSlotNo(rows, cols, r, c, order = 'ROW_MAJOR') {
|
|
131
170
|
switch (order) {
|
|
@@ -169,7 +208,7 @@ const flip = (v, max) => (max && v !== 0 ? -v : v);
|
|
|
169
208
|
*/
|
|
170
209
|
export function resolveSlot(layout, address, options = {}) {
|
|
171
210
|
const tier = layout?.tiers?.find(t => t?.tierNo === address?.tier);
|
|
172
|
-
if (!tier || !isPositiveInt(address.slot)
|
|
211
|
+
if (!tier || !isPositiveInt(address.slot))
|
|
173
212
|
return null;
|
|
174
213
|
const l = tier.layout;
|
|
175
214
|
let spec;
|
|
@@ -177,16 +216,22 @@ export function resolveSlot(layout, address, options = {}) {
|
|
|
177
216
|
let name;
|
|
178
217
|
switch (l.pattern) {
|
|
179
218
|
case 'SINGLE':
|
|
219
|
+
if (address.slot !== 1)
|
|
220
|
+
return null;
|
|
180
221
|
spec = l.slot;
|
|
181
222
|
offset = { x: 0, z: 0 };
|
|
182
223
|
break;
|
|
183
224
|
case 'ROW': {
|
|
225
|
+
if (address.slot > l.count)
|
|
226
|
+
return null;
|
|
184
227
|
const v = flip((address.slot - 1 - (l.count - 1) / 2) * l.pitch, l.origin === 'MAX');
|
|
185
228
|
spec = l.slot;
|
|
186
229
|
offset = l.axis === 'X' ? { x: v, z: 0 } : { x: 0, z: v };
|
|
187
230
|
break;
|
|
188
231
|
}
|
|
189
232
|
case 'GRID': {
|
|
233
|
+
if (address.slot > l.rows * l.cols)
|
|
234
|
+
return null;
|
|
190
235
|
const { r, c } = gridCellOf(l.rows, l.cols, address.slot, l.order);
|
|
191
236
|
const origin = l.origin ?? { x: 'MIN', z: 'MIN' };
|
|
192
237
|
spec = l.slot;
|
|
@@ -210,7 +255,10 @@ export function resolveSlot(layout, address, options = {}) {
|
|
|
210
255
|
tier: tier.tierNo,
|
|
211
256
|
slotNo: address.slot,
|
|
212
257
|
name,
|
|
213
|
-
|
|
258
|
+
anchorId: tier.anchorId,
|
|
259
|
+
mount: tier.mount,
|
|
260
|
+
tierPosition: { ...tier.position },
|
|
261
|
+
tierRotation: tier.rotation,
|
|
214
262
|
offset,
|
|
215
263
|
allowed: { ...spec.allowed },
|
|
216
264
|
accepts: spec.accepts ? [...spec.accepts] : undefined,
|
|
@@ -228,12 +276,31 @@ export function addressOfSlotId(slotId) {
|
|
|
228
276
|
const m = typeof slotId === 'string' ? /^t(\d+)_s(\d+)$/.exec(slotId) : null;
|
|
229
277
|
return m ? { tier: Number(m[1]), slot: Number(m[2]) } : null;
|
|
230
278
|
}
|
|
231
|
-
/** Every address of a layout, tier by tier. For a big GRID, resolve only the addresses you need. */
|
|
279
|
+
/** Every address of a layout, tier by tier as written. For a big GRID, resolve only the addresses you need. */
|
|
232
280
|
export function* slotAddresses(layout) {
|
|
233
281
|
for (const tier of layout?.tiers ?? [])
|
|
234
|
-
for (
|
|
282
|
+
for (const slot of slotNumbers(tier.layout))
|
|
235
283
|
yield { tier: tier.tierNo, slot };
|
|
236
284
|
}
|
|
285
|
+
/** A point of the tier's X-Z plane turned by the tier's rotation about Y (right-handed: +X turns toward -Z). */
|
|
286
|
+
function turnY(x, z, degrees) {
|
|
287
|
+
if (!degrees)
|
|
288
|
+
return { x, z };
|
|
289
|
+
const a = (degrees * Math.PI) / 180;
|
|
290
|
+
const c = Math.cos(a);
|
|
291
|
+
const s = Math.sin(a);
|
|
292
|
+
// clears the 6e-17 left at multiples of 90°
|
|
293
|
+
const clean = (v) => Math.round(v * 1e9) / 1e9;
|
|
294
|
+
return { x: clean(x * c + z * s), z: clean(-x * s + z * c) };
|
|
295
|
+
}
|
|
296
|
+
/** A slot's frame in its anchor's: the tier's placement, then the slot's offset and turn in the tier. */
|
|
297
|
+
export function slotFrame(slot) {
|
|
298
|
+
const o = turnY(slot.offset.x, slot.offset.z, slot.tierRotation);
|
|
299
|
+
return {
|
|
300
|
+
position: { x: slot.tierPosition.x + o.x, y: slot.tierPosition.y, z: slot.tierPosition.z + o.z },
|
|
301
|
+
rotation: slot.tierRotation + slot.rotation
|
|
302
|
+
};
|
|
303
|
+
}
|
|
237
304
|
export const DEFAULT_SEAT_MARGIN = 0.05;
|
|
238
305
|
const knownDims = (d) => !!d && isPositive(d.width) && isPositive(d.depth) && isPositive(d.height);
|
|
239
306
|
/** The X and Z extent of an item turned by `rotation` degrees. */
|
|
@@ -246,12 +313,14 @@ export function rotatedFootprint(dims, rotation) {
|
|
|
246
313
|
return { width: clean(dims.width * c + dims.depth * s), depth: clean(dims.width * s + dims.depth * c) };
|
|
247
314
|
}
|
|
248
315
|
/**
|
|
249
|
-
* Where an item sits in
|
|
250
|
-
* of `belowHeight` -- the shown heights (height × scale) of what is stacked under it
|
|
251
|
-
*
|
|
252
|
-
*
|
|
316
|
+
* Where an item sits in its slot's own frame: shrunk to fit the slot's width and depth (by its turned extent, never
|
|
317
|
+
* enlarged), on top of `belowHeight` -- the shown heights (height × scale) of what is stacked under it -- along +Y for ON
|
|
318
|
+
* and IN, -Y for HANG. x and z are 0 and it is not turned: the slot's frame has the offset and the turn. `margin` is room
|
|
319
|
+
* left only for showing (0 ≤ margin < 1); whether it fits is judged elsewhere, at full size. Null when a size or value is
|
|
320
|
+
* unusable -- never NaN or Infinity.
|
|
321
|
+
* slotFrame(slot) then seatInSlot(...) = seatTransform(...)
|
|
253
322
|
*/
|
|
254
|
-
export function
|
|
323
|
+
export function seatInSlot(dims, slot, belowHeight = 0, margin = DEFAULT_SEAT_MARGIN) {
|
|
255
324
|
if (!knownDims(dims))
|
|
256
325
|
return null;
|
|
257
326
|
if (!isFiniteNumber(belowHeight) || !isFiniteNumber(margin) || margin < 0 || margin >= 1)
|
|
@@ -259,34 +328,112 @@ export function seatTransform(dims, slot, mount, belowHeight = 0, margin = DEFAU
|
|
|
259
328
|
const fp = rotatedFootprint(dims, slot.rotation);
|
|
260
329
|
const scale = Math.min(1, Math.min(slot.allowed.width / fp.width, slot.allowed.depth / fp.depth) * (1 - margin));
|
|
261
330
|
const h = dims.height * scale;
|
|
262
|
-
const dir = mount === 'HANG' ? -1 : 1;
|
|
263
|
-
|
|
264
|
-
|
|
331
|
+
const dir = slot.mount === 'HANG' ? -1 : 1;
|
|
332
|
+
return { position: { x: 0, y: dir * (belowHeight + h / 2), z: 0 }, rotation: 0, scale };
|
|
333
|
+
}
|
|
334
|
+
/** Where an item sits in its anchor's frame: the slot's frame, then the seat in it. */
|
|
335
|
+
export function seatTransform(dims, slot, belowHeight = 0, margin = DEFAULT_SEAT_MARGIN) {
|
|
336
|
+
const seat = seatInSlot(dims, slot, belowHeight, margin);
|
|
337
|
+
if (!seat)
|
|
338
|
+
return null;
|
|
339
|
+
const f = slotFrame(slot);
|
|
340
|
+
return { position: { x: f.position.x, y: f.position.y + seat.position.y, z: f.position.z }, rotation: f.rotation, scale: seat.scale };
|
|
265
341
|
}
|
|
266
|
-
/** Where each of a slot's stacked items sits, bottom first. An item of unknown size is null and adds no height. */
|
|
267
|
-
export function stackSeatTransforms(stack, slot,
|
|
342
|
+
/** Where each of a slot's stacked items sits in the anchor's frame, bottom first. An item of unknown size is null and adds no height. */
|
|
343
|
+
export function stackSeatTransforms(stack, slot, margin = DEFAULT_SEAT_MARGIN) {
|
|
268
344
|
let below = 0;
|
|
269
345
|
return stack.map(dims => {
|
|
270
|
-
const t = dims ? seatTransform(dims, slot,
|
|
346
|
+
const t = dims ? seatTransform(dims, slot, below, margin) : null;
|
|
271
347
|
if (t)
|
|
272
348
|
below += dims.height * t.scale;
|
|
273
349
|
return t;
|
|
274
350
|
});
|
|
275
351
|
}
|
|
276
|
-
/**
|
|
277
|
-
|
|
278
|
-
|
|
352
|
+
/** Below this, a shared length is a touch, not an overlap. */
|
|
353
|
+
const TOUCH = 1e-6;
|
|
354
|
+
function roomOf(slot, tierIndex) {
|
|
355
|
+
const f = slotFrame(slot);
|
|
356
|
+
const hw = slot.allowed.width / 2;
|
|
357
|
+
const hd = slot.allowed.depth / 2;
|
|
358
|
+
const corners = [
|
|
359
|
+
[-hw, -hd],
|
|
360
|
+
[hw, -hd],
|
|
361
|
+
[hw, hd],
|
|
362
|
+
[-hw, hd]
|
|
363
|
+
].map(([x, z]) => {
|
|
364
|
+
const p = turnY(x, z, f.rotation);
|
|
365
|
+
return { x: f.position.x + p.x, z: f.position.z + p.z };
|
|
366
|
+
});
|
|
367
|
+
const ax = turnY(1, 0, f.rotation);
|
|
368
|
+
const az = turnY(0, 1, f.rotation);
|
|
369
|
+
const dir = slot.mount === 'HANG' ? -1 : 1;
|
|
370
|
+
const ys = [f.position.y, f.position.y + dir * slot.allowed.height];
|
|
371
|
+
const xs = corners.map(c => c.x);
|
|
372
|
+
return {
|
|
373
|
+
tierIndex,
|
|
374
|
+
tier: slot.tier,
|
|
375
|
+
slot: slot.slotNo,
|
|
376
|
+
corners,
|
|
377
|
+
axes: [ax, az],
|
|
378
|
+
y0: Math.min(...ys),
|
|
379
|
+
y1: Math.max(...ys),
|
|
380
|
+
minX: Math.min(...xs),
|
|
381
|
+
maxX: Math.max(...xs)
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
/** Whether two turned rectangles share area: no axis of either separates them by more than a touch. */
|
|
385
|
+
function footprintsOverlap(a, b) {
|
|
386
|
+
for (const axis of [...a.axes, ...b.axes]) {
|
|
387
|
+
const pa = a.corners.map(c => c.x * axis.x + c.z * axis.z);
|
|
388
|
+
const pb = b.corners.map(c => c.x * axis.x + c.z * axis.z);
|
|
389
|
+
const shared = Math.min(Math.max(...pa), Math.max(...pb)) - Math.max(Math.min(...pa), Math.min(...pb));
|
|
390
|
+
if (shared <= TOUCH)
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
return true;
|
|
279
394
|
}
|
|
280
395
|
/**
|
|
281
|
-
* Where
|
|
282
|
-
*
|
|
283
|
-
*
|
|
396
|
+
* Where a sound layout's slots crowd each other or leave their anchor's face, as warnings. Only slots on the same anchor
|
|
397
|
+
* are compared: anchors move apart. Rooms are each slot's allowed box, placed by its tier and turned; sharing a face or
|
|
398
|
+
* an edge is not overlapping.
|
|
284
399
|
*/
|
|
285
|
-
export function
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
400
|
+
export function slotSpaceWarnings(layout, options = {}) {
|
|
401
|
+
const warnings = [];
|
|
402
|
+
const byAnchor = new Map();
|
|
403
|
+
layout.tiers.forEach((tier, i) => {
|
|
404
|
+
const rooms = byAnchor.get(tier.anchorId) ?? [];
|
|
405
|
+
byAnchor.set(tier.anchorId, rooms);
|
|
406
|
+
for (const n of slotNumbers(tier.layout))
|
|
407
|
+
rooms.push(roomOf(resolveSlot(layout, { tier: tier.tierNo, slot: n }), i));
|
|
408
|
+
});
|
|
409
|
+
for (const [anchorId, rooms] of byAnchor) {
|
|
410
|
+
const face = options.anchorFaces?.[anchorId];
|
|
411
|
+
if (!face)
|
|
412
|
+
warnings.push({ code: 'ANCHOR_SPACE_UNKNOWN', path: 'tiers', params: { anchorId } });
|
|
413
|
+
else
|
|
414
|
+
for (const r of rooms)
|
|
415
|
+
if (r.corners.some(c => Math.abs(c.x) - face.width / 2 > TOUCH || Math.abs(c.z) - face.depth / 2 > TOUCH))
|
|
416
|
+
warnings.push({ code: 'SLOT_OUTSIDE_ANCHOR', path: `tiers[${r.tierIndex}]`, params: { tier: r.tier, slot: r.slot } });
|
|
417
|
+
// sweep along X so a big grid is not compared pair by pair
|
|
418
|
+
const sorted = [...rooms].sort((a, b) => a.minX - b.minX);
|
|
419
|
+
for (let i = 0; i < sorted.length; i++) {
|
|
420
|
+
const a = sorted[i];
|
|
421
|
+
for (let j = i + 1; j < sorted.length && sorted[j].minX < a.maxX - TOUCH; j++) {
|
|
422
|
+
const b = sorted[j];
|
|
423
|
+
if (Math.min(a.y1, b.y1) - Math.max(a.y0, b.y0) <= TOUCH)
|
|
424
|
+
continue;
|
|
425
|
+
if (!footprintsOverlap(a, b))
|
|
426
|
+
continue;
|
|
427
|
+
const [first, second] = a.tierIndex < b.tierIndex || (a.tierIndex === b.tierIndex && a.slot < b.slot) ? [a, b] : [b, a];
|
|
428
|
+
warnings.push({
|
|
429
|
+
code: 'SLOT_OVERLAP',
|
|
430
|
+
path: `tiers[${second.tierIndex}]`,
|
|
431
|
+
params: { tier: second.tier, slot: second.slot, otherTier: first.tier, otherSlot: first.slot }
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return warnings;
|
|
290
437
|
}
|
|
291
438
|
/**
|
|
292
439
|
* Whether one more item fits in a slot that already holds `occupants`, at full size. The count limit and the height
|
package/dist/slot-layout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slot-layout.js","sourceRoot":"","sources":["../src/slot-layout.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slot-layout.js","sourceRoot":"","sources":["../src/slot-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAiCH,MAAM,UAAU,WAAW,CAAC,IAAqB,EAAE,IAAY,EAAE,MAAwC;IACvG,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACzD,CAAC;AAUD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAA;AA+FrC,gFAAgF;AAEhF,MAAM,cAAc,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC/F,MAAM,UAAU,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7D,MAAM,aAAa,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAK,CAAY,GAAG,CAAC,CAAA;AAElF,SAAS,SAAS,CAAC,IAAc,EAAE,IAAY,EAAE,MAAqB;IACpE,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,CAAA;IACvB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAA;;QAE7F,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAU;YACnD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IACvG,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ;QACnG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE,GAAG,IAAI,aAAa,CAAC,CAAC,CAAA;IAC7E,IAAI,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAA;IAC1I,IAAI,IAAI,EAAE,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAA;AAChI,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB,EAAE,UAAqC,EAAE;IAC5F,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAA;IACzH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAEjC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAA;QAC1B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAA;YACjD,OAAM;QACR,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC,CAAA;aACnG,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,GAAG,IAAI,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;;YAC1H,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE7B,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAA;aAC1H,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,IAAI,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC5I,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAA;QAC1G,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAA;;YAEtH,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;gBACtC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;QACtH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAA;QAE1G,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QACrB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,CAAC,CAAA;gBAChD,MAAK;YACP,KAAK,KAAK;gBACR,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAA;gBAC1G,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAA;gBACtG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC,CAAA;gBACrG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,CAAC,CAAA;gBAChD,MAAK;YACP,KAAK,MAAM;gBACT,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC,CAAA;gBACxG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC,CAAA;gBACxG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAA;gBAC3G,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAA;gBAC3G,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,CAAC,CAAA;gBAChD,MAAK;YACP,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAA;oBAClE,MAAK;gBACP,CAAC;gBACD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAA;gBACvF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;gBACjC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACvB,MAAM,EAAE,GAAG,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAA;oBACvC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;yBAC/F,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;;wBAClH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;oBAC1B,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;oBACtI,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;gBAC1B,CAAC,CAAC,CAAA;gBACF,MAAK;YACP,CAAC;YACD;gBACE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAA;QACzE,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,IAAI,GAAG,EAAE;IACzD,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,CAAS,EAAE,EAAE;QACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;aACjH,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;aAChE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3G,CAAC,CAAA;IACD,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACjB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,SAAS,CAAC,OAAoB;IAC5C,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,CAAC,CAAA;QACV,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,KAAK,CAAA;QACtB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACpC,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;IAC/B,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,WAAW,CAAC,OAAoB;IAC9C,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/F,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACpE,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,CAAS,EAAE,CAAS,EAAE,QAAmB,WAAW;IACzG,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAC3B,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAC3B,KAAK,gBAAgB;YACnB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1D,KAAK,gBAAgB;YACnB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,MAAc,EAAE,QAAmB,WAAW;IACnG,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAA;IACpB,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QAC3D,KAAK,WAAW;YACd,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QAC3D,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YAClC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACxB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA;QACjD,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YAClC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACxB,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAA;QACjD,CAAC;IACH,CAAC;AACH,CAAC;AAED,sCAAsC;AACtC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,GAAY,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAOnE;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,OAAoB,EAAE,UAA8B,EAAE;IACpG,MAAM,IAAI,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,EAAE,IAAI,CAAC,CAAA;IAClE,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;IACrB,IAAI,IAAc,CAAA;IAClB,IAAI,MAAgC,CAAA;IACpC,IAAI,IAAwB,CAAA;IAE5B,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACnC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;YACb,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;YACvB,MAAK;QACP,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAA;YACvC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAA;YACpF,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;YACb,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;YACzD,MAAK;QACP,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YAC/C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;YAClE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;YACjD,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;YACb,MAAM,GAAG;gBACP,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC;gBACnE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC;aACpE,CAAA;YACD,MAAK;QACP,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;YACtD,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAA;YACnB,IAAI,GAAG,CAAC,CAAA;YACR,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAA;YACxB,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;YACb,MAAK;QACP,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,MAAM;QACjB,MAAM,EAAE,OAAO,CAAC,IAAI;QACpB,IAAI;QACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QAClC,YAAY,EAAE,IAAI,CAAC,QAAQ;QAC3B,MAAM;QACN,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QACrD,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,iBAAiB,IAAI,CAAC;QAC7D,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;KAC7B,CAAA;AACH,CAAC;AAED,gFAAgF;AAEhF,2BAA2B;AAC3B,MAAM,UAAU,QAAQ,CAAC,OAAoB;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAA;AAC5C,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,MAAM,CAAC,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5E,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9D,CAAC;AAED,+GAA+G;AAC/G,MAAM,SAAS,CAAC,CAAC,aAAa,CAAC,MAAkB;IAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,KAAK,IAAI,EAAE;QAAE,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA;AACxH,CAAC;AAUD,gHAAgH;AAChH,SAAS,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,OAAe;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACrB,4CAA4C;IAC5C,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;IACtD,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;AAC9D,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,SAAS,CAAC,IAAkB;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IAChE,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAChG,QAAQ,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;KAC5C,CAAA;AACH,CAAC;AAgBD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAA;AAEvC,MAAM,SAAS,GAAG,CAAC,CAAmB,EAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnI,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAAC,IAAc,EAAE,QAAgB;IAC/D,MAAM,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;IACtC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACjC,4CAA4C;IAC5C,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;IACtD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAA;AACzG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,IAAkB,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAC1G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACjC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAErG,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;IAChH,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;AACzF,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,IAAkB,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAC7G,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IACzB,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;AACvI,CAAC;AAED,yIAAyI;AACzI,MAAM,UAAU,mBAAmB,CAAC,KAAsC,EAAE,IAAkB,EAAE,MAAM,GAAG,mBAAmB;IAC1H,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAChE,IAAI,CAAC;YAAE,KAAK,IAAI,IAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAA;QACtC,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;AACJ,CAAC;AAwBD,8DAA8D;AAC9D,MAAM,KAAK,GAAG,IAAI,CAAA;AAclB,SAAS,MAAM,CAAC,IAAkB,EAAE,SAAiB;IACnD,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAA;IACjC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAA;IACjC,MAAM,OAAO,GAAG;QACd,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACT,CAAC,EAAE,EAAE,EAAE,CAAC;QACR,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;KACV,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACf,MAAM,CAAC,GAAG,KAAK,CAAC,CAAE,EAAE,CAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;QACnC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACzD,CAAC,CAAC,CAAA;IACF,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACnE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,OAAO;QACL,SAAS;QACT,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,MAAM;QACjB,OAAO;QACP,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QACd,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACnB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACnB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;KACtB,CAAA;AACH,CAAC;AAED,uGAAuG;AACvG,SAAS,iBAAiB,CAAC,CAAW,EAAE,CAAW;IACjD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACtG,IAAI,MAAM,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB,EAAE,UAA4B,EAAE;IAClF,MAAM,QAAQ,GAAuB,EAAE,CAAA;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAA;IAC9C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC/C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAClC,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACvH,CAAC,CAAC,CAAA;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;;YAE7F,KAAK,MAAM,CAAC,IAAI,KAAK;gBACnB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;oBACvG,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAE3H,2DAA2D;QAC3D,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/E,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;gBACpB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK;oBAAE,SAAQ;gBAClE,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;oBAAE,SAAQ;gBACtC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACvH,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,SAAS,MAAM,CAAC,SAAS,GAAG;oBAClC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE;iBAC/F,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AA8BD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAyB,EAAE,SAAuB,EAAE,YAA4B,EAAE,EAAE,UAAsB,EAAE;IACvI,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAA;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAExG,MAAM,OAAO,GAAgB,EAAE,CAAA;IAC/B,IAAI,OAAO,GAAG,KAAK,CAAA;IAEnB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI;YAAE,OAAO,GAAG,IAAI,CAAA;aACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAEhF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,IAAI,CAAA;SACzC,CAAC;QACJ,MAAM,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1D,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjE,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjE,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAK,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACvF,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAClE,CAAC;;YAAM,OAAO,GAAG,IAAI,CAAA;IACvB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IACvG,IAAI,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAA;IACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;AACvC,CAAC"}
|
package/dist/slot-places.d.ts
CHANGED
|
@@ -1,36 +1,46 @@
|
|
|
1
1
|
import type { FigureSurfaceReference } from './asset-types.ts';
|
|
2
2
|
import { type SlotLayout, type SlotMount } from './slot-layout.ts';
|
|
3
|
+
import type { Vec3 } from './words.ts';
|
|
4
|
+
/** A frame the figure gives its tiers: a face of one of its parts. */
|
|
5
|
+
export interface FigureSlotAnchor {
|
|
6
|
+
id: string;
|
|
7
|
+
/** The frame of the face -- the same rule as a binding's frame. */
|
|
8
|
+
frame: string;
|
|
9
|
+
/** The face. Its tiers are placed in the part's X and Z; they rise along its Y, away from the face. */
|
|
10
|
+
pose: FigureSurfaceReference;
|
|
11
|
+
}
|
|
3
12
|
export interface FigureSlotLayoutDeclaration {
|
|
4
13
|
label: string;
|
|
5
14
|
role: 'seat' | 'grip';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/** The face the layout sits on. Its slots are laid out in the part's X and Z; tiers rise along its Y. */
|
|
9
|
-
pose: FigureSurfaceReference;
|
|
10
|
-
/** Every slot must name the types it takes (ADR-0087 decision 3). */
|
|
15
|
+
anchors: FigureSlotAnchor[];
|
|
16
|
+
/** Every tier stands on one of the anchors; every slot must name the types it takes (ADR-0087 decision 3). */
|
|
11
17
|
layout: SlotLayout;
|
|
12
18
|
}
|
|
13
|
-
/** One slot unfolded from a layout: a place like a binding, plus where
|
|
19
|
+
/** One slot unfolded from a layout: a place like a binding, plus where it is on its anchor. */
|
|
14
20
|
export interface FigureSlotPlace {
|
|
15
21
|
id: string;
|
|
16
22
|
label: string;
|
|
17
23
|
role: 'seat' | 'grip';
|
|
24
|
+
/** The anchor's face: the frame and the pose a binding would have. */
|
|
18
25
|
frame: string;
|
|
19
26
|
pose: FigureSurfaceReference;
|
|
27
|
+
anchorId: string;
|
|
20
28
|
accepts: string[];
|
|
21
29
|
/** How many it holds at once: the slot's stackLimit. */
|
|
22
30
|
capacity: number;
|
|
23
31
|
tier: number;
|
|
24
32
|
slot: number;
|
|
25
33
|
name?: string;
|
|
26
|
-
/** The
|
|
34
|
+
/** The tier's centre on the anchor: X and Z in the part's axes, Y away from the face (toward it for a bottom face). */
|
|
35
|
+
tierPosition: Vec3;
|
|
36
|
+
/** The tier's turn about the face's normal, degrees. */
|
|
37
|
+
tierRotation: number;
|
|
38
|
+
/** The slot's centre from the tier's centre, in the tier's axes. */
|
|
27
39
|
offset: {
|
|
28
40
|
x: number;
|
|
29
41
|
z: number;
|
|
30
42
|
};
|
|
31
|
-
/** The
|
|
32
|
-
elevation: number;
|
|
33
|
-
/** Degrees about Y. */
|
|
43
|
+
/** The slot's turn about Y in the tier, degrees. */
|
|
34
44
|
rotation: number;
|
|
35
45
|
mount: SlotMount;
|
|
36
46
|
/** The room a held thing may take: width along X, height along Y, depth along Z. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slot-places.d.ts","sourceRoot":"","sources":["../src/slot-places.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slot-places.d.ts","sourceRoot":"","sources":["../src/slot-places.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtC,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,uGAAuG;IACvG,IAAI,EAAE,sBAAsB,CAAA;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,8GAA8G;IAC9G,MAAM,EAAE,UAAU,CAAA;CACnB;AAED,+FAA+F;AAC/F,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,sBAAsB,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uHAAuH;IACvH,YAAY,EAAE,IAAI,CAAA;IAClB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAA;IACpB,oEAAoE;IACpE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,oFAAoF;IACpF,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1D;AAED,+GAA+G;AAC/G,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,2BAA2B,GAAG,SAAS,GAAG,eAAe,EAAE,CA8B1G"}
|
package/dist/slot-places.js
CHANGED
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* A figure's slot layout declaration and the places it unfolds into (ADR-0118).
|
|
3
3
|
*
|
|
4
|
-
* A figure
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* A figure gives anchors -- faces of its parts, so an anchor on a moving part (a fork) moves with it -- and a slot layout
|
|
5
|
+
* whose tiers stand on them. Compiling unfolds the layout into one place per slot, each with the id `t{tier}_s{slot}` --
|
|
6
|
+
* a logical id, not the name of a node in the asset. The count and the ids are what the author wrote; resizing the
|
|
7
|
+
* figure does not change them, and neither does the number of anchors. Unfolding reads the declaration only, so the
|
|
8
|
+
* release comparison and the authoring read-back see the same places the compiled figure evaluates.
|
|
8
9
|
*/
|
|
9
10
|
import { resolveSlot, slotAddresses, slotIdOf } from "./slot-layout.js";
|
|
10
11
|
/** The places a declaration unfolds into, tier by tier and slot by slot. None when there is no declaration. */
|
|
11
12
|
export function figureSlotPlacesOf(declaration) {
|
|
12
|
-
if (!declaration?.layout)
|
|
13
|
+
if (!declaration?.layout || !Array.isArray(declaration.anchors))
|
|
13
14
|
return [];
|
|
15
|
+
const anchors = new Map(declaration.anchors.map(a => [a.id, a]));
|
|
14
16
|
const places = [];
|
|
15
17
|
for (const address of slotAddresses(declaration.layout)) {
|
|
16
18
|
const s = resolveSlot(declaration.layout, address);
|
|
17
|
-
|
|
19
|
+
const anchor = s && anchors.get(s.anchorId);
|
|
20
|
+
if (!s || !anchor)
|
|
18
21
|
continue;
|
|
19
22
|
const id = slotIdOf(address);
|
|
20
23
|
places.push({
|
|
21
24
|
id,
|
|
22
25
|
label: `${declaration.label} ${id}`,
|
|
23
26
|
role: declaration.role,
|
|
24
|
-
frame:
|
|
25
|
-
pose: { ...
|
|
27
|
+
frame: anchor.frame,
|
|
28
|
+
pose: { ...anchor.pose },
|
|
29
|
+
anchorId: anchor.id,
|
|
26
30
|
accepts: [...(s.accepts ?? [])],
|
|
27
31
|
capacity: s.stackLimit,
|
|
28
32
|
tier: s.tier,
|
|
29
33
|
slot: s.slotNo,
|
|
30
34
|
...(s.name ? { name: s.name } : {}),
|
|
35
|
+
tierPosition: { ...s.tierPosition },
|
|
36
|
+
tierRotation: s.tierRotation,
|
|
31
37
|
offset: { ...s.offset },
|
|
32
|
-
elevation: s.elevation,
|
|
33
38
|
rotation: s.rotation,
|
|
34
|
-
mount:
|
|
39
|
+
mount: s.mount,
|
|
35
40
|
allowed: { ...s.allowed }
|
|
36
41
|
});
|
|
37
42
|
}
|
package/dist/slot-places.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slot-places.js","sourceRoot":"","sources":["../src/slot-places.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"slot-places.js","sourceRoot":"","sources":["../src/slot-places.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,WAAW,EACX,aAAa,EACb,QAAQ,EAGT,MAAM,kBAAkB,CAAA;AAgDzB,+GAA+G;AAC/G,MAAM,UAAU,kBAAkB,CAAC,WAAoD;IACrF,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC,CAAC,CAAA;IACzE,MAAM,MAAM,GAAsB,EAAE,CAAA;IACpC,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM;YAAE,SAAQ;QAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC5B,MAAM,CAAC,IAAI,CAAC;YACV,EAAE;YACF,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,EAAE;YACnC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE;YACxB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC/B,QAAQ,EAAE,CAAC,CAAC,UAAU;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,MAAM;YACd,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE;YACnC,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;YACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;SAC1B,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -55,6 +55,10 @@ CPU 프로파일 포함 시간(compileAsset 272 ms 안): `checkFigureJoints` 189
|
|
|
55
55
|
| 항목 | 상태 |
|
|
56
56
|
| --- | --- |
|
|
57
57
|
| 워크스페이스 파생 기억·횟수 계측·예산 시험 | figure-model 0.4.1 발행 |
|
|
58
|
-
| 화면 쪽 정리(파싱 1회, `view.geometry` 심기, 미리보기·검사 디바운스, 안 보이는 패널 건너뛰기) |
|
|
59
|
-
| `stringsIn` 비할당 순회 | figure-model 8085989
|
|
58
|
+
| 화면 쪽 정리(파싱 1회, `view.geometry` 심기, 미리보기·검사 디바운스, 안 보이는 패널 건너뛰기) | figure-ui 10.1.126·127에 포함·발행 |
|
|
59
|
+
| `stringsIn` 비할당 순회 | figure-model 8085989(시험 806 통과), 0.4.2에 포함·발행 |
|
|
60
60
|
| joint 대조 줄이기, 컴파일 결과 기억 | ADR-0119 안건, 미결정 |
|
|
61
|
+
|
|
62
|
+
## 측정 조건 (10-10)
|
|
63
|
+
|
|
64
|
+
프레임·긴 프레임·렌더 시간은 브라우저 창이 보이는 상태(`document.visibilityState === 'visible'`)에서만 믿는다. 숨겨지면 프레임이 생기지 않아 긴 프레임이 0으로 나오고 타이머가 늦어진다. 시스템 부하는 이 머신에서 평소 3~4이고, 다른 세션의 빌드나 색인이 돌면 같은 조작이 4~5배로 나온다. 결과에는 부하와 창 상태를 같이 적는다. 컴파일 횟수 시험, Node 벤치, JS 프로파일은 창과 무관하다.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatiolab/figure-model",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "The figure format (figure-asset-1): a kernel that evaluates a figure from its declared relations, the authoring commands a modeller and an AI share, the release gate and the score.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"figure",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"version": "node scripts/sync-kernel-version.mjs && git add src/kernel-version.ts",
|
|
49
49
|
"build": "tsc -p tsconfig.build.json",
|
|
50
50
|
"check": "tsc -p tsconfig.json --noEmit",
|
|
51
|
-
"test": "npm run check && node --test src/*.test.ts",
|
|
51
|
+
"test": "npm run check && FIGURE_FREEZE_COMPILED=1 node --test src/*.test.ts",
|
|
52
52
|
"test:coverage:slot-layout": "node --test --experimental-test-coverage --test-coverage-include=src/slot-layout.ts --test-coverage-include=src/slot-places.ts --test-coverage-lines=100 --test-coverage-branches=95 --test-coverage-functions=95 src/slot-layout.test.ts src/slot-places.test.ts",
|
|
53
53
|
"test:rewrite": "node --test scripts/*.test.ts",
|
|
54
54
|
"test:released": "node --test scripts/released-kernel.check.ts",
|