@hatiolab/figure-model 0.1.95 → 0.2.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 (98) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/asset.d.ts.map +1 -1
  3. package/dist/asset.js +3 -1
  4. package/dist/asset.js.map +1 -1
  5. package/dist/authoring-actions.d.ts +19 -0
  6. package/dist/authoring-actions.d.ts.map +1 -1
  7. package/dist/authoring-actions.js +106 -63
  8. package/dist/authoring-actions.js.map +1 -1
  9. package/dist/command-preview.d.ts +3 -1
  10. package/dist/command-preview.d.ts.map +1 -1
  11. package/dist/command-preview.js +52 -27
  12. package/dist/command-preview.js.map +1 -1
  13. package/dist/cost.d.ts +1 -1
  14. package/dist/cost.d.ts.map +1 -1
  15. package/dist/cost.js +30 -25
  16. package/dist/cost.js.map +1 -1
  17. package/dist/create.d.ts.map +1 -1
  18. package/dist/create.js +112 -31
  19. package/dist/create.js.map +1 -1
  20. package/dist/document.d.ts.map +1 -1
  21. package/dist/document.js +3 -2
  22. package/dist/document.js.map +1 -1
  23. package/dist/fixtures/shape-nodes.d.ts +12 -0
  24. package/dist/fixtures/shape-nodes.d.ts.map +1 -0
  25. package/dist/fixtures/shape-nodes.js +20 -0
  26. package/dist/fixtures/shape-nodes.js.map +1 -0
  27. package/dist/follow.d.ts.map +1 -1
  28. package/dist/follow.js +5 -2
  29. package/dist/follow.js.map +1 -1
  30. package/dist/gate.d.ts.map +1 -1
  31. package/dist/gate.js +31 -59
  32. package/dist/gate.js.map +1 -1
  33. package/dist/graph-types.d.ts +7 -6
  34. package/dist/graph-types.d.ts.map +1 -1
  35. package/dist/graph.d.ts +17 -12
  36. package/dist/graph.d.ts.map +1 -1
  37. package/dist/graph.js +24 -292
  38. package/dist/graph.js.map +1 -1
  39. package/dist/index.d.ts +4 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +5 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/kernel-version.d.ts +1 -1
  44. package/dist/kernel-version.d.ts.map +1 -1
  45. package/dist/kernel-version.js +1 -1
  46. package/dist/kernel-version.js.map +1 -1
  47. package/dist/part-edit.d.ts.map +1 -1
  48. package/dist/part-edit.js +8 -6
  49. package/dist/part-edit.js.map +1 -1
  50. package/dist/proposal.d.ts +1 -1
  51. package/dist/proposal.d.ts.map +1 -1
  52. package/dist/proposal.js +14 -2
  53. package/dist/proposal.js.map +1 -1
  54. package/dist/recipe-from-parts.d.ts.map +1 -1
  55. package/dist/recipe-from-parts.js +107 -24
  56. package/dist/recipe-from-parts.js.map +1 -1
  57. package/dist/render-batches.d.ts.map +1 -1
  58. package/dist/render-batches.js +11 -2
  59. package/dist/render-batches.js.map +1 -1
  60. package/dist/resize-plan.d.ts.map +1 -1
  61. package/dist/resize-plan.js +22 -8
  62. package/dist/resize-plan.js.map +1 -1
  63. package/dist/section.d.ts +164 -0
  64. package/dist/section.d.ts.map +1 -0
  65. package/dist/section.js +277 -0
  66. package/dist/section.js.map +1 -0
  67. package/dist/shape-edit.d.ts +22 -0
  68. package/dist/shape-edit.d.ts.map +1 -0
  69. package/dist/shape-edit.js +225 -0
  70. package/dist/shape-edit.js.map +1 -0
  71. package/dist/shape-features.d.ts +83 -0
  72. package/dist/shape-features.d.ts.map +1 -0
  73. package/dist/shape-features.js +102 -0
  74. package/dist/shape-features.js.map +1 -0
  75. package/dist/shape-ops.d.ts +154 -0
  76. package/dist/shape-ops.d.ts.map +1 -0
  77. package/dist/shape-ops.js +571 -0
  78. package/dist/shape-ops.js.map +1 -0
  79. package/dist/shape-provider.d.ts +16 -23
  80. package/dist/shape-provider.d.ts.map +1 -1
  81. package/dist/shape-provider.js +18 -56
  82. package/dist/shape-provider.js.map +1 -1
  83. package/dist/shape-sampling.d.ts +0 -8
  84. package/dist/shape-sampling.d.ts.map +1 -1
  85. package/dist/shape-sampling.js +67 -101
  86. package/dist/shape-sampling.js.map +1 -1
  87. package/dist/size-edit.js +2 -2
  88. package/dist/size-edit.js.map +1 -1
  89. package/dist/surface.d.ts.map +1 -1
  90. package/dist/surface.js +10 -17
  91. package/dist/surface.js.map +1 -1
  92. package/dist/words.d.ts +7 -0
  93. package/dist/words.d.ts.map +1 -1
  94. package/dist/words.js +7 -0
  95. package/dist/words.js.map +1 -1
  96. package/docs/document-contract.md +1 -1
  97. package/docs/shape-contract.md +439 -0
  98. package/package.json +2 -1
@@ -1,37 +1,30 @@
1
1
  import type { Axis } from './words.ts';
2
- import { type FigureShapeFace } from './graph.ts';
2
+ import { type FigureShapeEdit, type FigureShapeEditRefusal, type FigureShapeFace, type FigureShapeTerm } from './shape-ops.ts';
3
+ export type { FigureShapeEdit, FigureShapeEditRefusal, FigureShapeTerm };
3
4
  /**
4
5
  * What a shape offers the commands that size and place a part (ADR-0097 §6): how far it reaches along each of its own
5
6
  * axes, which of those a size can edit and how, and the flat faces it can be attached by. Three separate answers: a
6
- * sphere is measured along every axis and edited along every axis, yet has no face to attach by; a section is measured
7
- * across by its corners and edited across by none. Nothing reads a shape's arguments by their order to find X, Y or Z.
7
+ * sphere is measured along every axis and edited along every axis, yet has no face to attach by; a drawn section is
8
+ * measured across by its points and edited across by none. Nothing reads a shape's arguments by their order to find X,
9
+ * Y or Z: the shape node says which is which (ADR-0100, `figureShapeDescriptionOf`).
8
10
  */
9
11
  export interface FigureShapeProvider {
10
- /** Along each axis, candidates whose largest is the reach -- `Σ k × argument` each (a frustum is as wide as its wider end). */
12
+ /** Along each axis, candidates whose largest is the reach -- `Σ k × argument` each (a taper is as wide as its wider end). */
11
13
  measure: Readonly<Record<Axis, ReadonlyArray<FigureShapeTerm> | 'profile'>>;
12
14
  /** Along each axis, how a size edits the shape, or why it cannot. */
13
15
  edit: Readonly<Record<Axis, FigureShapeEdit>>;
14
- /** The flat faces a part can be attached by, as the shape's operator declares them; none for a sphere. */
16
+ /** The flat faces a part can be attached by; none for a sphere. */
15
17
  faces: Readonly<Record<string, FigureShapeFace>>;
16
18
  }
17
- export type FigureShapeTerm = {
18
- arg: number;
19
- k: number;
19
+ type ShapeNode = {
20
+ op: string;
21
+ id?: string;
22
+ args?: readonly string[];
23
+ params?: Record<string, string>;
20
24
  };
21
- export type FigureShapeEdit = {
22
- arg: number;
23
- k: number;
24
- with?: readonly number[];
25
- sameAs?: Axis;
26
- } | {
27
- refused: FigureShapeEditRefusal;
28
- };
29
- /** Why an axis cannot be edited: its measure is its section's corners, or the shape has no measure along it. */
30
- export type FigureShapeEditRefusal = 'SECTION_CORNERS' | 'NO_MEASURE';
31
- /** The provider for a shape operator, or undefined for an operator that is not a shape. */
32
- export declare function figureShapeProviderOf(op: string): FigureShapeProvider | undefined;
25
+ /** The provider for a shape node, or undefined for a node that is not a shape. */
26
+ export declare function figureShapeProviderOf(shape: ShapeNode | undefined): FigureShapeProvider | undefined;
33
27
  /** The axes a size can edit on its own: every editable axis but one that is another's measure. */
34
- export declare function figureEditableAxesOf(op: string): Axis[];
35
- /** The axes a part of this shape can make follow the figure's size, or another's measure, now. */
36
- export declare function figureFollowableAxesOf(op: string): Axis[];
28
+ export declare function figureEditableAxesOf(shape: ShapeNode | undefined): Axis[];
29
+ export declare function figureFollowableAxesOf(shape: ShapeNode | undefined): Axis[];
37
30
  //# sourceMappingURL=shape-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shape-provider.d.ts","sourceRoot":"","sources":["../src/shape-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AAEnE;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,+HAA+H;IAC/H,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3E,qEAAqE;IACrE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAA;IAC7C,0GAA0G;IAC1G,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;CACjD;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAExD,MAAM,MAAM,eAAe,GAMvB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CAAE,GACnE;IAAE,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAA;AAEvC,gHAAgH;AAChH,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,YAAY,CAAA;AA6CrE,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAGjF;AAED,kGAAkG;AAClG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,CAOvD;AAUD,kGAAkG;AAClG,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,CAEzD"}
1
+ {"version":3,"file":"shape-provider.d.ts","sourceRoot":"","sources":["../src/shape-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,CAAA;AAExE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,6HAA6H;IAC7H,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3E,qEAAqE;IACrE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAA;IAC7C,mEAAmE;IACnE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;CACjD;AAED,KAAK,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAA;AAEvG,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAGnG;AAED,kGAAkG;AAClG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,EAAE,CAOzE;AAUD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,EAAE,CAI3E"}
@@ -1,53 +1,12 @@
1
- import { figureShapeFaces } from "./graph.js";
2
- const term = (arg, k = 1) => [{ arg, k }];
3
- const BOX_MEASURE = { x: term(0), y: term(1), z: term(2) };
4
- const BOX_EDIT = { x: { arg: 0, k: 1 }, y: { arg: 1, k: 1 }, z: { arg: 2, k: 1 } };
5
- const PROVIDERS = {
6
- 'box-shape@1': { measure: BOX_MEASURE, edit: BOX_EDIT },
7
- /* A rounded, hollow or framed box measures and edits as a box; its corners, walls, jambs and head keep their own numbers. */
8
- 'rounded-box@1': { measure: BOX_MEASURE, edit: BOX_EDIT },
9
- 'rounded-box@2': { measure: BOX_MEASURE, edit: BOX_EDIT },
10
- 'hollow-box@1': { measure: BOX_MEASURE, edit: BOX_EDIT },
11
- 'hollow-box@2': { measure: BOX_MEASURE, edit: BOX_EDIT },
12
- 'portal-profile@2': { measure: BOX_MEASURE, edit: BOX_EDIT },
13
- /* A cylinder stands along its Y: its radius across (X, and Z with it), its length along. */
14
- 'cylinder-shape@1': {
15
- measure: { x: term(0, 2), y: term(1), z: term(0, 2) },
16
- edit: { x: { arg: 0, k: 2 }, y: { arg: 1, k: 1 }, z: { arg: 0, k: 2, sameAs: 'x' } }
17
- },
18
- /* An elliptic cylinder: (radiusX, radiusZ, length) -- a radius across each way, its length along Y. */
19
- 'cylinder-shape@2': {
20
- measure: { x: term(0, 2), y: term(2), z: term(1, 2) },
21
- edit: { x: { arg: 0, k: 2 }, y: { arg: 2, k: 1 }, z: { arg: 1, k: 2 } }
22
- },
23
- /* An ellipsoid: a radius each way. */
24
- 'sphere-shape@1': {
25
- measure: { x: term(0, 2), y: term(1, 2), z: term(2, 2) },
26
- edit: { x: { arg: 0, k: 2 }, y: { arg: 1, k: 2 }, z: { arg: 2, k: 2 } }
27
- },
28
- /*
29
- A frustum (radiusTop, radiusBottom, height): as wide as the wider of its two ends, whichever that is. A width edits
30
- both ends in proportion, so the taper stays and an end of radius 0 -- a cone's point -- stays a point; editing one
31
- radius alone is not a change of width.
32
- */
33
- 'frustum-shape@1': {
34
- measure: { x: [{ arg: 0, k: 2 }, { arg: 1, k: 2 }], y: term(2), z: [{ arg: 0, k: 2 }, { arg: 1, k: 2 }] },
35
- edit: { x: { arg: 1, k: 2, with: [0] }, y: { arg: 2, k: 1 }, z: { arg: 1, k: 2, with: [0], sameAs: 'x' } }
36
- },
37
- /* A section (height, then its corners) pushed along Y: measured across by its corners, which no size edits. */
38
- 'polygon-shape@1': {
39
- measure: { x: 'profile', y: term(0), z: 'profile' },
40
- edit: { x: { refused: 'SECTION_CORNERS' }, y: { arg: 0, k: 1 }, z: { refused: 'SECTION_CORNERS' } }
41
- }
42
- };
43
- /** The provider for a shape operator, or undefined for an operator that is not a shape. */
44
- export function figureShapeProviderOf(op) {
45
- const own = PROVIDERS[op];
46
- return own && { ...own, faces: figureShapeFaces(op) ?? {} };
1
+ import { figureShapeDescriptionOf } from "./shape-ops.js";
2
+ /** The provider for a shape node, or undefined for a node that is not a shape. */
3
+ export function figureShapeProviderOf(shape) {
4
+ const own = figureShapeDescriptionOf(shape);
5
+ return own && { measure: own.measure, edit: own.edit, faces: own.faces };
47
6
  }
48
7
  /** The axes a size can edit on its own: every editable axis but one that is another's measure. */
49
- export function figureEditableAxesOf(op) {
50
- const edit = PROVIDERS[op]?.edit;
8
+ export function figureEditableAxesOf(shape) {
9
+ const edit = figureShapeProviderOf(shape)?.edit;
51
10
  if (!edit)
52
11
  return [];
53
12
  return ['x', 'y', 'z'].filter(axis => {
@@ -56,14 +15,17 @@ export function figureEditableAxesOf(op) {
56
15
  });
57
16
  }
58
17
  /*
59
- * The shapes whose size can follow something today: a measure is linked through the shape's argument at the axis's
60
- * place, so only shapes whose edited measures sit there are taken. Every command and screen that offers "follow"
61
- * asks here -- follow-size, the resize plan, the modeller -- so no two lists decide it apart (designer 2026-09-27).
62
- * The other shapes wait for linking to read the provider's `edit`.
18
+ * The axes a part of this shape can make follow the figure's size, or another's measure. Every command and screen that
19
+ * offers "follow" asks here -- follow-size, the resize plan, the modeller -- so no two lists decide it apart (designer
20
+ * 2026-09-27). Linking reads the provider's `edit`, so every editable axis follows, except:
21
+ * - an axis that carries another argument in proportion (a taper's other end): linking writes one argument;
22
+ * - a sphere: its radius across is one value for X and for Z, so following the figure its depth would follow the width
23
+ * and not the depth. Not offered until someone rules on it -- it was not offered before either.
63
24
  */
64
- const FOLLOWS_NOW = new Set(['box-shape@1', 'rounded-box@1', 'portal-profile@2', 'hollow-box@2', 'cylinder-shape@1']);
65
- /** The axes a part of this shape can make follow the figure's size, or another's measure, now. */
66
- export function figureFollowableAxesOf(op) {
67
- return FOLLOWS_NOW.has(op) ? figureEditableAxesOf(op) : [];
25
+ export function figureFollowableAxesOf(shape) {
26
+ const own = figureShapeDescriptionOf(shape);
27
+ if (!own || own.kind === 'sphere')
28
+ return [];
29
+ return figureEditableAxesOf(shape).filter(axis => !own.edit[axis].with?.length);
68
30
  }
69
31
  //# sourceMappingURL=shape-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shape-provider.js","sourceRoot":"","sources":["../src/shape-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shape-provider.js","sourceRoot":"","sources":["../src/shape-provider.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EAKzB,MAAM,gBAAgB,CAAA;AAsBvB,kFAAkF;AAClF,MAAM,UAAU,qBAAqB,CAAC,KAA4B;IAChE,MAAM,GAAG,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAC3C,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAA;AAC1E,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,oBAAoB,CAAC,KAA4B;IAC/D,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAA;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,OAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QACpB,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,MAAM,GAAG,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAC5C,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAkC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AACnH,CAAC"}
@@ -1,13 +1,5 @@
1
1
  import type { FigureShape } from './graph-types.ts';
2
2
  export type Point = [number, number, number];
3
- /** Points on the outline of a rounded rectangle in the X–Z plane, centred, y = 0. */
4
- export declare function roundedOutline(width: number, depth: number, roundX: number, roundZ: number): Point[];
5
- export declare function lift(outline: Point[], y: number): Point[];
6
- /** Points on an elliptic cylinder about local Y: both end rims. */
7
- export declare function cylinderPoints(rx: number, rz: number, length: number, segments: number): Point[];
8
- /** Points on an ellipsoid: a fixed latitude–longitude grid. */
9
- export declare function spherePoints(rx: number, ry: number, rz: number): Point[];
10
- export declare function boxPoints(w: number, h: number, d: number): Point[];
11
3
  /** Surface points of a shape in its own frame. */
12
4
  export declare function figureShapePoints(shape: FigureShape, segments?: number): Point[];
13
5
  export declare function transformPoints(points: readonly Point[], r: number[][], t: readonly number[]): Point[];
@@ -1 +1 @@
1
- {"version":3,"file":"shape-sampling.d.ts","sourceRoot":"","sources":["../src/shape-sampling.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAK5C,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CA2BpG;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CAQhG;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,CAaxE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAIlE;AAED,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CA+ChF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,EAAE,CAMtG"}
1
+ {"version":3,"file":"shape-sampling.d.ts","sourceRoot":"","sources":["../src/shape-sampling.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAKnD,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AA0F5C,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAEhF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,EAAE,CAMtG"}
@@ -1,114 +1,80 @@
1
- /** Divisions per Bézier corner, the number things-scene's `roundedRect` asks `getPoints` for. */
1
+ import { FIGURE_SECTION_PLANE, figureCavitySectionOf } from "./section.js";
2
+ /** Divisions per rounded corner: an elliptic quarter (docs/shape-contract.md Q4). */
2
3
  const CORNER_DIVISIONS = 8;
3
- /** Points on the outline of a rounded rectangle in the X–Z plane, centred, y = 0. */
4
- export function roundedOutline(width, depth, roundX, roundZ) {
5
- // Each semi-axis is bounded by its own half-section (shape-dimension contract §1).
6
- const rx = Math.min(roundX, width / 2);
7
- const rz = Math.min(roundZ, depth / 2);
8
- const hw = width / 2, hd = depth / 2;
9
- if (rx <= 0 && rz <= 0)
10
- return [[-hw, 0, -hd], [hw, 0, -hd], [hw, 0, hd], [-hw, 0, hd]];
11
- const pts = [];
12
- // Corner k: quadratic Bézier from the end of one straight edge to the start of the next, control at the corner.
13
- const corners = [
14
- [[hw - rx, 0, -hd], [hw, 0, -hd], [hw, 0, -hd + rz]],
15
- [[hw, 0, hd - rz], [hw, 0, hd], [hw - rx, 0, hd]],
16
- [[-hw + rx, 0, hd], [-hw, 0, hd], [-hw, 0, hd - rz]],
17
- [[-hw, 0, -hd + rz], [-hw, 0, -hd], [-hw + rx, 0, -hd]]
18
- ];
19
- for (const [p0, c, p2] of corners) {
20
- pts.push(p0);
21
- for (let i = 1; i < CORNER_DIVISIONS; i++) {
22
- const t = i / CORNER_DIVISIONS, a = (1 - t) * (1 - t), b = 2 * (1 - t) * t, d = t * t;
23
- pts.push([a * p0[0] + b * c[0] + d * p2[0], 0, a * p0[2] + b * c[2] + d * p2[2]]);
24
- }
25
- pts.push(p2);
26
- }
27
- return pts;
28
- }
29
- export function lift(outline, y) {
30
- return outline.map(([x, , z]) => [x, y, z]);
31
- }
32
- /** Points on an elliptic cylinder about local Y: both end rims. */
33
- export function cylinderPoints(rx, rz, length, segments) {
34
- const pts = [];
35
- for (const y of [-length / 2, length / 2])
36
- for (let i = 0; i < segments; i++) {
37
- const a = (i / segments) * Math.PI * 2;
38
- pts.push([rx * Math.cos(a), y, rz * Math.sin(a)]);
4
+ /**
5
+ * A section's outline in its own frame, at a point along its axis: a rectangle's corners, rounded as elliptic quarters
6
+ * (Q4); an ellipse; a drawn section's points.
7
+ */
8
+ function sectionOutline(section, axis, at, segments, centre = {}) {
9
+ const [u, v] = FIGURE_SECTION_PLANE[axis];
10
+ const put = (pu, pv) => {
11
+ const p = { x: 0, y: 0, z: 0 };
12
+ p[axis] = at;
13
+ p[u] = pu + (centre[u] ?? 0);
14
+ p[v] = pv + (centre[v] ?? 0);
15
+ return [p.x, p.y, p.z];
16
+ };
17
+ if (section.kind === 'polygon')
18
+ return section.points.map(q => put(q[u], q[v]));
19
+ if (section.kind === 'ellipse')
20
+ return Array.from({ length: segments }, (_, i) => {
21
+ const t = (2 * Math.PI * i) / segments;
22
+ return put(section.radius[u] * Math.cos(t), section.radius[v] * Math.sin(t));
23
+ });
24
+ const hu = section.size[u] / 2, hv = section.size[v] / 2, cu = section.corner?.[u] ?? 0, cv = section.corner?.[v] ?? 0;
25
+ if (!(cu > 0 && cv > 0))
26
+ return [put(-hu, -hv), put(hu, -hv), put(hu, hv), put(-hu, hv)];
27
+ const out = [];
28
+ for (const [su, sv, a0] of [
29
+ [1, 1, 0],
30
+ [-1, 1, Math.PI / 2],
31
+ [-1, -1, Math.PI],
32
+ [1, -1, (3 * Math.PI) / 2]
33
+ ])
34
+ for (let i = 0; i <= CORNER_DIVISIONS; i++) {
35
+ const t = a0 + (i / CORNER_DIVISIONS) * (Math.PI / 2);
36
+ out.push(put(su * (hu - cu) + cu * Math.cos(t), sv * (hv - cv) + cv * Math.sin(t)));
39
37
  }
40
- return pts;
38
+ return out;
41
39
  }
42
- /** Points on an ellipsoid: a fixed latitude–longitude grid. */
43
- export function spherePoints(rx, ry, rz) {
44
- const pts = [];
45
- const rings = 6, around = 12;
46
- for (let j = 1; j < rings; j++) {
47
- const phi = (j / rings) * Math.PI;
48
- for (let i = 0; i < around; i++) {
49
- const th = (i / around) * Math.PI * 2;
50
- pts.push([rx * Math.sin(phi) * Math.cos(th), ry * Math.cos(phi), rz * Math.sin(phi) * Math.sin(th)]);
40
+ /** Surface points of a shape operation (ADR-0100): both ends of the outside, and of the inside where it has one. */
41
+ function operationPoints(shape, segments) {
42
+ const e = shape.extrusion;
43
+ if (e) {
44
+ const pts = [
45
+ ...sectionOutline(e.section, e.axis, e.start, segments),
46
+ ...sectionOutline(e.section, e.axis, e.end, segments)
47
+ ];
48
+ const c = shape.cavity;
49
+ if (c) {
50
+ const inside = figureCavitySectionOf(e.section, e.axis, c.wall);
51
+ if ('section' in inside) {
52
+ const lo = e.start + (c.start === 'open' ? 0 : c.start.closed), hi = e.end - (c.end === 'open' ? 0 : c.end.closed);
53
+ pts.push(...sectionOutline(inside.section, e.axis, lo, segments, inside.centre), ...sectionOutline(inside.section, e.axis, hi, segments, inside.centre));
54
+ }
51
55
  }
56
+ return pts;
52
57
  }
53
- pts.push([0, ry, 0], [0, -ry, 0]);
54
- return pts;
55
- }
56
- export function boxPoints(w, h, d) {
58
+ const r = shape.revolution;
59
+ const [u, v] = FIGURE_SECTION_PLANE[r.axis];
60
+ const ring = (at, radius) => sectionOutline({ kind: 'ellipse', radius: { [u]: radius, [v]: radius } }, r.axis, at, segments);
61
+ if (r.profile.kind === 'taper')
62
+ return [
63
+ ...ring(r.profile.start, Math.max(r.profile.startRadius, 1e-9)),
64
+ ...ring(r.profile.end, Math.max(r.profile.endRadius, 1e-9))
65
+ ];
66
+ const { radial, axial } = r.profile;
57
67
  const pts = [];
58
- for (const sx of [-1, 1])
59
- for (const sy of [-1, 1])
60
- for (const sz of [-1, 1])
61
- pts.push([(sx * w) / 2, (sy * h) / 2, (sz * d) / 2]);
68
+ for (let j = 1; j < 6; j++) {
69
+ const phi = (j / 6) * Math.PI;
70
+ pts.push(...ring(axial * Math.cos(phi), radial * Math.sin(phi)));
71
+ }
72
+ pts.push(...ring(axial, 1e-9).slice(0, 1), ...ring(-axial, 1e-9).slice(0, 1));
62
73
  return pts;
63
74
  }
64
75
  /** Surface points of a shape in its own frame. */
65
76
  export function figureShapePoints(shape, segments) {
66
- const d = shape.dimensions;
67
- switch (shape.provider) {
68
- case 'box':
69
- return boxPoints(d.width, d.height, d.depth);
70
- case 'cylinder':
71
- return cylinderPoints(d.radius, d.radius, d.length, segments ?? 12);
72
- case 'ellipticCylinder':
73
- return cylinderPoints(d.radiusX, d.radiusZ, d.length, segments ?? 12);
74
- case 'roundedBoxXZ': {
75
- const outer = roundedOutline(d.width, d.depth, d.roundX, d.roundZ);
76
- return [...lift(outer, -d.height / 2), ...lift(outer, d.height / 2)];
77
- }
78
- case 'hollowBoxXZ': {
79
- const outer = roundedOutline(d.width, d.depth, d.roundX, d.roundZ);
80
- const inner = roundedOutline(d.width - 2 * d.wallX, d.depth - 2 * d.wallZ, Math.max(d.roundX - d.wallX, 0), Math.max(d.roundZ - d.wallZ, 0));
81
- return [...lift(outer, -d.height / 2), ...lift(outer, d.height / 2), ...lift(inner, d.height / 2), ...lift(inner, -d.height / 2 + d.floor)];
82
- }
83
- case 'frustum': {
84
- const pts = [];
85
- const seg = segments ?? 12;
86
- for (const [y, r] of [[-d.height / 2, d.radiusBottom], [d.height / 2, d.radiusTop]])
87
- for (let i = 0; i < seg; i++) {
88
- const a = (i / seg) * Math.PI * 2;
89
- pts.push([r * Math.cos(a), y, r * Math.sin(a)]);
90
- }
91
- return pts;
92
- }
93
- case 'sphere':
94
- return spherePoints(d.radiusX, d.radiusY, d.radiusZ);
95
- case 'roundedBox': {
96
- const outer = roundedOutline(d.width, d.depth, d.round, d.round);
97
- return [...lift(outer, -d.height / 2), ...lift(outer, d.height / 2)];
98
- }
99
- case 'hollowBox': {
100
- const outer = roundedOutline(d.width, d.depth, d.round, d.round);
101
- // The inner outline: each wall inset by its own thickness, corner reduced by the thickness on each axis.
102
- const inner = roundedOutline(d.width - 2 * d.wallX, d.depth - 2 * d.wallZ, Math.max(d.round - d.wallX, 0), Math.max(d.round - d.wallZ, 0));
103
- return [...lift(outer, -d.height / 2), ...lift(outer, d.height / 2), ...lift(inner, d.height / 2), ...lift(inner, -d.height / 2 + d.floor)];
104
- }
105
- case 'polygon': {
106
- const profile = shape.profile ?? [];
107
- return [...profile.map(q => [q.x, -d.height / 2, q.y]), ...profile.map(q => [q.x, d.height / 2, q.y])];
108
- }
109
- case 'portal':
110
- return (shape.profile ?? []).flatMap(q => [[q.x, q.y, -d.depth / 2], [q.x, q.y, d.depth / 2]]);
111
- }
77
+ return operationPoints(shape, segments ?? 12);
112
78
  }
113
79
  export function transformPoints(points, r, t) {
114
80
  return points.map(([x, y, z]) => [
@@ -1 +1 @@
1
- {"version":3,"file":"shape-sampling.js","sourceRoot":"","sources":["../src/shape-sampling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shape-sampling.js","sourceRoot":"","sources":["../src/shape-sampling.ts"],"names":[],"mappings":"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"}
package/dist/size-edit.js CHANGED
@@ -35,7 +35,7 @@ export function figureSizeEditChanges(asset, part, changes) {
35
35
  if ((asset.joints ?? []).some((j) => j.body1?.part === part) || node(`${part}.chain`) || node(`${part}.seat.rigid`))
36
36
  return given;
37
37
  const shape = m.nodes.find((n) => Object.values(n.outputs ?? {}).includes(place.args[0]));
38
- const face = shape && figureShapeProviderOf(shape.op)?.faces[kept.face];
38
+ const face = shape && figureShapeProviderOf(shape)?.faces[kept.face];
39
39
  if (!face || face.axis !== kept.normal)
40
40
  return given;
41
41
  const position = pose.args[AXES.indexOf(kept.normal)];
@@ -159,7 +159,7 @@ export function figurePlaneAlignChanges(asset, part) {
159
159
  else {
160
160
  const shape = m.nodes.find((n) => Object.values(n.outputs ?? {}).includes(node(part)?.args?.[0]));
161
161
  const turn = turnKindOf(asset, pose, axis);
162
- const named = shape ? figureShapeProviderOf(shape.op)?.faces[kept.face] : undefined;
162
+ const named = shape ? figureShapeProviderOf(shape)?.faces[kept.face] : undefined;
163
163
  const square = turn === 'none' || turn === 'about-normal';
164
164
  /* A face lies on the plane only for a part standing square to it; otherwise what touches is the extreme it covers. */
165
165
  if (named && square && named.axis === axis)
@@ -1 +1 @@
1
- {"version":3,"file":"size-edit.js","sourceRoot":"","sources":["../src/size-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"size-edit.js","sourceRoot":"","sources":["../src/size-edit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AASA,KAAK,OAAO,GAAG,GAAG,CAAA;AAKlB;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAS3F,CAAA;AAED,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAA;IACd,qCAAqC;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAgDvG;AAED,8FAA8F;AAC9F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAuB1E"}
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AASA,KAAK,OAAO,GAAG,GAAG,CAAA;AAKlB;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAO3F,CAAA;AAED,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAA;IACd,qCAAqC;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAyCvG;AAED,8FAA8F;AAC9F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAuB1E"}
package/dist/surface.js CHANGED
@@ -20,9 +20,7 @@ export const FIGURE_FACE_NORMALS = {
20
20
  bottom: [0, -1, 0],
21
21
  top: [0, 1, 0],
22
22
  back: [0, 0, -1],
23
- front: [0, 0, 1],
24
- start: [0, -1, 0],
25
- end: [0, 1, 0]
23
+ front: [0, 0, 1]
26
24
  };
27
25
  /** Check that a `{ placement, feature }` pair names a supported planar face, and say which one. */
28
26
  export function resolveFigureSurface(ctx, contact, path) {
@@ -65,21 +63,16 @@ export function resolveFigureSurface(ctx, contact, path) {
65
63
  if (source.args[0] !== feature.args[0])
66
64
  fail('SURFACE_OWNER', path, 'feature belongs to a different shape declaration');
67
65
  const provider = types[feature.args[0]].provider, face = feature.params.name;
68
- /*
69
- Flat faces only. A rounded box is flat top and bottom whichever way its corners are rounded, so the per-axis
70
- form (`rounded-box@2`, provider `roundedBoxXZ`) offers the same two faces as `rounded-box@1`; a hollow box
71
- likewise. Everything else — a sphere, a frustum's slant, a cylinder's barrel — is not a plane to rest on.
72
- */
73
- const allowed = provider === 'box'
74
- ? ['left', 'right', 'bottom', 'top', 'back', 'front']
75
- : provider === 'roundedBox' || provider === 'roundedBoxXZ' || provider === 'hollowBox' || provider === 'hollowBoxXZ'
76
- ? ['bottom', 'top']
77
- : provider === 'cylinder'
78
- ? ['start', 'end']
79
- : [];
80
- if (!allowed.includes(face))
66
+ /* A shape operation names its own flat faces and which way each faces (ADR-0100): a sphere's extremes are not planes. */
67
+ const own = types[feature.args[0]].faces;
68
+ const f = own?.[face];
69
+ if (!f)
81
70
  fail('SURFACE_UNSUPPORTED', path, 'feature is not a supported planar surface');
82
- return { ...contact, geometryId: selection ? null : place.id, selection, provider, face, frame: featureType.from, normal: FIGURE_FACE_NORMALS[face] };
71
+ /* A plane that touches a curved side touches it along a line: nothing is held on it (a cylinder's ends are faces). */
72
+ if (f[2] === 'line')
73
+ fail('SURFACE_UNSUPPORTED', path, 'feature touches a curved side along a line; it is not a surface to hold things on');
74
+ const normal = ['x', 'y', 'z'].map(x => (x === f[0] ? f[1] : 0));
75
+ return { ...contact, geometryId: selection ? null : place.id, selection, provider, face, frame: featureType.from, normal };
83
76
  }
84
77
  /** Where a resolved surface sits, and which way it faces, for one evaluation of the graph. */
85
78
  export function evaluateFigureSurface(values, s) {
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
package/dist/words.d.ts CHANGED
@@ -111,4 +111,11 @@ export declare const TYPE_LENGTH: {
111
111
  export declare function placeholderType(now?: number): string;
112
112
  /** Whether a type is the temporary name given before anyone names the figure. */
113
113
  export declare function isPlaceholderType(type: string): boolean;
114
+ /**
115
+ * The most nodes one figure's graph may have: a fence against a malformed document, set large (designer's ruling,
116
+ * docs/shape-contract.md Q10, 2026-09-29). The 1 MiB document limit binds first -- stored nodes run 125 to 190 bytes, so a
117
+ * mebibyte holds some 5,500 to 8,400 -- and the largest stored figure has 517. A graph this size compiles in about 25 ms and
118
+ * evaluates in about 2 ms.
119
+ */
120
+ export declare const FIGURE_DOCUMENT_NODE_LIMIT = 8192;
114
121
  //# sourceMappingURL=words.d.ts.map