@hatiolab/figure-model 0.1.95 → 0.2.0
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/CHANGELOG.md +14 -0
- package/dist/asset.d.ts.map +1 -1
- package/dist/asset.js +3 -1
- package/dist/asset.js.map +1 -1
- package/dist/authoring-actions.d.ts +19 -0
- package/dist/authoring-actions.d.ts.map +1 -1
- package/dist/authoring-actions.js +106 -63
- package/dist/authoring-actions.js.map +1 -1
- package/dist/command-preview.d.ts +3 -1
- package/dist/command-preview.d.ts.map +1 -1
- package/dist/command-preview.js +52 -27
- package/dist/command-preview.js.map +1 -1
- package/dist/cost.d.ts +1 -1
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js +30 -25
- package/dist/cost.js.map +1 -1
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +112 -31
- package/dist/create.js.map +1 -1
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +3 -2
- package/dist/document.js.map +1 -1
- package/dist/fixtures/shape-nodes.d.ts +12 -0
- package/dist/fixtures/shape-nodes.d.ts.map +1 -0
- package/dist/fixtures/shape-nodes.js +20 -0
- package/dist/fixtures/shape-nodes.js.map +1 -0
- package/dist/follow.d.ts.map +1 -1
- package/dist/follow.js +5 -2
- package/dist/follow.js.map +1 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +31 -59
- package/dist/gate.js.map +1 -1
- package/dist/graph-types.d.ts +7 -6
- package/dist/graph-types.d.ts.map +1 -1
- package/dist/graph.d.ts +17 -12
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +24 -292
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/kernel-version.d.ts +1 -1
- package/dist/kernel-version.d.ts.map +1 -1
- package/dist/kernel-version.js +1 -1
- package/dist/kernel-version.js.map +1 -1
- package/dist/part-edit.d.ts.map +1 -1
- package/dist/part-edit.js +8 -6
- package/dist/part-edit.js.map +1 -1
- package/dist/proposal.d.ts +1 -1
- package/dist/proposal.d.ts.map +1 -1
- package/dist/proposal.js +14 -2
- package/dist/proposal.js.map +1 -1
- package/dist/recipe-from-parts.d.ts.map +1 -1
- package/dist/recipe-from-parts.js +107 -24
- package/dist/recipe-from-parts.js.map +1 -1
- package/dist/render-batches.d.ts.map +1 -1
- package/dist/render-batches.js +11 -2
- package/dist/render-batches.js.map +1 -1
- package/dist/resize-plan.d.ts.map +1 -1
- package/dist/resize-plan.js +22 -8
- package/dist/resize-plan.js.map +1 -1
- package/dist/section.d.ts +164 -0
- package/dist/section.d.ts.map +1 -0
- package/dist/section.js +277 -0
- package/dist/section.js.map +1 -0
- package/dist/shape-edit.d.ts +22 -0
- package/dist/shape-edit.d.ts.map +1 -0
- package/dist/shape-edit.js +225 -0
- package/dist/shape-edit.js.map +1 -0
- package/dist/shape-features.d.ts +83 -0
- package/dist/shape-features.d.ts.map +1 -0
- package/dist/shape-features.js +102 -0
- package/dist/shape-features.js.map +1 -0
- package/dist/shape-ops.d.ts +154 -0
- package/dist/shape-ops.d.ts.map +1 -0
- package/dist/shape-ops.js +571 -0
- package/dist/shape-ops.js.map +1 -0
- package/dist/shape-provider.d.ts +16 -23
- package/dist/shape-provider.d.ts.map +1 -1
- package/dist/shape-provider.js +18 -56
- package/dist/shape-provider.js.map +1 -1
- package/dist/shape-sampling.d.ts +0 -8
- package/dist/shape-sampling.d.ts.map +1 -1
- package/dist/shape-sampling.js +67 -101
- package/dist/shape-sampling.js.map +1 -1
- package/dist/size-edit.js +2 -2
- package/dist/size-edit.js.map +1 -1
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +10 -17
- package/dist/surface.js.map +1 -1
- package/dist/words.d.ts +7 -0
- package/dist/words.d.ts.map +1 -1
- package/dist/words.js +7 -0
- package/dist/words.js.map +1 -1
- package/docs/document-contract.md +1 -1
- package/docs/shape-contract.md +439 -0
- package/package.json +1 -1
|
@@ -52,10 +52,12 @@ export interface FigureFaceArea {
|
|
|
52
52
|
};
|
|
53
53
|
/** A round face (a cylinder's end): `size` is its diameter both ways. */
|
|
54
54
|
round?: boolean;
|
|
55
|
+
/** A plane touching a curved side (a cylinder's): the contact is a line, `size` 0 across it. */
|
|
56
|
+
line?: boolean;
|
|
55
57
|
}
|
|
56
58
|
/**
|
|
57
59
|
* Where a part's named face lies in the figure, at the values given: from the shape's provider, as attaching reads it.
|
|
58
|
-
* Nothing for a face the shape does not declare, a part drawn in a row, or a
|
|
60
|
+
* Nothing for a face the shape does not declare, a part drawn in a row, or a face whose outline is not a rectangle or a
|
|
59
61
|
* disc -- a highlight in a guessed place would point at the wrong face.
|
|
60
62
|
*/
|
|
61
63
|
export declare function figurePartFaceOf(source: FigureAsset, part: string, face: string, values?: Record<string, number>): FigureFaceArea | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-preview.d.ts","sourceRoot":"","sources":["../src/command-preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"command-preview.d.ts","sourceRoot":"","sources":["../src/command-preview.ts"],"names":[],"mappings":"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"}
|
package/dist/command-preview.js
CHANGED
|
@@ -2,6 +2,7 @@ import { applyFigureAuthoring } from "./authoring-actions.js";
|
|
|
2
2
|
import { compileFigureAsset, upgradeFigurePlacement } from "./asset.js";
|
|
3
3
|
import { compileFigureGraph } from "./graph.js";
|
|
4
4
|
import { figureShapeProviderOf } from "./shape-provider.js";
|
|
5
|
+
import { figureShapeBoundsOf, figureShapeDescriptionOf } from "./shape-ops.js";
|
|
5
6
|
import { figureOccupiedBoxesOf, figureWritersOf } from "./gate.js";
|
|
6
7
|
import { FigureClipsDroppedError } from "./clip-keeping.js";
|
|
7
8
|
const round = (v, places = 3) => Math.round(v * 10 ** places) / 10 ** places || 0;
|
|
@@ -90,7 +91,7 @@ export function previewFigureCommand(source, action, values = {}) {
|
|
|
90
91
|
}
|
|
91
92
|
/**
|
|
92
93
|
* Where a part's named face lies in the figure, at the values given: from the shape's provider, as attaching reads it.
|
|
93
|
-
* Nothing for a face the shape does not declare, a part drawn in a row, or a
|
|
94
|
+
* Nothing for a face the shape does not declare, a part drawn in a row, or a face whose outline is not a rectangle or a
|
|
94
95
|
* disc -- a highlight in a guessed place would point at the wrong face.
|
|
95
96
|
*/
|
|
96
97
|
export function figurePartFaceOf(source, part, face, values = {}) {
|
|
@@ -100,48 +101,72 @@ export function figurePartFaceOf(source, part, face, values = {}) {
|
|
|
100
101
|
if (!place)
|
|
101
102
|
return undefined;
|
|
102
103
|
const shape = m.nodes.find((n) => Object.values(n.outputs ?? {}).includes(place.args[0]));
|
|
103
|
-
|
|
104
|
-
const f = provider?.faces[face];
|
|
105
|
-
if (!f)
|
|
104
|
+
if (!figureShapeDescriptionOf(shape)?.faces[face])
|
|
106
105
|
return undefined;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const reach = (axis) => {
|
|
116
|
-
const terms = provider.measure[axis];
|
|
117
|
-
return terms === 'profile' ? NaN : Math.max(...terms.map((t) => t.k * arg(t.arg)));
|
|
118
|
-
};
|
|
119
|
-
const axes = ['x', 'y', 'z'].filter(a => a !== f.axis);
|
|
106
|
+
return shapeOperationFace(asset, part, face, values);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* A named face of a shape operation, from the evaluated shape itself. A rectangle's or a circle's face is a plate or a
|
|
110
|
+
* disc; an inside face is the inside's own size. A drawn section's or a door frame's side, and an end the inside opens
|
|
111
|
+
* through, give nothing: their outline is not a rectangle, and a filled one would point at material that is not there.
|
|
112
|
+
*/
|
|
113
|
+
function shapeOperationFace(asset, part, face, values) {
|
|
120
114
|
const body = evaluate(asset, values).find(b => b.id === part);
|
|
121
115
|
if (!body?.pose)
|
|
122
116
|
return undefined;
|
|
123
|
-
const
|
|
124
|
-
const
|
|
117
|
+
const s = body.shape;
|
|
118
|
+
const at = s.faces[face];
|
|
119
|
+
const e = s.extrusion;
|
|
120
|
+
if (!at || !e || (e.section.kind !== 'rectangle' && e.section.kind !== 'ellipse'))
|
|
121
|
+
return undefined;
|
|
122
|
+
const c = s.cavity;
|
|
123
|
+
if (c && ((face === FACES_LOW[e.axis] && c.start === 'open') || (face === FACES_HIGH[e.axis] && c.end === 'open')))
|
|
124
|
+
return undefined;
|
|
125
|
+
const bounds = figureShapeBoundsOf(s);
|
|
126
|
+
if (face.startsWith('inside-') && c) {
|
|
127
|
+
for (const x of ['x', 'y', 'z']) {
|
|
128
|
+
if (x === e.axis) {
|
|
129
|
+
bounds[x] = {
|
|
130
|
+
min: e.start + (c.start === 'open' ? 0 : c.start.closed),
|
|
131
|
+
max: e.end - (c.end === 'open' ? 0 : c.end.closed)
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
else
|
|
135
|
+
bounds[x] = { min: bounds[x].min + c.wall[`${x}-`], max: bounds[x].max - c.wall[`${x}+`] };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
125
138
|
const index = { x: 0, y: 1, z: 2 };
|
|
126
139
|
const local = [0, 0, 0];
|
|
127
|
-
|
|
140
|
+
for (const x of ['x', 'y', 'z'])
|
|
141
|
+
local[index[x]] = x === at.axis ? at.at : (bounds[x].min + bounds[x].max) / 2;
|
|
142
|
+
const { r, t } = body.pose;
|
|
143
|
+
const column = (i) => [r[0][i], r[1][i], r[2][i]];
|
|
128
144
|
const centre = [0, 1, 2].map(i => round(r[i][0] * local[0] + r[i][1] * local[1] + r[i][2] * local[2] + t[i]));
|
|
129
|
-
const
|
|
130
|
-
const [a, b]
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
145
|
+
const [a, b] = ['x', 'y', 'z'].filter(x => x !== at.axis);
|
|
146
|
+
const size = { u: bounds[a].max - bounds[a].min, v: bounds[b].max - bounds[b].min };
|
|
147
|
+
const disc = e.section.kind === 'ellipse' && at.axis === e.axis;
|
|
148
|
+
/* A plane touching a curved side touches it along a line on the push axis (Q3): a line is shown, not a plate. */
|
|
149
|
+
const line = e.section.kind === 'ellipse' && at.axis !== e.axis;
|
|
150
|
+
if (line) {
|
|
151
|
+
if (a !== e.axis)
|
|
152
|
+
size.u = 0;
|
|
153
|
+
if (b !== e.axis)
|
|
154
|
+
size.v = 0;
|
|
155
|
+
}
|
|
134
156
|
return {
|
|
135
157
|
part,
|
|
136
158
|
face,
|
|
137
159
|
centre,
|
|
138
|
-
normal,
|
|
160
|
+
normal: column(index[at.axis]).map(v => round(v * at.normal, 6)),
|
|
139
161
|
u: column(index[a]).map(v => round(v, 6)),
|
|
140
162
|
v: column(index[b]).map(v => round(v, 6)),
|
|
141
163
|
size: disc ? { u: Math.max(size.u, size.v), v: Math.max(size.u, size.v) } : size,
|
|
142
|
-
...(disc ? { round: true } : {})
|
|
164
|
+
...(disc ? { round: true } : {}),
|
|
165
|
+
...(line ? { line: true } : {})
|
|
143
166
|
};
|
|
144
167
|
}
|
|
168
|
+
const FACES_LOW = { x: 'left', y: 'bottom', z: 'back' };
|
|
169
|
+
const FACES_HIGH = { x: 'right', y: 'top', z: 'front' };
|
|
145
170
|
/**
|
|
146
171
|
* A row read from what the figure draws (ADR-0097 §5.5): the count, the spacing and the ends as they come out, never
|
|
147
172
|
* worked out again by a formula of the screen's own. Read on a preview's figure, it is the row a command would make.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-preview.js","sourceRoot":"","sources":["../src/command-preview.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command-preview.js","sourceRoot":"","sources":["../src/command-preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAA8B,MAAM,wBAAwB,CAAA;AACzF,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAA6B,MAAM,gBAAgB,CAAA;AACzG,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAuB,MAAM,mBAAmB,CAAA;AAuChF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,MAAM,IAAI,CAAC,CAAA;AACzF,MAAM,IAAI,GAAG,CAAC,MAA8B,EAAE,EAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAClJ,MAAM,QAAQ,GAAG,CAAC,KAAkB,EAAE,MAA8B,EAAE,EAAE,CACtE,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvM,QAA0E,CAAA;AAE/E;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAc,CAAA;QACxC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAA;QACzF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,iGAAiG;AACjG,SAAS,WAAW,CAAC,IAAgB,EAAE,EAAc;IACnD,8GAA8G;IAC9G,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;IACnI,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAA;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACnE,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,SAAS,CAAA;IAClC,IAAI,IAAS,CAAA;IACb,IAAI,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAChG,CAAC;SAAM,CAAC;QACN,0FAA0F;QAC1F,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACzE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAQ,CAAA;IAC7F,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;IAClC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAQ,CAAA;IACvC,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;IACrC,MAAM,KAAK,GAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACrG,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,KAAK,CAAE,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,OAAO,CAAA;QACxC,OAAO,EAAE,IAAI,EAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAW,CAAC,KAAK,CAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAA;IAC9E,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAA;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmB,EAAE,MAA6B,EAAE,SAAiC,EAAE;IAC1H,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,KAAkB,CAAA;IACtB,IAAI,YAAY,GAAqB,EAAE,CAAA;IACvC,IAAI,CAAC;QACH,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,CAAC,CAAC,YAAY,uBAAuB,CAAC;YAAE,MAAM,CAAC,CAAA;QACpD,YAAY,GAAG,CAAC,CAAC,KAAK,CAAA;QACtB,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAA;IAC9F,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACxC,MAAM,KAAK,GAAqB,EAAE,CAAA;IAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,SAAQ;QAChC,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAQ,CAAA;QAChF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAAE,SAAQ;QAC/D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACvG,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAC9E,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;AACxD,CAAC;AAiBD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAmB,EAAE,IAAY,EAAE,IAAY,EAAE,SAAiC,EAAE;IACnH,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAgB,CAAA;IACzC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA;IAC/E,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IACnE,OAAO,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AACtD,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CACzB,KAAkB,EAClB,IAAY,EACZ,IAAY,EACZ,MAA8B;IAE9B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAA;IAC7D,IAAI,CAAC,IAAI,EAAE,IAAI;QAAE,OAAO,SAAS,CAAA;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAwC,CAAA;IACvD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAA;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IACnG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;IAClB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;QAChH,OAAO,SAAS,CAAA;IAClB,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,CAAC,CAAC,GAAG;oBACV,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;oBACxD,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;iBACnD,CAAA;YACH,CAAC;;gBAAM,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,EAAE,CAAA;QACrG,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAW,CAAA;IAC3C,MAAM,KAAK,GAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5B,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC/E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;IAC1B,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAQ,CAAA;IACtE,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAC3E,CAAA;IACR,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAuC,CAAA;IAC1G,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IACnF,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAA;IAC/D,iHAAiH;IACjH,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAA;IAC/D,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI;YAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI;YAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAQ;QACvE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ;QAChD,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ;QAChD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAChF,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAA;AACH,CAAC;AACD,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAW,CAAA;AAChE,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAW,CAAA;AAqBhE;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAmB,EAAE,IAAY,EAAE,SAAiC,EAAE;IAChG,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,CAAE,KAAiB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC3F,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAqB,CAAA;IACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAkD,CAAA;IACzF,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAiB,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACjD,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,CAAA;IAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7G,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC5C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC;YAAE,SAAQ;QACzE,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACrC,IAAI,KAAK,KAAK,IAAI;YAAE,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7E,CAAC;IACD,MAAM,OAAO,GAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAA;IACxL,kHAAkH;IAClH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC3H,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACjF,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;QACvE,OAAO,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;QAC/B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAA;IAC9C,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAuBD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmB,EAAE,IAAY,EAAE,SAAiC,EAAE;IACzG,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,CAAE,KAAiB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC3F,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACxD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAc,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAc,EAAE,CAAA;IACjF,MAAM,OAAO,GAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IACtG,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC9D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAA;IACvC,6GAA6G;IAC7G,MAAM,MAAM,GAAG,CAAC,CAAM,EAAE,EAAE;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC,CAAA;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAkD,CAAA;IACzF,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAiB,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC3G,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,OAAO,CAAA;IACjC,uGAAuG;IACvG,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7J,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;IACtC,MAAM,KAAK,GAAgC,EAAE,CAAA;IAC7C,MAAM,KAAK,GAAgC,EAAE,CAAA;IAC7C,MAAM,QAAQ,GAAmC,EAAE,CAAA;IACnD,IAAI,eAAe,GAAG,KAAK,CAAA;IAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAU,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,IAAI,GAAG,CAAC,CAAA;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,IAAI,GAAG,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC5E,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,CAAA;QACpB,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,CAAA;QACrB,IAAI,GAAG,GAAG,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACpE,IAAI,IAAI,GAAG,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACvE,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAC5B,sGAAsG;YACtG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,CAAC;aAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI;YAAE,eAAe,GAAG,IAAI,CAAA;IAC9D,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IAClG,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AACpD,CAAC"}
|
package/dist/cost.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export interface FigureCost {
|
|
|
7
7
|
/** Bodies the asset evaluates but hides. Counted so a reader can see why the numbers are smaller. */
|
|
8
8
|
hidden: number;
|
|
9
9
|
}
|
|
10
|
-
/** The triangles one drawn body costs.
|
|
10
|
+
/** The triangles one drawn body costs, the way the renderer draws it. Anything else counts as a box rather than as nothing. */
|
|
11
11
|
export declare function figureTrianglesOf(body: FigureAssetGeometry): number;
|
|
12
12
|
/** What one instance of this asset costs to draw. Evaluates the asset at its own design and state defaults. */
|
|
13
13
|
export declare function figureCostOf(asset: FigureAsset): FigureCost;
|
package/dist/cost.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAExE,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAA;CACf;AAaD,+HAA+H;AAC/H,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA+BnE;AAED,+GAA+G;AAC/G,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAU3D"}
|
package/dist/cost.js
CHANGED
|
@@ -10,13 +10,22 @@
|
|
|
10
10
|
* A body the asset hides is not drawn, so it costs nothing. It is still evaluated, placed and gated
|
|
11
11
|
* (designer's ruling 2026-09-22); this counts what reaches the screen.
|
|
12
12
|
*/
|
|
13
|
+
import { figureCavitySectionOf } from "./section.js";
|
|
13
14
|
import { figureRenderBatchesOf } from "./render-batches.js";
|
|
14
15
|
import { SEGMENT_PRESETS } from "./words.js";
|
|
15
16
|
import { compileFigureAsset } from "./asset.js";
|
|
16
17
|
const DEFAULT_SEGMENTS = 12;
|
|
17
18
|
/** The corner curve of a rounded outline, drawn with the same point count the renderer uses. */
|
|
18
19
|
const ROUND_OUTLINE_POINTS = 4 * SEGMENT_PRESETS[0] + 4;
|
|
19
|
-
/**
|
|
20
|
+
/** How many points a section's outline is drawn with: a rounded corner as an elliptic quarter of the smallest preset. */
|
|
21
|
+
function outlinePoints(section, seg) {
|
|
22
|
+
if (section.kind === 'polygon')
|
|
23
|
+
return section.points.length;
|
|
24
|
+
if (section.kind === 'ellipse')
|
|
25
|
+
return seg;
|
|
26
|
+
return section.corner ? ROUND_OUTLINE_POINTS : 4;
|
|
27
|
+
}
|
|
28
|
+
/** The triangles one drawn body costs, the way the renderer draws it. Anything else counts as a box rather than as nothing. */
|
|
20
29
|
export function figureTrianglesOf(body) {
|
|
21
30
|
if (!('shape' in body))
|
|
22
31
|
return 0; // a scalar body carries no mesh
|
|
@@ -24,33 +33,29 @@ export function figureTrianglesOf(body) {
|
|
|
24
33
|
const seg = body.segments ?? DEFAULT_SEGMENTS;
|
|
25
34
|
const ring = (outer, inner, capped) => 4 * (outer + inner) + (capped ? 4 * outer - 4 : 0);
|
|
26
35
|
switch (shape.provider) {
|
|
27
|
-
case '
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
case 'extrude': {
|
|
37
|
+
/*
|
|
38
|
+
The outline pushed, as the renderer builds it: two triangles a side for every loop, and at each end a cap of
|
|
39
|
+
n - 2 (a closed end: the outside's cap and the inside's floor) or a ring of n + m (an end the inside opens through).
|
|
40
|
+
*/
|
|
41
|
+
const e = shape.extrusion;
|
|
42
|
+
const n = outlinePoints(e.section, seg);
|
|
43
|
+
const c = shape.cavity;
|
|
44
|
+
if (!c)
|
|
45
|
+
return 4 * n - 4;
|
|
46
|
+
const inside = figureCavitySectionOf(e.section, e.axis, c.wall);
|
|
47
|
+
const m = 'section' in inside ? outlinePoints(inside.section, seg) : n;
|
|
48
|
+
const end = (open) => (open ? n + m : n - 2 + (m - 2));
|
|
49
|
+
return 2 * (n + m) + end(c.start === 'open') + end(c.end === 'open');
|
|
50
|
+
}
|
|
51
|
+
case 'revolve': {
|
|
52
|
+
const p = shape.revolution.profile;
|
|
53
|
+
/* A taper: a side row and a cap for each end that has a radius; a cone's point has neither. */
|
|
54
|
+
if (p.kind === 'taper')
|
|
55
|
+
return 2 * seg * ((p.startRadius > 0 ? 1 : 0) + (p.endRadius > 0 ? 1 : 0));
|
|
32
56
|
const h = Math.max(2, Math.round(seg / 2));
|
|
33
57
|
return 2 * seg * (h - 1);
|
|
34
58
|
}
|
|
35
|
-
case 'roundedBox':
|
|
36
|
-
case 'roundedBoxXZ': {
|
|
37
|
-
const rounded = Object.entries(shape.dimensions).some(([k, v]) => k.startsWith('round') && v > 0);
|
|
38
|
-
return 4 * (rounded ? ROUND_OUTLINE_POINTS : 4) - 4;
|
|
39
|
-
}
|
|
40
|
-
case 'hollowBox':
|
|
41
|
-
case 'hollowBoxXZ': {
|
|
42
|
-
const rounded = Object.entries(shape.dimensions).some(([k, v]) => k.startsWith('round') && v > 0);
|
|
43
|
-
const outer = rounded ? ROUND_OUTLINE_POINTS : 4;
|
|
44
|
-
// A floor of zero means the ring is open at both ends, so no cap is drawn.
|
|
45
|
-
const floor = (shape.dimensions['floor'] ?? shape.dimensions['wall'] ?? 0) > 0;
|
|
46
|
-
return ring(outer, outer, floor);
|
|
47
|
-
}
|
|
48
|
-
case 'polygon':
|
|
49
|
-
return 4 * (shape.profile?.length ?? 3) - 4;
|
|
50
|
-
case 'portal':
|
|
51
|
-
// A portal is an extruded outline with an opening: the outer ring and the opening's ring, both capped.
|
|
52
|
-
return ring(4, 4, true);
|
|
53
|
-
case 'box':
|
|
54
59
|
default:
|
|
55
60
|
return 12;
|
|
56
61
|
}
|
package/dist/cost.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAY/C,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,gGAAgG;AAChG,MAAM,oBAAoB,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,CAAE,GAAG,CAAC,CAAA;AAExD,
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
|
package/dist/create.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAInE,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAgB3D;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GACnE,CACI;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AACtG,uHAAuH;GACrH;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AACnK,8FAA8F;GAC5F;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AAC9G,6DAA6D;GAC3D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AACvF,iGAAiG;GAC/F;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AAC9F,0FAA0F;GACxF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAC/F,CAAA;AAoFH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,WAAW,CAuFlG;AAED,0GAA0G;AAC1G,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,WAAW,CAyFrF"}
|
package/dist/create.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { compileFigureAsset } from "./asset.js";
|
|
2
2
|
import { FigureContractError } from "./contract.js";
|
|
3
|
+
import { normalizeFigureSection } from "./section.js";
|
|
3
4
|
/** New assets start empty. A box is created only by an explicit authoring action. */
|
|
4
5
|
export function createFigureAsset(name) {
|
|
5
6
|
const asset = {
|
|
@@ -18,27 +19,84 @@ export function createFigureAsset(name) {
|
|
|
18
19
|
compileFigureAsset(asset);
|
|
19
20
|
return asset;
|
|
20
21
|
}
|
|
21
|
-
/** Authoring recipes use existing providers; they introduce no extra evaluation rules. */
|
|
22
22
|
/** The dimensions that are sizes: never below zero, so a bound can add them up without knowing their values. */
|
|
23
23
|
const MEASURES = new Set(['width', 'height', 'depth', 'jamb', 'head', 'roundX', 'roundZ', 'wallX', 'wallZ', 'floor', 'radius', 'length', 'round', 'radiusX', 'radiusY', 'radiusZ', 'radiusTop', 'radiusBottom']);
|
|
24
|
+
const RECIPES = {
|
|
25
|
+
box: { op: 'extrude@1',
|
|
26
|
+
params: { axis: 'y', section: 'rectangle' }, keys: ['width', 'height', 'depth'],
|
|
27
|
+
push: 'height',
|
|
28
|
+
args: () => ['width', 'depth']
|
|
29
|
+
},
|
|
30
|
+
cylinder: { op: 'extrude@1',
|
|
31
|
+
params: { axis: 'y', section: 'ellipse' }, keys: ['radius', 'length'],
|
|
32
|
+
push: 'length',
|
|
33
|
+
args: () => ['radius', 'radius']
|
|
34
|
+
},
|
|
35
|
+
'rounded-box': { op: 'extrude@1',
|
|
36
|
+
params: { axis: 'y', section: 'rectangle', corner: 'round' }, keys: ['width', 'height', 'depth', 'round'],
|
|
37
|
+
push: 'height',
|
|
38
|
+
args: () => ['width', 'depth', 'round', 'round'] },
|
|
39
|
+
'hollow-box': { op: 'extrude@1',
|
|
40
|
+
params: { axis: 'y', section: 'rectangle', corner: 'round', cavity: 'inside', 'cavity-end': 'open' }, keys: ['width', 'height', 'depth', 'roundX', 'roundZ', 'wallX', 'wallZ', 'floor'],
|
|
41
|
+
push: 'height',
|
|
42
|
+
/* A floor of 0 is a tube: the inside is open at its start too, which is written, not inferred from the number. */
|
|
43
|
+
args: d => [
|
|
44
|
+
'width',
|
|
45
|
+
'depth',
|
|
46
|
+
'roundX',
|
|
47
|
+
'roundZ',
|
|
48
|
+
'wallX',
|
|
49
|
+
'wallX',
|
|
50
|
+
'wallZ',
|
|
51
|
+
'wallZ',
|
|
52
|
+
...(d.floor > 0 ? ['floor'] : [])
|
|
53
|
+
],
|
|
54
|
+
drop: d => (d.floor > 0 ? [] : ['floor'])
|
|
55
|
+
},
|
|
56
|
+
portal: {
|
|
57
|
+
op: 'extrude@1',
|
|
58
|
+
params: { axis: 'z', section: 'portal' },
|
|
59
|
+
keys: ['width', 'height', 'depth', 'jamb', 'head'],
|
|
60
|
+
push: 'depth',
|
|
61
|
+
args: () => ['width', 'height', 'jamb', 'head']
|
|
62
|
+
},
|
|
63
|
+
sphere: { op: 'revolve@1',
|
|
64
|
+
params: { axis: 'y', profile: 'half-ellipse' }, keys: ['radiusX', 'radiusY', 'radiusZ'],
|
|
65
|
+
args: () => ['radiusX', 'radiusY'],
|
|
66
|
+
drop: () => ['radiusZ']
|
|
67
|
+
},
|
|
68
|
+
frustum: { op: 'revolve@1',
|
|
69
|
+
params: { axis: 'y', profile: 'taper' }, keys: ['radiusTop', 'radiusBottom', 'height'],
|
|
70
|
+
push: 'height',
|
|
71
|
+
args: () => ['radiusBottom', 'radiusTop']
|
|
72
|
+
},
|
|
73
|
+
polygon: { op: 'extrude@1',
|
|
74
|
+
params: { axis: 'y', section: 'polygon' }, keys: ['height'], push: 'height',
|
|
75
|
+
args: () => [] }
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Write a part's push: its length is the part's own input, and its start half of that below the origin. Linking the
|
|
79
|
+
* length later routes it through the part's dimension node and takes the start along (stableDimension).
|
|
80
|
+
*/
|
|
81
|
+
function pushOf(asset, part, _axis, length) {
|
|
82
|
+
const m = asset.document.model;
|
|
83
|
+
const start = `${part}.start`;
|
|
84
|
+
m.constants.push({ id: `${part}.k.centre`, unit: 'ratio', value: -0.5 });
|
|
85
|
+
m.nodes.push({ id: start, op: 'mul@1', args: [length, `${part}.k.centre`], outputs: { value: `${start}.value` } });
|
|
86
|
+
return [`${start}.value`, length];
|
|
87
|
+
}
|
|
24
88
|
export function addFigurePrimitive(source, part) {
|
|
25
|
-
|
|
26
|
-
box: { op: 'box-shape@1', keys: ['width', 'height', 'depth'] },
|
|
27
|
-
cylinder: { op: 'cylinder-shape@1', keys: ['radius', 'length'] },
|
|
28
|
-
'rounded-box': { op: 'rounded-box@1', keys: ['width', 'height', 'depth', 'round'] },
|
|
29
|
-
portal: { op: 'portal-profile@2', keys: ['width', 'height', 'depth', 'jamb', 'head'] },
|
|
30
|
-
'hollow-box': { op: 'hollow-box@2', keys: ['width', 'height', 'depth', 'roundX', 'roundZ', 'wallX', 'wallZ', 'floor'] },
|
|
31
|
-
sphere: { op: 'sphere-shape@1', keys: ['radiusX', 'radiusY', 'radiusZ'] },
|
|
32
|
-
frustum: { op: 'frustum-shape@1', keys: ['radiusTop', 'radiusBottom', 'height'] },
|
|
33
|
-
polygon: { op: 'polygon-shape@1', keys: ['height'] }
|
|
34
|
-
};
|
|
35
|
-
if (!part || !Object.hasOwn(recipes, part.kind))
|
|
89
|
+
if (!part || !Object.hasOwn(RECIPES, part.kind))
|
|
36
90
|
throw new FigureContractError('PROVIDER', 'part', 'unknown primitive');
|
|
37
|
-
const recipe =
|
|
91
|
+
const recipe = RECIPES[part.kind];
|
|
38
92
|
if (!part.dimensions ||
|
|
39
93
|
Object.keys(part.dimensions).length !== recipe.keys.length ||
|
|
40
94
|
recipe.keys.some(k => !Object.hasOwn(part.dimensions, k)))
|
|
41
95
|
throw new FigureContractError('SCHEMA', part.id, 'provider dimensions must match declared fields');
|
|
96
|
+
const dims = part.dimensions;
|
|
97
|
+
/* A turned body is round about its axis (Q6): a sphere's two radii across are one value. */
|
|
98
|
+
if (part.kind === 'sphere' && dims.radiusX !== dims.radiusZ)
|
|
99
|
+
throw new FigureContractError('GEOMETRY_DOMAIN', part.id, 'a sphere is turned about Y: its X and Z radii are one radius');
|
|
42
100
|
const asset = addFigureBox(source, {
|
|
43
101
|
id: part.id,
|
|
44
102
|
size: { x: 1, y: 1, z: 1 },
|
|
@@ -46,20 +104,26 @@ export function addFigurePrimitive(source, part) {
|
|
|
46
104
|
...(part.rotation ? { rotation: part.rotation } : {}),
|
|
47
105
|
...(part.material ? { material: part.material } : {})
|
|
48
106
|
});
|
|
49
|
-
const model = asset.document.model
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
107
|
+
const model = asset.document.model;
|
|
108
|
+
/* The box addFigureBox wrote goes: its inputs, its start and its constant. */
|
|
109
|
+
const boxOwn = new Set([...['x', 'y', 'z'].map(a => `${part.id}.size.${a}`), `${part.id}.start`, `${part.id}.k.centre`]);
|
|
110
|
+
model.inputs = model.inputs.filter(i => !boxOwn.has(i.id));
|
|
111
|
+
model.constants = model.constants.filter(c => !boxOwn.has(c.id));
|
|
112
|
+
model.nodes = model.nodes.filter(n => !boxOwn.has(n.id));
|
|
113
|
+
for (const a of ['x', 'y', 'z'])
|
|
114
|
+
delete asset.designInputs[`${part.id}.size.${a}`];
|
|
53
115
|
const shape = model.nodes.find(n => n.id === part.id + '.shape');
|
|
54
|
-
shape.op = recipe.op;
|
|
55
|
-
shape.args = [];
|
|
56
116
|
const existing = new Set([
|
|
57
117
|
...model.inputs.map(i => i.id),
|
|
58
118
|
...model.constants.map(c => c.id),
|
|
59
119
|
...model.nodes.flatMap(n => [n.id, ...Object.values(n.outputs)])
|
|
60
120
|
]);
|
|
121
|
+
const dropped = new Set(recipe.drop?.(dims) ?? []);
|
|
122
|
+
const inputOf = (key) => part.id + '.dimension.' + key;
|
|
61
123
|
for (const key of recipe.keys) {
|
|
62
|
-
|
|
124
|
+
if (dropped.has(key))
|
|
125
|
+
continue;
|
|
126
|
+
const id = inputOf(key), value = dims[key];
|
|
63
127
|
if (existing.has(id))
|
|
64
128
|
throw new FigureContractError('DUPLICATE_WRITER', id, 'input already exists');
|
|
65
129
|
if (!Number.isFinite(value))
|
|
@@ -70,28 +134,42 @@ export function addFigurePrimitive(source, part) {
|
|
|
70
134
|
throw new FigureContractError('SCHEMA', id, `${key} is a size, zero or more`);
|
|
71
135
|
model.inputs.push({ id, unit: 'mm', min, max: Number.MAX_VALUE, role: 'design' });
|
|
72
136
|
asset.designInputs[id] = value;
|
|
73
|
-
shape.args.push(id);
|
|
74
137
|
}
|
|
75
|
-
|
|
138
|
+
const args = recipe.push
|
|
139
|
+
? pushOf(asset, part.id, recipe.params.axis, inputOf(recipe.push))
|
|
140
|
+
: [];
|
|
141
|
+
args.push(...recipe.args(dims)
|
|
142
|
+
.map(inputOf));
|
|
143
|
+
shape.op = recipe.op;
|
|
144
|
+
shape.params = { frame: shape.params.frame, ...recipe.params };
|
|
145
|
+
/* A drawn section's points are its own numbers too, so a point can later follow something as a dimension does (Q9: p1, p2 ...). */
|
|
76
146
|
if (part.kind === 'polygon') {
|
|
77
|
-
const
|
|
78
|
-
if (
|
|
147
|
+
const raw = Array.isArray(part.points) ? part.points : [];
|
|
148
|
+
if (raw.length < 3)
|
|
79
149
|
throw new FigureContractError('SCHEMA', part.id, 'a polygon has at least three corners');
|
|
80
|
-
points.
|
|
150
|
+
const drawn = normalizeFigureSection({ kind: 'polygon', points: raw.map((q, i) => ({
|
|
151
|
+
id: `p${i + 1}`, x: q?.x, z: q?.z
|
|
152
|
+
})) }, 'y');
|
|
153
|
+
if (drawn.kind !== 'polygon')
|
|
154
|
+
throw new FigureContractError('SCHEMA', part.id, 'a polygon has corners');
|
|
155
|
+
for (const q of drawn.points)
|
|
81
156
|
for (const axis of ['x', 'z']) {
|
|
82
|
-
const id = `${part.id}.
|
|
157
|
+
const id = `${part.id}.point.${q.id}.${axis}`, value = q[axis];
|
|
83
158
|
if (existing.has(id))
|
|
84
159
|
throw new FigureContractError('DUPLICATE_WRITER', id, 'input already exists');
|
|
85
160
|
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
86
161
|
throw new FigureContractError('NON_FINITE', id, 'finite corner required');
|
|
87
162
|
model.inputs.push({ id, unit: 'mm', min: -Number.MAX_VALUE, max: Number.MAX_VALUE, role: 'design' });
|
|
88
163
|
asset.designInputs[id] = value;
|
|
89
|
-
|
|
164
|
+
args.push(id);
|
|
90
165
|
}
|
|
91
|
-
|
|
166
|
+
shape.params.points = drawn.points.map(q => q.id).join('.');
|
|
92
167
|
}
|
|
93
168
|
else if (part.points !== undefined)
|
|
94
169
|
throw new FigureContractError('SCHEMA', part.id, 'only a polygon has corners');
|
|
170
|
+
if (part.kind === 'hollow-box')
|
|
171
|
+
shape.params['cavity-start'] = dims.floor > 0 ? 'closed' : 'open';
|
|
172
|
+
shape.args = args;
|
|
95
173
|
if (part.kind === 'cylinder')
|
|
96
174
|
asset.appearance.find(a => a.target === part.id).segments = 12;
|
|
97
175
|
if (part.kind === 'sphere' || part.kind === 'frustum')
|
|
@@ -124,6 +202,8 @@ export function addFigureBox(source, box) {
|
|
|
124
202
|
`${prefix}.pose`,
|
|
125
203
|
`${prefix}.poseValue`,
|
|
126
204
|
`${prefix}.placed`,
|
|
205
|
+
`${prefix}.start`,
|
|
206
|
+
`${prefix}.k.centre`,
|
|
127
207
|
...keys.map(k => `${prefix}.${k}`)
|
|
128
208
|
]);
|
|
129
209
|
const existing = [
|
|
@@ -155,12 +235,13 @@ export function addFigureBox(source, box) {
|
|
|
155
235
|
}
|
|
156
236
|
}
|
|
157
237
|
const local = `${prefix}.local`;
|
|
238
|
+
const [start, height] = pushOf(asset, prefix, 'y', `${prefix}.size.y`);
|
|
158
239
|
model.nodes.push({
|
|
159
240
|
id: `${prefix}.shape`,
|
|
160
|
-
op: '
|
|
161
|
-
args:
|
|
241
|
+
op: 'extrude@1',
|
|
242
|
+
args: [start, height, `${prefix}.size.x`, `${prefix}.size.z`],
|
|
162
243
|
outputs: { shape: `${prefix}.shapeValue` },
|
|
163
|
-
params: { frame: local }
|
|
244
|
+
params: { frame: local, axis: 'y', section: 'rectangle' }
|
|
164
245
|
}, {
|
|
165
246
|
id: `${prefix}.pose`,
|
|
166
247
|
op: 'rigid@1',
|