@hatiolab/figure-model 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/asset-types.d.ts +1 -1
  2. package/dist/asset-types.d.ts.map +1 -1
  3. package/dist/asset.d.ts.map +1 -1
  4. package/dist/asset.js +6 -5
  5. package/dist/asset.js.map +1 -1
  6. package/dist/authoring-actions.d.ts +2 -795
  7. package/dist/authoring-actions.d.ts.map +1 -1
  8. package/dist/authoring-actions.js +66 -3777
  9. package/dist/authoring-actions.js.map +1 -1
  10. package/dist/authoring-bindings.d.ts +35 -0
  11. package/dist/authoring-bindings.d.ts.map +1 -0
  12. package/dist/authoring-bindings.js +241 -0
  13. package/dist/authoring-bindings.js.map +1 -0
  14. package/dist/authoring-dimensions.d.ts +10 -0
  15. package/dist/authoring-dimensions.d.ts.map +1 -0
  16. package/dist/authoring-dimensions.js +88 -0
  17. package/dist/authoring-dimensions.js.map +1 -0
  18. package/dist/authoring-fastening.d.ts +24 -0
  19. package/dist/authoring-fastening.d.ts.map +1 -0
  20. package/dist/authoring-fastening.js +562 -0
  21. package/dist/authoring-fastening.js.map +1 -0
  22. package/dist/authoring-geometry.d.ts +119 -0
  23. package/dist/authoring-geometry.d.ts.map +1 -0
  24. package/dist/authoring-geometry.js +419 -0
  25. package/dist/authoring-geometry.js.map +1 -0
  26. package/dist/authoring-nodes.d.ts +77 -0
  27. package/dist/authoring-nodes.d.ts.map +1 -0
  28. package/dist/authoring-nodes.js +310 -0
  29. package/dist/authoring-nodes.js.map +1 -0
  30. package/dist/authoring-occupancy.d.ts +28 -0
  31. package/dist/authoring-occupancy.d.ts.map +1 -0
  32. package/dist/authoring-occupancy.js +784 -0
  33. package/dist/authoring-occupancy.js.map +1 -0
  34. package/dist/authoring-proportion.d.ts +27 -0
  35. package/dist/authoring-proportion.d.ts.map +1 -0
  36. package/dist/authoring-proportion.js +378 -0
  37. package/dist/authoring-proportion.js.map +1 -0
  38. package/dist/authoring-size.d.ts +17 -0
  39. package/dist/authoring-size.d.ts.map +1 -0
  40. package/dist/authoring-size.js +140 -0
  41. package/dist/authoring-size.js.map +1 -0
  42. package/dist/authoring-types.d.ts +753 -0
  43. package/dist/authoring-types.d.ts.map +1 -0
  44. package/dist/authoring-types.js +42 -0
  45. package/dist/authoring-types.js.map +1 -0
  46. package/dist/command-preview.d.ts +1 -1
  47. package/dist/command-preview.d.ts.map +1 -1
  48. package/dist/command-preview.js +1 -0
  49. package/dist/command-preview.js.map +1 -1
  50. package/dist/contract.d.ts +129 -3
  51. package/dist/contract.d.ts.map +1 -1
  52. package/dist/contract.js +1 -1
  53. package/dist/contract.js.map +1 -1
  54. package/dist/cost.d.ts.map +1 -1
  55. package/dist/cost.js +3 -0
  56. package/dist/cost.js.map +1 -1
  57. package/dist/create.d.ts +36 -0
  58. package/dist/create.d.ts.map +1 -1
  59. package/dist/create.js +60 -0
  60. package/dist/create.js.map +1 -1
  61. package/dist/document.d.ts.map +1 -1
  62. package/dist/document.js +4 -3
  63. package/dist/document.js.map +1 -1
  64. package/dist/editor-workspace.d.ts +3 -3
  65. package/dist/editor-workspace.d.ts.map +1 -1
  66. package/dist/examples.d.ts.map +1 -1
  67. package/dist/examples.js +3 -1
  68. package/dist/examples.js.map +1 -1
  69. package/dist/gate.d.ts.map +1 -1
  70. package/dist/gate.js +2 -0
  71. package/dist/gate.js.map +1 -1
  72. package/dist/graph-types.d.ts +3 -2
  73. package/dist/graph-types.d.ts.map +1 -1
  74. package/dist/graph.d.ts.map +1 -1
  75. package/dist/graph.js +3 -3
  76. package/dist/graph.js.map +1 -1
  77. package/dist/index.d.ts +10 -4
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +8 -2
  80. package/dist/index.js.map +1 -1
  81. package/dist/joint-list.js +1 -1
  82. package/dist/joint-list.js.map +1 -1
  83. package/dist/joint-part-edits.d.ts +40 -0
  84. package/dist/joint-part-edits.d.ts.map +1 -0
  85. package/dist/joint-part-edits.js +488 -0
  86. package/dist/joint-part-edits.js.map +1 -0
  87. package/dist/joint-writing.d.ts +50 -0
  88. package/dist/joint-writing.d.ts.map +1 -0
  89. package/dist/joint-writing.js +847 -0
  90. package/dist/joint-writing.js.map +1 -0
  91. package/dist/json.d.ts.map +1 -1
  92. package/dist/json.js +11 -8
  93. package/dist/json.js.map +1 -1
  94. package/dist/kernel-version.d.ts +1 -1
  95. package/dist/kernel-version.js +1 -1
  96. package/dist/package.d.ts +15 -3
  97. package/dist/package.d.ts.map +1 -1
  98. package/dist/package.js +58 -0
  99. package/dist/package.js.map +1 -1
  100. package/dist/part-edit.d.ts +1 -1
  101. package/dist/part-edit.d.ts.map +1 -1
  102. package/dist/part-edit.js +7 -4
  103. package/dist/part-edit.js.map +1 -1
  104. package/dist/proposal.d.ts +1 -1
  105. package/dist/proposal.d.ts.map +1 -1
  106. package/dist/proposal.js +5 -2
  107. package/dist/proposal.js.map +1 -1
  108. package/dist/render-batches.d.ts +10 -2
  109. package/dist/render-batches.d.ts.map +1 -1
  110. package/dist/render-batches.js +19 -5
  111. package/dist/render-batches.js.map +1 -1
  112. package/dist/resize-plan.d.ts +1 -1
  113. package/dist/resize-plan.d.ts.map +1 -1
  114. package/dist/robots.d.ts.map +1 -1
  115. package/dist/robots.js +3 -1
  116. package/dist/robots.js.map +1 -1
  117. package/dist/room.d.ts +1 -1
  118. package/dist/room.d.ts.map +1 -1
  119. package/dist/room.js +2 -1
  120. package/dist/room.js.map +1 -1
  121. package/dist/shape-edit.js +4 -4
  122. package/dist/shape-edit.js.map +1 -1
  123. package/dist/shape-ops.d.ts +62 -7
  124. package/dist/shape-ops.d.ts.map +1 -1
  125. package/dist/shape-ops.js +117 -8
  126. package/dist/shape-ops.js.map +1 -1
  127. package/dist/slot-layout-presets.d.ts +102 -0
  128. package/dist/slot-layout-presets.d.ts.map +1 -0
  129. package/dist/slot-layout-presets.js +185 -0
  130. package/dist/slot-layout-presets.js.map +1 -0
  131. package/dist/slot-layout.d.ts +16 -1
  132. package/dist/slot-layout.d.ts.map +1 -1
  133. package/dist/slot-layout.js.map +1 -1
  134. package/docs/modeller-interaction-performance-2026-10-07.md +40 -8
  135. package/docs/shape-contract.md +46 -0
  136. package/package.json +1 -1
package/dist/room.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,8 @@ import { FigureContractError } from "./contract.js";
11
11
  import { compileFigureGraph, figureShapeFaces } from "./graph.js";
12
12
  import { figureExtrudeLayoutOf, figureLoftLayoutOf, figureShapeDescriptionOf } from "./shape-ops.js";
13
13
  import { checkFigureSection, normalizeFigureSection } from "./section.js";
14
- const fail = (code, path, message) => {
15
- throw new FigureContractError(code, path, message);
14
+ const fail = (code, path, message, details) => {
15
+ throw new FigureContractError(code, path, message, details);
16
16
  };
17
17
  /** A push's or a pyramid's argument layout: a pyramid's is a drawn push's with its apex after (ADR-0100 §4.1.1). */
18
18
  const layoutOf = (shape) => shape.op === 'loft@1' ? figureLoftLayoutOf(shape.params, shape.id) : figureExtrudeLayoutOf(shape.params, shape.id);
@@ -107,7 +107,7 @@ function keepReferencedFaces(asset, part, shape, before) {
107
107
  lost: lost.map(([face, refs]) => ({ face, ...(face in before ? { axis: look(before[face]).axis, normal: look(before[face]).normal } : {}), refs })),
108
108
  remain: Object.entries(after).map(([face, f]) => ({ face, axis: look(f).axis, normal: look(f).normal }))
109
109
  };
110
- throw new FigureContractError('FEATURE_MAPPING_REQUIRED', part, `this edit takes away ${lost.map(([face, who]) => `${face} (${who.map(r => `${r.kind} ${r.id}`).join(', ')})`).join('; ')}; fasten those elsewhere or unfasten them first`, need);
110
+ throw new FigureContractError('FEATURE_MAPPING_REQUIRED', part, `this edit takes away ${lost.map(([face, who]) => `${face} (${who.map(r => `${r.kind} ${r.id}`).join(', ')})`).join('; ')}; fasten those elsewhere or unfasten them first`, { reason: 'faces-taken-away', ...need });
111
111
  }
112
112
  }
113
113
  const LENGTH_INPUT = (id) => ({ id, unit: 'mm', min: 0, max: Number.MAX_VALUE, role: 'design' });
@@ -276,7 +276,7 @@ export function setFigureSectionPoints(asset, part, points, drop) {
276
276
  const section = { kind: 'polygon', points: points.map(q => ({ id: q.id, [a]: q[a], [b]: q[b] })) };
277
277
  const issues = checkFigureSection(section, L.axis);
278
278
  if (issues.length)
279
- fail('SECTION_INVALID', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`);
279
+ fail('SECTION_INVALID', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`, { reason: 'section-invalid', issues });
280
280
  const drawn = normalizeFigureSection(section, L.axis);
281
281
  const m = asset.document.model;
282
282
  const before = figureShapeFaces(shape) ?? {};
@@ -1 +1 @@
1
- {"version":3,"file":"shape-edit.js","sourceRoot":"","sources":["../src/shape-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shape-edit.js","sourceRoot":"","sources":["../src/shape-edit.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,10 @@ export interface FigureShapeFace {
14
14
  }>;
15
15
  /**
16
16
  * `line`: the plane touches a curved side at its extreme -- a cylinder's side (Q3). A part fastened to it touches it
17
- * along a line, and the screen says so; it is not a surface to hold things on.
17
+ * along a line, and the screen says so; it is not a surface to hold things on. `bounds`: a face of the box around a
18
+ * mesh, not the mesh's surface (ADR-0107 decision 4) -- a part fastened to it sits on the box.
18
19
  */
19
- contact?: 'line';
20
+ contact?: 'line' | 'bounds';
20
21
  }
21
22
  /** A term of a measure: an argument times a factor (a radius is half a width). */
22
23
  export type FigureShapeTerm = {
@@ -31,8 +32,11 @@ export type FigureShapeEdit = {
31
32
  } | {
32
33
  refused: FigureShapeEditRefusal;
33
34
  };
34
- /** Why an axis cannot be edited by a size: its reach is a drawn section's points. */
35
- export type FigureShapeEditRefusal = 'SECTION_CORNERS' | 'NO_MEASURE';
35
+ /**
36
+ * Why an axis cannot be edited by a size: its reach is a drawn section's points, it has none, or it is a mesh's other
37
+ * axis -- a mesh is sized as a whole along its longest axis, and the others follow (ADR-0129 decision 2).
38
+ */
39
+ export type FigureShapeEditRefusal = 'SECTION_CORNERS' | 'NO_MEASURE' | 'MESH_UNIFORM';
36
40
  /**
37
41
  * What a shape node offers the commands that size and place a part (ADR-0097 §6, ADR-0100 §4.2): how far it reaches
38
42
  * along each of its own axes, how a size edits it, and its flat faces by name.
@@ -43,7 +47,7 @@ export interface FigureShapeDescription {
43
47
  edit: Readonly<Record<Axis, FigureShapeEdit>>;
44
48
  faces: Readonly<Record<string, FigureShapeFace>>;
45
49
  /** What a person calls it, for messages: 상자, 원기둥 … */
46
- kind: 'rectangle' | 'ellipse' | 'polygon' | 'portal' | 'sphere' | 'taper' | 'pyramid';
50
+ kind: 'rectangle' | 'ellipse' | 'polygon' | 'portal' | 'sphere' | 'taper' | 'pyramid' | 'mesh';
47
51
  }
48
52
  export type FigureSectionKind = 'rectangle' | 'ellipse' | 'polygon' | 'portal';
49
53
  export declare const FIGURE_SECTION_KINDS: readonly FigureSectionKind[];
@@ -89,6 +93,40 @@ export type FigureRevolveProfile = 'half-ellipse' | 'taper';
89
93
  export declare function figureLoftLayoutOf(params: Record<string, string> | undefined, path: string): FigureExtrudeLayout & {
90
94
  apex: Record<Axis, number>;
91
95
  };
96
+ /** The file formats a mesh part reads. Only binary glTF (ADR-0129). */
97
+ export declare const FIGURE_MESH_FORMATS: readonly string[];
98
+ /** A mesh's bounds as a param value: `mm_` and its six numbers. A number that needs `+` to be written is refused. */
99
+ export declare function figureMeshBoundsParam(b: {
100
+ min: {
101
+ x: number;
102
+ y: number;
103
+ z: number;
104
+ };
105
+ max: {
106
+ x: number;
107
+ y: number;
108
+ z: number;
109
+ };
110
+ }): string;
111
+ export interface FigureMeshLayout {
112
+ /** The file's sha256, lower-case hex. */
113
+ asset: string;
114
+ format: string;
115
+ /** The node of the file, by its place; none for the whole file. */
116
+ node?: number;
117
+ unit: string;
118
+ /** The reach at 1:1, in mm, in the part's own frame, as the file has it. */
119
+ bounds: Record<Axis, {
120
+ min: number;
121
+ max: number;
122
+ }>;
123
+ /** The axis it reaches furthest along: the one its size is. */
124
+ axis: Axis;
125
+ triangles: number;
126
+ primitives: number;
127
+ }
128
+ /** A mesh node's record (contract §13), checked. Every reader goes through here. */
129
+ export declare function figureMeshLayoutOf(params: Record<string, string> | undefined, path: string): FigureMeshLayout;
92
130
  export declare const FIGURE_SHAPE_OPERATOR_NAMES: readonly string[];
93
131
  /**
94
132
  * What a shape node offers, or undefined for a node that is not a shape. Given the graph, a centred push's ends are
@@ -109,7 +147,7 @@ export declare function figureShapeDescriptionOf(node: {
109
147
  * face needs without knowing the operation.
110
148
  */
111
149
  export interface FigureEvaluatedShape {
112
- provider: 'extrude' | 'revolve' | 'loft';
150
+ provider: 'extrude' | 'revolve' | 'loft' | 'mesh';
113
151
  dimensions: Record<string, number>;
114
152
  extrusion?: {
115
153
  axis: Axis;
@@ -142,6 +180,23 @@ export interface FigureEvaluatedShape {
142
180
  end: number;
143
181
  apex: Partial<Record<Axis, number>>;
144
182
  };
183
+ /**
184
+ * A file's mesh (contract §13): the file by its hash, the node of it, and how it is drawn -- `scale` is mm per file
185
+ * unit, and `bounds` are its reach at this size, in its own frame. The renderer draws the file, or this box without it.
186
+ */
187
+ mesh?: {
188
+ asset: string;
189
+ format: string;
190
+ node?: number;
191
+ unit: string;
192
+ scale: number;
193
+ bounds: Record<Axis, {
194
+ min: number;
195
+ max: number;
196
+ }>;
197
+ triangles: number;
198
+ primitives: number;
199
+ };
145
200
  faces: Record<string, {
146
201
  axis: Axis;
147
202
  normal: 1 | -1;
@@ -151,7 +206,7 @@ export interface FigureEvaluatedShape {
151
206
  /** The two operators, in the graph's operator shape. */
152
207
  export declare const FIGURE_SHAPE_OPERATORS: Record<string, Dynamic>;
153
208
  /** How far an evaluated shape reaches along each of its own axes: least and most, in its own frame. */
154
- export declare function figureShapeBoundsOf(shape: Pick<FigureEvaluatedShape, 'extrusion' | 'loft' | 'revolution'>): Record<Axis, {
209
+ export declare function figureShapeBoundsOf(shape: Pick<FigureEvaluatedShape, 'extrusion' | 'loft' | 'revolution' | 'mesh'>): Record<Axis, {
155
210
  min: number;
156
211
  max: number;
157
212
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"shape-ops.d.ts","sourceRoot":"","sources":["../src/shape-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shape-ops.d.ts","sourceRoot":"","sources":["../src/shape-ops.ts"],"names":[],"mappings":"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"}
package/dist/shape-ops.js CHANGED
@@ -3,8 +3,8 @@
3
3
  */
4
4
  /*
5
5
  * The shape operations (ADR-0100, docs/shape-contract.md): `extrude@1` pushes a section along one of the part's own
6
- * axes, `revolve@1` turns a half-section about one, `loft@1` draws a drawn section to one point (a pyramid). They are
7
- * the only operators that make a shape.
6
+ * axes, `revolve@1` turns a half-section about one, `loft@1` draws a drawn section to one point (a pyramid), and
7
+ * `mesh@1` is a file's mesh, named by its hash (ADR-0129, contract §13). They are the only operators that make a shape.
8
8
  *
9
9
  * A node is the record of its shape: its params say what it is -- the axis, the kind of section, the names of a drawn
10
10
  * section's points, whether it has an inside and which of its ends are open -- and its arguments are the values that
@@ -15,8 +15,8 @@ import { FigureContractError } from "./contract.js";
15
15
  import { checkFigureSection, FIGURE_SECTION_PLANE } from "./section.js";
16
16
  import { figureExtrusionFeaturesOf } from "./shape-features.js";
17
17
  import { AXES } from "./words.js";
18
- const fail = (code, path, detail) => {
19
- throw new FigureContractError(code, path, detail);
18
+ const fail = (code, path, detail, details) => {
19
+ throw new FigureContractError(code, path, detail, details);
20
20
  };
21
21
  const isLength = (t) => Array.isArray(t) && t.length === 3 && t[0] === 1 && t[1] === 0 && t[2] === 0;
22
22
  /** The words the part's outer faces go by, low then high, along each of its own axes. */
@@ -290,7 +290,82 @@ function loftDescription(node, model) {
290
290
  /* Only its base is flat and whole: the end is a point, and the sides are not faces to fasten to yet (§5). */
291
291
  return { measure, edit, faces: { [lo]: { axis: L.axis, normal: -1, plane: endsOf(node, model).lo } }, kind: 'pyramid' };
292
292
  }
293
- export const FIGURE_SHAPE_OPERATOR_NAMES = ['extrude@1', 'revolve@1', 'loft@1'];
293
+ /* ------------------------------------------------------------------------------------------------------------ mesh */
294
+ /** The file formats a mesh part reads. Only binary glTF (ADR-0129). */
295
+ export const FIGURE_MESH_FORMATS = ['glb'];
296
+ /** A file's unit, in mm. glTF is in metres. */
297
+ const MESH_UNITS = { m: 1000, mm: 1 };
298
+ /*
299
+ * A node's params are identifiers (`graph.ts`), so the record is written as such: `asset` is `sha256-<hex>`, `bounds`
300
+ * are `mm_<min x>_<min y>_<min z>_<max x>_<max y>_<max z>`, the counts are `n<digits>`, and `node` is `node-<index>`.
301
+ * A node is picked by its place in the file, not its name: the file is fixed by its hash, so its place is exact, and a
302
+ * glTF name may repeat or hold any character.
303
+ */
304
+ const ASSET = /^sha256-([0-9a-f]{64})$/;
305
+ const NUMBER = '-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e-?\\d+)?';
306
+ const BOUNDS = new RegExp(`^mm${`_(${NUMBER})`.repeat(6)}$`);
307
+ const COUNT = /^n(\d+)$/;
308
+ const NODE = /^node-(\d+)$/;
309
+ /** A mesh's bounds as a param value: `mm_` and its six numbers. A number that needs `+` to be written is refused. */
310
+ export function figureMeshBoundsParam(b) {
311
+ const ns = [b.min.x, b.min.y, b.min.z, b.max.x, b.max.y, b.max.z].map(v => String(v === 0 ? 0 : v));
312
+ return `mm_${ns.join('_')}`;
313
+ }
314
+ /** A mesh node's record (contract §13), checked. Every reader goes through here. */
315
+ export function figureMeshLayoutOf(params, path) {
316
+ const p = params ?? {};
317
+ const asset = ASSET.exec(p.asset ?? '')?.[1];
318
+ if (!asset)
319
+ fail('PARAM', path, 'asset is sha256- and the file\'s 64 lower-case hex digits');
320
+ if (!FIGURE_MESH_FORMATS.includes(p.format))
321
+ fail('PARAM', path, `format is ${FIGURE_MESH_FORMATS.join(' or ')}, not ${String(p.format)}`);
322
+ if (!Object.hasOwn(MESH_UNITS, p.unit ?? ''))
323
+ fail('PARAM', path, `unit is ${Object.keys(MESH_UNITS).join(' or ')}, not ${String(p.unit)}`);
324
+ const nodeAt = p.node === undefined ? undefined : NODE.exec(p.node)?.[1];
325
+ if (p.node !== undefined && nodeAt === undefined)
326
+ fail('PARAM', path, 'node, when given, is node- and its place in the file');
327
+ const written = BOUNDS.exec(p.bounds ?? '');
328
+ const n = (written ?? []).slice(1).map(Number);
329
+ if (!written || n.length !== 6 || !n.every(Number.isFinite))
330
+ fail('PARAM', path, 'bounds are mm_ and six numbers: min x, y, z, then max x, y, z');
331
+ const bounds = { x: { min: n[0], max: n[3] }, y: { min: n[1], max: n[4] }, z: { min: n[2], max: n[5] } };
332
+ if (AXES.some(x => !(bounds[x].max >= bounds[x].min)))
333
+ fail('PARAM', path, 'each bound\'s max is at least its min');
334
+ const axis = p.axis;
335
+ if (!AXES.includes(axis))
336
+ fail('PARAM', path, `axis is x, y or z, not ${String(p.axis)}`);
337
+ const reach = (x) => bounds[x].max - bounds[x].min;
338
+ if (!(reach(axis) > 0) || AXES.some(x => reach(x) > reach(axis)))
339
+ fail('PARAM', path, `axis is the one the bounds reach furthest along, and it has a reach`);
340
+ const count = (name) => {
341
+ const v = Number(COUNT.exec(p[name] ?? '')?.[1]);
342
+ if (!Number.isSafeInteger(v))
343
+ fail('PARAM', path, `${name} is n and a count`);
344
+ return v;
345
+ };
346
+ return { asset: asset, format: p.format, ...(nodeAt !== undefined ? { node: Number(nodeAt) } : {}), unit: p.unit, bounds, axis, triangles: count('triangles'), primitives: count('primitives') };
347
+ }
348
+ /*
349
+ * A mesh's one argument is its size: its reach along `axis`, in mm. Every axis reaches size times its share of that
350
+ * reach, and its faces are the faces of its bounds at that size.
351
+ */
352
+ function meshDescription(node) {
353
+ const L = figureMeshLayoutOf(node.params, node.id);
354
+ const span = L.bounds[L.axis].max - L.bounds[L.axis].min;
355
+ const measure = {};
356
+ const edit = {};
357
+ const faces = {};
358
+ for (const x of AXES) {
359
+ const share = (L.bounds[x].max - L.bounds[x].min) / span;
360
+ measure[x] = [{ arg: 0, k: share }];
361
+ edit[x] = x === L.axis ? { arg: 0, k: 1 } : { refused: share > 0 ? 'MESH_UNIFORM' : 'NO_MEASURE' };
362
+ const [lo, hi] = FIGURE_OUTER_FACES[x];
363
+ faces[lo] = { axis: x, normal: -1, plane: [{ arg: 0, k: L.bounds[x].min / span }], contact: 'bounds' };
364
+ faces[hi] = { axis: x, normal: 1, plane: [{ arg: 0, k: L.bounds[x].max / span }], contact: 'bounds' };
365
+ }
366
+ return { measure, edit, faces, kind: 'mesh' };
367
+ }
368
+ export const FIGURE_SHAPE_OPERATOR_NAMES = ['extrude@1', 'revolve@1', 'loft@1', 'mesh@1'];
294
369
  /**
295
370
  * What a shape node offers, or undefined for a node that is not a shape. Given the graph, a centred push's ends are
296
371
  * written as ±half its length (`endsOf`); the planes are the same either way.
@@ -302,6 +377,8 @@ export function figureShapeDescriptionOf(node, model) {
302
377
  return revolveDescription(node, model);
303
378
  if (node?.op === 'loft@1')
304
379
  return loftDescription(node, model);
380
+ if (node?.op === 'mesh@1')
381
+ return meshDescription(node);
305
382
  return undefined;
306
383
  }
307
384
  const facesAt = (faces, args) => Object.fromEntries(Object.entries(faces).map(([name, f]) => [
@@ -393,7 +470,7 @@ function runExtrude(args, path, node) {
393
470
  }
394
471
  const issues = checkFigureSection(section, L.axis);
395
472
  if (issues.length)
396
- fail('GEOMETRY_DOMAIN', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`);
473
+ fail('GEOMETRY_DOMAIN', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`, { reason: 'section-invalid', issues });
397
474
  if (section.kind === 'polygon' && L.section === 'polygon' && !(signedArea2(section, L.axis) > 0))
398
475
  fail('SECTION_WINDING', path, 'a drawn section runs counter-clockwise seen from its push axis; write it with normalizeFigureSection');
399
476
  const extrusion = { axis: L.axis, section, start, end: start + length };
@@ -414,7 +491,7 @@ function runExtrude(args, path, node) {
414
491
  dimensions['closed.end'] = cavity.end.closed;
415
492
  const r = figureExtrusionFeaturesOf(extrusion, [cavity]);
416
493
  if ('refused' in r)
417
- fail('GEOMETRY_DOMAIN', path, `the inside is not valid: ${r.refused.code}${'refused' in r.refused ? ` ${r.refused.refused}` : ''}`);
494
+ fail('GEOMETRY_DOMAIN', path, `the inside is not valid: ${r.refused.code}${'refused' in r.refused ? ` ${r.refused.refused}` : ''}`, { reason: 'inside-invalid', refusal: r.refused });
418
495
  }
419
496
  return {
420
497
  provider: 'extrude',
@@ -463,7 +540,7 @@ function runLoft(args, path, node) {
463
540
  const section = { kind: 'polygon', points };
464
541
  const issues = checkFigureSection(section, L.axis);
465
542
  if (issues.length)
466
- fail('GEOMETRY_DOMAIN', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`);
543
+ fail('GEOMETRY_DOMAIN', path, `the section is not valid: ${issues.map(i => i.code).join(', ')}`, { reason: 'section-invalid', issues });
467
544
  if (!(signedArea2(section, L.axis) > 0))
468
545
  fail('SECTION_WINDING', path, 'a drawn section runs counter-clockwise seen from its push axis; write it with normalizeFigureSection');
469
546
  const apex = { [a]: args[L.apex[a]], [b]: args[L.apex[b]] };
@@ -478,6 +555,20 @@ function runLoft(args, path, node) {
478
555
  faces: facesAt(loftDescription(node).faces, args)
479
556
  };
480
557
  }
558
+ function runMesh(args, path, node) {
559
+ const L = figureMeshLayoutOf(node.params, path);
560
+ const size = args[0];
561
+ if (!(size > 0))
562
+ fail('GEOMETRY_DOMAIN', path, `a mesh of positive size required, not ${size}`);
563
+ const ratio = size / (L.bounds[L.axis].max - L.bounds[L.axis].min);
564
+ const bounds = Object.fromEntries(AXES.map(x => [x, { min: L.bounds[x].min * ratio, max: L.bounds[x].max * ratio }]));
565
+ return {
566
+ provider: 'mesh',
567
+ dimensions: { size },
568
+ mesh: { asset: L.asset, format: L.format, ...(L.node !== undefined ? { node: L.node } : {}), unit: L.unit, scale: MESH_UNITS[L.unit] * ratio, bounds, triangles: L.triangles, primitives: L.primitives },
569
+ faces: facesAt(meshDescription(node).faces, args)
570
+ };
571
+ }
481
572
  /** The shape's value type: its frame, and the directions of its flat faces, which a reader checks names against. */
482
573
  function shapeType(provider, n, faces) {
483
574
  return {
@@ -522,11 +613,24 @@ export const FIGURE_SHAPE_OPERATORS = {
522
613
  return [shapeType('loft', n, loftDescription(n).faces)];
523
614
  },
524
615
  run: (args, p, n) => [runLoft(args, p, n)]
616
+ },
617
+ 'mesh@1': {
618
+ ports: ['shape'],
619
+ params: ['frame', 'asset', 'format', 'unit', 'bounds', 'axis', 'triangles', 'primitives'],
620
+ optionalParams: ['node'],
621
+ types(t, p, n) {
622
+ if (t.length !== 1 || !t.every(isLength))
623
+ fail('TYPE', p, `a mesh takes one length, its size, not ${t.length}`);
624
+ return [shapeType('mesh', n, meshDescription(n).faces)];
625
+ },
626
+ run: (args, p, n) => [runMesh(args, p, n)]
525
627
  }
526
628
  };
527
629
  /* ----------------------------------------------------------------------------------------------- evaluated readers */
528
630
  /** How far an evaluated shape reaches along each of its own axes: least and most, in its own frame. */
529
631
  export function figureShapeBoundsOf(shape) {
632
+ if (shape.mesh)
633
+ return Object.fromEntries(AXES.map(x => [x, { ...shape.mesh.bounds[x] }]));
530
634
  const out = {};
531
635
  if (shape.extrusion) {
532
636
  const e = shape.extrusion;
@@ -605,6 +709,11 @@ export function figureShapeSupportOf(shape, d) {
605
709
  const l = shape.loft;
606
710
  return span([...l.section.points.map(p => ({ ...p, [l.axis]: l.start })), { ...l.apex, [l.axis]: l.end }]);
607
711
  }
712
+ /* A mesh reaches no further than its bounds' corners: the box is what the kernel knows of it. */
713
+ if (shape.mesh) {
714
+ const b = shape.mesh.bounds;
715
+ return span([b.x.min, b.x.max].flatMap(x => [b.y.min, b.y.max].flatMap(y => [b.z.min, b.z.max].map(z => ({ x, y, z })))));
716
+ }
608
717
  const r = shape.revolution;
609
718
  if (r.profile.kind === 'half-ellipse') {
610
719
  const [u, v] = FIGURE_SECTION_PLANE[r.axis];