@hatiolab/figure-model 0.1.91 → 0.1.93
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 +12 -12
- package/README.md +25 -25
- package/dist/{v3-asset-types.d.ts → asset-types.d.ts} +67 -67
- package/dist/asset-types.d.ts.map +1 -0
- package/dist/asset-types.js +2 -0
- package/dist/asset-types.js.map +1 -0
- package/dist/asset.d.ts +8 -0
- package/dist/asset.d.ts.map +1 -0
- package/dist/{v3-asset.js → asset.js} +23 -23
- package/dist/asset.js.map +1 -0
- package/dist/{v3-authoring-actions.d.ts → authoring-actions.d.ts} +66 -66
- package/dist/authoring-actions.d.ts.map +1 -0
- package/dist/{v3-authoring-actions.js → authoring-actions.js} +107 -78
- package/dist/authoring-actions.js.map +1 -0
- package/dist/{v3-authoring-session.d.ts → authoring-session.d.ts} +21 -21
- package/dist/authoring-session.d.ts.map +1 -0
- package/dist/{v3-authoring-session.js → authoring-session.js} +4 -4
- package/dist/authoring-session.js.map +1 -0
- package/dist/capabilities.d.ts +3 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/{v3-capabilities.js → capabilities.js} +8 -8
- package/dist/capabilities.js.map +1 -0
- package/dist/contract.d.ts +7 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +12 -0
- package/dist/contract.js.map +1 -0
- package/dist/{v3-cost.d.ts → cost.d.ts} +5 -5
- package/dist/cost.d.ts.map +1 -0
- package/dist/{v3-cost.js → cost.js} +11 -11
- package/dist/cost.js.map +1 -0
- package/dist/{v3-create.d.ts → create.d.ts} +8 -8
- package/dist/{v3-create.d.ts.map → create.d.ts.map} +1 -1
- package/dist/{v3-create.js → create.js} +26 -26
- package/dist/create.js.map +1 -0
- package/dist/document.d.ts +5 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +31 -0
- package/dist/document.js.map +1 -0
- package/dist/{v3-driver.d.ts → driver.d.ts} +10 -10
- package/dist/driver.d.ts.map +1 -0
- package/dist/{v3-driver.js → driver.js} +10 -10
- package/dist/driver.js.map +1 -0
- package/dist/{v3-editor-workspace.d.ts → editor-workspace.d.ts} +73 -73
- package/dist/editor-workspace.d.ts.map +1 -0
- package/dist/{v3-editor-workspace.js → editor-workspace.js} +29 -29
- package/dist/editor-workspace.js.map +1 -0
- package/dist/{v3-examples.d.ts → examples.d.ts} +5 -5
- package/dist/examples.d.ts.map +1 -0
- package/dist/{v3-examples.js → examples.js} +11 -11
- package/dist/examples.js.map +1 -0
- package/dist/{v3-follow.d.ts → follow.d.ts} +5 -5
- package/dist/follow.d.ts.map +1 -0
- package/dist/{v3-follow.js → follow.js} +2 -2
- package/dist/follow.js.map +1 -0
- package/dist/{v3-gate.d.ts → gate.d.ts} +28 -28
- package/dist/gate.d.ts.map +1 -0
- package/dist/{v3-gate.js → gate.js} +42 -42
- package/dist/gate.js.map +1 -0
- package/dist/{v3-graph-types.d.ts → graph-types.d.ts} +33 -33
- package/dist/graph-types.d.ts.map +1 -0
- package/dist/graph-types.js +2 -0
- package/dist/graph-types.js.map +1 -0
- package/dist/{v3-graph.d.ts → graph.d.ts} +14 -14
- package/dist/graph.d.ts.map +1 -0
- package/dist/{v3-graph.js → graph.js} +16 -16
- package/dist/graph.js.map +1 -0
- package/dist/index.d.ts +33 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -33
- package/dist/index.js.map +1 -1
- package/dist/{v3-instance-size.d.ts → instance-size.d.ts} +14 -14
- package/dist/instance-size.d.ts.map +1 -0
- package/dist/{v3-instance-size.js → instance-size.js} +13 -13
- package/dist/instance-size.js.map +1 -0
- package/dist/json.d.ts +12 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/{v3-json.js → json.js} +13 -13
- package/dist/json.js.map +1 -0
- package/dist/kernel-version.d.ts +8 -0
- package/dist/kernel-version.d.ts.map +1 -0
- package/dist/{v3-kernel-version.js → kernel-version.js} +4 -4
- package/dist/kernel-version.js.map +1 -0
- package/dist/{v3-part-edit.d.ts → part-edit.d.ts} +10 -10
- package/dist/part-edit.d.ts.map +1 -0
- package/dist/{v3-part-edit.js → part-edit.js} +65 -65
- package/dist/part-edit.js.map +1 -0
- package/dist/proposal.d.ts +42 -0
- package/dist/proposal.d.ts.map +1 -0
- package/dist/{v3-proposal.js → proposal.js} +21 -21
- package/dist/proposal.js.map +1 -0
- package/dist/{v3-public-inputs.d.ts → public-inputs.d.ts} +4 -4
- package/dist/public-inputs.d.ts.map +1 -0
- package/dist/{v3-public-inputs.js → public-inputs.js} +3 -3
- package/dist/public-inputs.js.map +1 -0
- package/dist/recipe-build.d.ts +27 -0
- package/dist/recipe-build.d.ts.map +1 -0
- package/dist/{v3-recipe-build.js → recipe-build.js} +9 -9
- package/dist/recipe-build.js.map +1 -0
- package/dist/recipe-from-parts.d.ts +8 -0
- package/dist/recipe-from-parts.d.ts.map +1 -0
- package/dist/{v3-recipe-from-parts.js → recipe-from-parts.js} +9 -9
- package/dist/recipe-from-parts.js.map +1 -0
- package/dist/{v3-recipe.d.ts → recipe.d.ts} +25 -25
- package/dist/recipe.d.ts.map +1 -0
- package/dist/{v3-recipe.js → recipe.js} +30 -30
- package/dist/recipe.js.map +1 -0
- package/dist/release-contract.d.ts +19 -0
- package/dist/release-contract.d.ts.map +1 -0
- package/dist/{v3-release-contract.js → release-contract.js} +5 -5
- package/dist/release-contract.js.map +1 -0
- package/dist/{v3-render-batches.d.ts → render-batches.d.ts} +8 -8
- package/dist/render-batches.d.ts.map +1 -0
- package/dist/{v3-render-batches.js → render-batches.js} +4 -4
- package/dist/render-batches.js.map +1 -0
- package/dist/{v3-score.d.ts → score.d.ts} +19 -19
- package/dist/score.d.ts.map +1 -0
- package/dist/{v3-score.js → score.js} +32 -32
- package/dist/score.js.map +1 -0
- package/dist/{v3-shape-sampling.d.ts → shape-sampling.d.ts} +4 -4
- package/dist/shape-sampling.d.ts.map +1 -0
- package/dist/{v3-shape-sampling.js → shape-sampling.js} +3 -3
- package/dist/shape-sampling.js.map +1 -0
- package/dist/{v3-surface.d.ts → surface.d.ts} +5 -5
- package/dist/surface.d.ts.map +1 -0
- package/dist/{v3-surface.js → surface.js} +7 -7
- package/dist/surface.js.map +1 -0
- package/dist/{v3-words.d.ts → words.d.ts} +3 -3
- package/dist/words.d.ts.map +1 -0
- package/dist/{v3-words.js → words.js} +3 -3
- package/dist/words.js.map +1 -0
- package/docs/{assembly-constraints-v3.md → assembly-constraints.md} +1 -1
- package/docs/{v3-asset-persistence.md → asset-persistence.md} +8 -8
- package/docs/{v3-authoring-transactions.md → authoring-transactions.md} +2 -2
- package/docs/{v3-capability-bindings.md → capability-bindings.md} +8 -8
- package/docs/{v3-common-kernel-experiment.md → common-kernel-experiment.md} +4 -4
- package/docs/{v3-core-semantics.md → core-semantics.md} +5 -5
- package/docs/{v3-cutover.md → cutover.md} +4 -4
- package/docs/{v3-design.md → design.md} +11 -11
- package/docs/{v3-document-contract.md → document-contract.md} +9 -9
- package/docs/{v3-dryroom-profile-validation.md → dryroom-profile-validation.md} +4 -4
- package/docs/{v3-editor-integration.md → editor-integration.md} +6 -6
- package/docs/{v3-full-conveyor-validation.md → full-conveyor-validation.md} +4 -4
- package/docs/{v3-full-dryroom-validation.md → full-dryroom-validation.md} +4 -4
- package/docs/{v3-full-forklift-validation.md → full-forklift-validation.md} +5 -5
- package/docs/{v3-full-robot-validation.md → full-robot-validation.md} +4 -4
- package/docs/{v3-layout-system.md → layout-system.md} +4 -4
- package/docs/{v3-legacy-risk-audit-2026-09-23.md → legacy-risk-audit-2026-09-23.md} +5 -5
- package/docs/{v3-minimal-model.md → minimal-model.md} +6 -6
- package/docs/{v3-motion-contract.md → motion-contract.md} +3 -3
- package/docs/{v3-openusd-review.md → openusd-review.md} +8 -8
- package/docs/{v3-operator-contracts.md → operator-contracts.md} +6 -6
- package/docs/{v3-payload-collision-validation.md → payload-collision-validation.md} +4 -4
- package/docs/{v3-payload-contact-validation.md → payload-contact-validation.md} +5 -5
- package/docs/prototypes/README.md +10 -10
- package/docs/prototypes/{v3-asset-samples.mjs → asset-samples.mjs} +6 -6
- package/docs/prototypes/{v3-asset-store.mjs → asset-store.mjs} +3 -3
- package/docs/prototypes/{v3-asset-store.test.mjs → asset-store.test.mjs} +6 -6
- package/docs/prototypes/asset.mjs +1 -0
- package/docs/prototypes/{v3-asset.schema.json → asset.schema.json} +2 -2
- package/docs/prototypes/{v3-asset.test.mjs → asset.test.mjs} +10 -10
- package/docs/prototypes/authoring-session.mjs +1 -0
- package/docs/prototypes/{v3-authoring-session.test.mjs → authoring-session.test.mjs} +6 -6
- package/docs/prototypes/capability-plan.mjs +1 -0
- package/docs/prototypes/{v3-capability-plan.test.mjs → capability-plan.test.mjs} +5 -5
- package/docs/prototypes/{v3-capability-samples.mjs → capability-samples.mjs} +2 -2
- package/docs/prototypes/document.mjs +2 -0
- package/docs/prototypes/{v3-document.schema.json → document.schema.json} +1 -1
- package/docs/prototypes/{v3-document.test.mjs → document.test.mjs} +7 -7
- package/docs/prototypes/{v3-dryroom-mesh.mjs → dryroom-mesh.mjs} +1 -1
- package/docs/prototypes/{v3-dryroom-mesh.test.mjs → dryroom-mesh.test.mjs} +1 -1
- package/docs/prototypes/{v3-editor-browser.mjs → editor-browser.mjs} +13 -13
- package/docs/prototypes/editor-workspace.mjs +1 -0
- package/docs/prototypes/{v3-editor-workspace.test.mjs → editor-workspace.test.mjs} +3 -3
- package/docs/prototypes/{v3-feature-pattern.test.mjs → feature-pattern.test.mjs} +1 -1
- package/docs/prototypes/{v3-full-conveyor.mjs → full-conveyor.mjs} +2 -2
- package/docs/prototypes/{v3-full-conveyor.test.mjs → full-conveyor.test.mjs} +3 -3
- package/docs/prototypes/{v3-full-dryroom.mjs → full-dryroom.mjs} +2 -2
- package/docs/prototypes/{v3-full-dryroom.test.mjs → full-dryroom.test.mjs} +3 -3
- package/docs/prototypes/{v3-full-forklift.mjs → full-forklift.mjs} +2 -2
- package/docs/prototypes/{v3-full-forklift.test.mjs → full-forklift.test.mjs} +3 -3
- package/docs/prototypes/{v3-full-robot.mjs → full-robot.mjs} +2 -2
- package/docs/prototypes/{v3-full-robot.test.mjs → full-robot.test.mjs} +4 -4
- package/docs/prototypes/{v3-kernel.test.mjs → kernel.test.mjs} +1 -1
- package/docs/prototypes/{v3-layout.test.mjs → layout.test.mjs} +1 -1
- package/docs/prototypes/{v3-more-samples.test.mjs → more-samples.test.mjs} +2 -2
- package/docs/prototypes/{v3-payload-collision.mjs → payload-collision.mjs} +2 -2
- package/docs/prototypes/{v3-payload-collision.test.mjs → payload-collision.test.mjs} +3 -3
- package/docs/prototypes/{v3-payload-fit.mjs → payload-fit.mjs} +2 -2
- package/docs/prototypes/{v3-payload-fit.test.mjs → payload-fit.test.mjs} +4 -4
- package/docs/prototypes/render-full-dryroom.mjs +12 -12
- package/docs/prototypes/{v3-repeated-binding.mjs → repeated-binding.mjs} +1 -1
- package/docs/prototypes/{v3-repeated-binding.test.mjs → repeated-binding.test.mjs} +6 -6
- package/docs/prototypes/{v3-runtime-browser.mjs → runtime-browser.mjs} +26 -26
- package/docs/prototypes/{v3-samples.test.mjs → samples.test.mjs} +1 -1
- package/docs/prototypes/{v3-spatial-plan.test.mjs → spatial-plan.test.mjs} +1 -1
- package/docs/prototypes/typed-plan.mjs +3 -0
- package/docs/prototypes/{v3-typed-plan.test.mjs → typed-plan.test.mjs} +1 -1
- package/docs/prototypes/{v3-typed-repeat.test.mjs → typed-repeat.test.mjs} +2 -2
- package/docs/{v3-repeated-binding-validation.md → repeated-binding-validation.md} +4 -4
- package/docs/{v3-research-review.md → research-review.md} +2 -2
- package/docs/{v3-review-2026-09-22.md → review-2026-09-22.md} +10 -10
- package/docs/{v3-runtime-extraction.md → runtime-extraction.md} +16 -16
- package/docs/{v3-sample-validation-expanded.md → sample-validation-expanded.md} +5 -5
- package/docs/{v3-sample-validation.md → sample-validation.md} +3 -3
- package/docs/{v3-shape-dimension-contract.md → shape-dimension-contract.md} +12 -12
- package/docs/{v3-shapeassembly-reproduction.md → shapeassembly-reproduction.md} +4 -4
- package/docs/{v3-spatial-contracts.md → spatial-contracts.md} +5 -5
- package/docs/status.md +12 -0
- package/docs/{v3-storage-integration.md → storage-integration.md} +5 -5
- package/docs/{v3-typed-repeat-contracts.md → typed-repeat-contracts.md} +3 -3
- package/package.json +3 -3
- package/dist/v3-asset-types.d.ts.map +0 -1
- package/dist/v3-asset-types.js +0 -2
- package/dist/v3-asset-types.js.map +0 -1
- package/dist/v3-asset.d.ts +0 -8
- package/dist/v3-asset.d.ts.map +0 -1
- package/dist/v3-asset.js.map +0 -1
- package/dist/v3-authoring-actions.d.ts.map +0 -1
- package/dist/v3-authoring-actions.js.map +0 -1
- package/dist/v3-authoring-session.d.ts.map +0 -1
- package/dist/v3-authoring-session.js.map +0 -1
- package/dist/v3-capabilities.d.ts +0 -3
- package/dist/v3-capabilities.d.ts.map +0 -1
- package/dist/v3-capabilities.js.map +0 -1
- package/dist/v3-contract.d.ts +0 -7
- package/dist/v3-contract.d.ts.map +0 -1
- package/dist/v3-contract.js +0 -12
- package/dist/v3-contract.js.map +0 -1
- package/dist/v3-cost.d.ts.map +0 -1
- package/dist/v3-cost.js.map +0 -1
- package/dist/v3-create.js.map +0 -1
- package/dist/v3-document.d.ts +0 -5
- package/dist/v3-document.d.ts.map +0 -1
- package/dist/v3-document.js +0 -31
- package/dist/v3-document.js.map +0 -1
- package/dist/v3-driver.d.ts.map +0 -1
- package/dist/v3-driver.js.map +0 -1
- package/dist/v3-editor-workspace.d.ts.map +0 -1
- package/dist/v3-editor-workspace.js.map +0 -1
- package/dist/v3-examples.d.ts.map +0 -1
- package/dist/v3-examples.js.map +0 -1
- package/dist/v3-follow.d.ts.map +0 -1
- package/dist/v3-follow.js.map +0 -1
- package/dist/v3-gate.d.ts.map +0 -1
- package/dist/v3-gate.js.map +0 -1
- package/dist/v3-graph-types.d.ts.map +0 -1
- package/dist/v3-graph-types.js +0 -2
- package/dist/v3-graph-types.js.map +0 -1
- package/dist/v3-graph.d.ts.map +0 -1
- package/dist/v3-graph.js.map +0 -1
- package/dist/v3-instance-size.d.ts.map +0 -1
- package/dist/v3-instance-size.js.map +0 -1
- package/dist/v3-json.d.ts +0 -12
- package/dist/v3-json.d.ts.map +0 -1
- package/dist/v3-json.js.map +0 -1
- package/dist/v3-kernel-version.d.ts +0 -8
- package/dist/v3-kernel-version.d.ts.map +0 -1
- package/dist/v3-kernel-version.js.map +0 -1
- package/dist/v3-part-edit.d.ts.map +0 -1
- package/dist/v3-part-edit.js.map +0 -1
- package/dist/v3-proposal.d.ts +0 -42
- package/dist/v3-proposal.d.ts.map +0 -1
- package/dist/v3-proposal.js.map +0 -1
- package/dist/v3-public-inputs.d.ts.map +0 -1
- package/dist/v3-public-inputs.js.map +0 -1
- package/dist/v3-recipe-build.d.ts +0 -27
- package/dist/v3-recipe-build.d.ts.map +0 -1
- package/dist/v3-recipe-build.js.map +0 -1
- package/dist/v3-recipe-from-parts.d.ts +0 -8
- package/dist/v3-recipe-from-parts.d.ts.map +0 -1
- package/dist/v3-recipe-from-parts.js.map +0 -1
- package/dist/v3-recipe.d.ts.map +0 -1
- package/dist/v3-recipe.js.map +0 -1
- package/dist/v3-release-contract.d.ts +0 -19
- package/dist/v3-release-contract.d.ts.map +0 -1
- package/dist/v3-release-contract.js.map +0 -1
- package/dist/v3-render-batches.d.ts.map +0 -1
- package/dist/v3-render-batches.js.map +0 -1
- package/dist/v3-score.d.ts.map +0 -1
- package/dist/v3-score.js.map +0 -1
- package/dist/v3-shape-sampling.d.ts.map +0 -1
- package/dist/v3-shape-sampling.js.map +0 -1
- package/dist/v3-surface.d.ts.map +0 -1
- package/dist/v3-surface.js.map +0 -1
- package/dist/v3-words.d.ts.map +0 -1
- package/dist/v3-words.js.map +0 -1
- package/docs/prototypes/v3-asset.mjs +0 -1
- package/docs/prototypes/v3-authoring-session.mjs +0 -1
- package/docs/prototypes/v3-capability-plan.mjs +0 -1
- package/docs/prototypes/v3-document.mjs +0 -2
- package/docs/prototypes/v3-editor-workspace.mjs +0 -1
- package/docs/prototypes/v3-typed-plan.mjs +0 -3
- package/docs/v3-status.md +0 -50
- /package/docs/prototypes/{v3-kernel.mjs → kernel.mjs} +0 -0
- /package/docs/prototypes/{v3-linear-comparison.py → linear-comparison.py} +0 -0
- /package/docs/prototypes/{v3-semantics.test.mjs → semantics.test.mjs} +0 -0
package/dist/index.js
CHANGED
|
@@ -3,38 +3,38 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @hatiolab/figure-model
|
|
5
5
|
*
|
|
6
|
-
* The figure format (`figure-
|
|
7
|
-
* the server judges with it, the modeller authors with it, the scene draws from it. Design: docs/
|
|
6
|
+
* The figure format (`figure-asset-1`): its kernel, authoring commands, release gate and score. No dependencies --
|
|
7
|
+
* the server judges with it, the modeller authors with it, the scene draws from it. Design: docs/design.md.
|
|
8
8
|
*/
|
|
9
|
-
export * from "./
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export { publicInputRefusal } from "./
|
|
20
|
-
export {
|
|
21
|
-
export { driverValue, driverStates, normalisePhase,
|
|
22
|
-
export {
|
|
23
|
-
export {
|
|
24
|
-
export {
|
|
25
|
-
export {
|
|
26
|
-
export {
|
|
27
|
-
export {
|
|
28
|
-
export {
|
|
29
|
-
export {
|
|
30
|
-
export {
|
|
31
|
-
export {
|
|
32
|
-
export {
|
|
33
|
-
export {
|
|
34
|
-
export {
|
|
35
|
-
export {
|
|
36
|
-
export {
|
|
37
|
-
export {
|
|
38
|
-
export {
|
|
39
|
-
export {
|
|
9
|
+
export * from "./words.js";
|
|
10
|
+
export { FigureContractError } from "./contract.js";
|
|
11
|
+
export { compileFigureGraph } from "./graph.js";
|
|
12
|
+
export { editFigurePart, removePart } from "./part-edit.js";
|
|
13
|
+
export { createFigureAsset, addFigureBox, addFigurePrimitive } from "./create.js";
|
|
14
|
+
export { createFigureAuthoringSession } from "./authoring-session.js";
|
|
15
|
+
export { createFigureEditorWorkspace } from "./editor-workspace.js";
|
|
16
|
+
export { compileFigureCapabilities } from "./capabilities.js";
|
|
17
|
+
export { compileFigureDocument, parseFigureDocument, serializeFigureDocument } from "./document.js";
|
|
18
|
+
export { compileFigureAsset, parseFigureAsset, serializeFigureAsset, captureFigureAuthoredInputs } from "./asset.js";
|
|
19
|
+
export { publicInputRefusal } from "./public-inputs.js";
|
|
20
|
+
export { inspectFigureAsset, cornerExtremalBasis, FIGURE_DESIGN_EXTREME_BASIS, figureWorldBoxesOf, figureOccupiedBoxesOf, figureWritersOf, figurePartsExtentOf } from "./gate.js";
|
|
21
|
+
export { driverValue, driverStates, normalisePhase, validateFigureDrivers, validateFigureStateInputs, advanceStateValue, stateInputPolicy } from "./driver.js";
|
|
22
|
+
export { figureShapePoints, transformPoints } from "./shape-sampling.js";
|
|
23
|
+
export { FIGURE_OPERATORS, FIGURE_NON_AFFINE_OPERATORS, FIGURE_STATE_NON_AFFINE_OPERATORS, FIGURE_OPERATOR_STATE_POLICY, FIGURE_OPERATOR_PURITY, figureShapeFaces } from "./graph.js";
|
|
24
|
+
export { FIGURE_KERNEL_VERSION } from "./kernel-version.js";
|
|
25
|
+
export { FIGURE_FACE_NORMALS } from "./surface.js";
|
|
26
|
+
export { figureCostOf, figureTrianglesOf } from "./cost.js";
|
|
27
|
+
export { figureRenderBatchesOf } from "./render-batches.js";
|
|
28
|
+
export { figureScoreOf, figurePartCountOf, figurePartBudgetOf, figureGradeOf, figureMaterialKeyOf, figureIndependentBodiesOf, FIGURE_GRADE_SCALE, FIGURE_BUDGET_KEYS, FIGURE_PER_INSTANCE } from "./score.js";
|
|
29
|
+
export { applyFigureAuthoring, proposeFigureOccupancy, proposeFigureProportion, figureAttachmentsOf, figureBindingsOf, FIGURE_FACES, FIGURE_JOINT_TYPES, checkFigureJoints } from "./authoring-actions.js";
|
|
30
|
+
export { FIGURE_PLACEMENTS } from "./asset-types.js";
|
|
31
|
+
export { applyFigureProposal, FIGURE_PROPOSAL_GRAMMAR, FIGURE_PROPOSAL_KINDS } from "./proposal.js";
|
|
32
|
+
export { figureFollowOf } from "./follow.js";
|
|
33
|
+
export { figureRecipeFromParts } from "./recipe-from-parts.js";
|
|
34
|
+
export { buildFigureRecipe } from "./recipe-build.js";
|
|
35
|
+
export { applyFigureRecipe, checkFigureRecipe, describeFigureRecipe, holdsFigureWhen, parseFigureRecipe, resolveFigureRecipe, figureRecipeIdFor, figureRecipeTestRoom } from "./recipe.js";
|
|
36
|
+
export { assertFigureJson, parseFigureJson, figureUtf8ByteLength, FIGURE_JSON_MAX_BYTES, FIGURE_JSON_MAX_DEPTH } from "./json.js";
|
|
37
|
+
export { FIGURE_INSTANCE_SIZE_DEFAULT, FIGURE_INSTANCE_SIZE_INPUTS, FIGURE_SIZE_POSITIVE_STEP, defaultInstanceSizeRange, foldInstanceSizeRange, figureInstanceSizeLimitsOf } from "./instance-size.js";
|
|
38
|
+
export { figureContractChanges } from "./release-contract.js";
|
|
39
|
+
export { robotArmFigure, ROBOT_ARM_CHAIN } from "./examples.js";
|
|
40
40
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FigureAsset } from './asset-types.ts';
|
|
2
2
|
type Axis = 'x' | 'y' | 'z';
|
|
3
3
|
/** The instance-size inputs, in mm. */
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const FIGURE_INSTANCE_SIZE_INPUTS: Readonly<Record<Axis, string>>;
|
|
5
5
|
/**
|
|
6
6
|
* The default range: from 1 mm to ten times the authored size; the modeller prefills the same.
|
|
7
7
|
*/
|
|
8
|
-
export declare const
|
|
8
|
+
export declare const FIGURE_INSTANCE_SIZE_DEFAULT: Readonly<{
|
|
9
9
|
min: 1;
|
|
10
10
|
times: 10;
|
|
11
11
|
}>;
|
|
@@ -13,13 +13,13 @@ export declare const V3_INSTANCE_SIZE_DEFAULT: Readonly<{
|
|
|
13
13
|
* The step above a spanned length's room at which the evaluated length is still positive in double precision at the
|
|
14
14
|
* sizes figures have (mm, up to 10⁵). A numerical stability bound, not a minimum part size (designer's ruling 2).
|
|
15
15
|
*/
|
|
16
|
-
export declare const
|
|
17
|
-
export type
|
|
16
|
+
export declare const FIGURE_SIZE_POSITIVE_STEP = 0.000001;
|
|
17
|
+
export type FigureSizeRange = Record<Axis, {
|
|
18
18
|
min: number;
|
|
19
19
|
max: number;
|
|
20
20
|
}>;
|
|
21
21
|
/** One edge a figure's size cannot cross, and on which axis. `part` names who sets it, when known. */
|
|
22
|
-
export type
|
|
22
|
+
export type FigureSizeLimit = {
|
|
23
23
|
axis: Axis;
|
|
24
24
|
part?: string;
|
|
25
25
|
} & (
|
|
@@ -40,8 +40,8 @@ export type V3SizeLimit = {
|
|
|
40
40
|
max: number;
|
|
41
41
|
});
|
|
42
42
|
/** A bound the fold moved, with the range as it stood right after — what a report needs to say it. */
|
|
43
|
-
export interface
|
|
44
|
-
limit:
|
|
43
|
+
export interface FigureSizeRangeMove {
|
|
44
|
+
limit: FigureSizeLimit;
|
|
45
45
|
bound: 'min' | 'max';
|
|
46
46
|
range: {
|
|
47
47
|
min: number;
|
|
@@ -49,14 +49,14 @@ export interface V3SizeRangeMove {
|
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
/** The default range around an authored size. */
|
|
52
|
-
export declare function defaultInstanceSizeRange(size: Record<Axis, number>):
|
|
52
|
+
export declare function defaultInstanceSizeRange(size: Record<Axis, number>): FigureSizeRange;
|
|
53
53
|
/**
|
|
54
54
|
* The range left once every limit is applied, in the order given, and each bound that moved. A repeat's floor at
|
|
55
55
|
* one pitch is applied without a move: it is "at least one copy", not a narrowing.
|
|
56
56
|
*/
|
|
57
|
-
export declare function foldInstanceSizeRange(start:
|
|
58
|
-
range:
|
|
59
|
-
moves:
|
|
57
|
+
export declare function foldInstanceSizeRange(start: FigureSizeRange, limits: readonly FigureSizeLimit[]): {
|
|
58
|
+
range: FigureSizeRange;
|
|
59
|
+
moves: FigureSizeRangeMove[];
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
62
|
* The edges of this asset's declared instance size, measured with the kernel: for each axis, the size below which
|
|
@@ -64,6 +64,6 @@ export declare function foldInstanceSizeRange(start: V3SizeRange, limits: readon
|
|
|
64
64
|
* default. Only searched when the end of `within` fails, so a figure that holds over its range costs six
|
|
65
65
|
* evaluations. `part` is read from the node the kernel refused.
|
|
66
66
|
*/
|
|
67
|
-
export declare function
|
|
67
|
+
export declare function figureInstanceSizeLimitsOf(asset: FigureAsset, within: FigureSizeRange): FigureSizeLimit[];
|
|
68
68
|
export {};
|
|
69
|
-
//# sourceMappingURL=
|
|
69
|
+
//# sourceMappingURL=instance-size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-size.d.ts","sourceRoot":"","sources":["../src/instance-size.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAgBnD,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAG3B,uCAAuC;AACvC,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAA4D,CAAA;AAEnI;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;EAAuC,CAAA;AAEhF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAAO,CAAA;AAE7C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAExE,sGAAsG;AACtG,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;AAC5D,oEAAoE;AAClE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAChC,mFAAmF;GACjF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AAChD,uDAAuD;GACrD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAC/B,CAAA;AAED,sGAAsG;AACtG,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,eAAe,CAAA;IACtB,KAAK,EAAE,KAAK,GAAG,KAAK,CAAA;IACpB,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,iDAAiD;AACjD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,eAAe,CAIpF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAwB1J;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe,EAAE,CAyDzG"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { compileFigureGraph } from "./graph.js";
|
|
2
2
|
const AXES = ['x', 'y', 'z'];
|
|
3
3
|
/** The instance-size inputs, in mm. */
|
|
4
|
-
export const
|
|
4
|
+
export const FIGURE_INSTANCE_SIZE_INPUTS = Object.freeze({ x: 'size.x', y: 'size.y', z: 'size.z' });
|
|
5
5
|
/**
|
|
6
6
|
* The default range: from 1 mm to ten times the authored size; the modeller prefills the same.
|
|
7
7
|
*/
|
|
8
|
-
export const
|
|
8
|
+
export const FIGURE_INSTANCE_SIZE_DEFAULT = Object.freeze({ min: 1, times: 10 });
|
|
9
9
|
/**
|
|
10
10
|
* The step above a spanned length's room at which the evaluated length is still positive in double precision at the
|
|
11
11
|
* sizes figures have (mm, up to 10⁵). A numerical stability bound, not a minimum part size (designer's ruling 2).
|
|
12
12
|
*/
|
|
13
|
-
export const
|
|
13
|
+
export const FIGURE_SIZE_POSITIVE_STEP = 1e-6;
|
|
14
14
|
/** The default range around an authored size. */
|
|
15
15
|
export function defaultInstanceSizeRange(size) {
|
|
16
16
|
const out = {};
|
|
17
17
|
for (const a of AXES)
|
|
18
|
-
out[a] = { min:
|
|
18
|
+
out[a] = { min: FIGURE_INSTANCE_SIZE_DEFAULT.min, max: size[a] * FIGURE_INSTANCE_SIZE_DEFAULT.times };
|
|
19
19
|
return out;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
@@ -30,7 +30,7 @@ export function foldInstanceSizeRange(start, limits) {
|
|
|
30
30
|
for (const limit of limits) {
|
|
31
31
|
const r = range[limit.axis];
|
|
32
32
|
if (limit.kind === 'span') {
|
|
33
|
-
const floor = limit.room +
|
|
33
|
+
const floor = limit.room + FIGURE_SIZE_POSITIVE_STEP;
|
|
34
34
|
if (floor > r.min) {
|
|
35
35
|
r.min = floor;
|
|
36
36
|
moves.push({ limit, bound: 'min', range: { ...r } });
|
|
@@ -56,17 +56,17 @@ export function foldInstanceSizeRange(start, limits) {
|
|
|
56
56
|
* default. Only searched when the end of `within` fails, so a figure that holds over its range costs six
|
|
57
57
|
* evaluations. `part` is read from the node the kernel refused.
|
|
58
58
|
*/
|
|
59
|
-
export function
|
|
59
|
+
export function figureInstanceSizeLimitsOf(asset, within) {
|
|
60
60
|
const model = structuredClone(asset.document.model);
|
|
61
|
-
const ids = new Set(Object.values(
|
|
61
|
+
const ids = new Set(Object.values(FIGURE_INSTANCE_SIZE_INPUTS));
|
|
62
62
|
for (const input of model.inputs)
|
|
63
63
|
if (ids.has(input.id))
|
|
64
64
|
Object.assign(input, { min: Number.MIN_VALUE, max: Number.MAX_VALUE });
|
|
65
|
-
const graph =
|
|
65
|
+
const graph = compileFigureGraph(model);
|
|
66
66
|
const base = { ...asset.designInputs, ...asset.stateDefaults };
|
|
67
67
|
const limits = [];
|
|
68
68
|
for (const axis of AXES) {
|
|
69
|
-
const id =
|
|
69
|
+
const id = FIGURE_INSTANCE_SIZE_INPUTS[axis];
|
|
70
70
|
const authored = asset.designInputs[id];
|
|
71
71
|
if (typeof authored !== 'number')
|
|
72
72
|
continue;
|
|
@@ -85,7 +85,7 @@ export function v3InstanceSizeLimitsOf(asset, within) {
|
|
|
85
85
|
let lo = Math.min(within[axis].min, authored);
|
|
86
86
|
let hi = authored;
|
|
87
87
|
let at = low;
|
|
88
|
-
for (let i = 0; i < 80 && hi - lo >
|
|
88
|
+
for (let i = 0; i < 80 && hi - lo > FIGURE_SIZE_POSITIVE_STEP / 4; i++) {
|
|
89
89
|
const mid = (lo + hi) / 2;
|
|
90
90
|
const r = refusal(mid);
|
|
91
91
|
if (r === null)
|
|
@@ -102,7 +102,7 @@ export function v3InstanceSizeLimitsOf(asset, within) {
|
|
|
102
102
|
let lo = authored;
|
|
103
103
|
let hi = Math.max(within[axis].max, authored);
|
|
104
104
|
let at = high;
|
|
105
|
-
for (let i = 0; i < 80 && hi - lo >
|
|
105
|
+
for (let i = 0; i < 80 && hi - lo > FIGURE_SIZE_POSITIVE_STEP / 4; i++) {
|
|
106
106
|
const mid = (lo + hi) / 2;
|
|
107
107
|
const r = refusal(mid);
|
|
108
108
|
if (r === null)
|
|
@@ -117,4 +117,4 @@ export function v3InstanceSizeLimitsOf(asset, within) {
|
|
|
117
117
|
}
|
|
118
118
|
return limits;
|
|
119
119
|
}
|
|
120
|
-
//# sourceMappingURL=
|
|
120
|
+
//# sourceMappingURL=instance-size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-size.js","sourceRoot":"","sources":["../src/instance-size.ts"],"names":[],"mappings":"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"}
|
package/dist/json.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type FigureJsonValue = null | boolean | number | string | FigureJsonValue[] | {
|
|
2
|
+
[key: string]: FigureJsonValue;
|
|
3
|
+
};
|
|
4
|
+
/** Experimental resource limits, not a product storage quota. */
|
|
5
|
+
export declare const FIGURE_JSON_MAX_BYTES: number;
|
|
6
|
+
export declare const FIGURE_JSON_MAX_DEPTH = 64;
|
|
7
|
+
/** Identical UTF-8 accounting in browsers and Node, including lone surrogates. */
|
|
8
|
+
export declare function figureUtf8ByteLength(text: string): number;
|
|
9
|
+
export declare function assertFigureJson(value: unknown): asserts value is FigureJsonValue;
|
|
10
|
+
/** Strict JSON transport only; this is NOT model/asset semantic validation. */
|
|
11
|
+
export declare function parseFigureJson(text: string): FigureJsonValue;
|
|
12
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,CAAA;AAEvH,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,QAAc,CAAA;AAChD,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAMvC,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAkBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CA+BjF;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA0B7D"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FigureContractError } from "./contract.js";
|
|
2
2
|
/** Experimental resource limits, not a product storage quota. */
|
|
3
|
-
export const
|
|
4
|
-
export const
|
|
3
|
+
export const FIGURE_JSON_MAX_BYTES = 1024 * 1024;
|
|
4
|
+
export const FIGURE_JSON_MAX_DEPTH = 64;
|
|
5
5
|
function fail(code, detail) {
|
|
6
|
-
throw new
|
|
6
|
+
throw new FigureContractError(code, 'document', detail);
|
|
7
7
|
}
|
|
8
8
|
/** Identical UTF-8 accounting in browsers and Node, including lone surrogates. */
|
|
9
|
-
export function
|
|
9
|
+
export function figureUtf8ByteLength(text) {
|
|
10
10
|
return new TextEncoder().encode(text).byteLength;
|
|
11
11
|
}
|
|
12
12
|
/** Reject values JSON.stringify would silently discard or transform. Does not invoke getters. */
|
|
@@ -25,10 +25,10 @@ function isPlainObject(value) {
|
|
|
25
25
|
return true;
|
|
26
26
|
return Object.getPrototypeOf(proto) === null && typeof proto.hasOwnProperty === 'function';
|
|
27
27
|
}
|
|
28
|
-
export function
|
|
28
|
+
export function assertFigureJson(value) {
|
|
29
29
|
const active = new Set();
|
|
30
30
|
function visit(current, depth) {
|
|
31
|
-
if (depth >
|
|
31
|
+
if (depth > FIGURE_JSON_MAX_DEPTH)
|
|
32
32
|
fail('DOCUMENT_LIMIT', 'nesting exceeds 64');
|
|
33
33
|
if (current === null || typeof current === 'string' || typeof current === 'boolean')
|
|
34
34
|
return;
|
|
@@ -66,12 +66,12 @@ export function assertV3Json(value) {
|
|
|
66
66
|
}
|
|
67
67
|
visit(value, 0);
|
|
68
68
|
}
|
|
69
|
-
/** Strict JSON transport only; this is NOT
|
|
70
|
-
export function
|
|
69
|
+
/** Strict JSON transport only; this is NOT model/asset semantic validation. */
|
|
70
|
+
export function parseFigureJson(text) {
|
|
71
71
|
if (typeof text !== 'string')
|
|
72
72
|
fail('JSON_VALUE', 'text required');
|
|
73
73
|
// Cheap UTF-16 length bound avoids allocating an encoded copy of huge requests.
|
|
74
|
-
if (text.length >
|
|
74
|
+
if (text.length > FIGURE_JSON_MAX_BYTES || figureUtf8ByteLength(text) > FIGURE_JSON_MAX_BYTES) {
|
|
75
75
|
fail('DOCUMENT_LIMIT', 'over 1 MiB');
|
|
76
76
|
}
|
|
77
77
|
let parsed;
|
|
@@ -100,10 +100,10 @@ export function parseV3Json(text) {
|
|
|
100
100
|
top.keys.add(key);
|
|
101
101
|
top.expectingKey = false;
|
|
102
102
|
}
|
|
103
|
-
if (stack.length >
|
|
103
|
+
if (stack.length > FIGURE_JSON_MAX_DEPTH + 1)
|
|
104
104
|
fail('DOCUMENT_LIMIT', 'nesting exceeds 64');
|
|
105
105
|
}
|
|
106
|
-
|
|
106
|
+
assertFigureJson(parsed);
|
|
107
107
|
return parsed;
|
|
108
108
|
}
|
|
109
|
-
//# sourceMappingURL=
|
|
109
|
+
//# sourceMappingURL=json.js.map
|
package/dist/json.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The version of the kernel a consumer compiled a asset with. A compile cache keys on the asset's content
|
|
3
|
+
* fingerprint **and** this (ADR-0087, designer's ruling 4): the same source compiled by a different kernel is a
|
|
4
|
+
* different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
|
|
5
|
+
* and by `kernel-version.test.ts`.
|
|
6
|
+
*/
|
|
7
|
+
export declare const FIGURE_KERNEL_VERSION = "0.1.93";
|
|
8
|
+
//# sourceMappingURL=kernel-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel-version.d.ts","sourceRoot":"","sources":["../src/kernel-version.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,WAAW,CAAA"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
|
-
* The version of the kernel a consumer compiled a
|
|
5
|
+
* The version of the kernel a consumer compiled a asset with. A compile cache keys on the asset's content
|
|
6
6
|
* fingerprint **and** this (ADR-0087, designer's ruling 4): the same source compiled by a different kernel is a
|
|
7
7
|
* different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
|
|
8
|
-
* and by `
|
|
8
|
+
* and by `kernel-version.test.ts`.
|
|
9
9
|
*/
|
|
10
|
-
export const
|
|
11
|
-
//# sourceMappingURL=
|
|
10
|
+
export const FIGURE_KERNEL_VERSION = '0.1.93';
|
|
11
|
+
//# sourceMappingURL=kernel-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel-version.js","sourceRoot":"","sources":["../src/kernel-version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type RemovalNotice } from './
|
|
3
|
-
export type
|
|
1
|
+
import type { FigureAsset, FigureMaterial } from './asset-types.ts';
|
|
2
|
+
import { type RemovalNotice } from './authoring-actions.ts';
|
|
3
|
+
export type FigurePartEdit =
|
|
4
4
|
/**
|
|
5
5
|
* The part's material. `palette` adds the colours it names that the asset does not carry yet — a new asset carries
|
|
6
6
|
* only its primary colour, and a role the palette lacks is refused. An entry never changes a colour the asset
|
|
@@ -9,7 +9,7 @@ export type V3PartEdit =
|
|
|
9
9
|
{
|
|
10
10
|
kind: 'set-material';
|
|
11
11
|
target: string;
|
|
12
|
-
material:
|
|
12
|
+
material: FigureMaterial;
|
|
13
13
|
palette?: Record<string, string>;
|
|
14
14
|
}
|
|
15
15
|
/** How finely a round body's rim is drawn. One of the presets the renderer draws; refused on a body with no rim. */
|
|
@@ -109,7 +109,7 @@ export type V3PartEdit =
|
|
|
109
109
|
/**
|
|
110
110
|
* "This part is shown while that control is at least so much" -- a lamp lit while a gate is open. The part keeps its
|
|
111
111
|
* place, its size and every check; only whether it is drawn follows the control (the visibility contract,
|
|
112
|
-
* `
|
|
112
|
+
* `FigureAppearance.visibility`). `null` shows it always. The comparison it had before, read by nothing else, goes.
|
|
113
113
|
*/
|
|
114
114
|
| {
|
|
115
115
|
kind: 'set-visibility';
|
|
@@ -120,17 +120,17 @@ export type V3PartEdit =
|
|
|
120
120
|
} | null;
|
|
121
121
|
};
|
|
122
122
|
/** Pure, validated structural edit. References are never silently retargeted or cascaded. */
|
|
123
|
-
export declare function
|
|
123
|
+
export declare function editFigurePart(source: FigureAsset, edit: FigurePartEdit): FigureAsset;
|
|
124
124
|
/**
|
|
125
125
|
* Takes a part away, and says what else that changed (`RemovalNotice`): the parts let go, the values fixed, the
|
|
126
|
-
* controls made, the mounting face given up. `
|
|
126
|
+
* controls made, the mounting face given up. `editFigurePart` is this without the notice.
|
|
127
127
|
*/
|
|
128
|
-
export declare function removePart(source:
|
|
128
|
+
export declare function removePart(source: FigureAsset, edit: {
|
|
129
129
|
kind: 'remove-part';
|
|
130
130
|
target: string;
|
|
131
131
|
refitRoom?: boolean;
|
|
132
132
|
}): {
|
|
133
|
-
asset:
|
|
133
|
+
asset: FigureAsset;
|
|
134
134
|
notice: RemovalNotice;
|
|
135
135
|
};
|
|
136
|
-
//# sourceMappingURL=
|
|
136
|
+
//# sourceMappingURL=part-edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"part-edit.d.ts","sourceRoot":"","sources":["../src/part-edit.ts"],"names":[],"mappings":"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"}
|