@hatiolab/figure-model 0.1.92 → 0.1.94
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} +73 -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 +20 -0
- package/dist/asset.d.ts.map +1 -0
- package/dist/{v3-asset.js → asset.js} +49 -28
- package/dist/asset.js.map +1 -0
- package/dist/{v3-authoring-actions.d.ts → authoring-actions.d.ts} +77 -66
- package/dist/authoring-actions.d.ts.map +1 -0
- package/dist/{v3-authoring-actions.js → authoring-actions.js} +129 -104
- package/dist/authoring-actions.js.map +1 -0
- package/dist/{v3-authoring-session.d.ts → authoring-session.d.ts} +23 -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/clip-keeping.d.ts +30 -0
- package/dist/clip-keeping.d.ts.map +1 -0
- package/dist/clip-keeping.js +77 -0
- package/dist/clip-keeping.js.map +1 -0
- package/dist/command-preview.d.ts +125 -0
- package/dist/command-preview.d.ts.map +1 -0
- package/dist/command-preview.js +246 -0
- package/dist/command-preview.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} +99 -73
- package/dist/editor-workspace.d.ts.map +1 -0
- package/dist/{v3-editor-workspace.js → editor-workspace.js} +48 -32
- 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} +36 -28
- package/dist/gate.d.ts.map +1 -0
- package/dist/{v3-gate.js → gate.js} +54 -48
- 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 +39 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -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} +12 -11
- package/dist/part-edit.d.ts.map +1 -0
- package/dist/{v3-part-edit.js → part-edit.js} +84 -68
- package/dist/part-edit.js.map +1 -0
- package/dist/proposal.d.ts +55 -0
- package/dist/proposal.d.ts.map +1 -0
- package/dist/{v3-proposal.js → proposal.js} +29 -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} +8 -7
- 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/resize-plan.d.ts +61 -0
- package/dist/resize-plan.d.ts.map +1 -0
- package/dist/resize-plan.js +189 -0
- package/dist/resize-plan.js.map +1 -0
- package/dist/room.d.ts +53 -0
- package/dist/room.d.ts.map +1 -0
- package/dist/room.js +90 -0
- package/dist/room.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/shape-provider.d.ts +37 -0
- package/dist/shape-provider.d.ts.map +1 -0
- package/dist/shape-provider.js +69 -0
- package/dist/shape-provider.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/size-edit.d.ts +38 -0
- package/dist/size-edit.d.ts.map +1 -0
- package/dist/size-edit.js +178 -0
- package/dist/size-edit.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
|
@@ -1,45 +1,56 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { settleFigureClips } from "./clip-keeping.js";
|
|
2
|
+
import { keepPublicInputs, renamePublicInputs } from "./public-inputs.js";
|
|
3
|
+
import { compileFigureAsset, upgradeFigurePlacement } from "./asset.js";
|
|
4
|
+
import { FigureContractError } from "./contract.js";
|
|
5
|
+
import { applyFigureAuthoring, copyFigurePartJoint, dropDeadDanglers, proposeFigureOccupancy, releaseFigurePartJoints, renameFigurePartInJoints } from "./authoring-actions.js";
|
|
6
|
+
import { SEGMENT_PRESETS, FIGURE_CAPABILITIES } from "./words.js";
|
|
6
7
|
/** Pure, validated structural edit. References are never silently retargeted or cascaded. */
|
|
7
|
-
export function
|
|
8
|
-
|
|
8
|
+
export function editFigurePart(source, edit, consent) {
|
|
9
|
+
const before = upgradeFigurePlacement(source);
|
|
10
|
+
const after = partEdit(before, edit);
|
|
11
|
+
/* An edit of the clips themselves says what becomes of them; any other edit keeps them, or asks (clip-keeping.ts). */
|
|
12
|
+
if (edit.kind === 'set-driver' || edit.kind === 'remove-driver' || edit.kind === 'set-clip')
|
|
13
|
+
return after;
|
|
14
|
+
const renamed = edit.kind === 'rename-part' && typeof edit.name === 'string' && edit.name.trim() !== edit.target ? { from: edit.target, to: edit.name.trim() } : undefined;
|
|
15
|
+
return settleFigureClips(before, after, consent, renamed);
|
|
16
|
+
}
|
|
17
|
+
function partEdit(source, edit) {
|
|
18
|
+
source = upgradeFigurePlacement(source);
|
|
19
|
+
compileFigureAsset(source);
|
|
9
20
|
const asset = structuredClone(source), model = asset.document.model;
|
|
10
21
|
if (edit.kind === 'set-capabilities') {
|
|
11
22
|
if (!Array.isArray(edit.names) || edit.names.some(n => typeof n !== 'string'))
|
|
12
|
-
throw new
|
|
23
|
+
throw new FigureContractError('CAPABILITY_NAME', 'names', 'a list of names');
|
|
13
24
|
const unknown = edit.names.filter(n => !FIGURE_CAPABILITIES.includes(n));
|
|
14
25
|
if (unknown.length)
|
|
15
|
-
throw new
|
|
26
|
+
throw new FigureContractError('CAPABILITY_NAME', 'names', `${unknown.join(', ')} is not one of ${FIGURE_CAPABILITIES.join(', ')}`);
|
|
16
27
|
if (new Set(edit.names).size !== edit.names.length)
|
|
17
|
-
throw new
|
|
28
|
+
throw new FigureContractError('CAPABILITY_NAME', 'names', 'duplicate capability name');
|
|
18
29
|
if (edit.names.length)
|
|
19
30
|
asset.document.capabilities.names = [...edit.names];
|
|
20
31
|
else
|
|
21
32
|
delete asset.document.capabilities.names;
|
|
22
|
-
|
|
33
|
+
compileFigureAsset(asset);
|
|
23
34
|
return asset;
|
|
24
35
|
}
|
|
25
36
|
if (edit.kind === 'set-state-input') {
|
|
26
37
|
const input = model.inputs.find(i => i.id === edit.input && i.role === 'state');
|
|
27
38
|
if (!input)
|
|
28
|
-
throw new
|
|
39
|
+
throw new FigureContractError('TARGET_ABSENT', edit.input, 'not a state input of this asset');
|
|
29
40
|
const policy = {};
|
|
30
41
|
if (edit.label !== undefined && edit.label.trim())
|
|
31
42
|
policy.label = edit.label.trim();
|
|
32
43
|
if (edit.sweep !== undefined) {
|
|
33
44
|
if (!(Number.isFinite(edit.sweep) && edit.sweep >= 0))
|
|
34
|
-
throw new
|
|
45
|
+
throw new FigureContractError('STATE_INPUT', edit.input, 'sweep is seconds, zero or more');
|
|
35
46
|
if (edit.sweep > 0)
|
|
36
47
|
policy.sweep = edit.sweep;
|
|
37
48
|
}
|
|
38
49
|
const min = edit.min ?? input.min, max = edit.max ?? input.max;
|
|
39
50
|
if (!(Number.isFinite(min) && Number.isFinite(max) && min < max))
|
|
40
|
-
throw new
|
|
51
|
+
throw new FigureContractError('STATE_INPUT', edit.input, 'the range runs from a smaller number to a larger one');
|
|
41
52
|
if (edit.start !== undefined && !(Number.isFinite(edit.start) && edit.start >= min && edit.start <= max))
|
|
42
|
-
throw new
|
|
53
|
+
throw new FigureContractError('STATE_INPUT', edit.input, `it starts inside its range, ${min} to ${max}`);
|
|
43
54
|
/*
|
|
44
55
|
A joint's value: its range is the joint record's limit, and the two are one (ADR-0093) -- changing only the
|
|
45
56
|
input would leave the record saying otherwise, and the asset would be refused the next time it is read.
|
|
@@ -49,9 +60,9 @@ export function editV3Part(source, edit) {
|
|
|
49
60
|
const ranged = edit.min !== undefined || edit.max !== undefined;
|
|
50
61
|
const endless = joint.type === 'revolute' && joint.lowerLimit === undefined && joint.upperLimit === undefined;
|
|
51
62
|
if (endless && ranged)
|
|
52
|
-
throw new
|
|
63
|
+
throw new FigureContractError('STATE_INPUT', edit.input, 'a joint that turns without end has no range; its value is a phase, -180..180');
|
|
53
64
|
if (ranged && !(min <= 0 && 0 <= max))
|
|
54
|
-
throw new
|
|
65
|
+
throw new FigureContractError('STATE_INPUT', edit.input, 'the rest pose is the joint at 0, so its range holds 0');
|
|
55
66
|
if (!endless) {
|
|
56
67
|
joint.lowerLimit = min;
|
|
57
68
|
joint.upperLimit = max;
|
|
@@ -73,26 +84,26 @@ export function editV3Part(source, edit) {
|
|
|
73
84
|
delete asset.stateInputs[edit.input];
|
|
74
85
|
if (!Object.keys(asset.stateInputs).length)
|
|
75
86
|
delete asset.stateInputs;
|
|
76
|
-
|
|
87
|
+
compileFigureAsset(asset);
|
|
77
88
|
return asset;
|
|
78
89
|
}
|
|
79
90
|
if (edit.kind === 'set-driver') {
|
|
80
91
|
const input = model.inputs.find(i => i.id === edit.state && i.role === 'state');
|
|
81
92
|
if (!input)
|
|
82
|
-
throw new
|
|
93
|
+
throw new FigureContractError('TARGET_ABSENT', String(edit.state), 'not a state input of this asset');
|
|
83
94
|
const clip = typeof edit.clip === 'string' ? edit.clip.trim() : '';
|
|
84
95
|
if (!clip)
|
|
85
|
-
throw new
|
|
96
|
+
throw new FigureContractError('DRIVER', edit.state, 'a clip is named');
|
|
86
97
|
const others = (asset.drivers ?? []).filter(d => d.state !== edit.state);
|
|
87
98
|
const previous = (asset.drivers ?? []).find(d => d.state === edit.state);
|
|
88
99
|
/* The clip's length: given, or the clip's own -- held by another driver in it, or by this one when it is alone. */
|
|
89
100
|
const shared = others.find(d => d.clip === clip)?.time.duration ?? (previous?.clip === clip ? previous.time.duration : undefined);
|
|
90
101
|
const duration = edit.duration ?? shared;
|
|
91
102
|
if (!(typeof duration === 'number' && Number.isFinite(duration) && duration > 0))
|
|
92
|
-
throw new
|
|
103
|
+
throw new FigureContractError('DRIVER_TIME', edit.state, 'a new clip runs for a positive number of seconds');
|
|
93
104
|
const keys = (Array.isArray(edit.keys) ? edit.keys : []).map(k => ({ at: k.seconds / duration, value: k.value }));
|
|
94
105
|
if (keys.some(k => !(Number.isFinite(k.at) && k.at >= 0 && k.at <= 1)))
|
|
95
|
-
throw new
|
|
106
|
+
throw new FigureContractError('DRIVER_KEYS', edit.state, `every key lies within the clip, 0 to ${duration} s`);
|
|
96
107
|
keys.sort((a, b) => a.at - b.at);
|
|
97
108
|
asset.drivers = [
|
|
98
109
|
...others.map(d => (d.clip === clip ? { ...d, time: { unit: 's', duration } } : d)),
|
|
@@ -107,32 +118,32 @@ export function editV3Part(source, edit) {
|
|
|
107
118
|
accumulates: edit.accumulates ?? previous?.accumulates ?? false
|
|
108
119
|
}
|
|
109
120
|
];
|
|
110
|
-
|
|
121
|
+
compileFigureAsset(asset);
|
|
111
122
|
return asset;
|
|
112
123
|
}
|
|
113
124
|
if (edit.kind === 'remove-driver') {
|
|
114
125
|
if (!(asset.drivers ?? []).some(d => d.state === edit.state))
|
|
115
|
-
throw new
|
|
126
|
+
throw new FigureContractError('TARGET_ABSENT', String(edit.state), 'this control is not played');
|
|
116
127
|
asset.drivers = asset.drivers.filter(d => d.state !== edit.state);
|
|
117
128
|
if (!asset.drivers.length)
|
|
118
129
|
delete asset.drivers;
|
|
119
|
-
|
|
130
|
+
compileFigureAsset(asset);
|
|
120
131
|
return asset;
|
|
121
132
|
}
|
|
122
133
|
if (edit.kind === 'set-clip') {
|
|
123
134
|
const drivers = (asset.drivers ?? []).filter(d => d.clip === edit.clip);
|
|
124
135
|
if (!drivers.length)
|
|
125
|
-
throw new
|
|
136
|
+
throw new FigureContractError('TARGET_ABSENT', String(edit.clip), 'no clip by this name');
|
|
126
137
|
const name = edit.name === undefined ? edit.clip : edit.name.trim();
|
|
127
138
|
if (!name)
|
|
128
|
-
throw new
|
|
139
|
+
throw new FigureContractError('DRIVER', edit.clip, 'a clip is named');
|
|
129
140
|
if (name !== edit.clip && (asset.drivers ?? []).some(d => d.clip === name))
|
|
130
|
-
throw new
|
|
141
|
+
throw new FigureContractError('DRIVER', name, 'another clip already has this name; clips are not merged in passing');
|
|
131
142
|
if (edit.duration !== undefined && !(Number.isFinite(edit.duration) && edit.duration > 0))
|
|
132
|
-
throw new
|
|
143
|
+
throw new FigureContractError('DRIVER_TIME', edit.clip, 'a clip runs for a positive number of seconds');
|
|
133
144
|
/* Keys are fractions of the duration: a longer clip plays the same keys more slowly. */
|
|
134
145
|
asset.drivers = asset.drivers.map(d => (d.clip === edit.clip ? { ...d, clip: name, time: { unit: 's', duration: edit.duration ?? d.time.duration } } : d));
|
|
135
|
-
|
|
146
|
+
compileFigureAsset(asset);
|
|
136
147
|
return asset;
|
|
137
148
|
}
|
|
138
149
|
if (edit.kind === 'set-state-defaults') {
|
|
@@ -140,36 +151,36 @@ export function editV3Part(source, edit) {
|
|
|
140
151
|
for (const [id, value] of Object.entries(values)) {
|
|
141
152
|
const input = model.inputs.find(i => i.id === id && i.role === 'state');
|
|
142
153
|
if (!input)
|
|
143
|
-
throw new
|
|
154
|
+
throw new FigureContractError('TARGET_ABSENT', id, 'not a state input of this asset');
|
|
144
155
|
if (!(Number.isFinite(value) && value >= input.min && value <= input.max))
|
|
145
|
-
throw new
|
|
156
|
+
throw new FigureContractError('STATE_INPUT', id, `it starts inside its range, ${input.min} to ${input.max}`);
|
|
146
157
|
asset.stateDefaults[id] = value;
|
|
147
158
|
}
|
|
148
|
-
|
|
159
|
+
compileFigureAsset(asset);
|
|
149
160
|
return asset;
|
|
150
161
|
}
|
|
151
162
|
const look = asset.appearance.find(a => a.target === edit.target);
|
|
152
163
|
if (!look)
|
|
153
|
-
throw new
|
|
164
|
+
throw new FigureContractError('TARGET_ABSENT', 'part', edit.target);
|
|
154
165
|
if (edit.kind === 'duplicate-part') {
|
|
155
|
-
|
|
166
|
+
copyFigurePartJoint(asset, edit.target, duplicatePart(asset, edit.target));
|
|
156
167
|
sweepNewlyUnread(source, asset);
|
|
157
|
-
|
|
168
|
+
compileFigureAsset(asset);
|
|
158
169
|
return asset;
|
|
159
170
|
}
|
|
160
171
|
if (edit.kind === 'set-visibility') {
|
|
161
172
|
const look = asset.appearance.find(a => a.target === edit.target);
|
|
162
173
|
if (!look)
|
|
163
|
-
throw new
|
|
174
|
+
throw new FigureContractError('TARGET_ABSENT', edit.target, 'not a part of this asset');
|
|
164
175
|
const before = look.visibility;
|
|
165
176
|
delete look.visibility;
|
|
166
177
|
if (edit.shownWhen) {
|
|
167
178
|
const { input, atLeast } = edit.shownWhen;
|
|
168
179
|
const control = model.inputs.find(i => i.id === input && i.role === 'state');
|
|
169
180
|
if (!control)
|
|
170
|
-
throw new
|
|
181
|
+
throw new FigureContractError('TARGET_ABSENT', input, 'not a control (state input) of this asset');
|
|
171
182
|
if (!Number.isFinite(atLeast))
|
|
172
|
-
throw new
|
|
183
|
+
throw new FigureContractError('SCHEMA', 'atLeast', 'a number in the control\'s unit');
|
|
173
184
|
const id = freeId(model, `${edit.target}.shown`);
|
|
174
185
|
const at = freeId(model, `k.${edit.target}.shown.at`);
|
|
175
186
|
model.constants.push({ id: at, unit: control.unit, value: atLeast });
|
|
@@ -178,70 +189,75 @@ export function editV3Part(source, edit) {
|
|
|
178
189
|
}
|
|
179
190
|
if (before)
|
|
180
191
|
dropUnread(asset, before);
|
|
181
|
-
|
|
192
|
+
compileFigureAsset(asset);
|
|
182
193
|
return asset;
|
|
183
194
|
}
|
|
184
195
|
if (edit.kind === 'rename-part') {
|
|
185
196
|
const name = typeof edit.name === 'string' ? edit.name.trim() : '';
|
|
186
197
|
renamePart(asset, edit.target, name);
|
|
187
198
|
if (name !== edit.target) {
|
|
188
|
-
|
|
199
|
+
renameFigurePartInJoints(asset, edit.target, name);
|
|
189
200
|
renamePublicInputs(asset, edit.target, name);
|
|
190
201
|
}
|
|
191
|
-
|
|
202
|
+
compileFigureAsset(asset);
|
|
192
203
|
return asset;
|
|
193
204
|
}
|
|
194
205
|
if (edit.kind === 'move-part') {
|
|
195
206
|
if (!Number.isInteger(edit.to) || edit.to < 0 || edit.to >= asset.appearance.length)
|
|
196
|
-
throw new
|
|
207
|
+
throw new FigureContractError('EDIT_TARGET', edit.target, `to must be a position in the list, 0 to ${asset.appearance.length - 1}`);
|
|
197
208
|
const from = asset.appearance.indexOf(look);
|
|
198
209
|
asset.appearance.splice(from, 1);
|
|
199
210
|
asset.appearance.splice(edit.to, 0, look);
|
|
200
|
-
|
|
211
|
+
compileFigureAsset(asset);
|
|
201
212
|
return asset;
|
|
202
213
|
}
|
|
203
214
|
if (edit.kind === 'set-material') {
|
|
204
215
|
for (const [token, colour] of Object.entries(edit.palette ?? {})) {
|
|
205
216
|
if (asset.palette[token] !== undefined && asset.palette[token] !== colour)
|
|
206
|
-
throw new
|
|
217
|
+
throw new FigureContractError('PALETTE', token, 'already has another colour; changing it would repaint every part that uses it');
|
|
207
218
|
asset.palette[token] = colour;
|
|
208
219
|
}
|
|
209
220
|
look.material = structuredClone(edit.material);
|
|
210
221
|
}
|
|
211
222
|
else if (edit.kind === 'set-segments') {
|
|
212
223
|
if (!SEGMENT_PRESETS.includes(edit.segments))
|
|
213
|
-
throw new
|
|
224
|
+
throw new FigureContractError('QUALITY', edit.target, `segments must be one of ${SEGMENT_PRESETS.join(', ')}`);
|
|
214
225
|
const place = model.nodes.find(n => n.id === edit.target);
|
|
215
226
|
const shape = place && model.nodes.find(n => Object.values(n.outputs).includes(place.args[0]));
|
|
216
227
|
if (!shape || !['cylinder-shape@1', 'cylinder-shape@2', 'sphere-shape@1', 'frustum-shape@1'].includes(shape.op))
|
|
217
|
-
throw new
|
|
228
|
+
throw new FigureContractError('QUALITY', edit.target, 'segments apply to a round body only');
|
|
218
229
|
look.segments = edit.segments;
|
|
219
230
|
}
|
|
220
231
|
else if (edit.kind === 'remove-part') {
|
|
221
|
-
return
|
|
232
|
+
return removeThePart(source, edit).asset;
|
|
222
233
|
}
|
|
223
234
|
else
|
|
224
|
-
throw new
|
|
235
|
+
throw new FigureContractError('EDIT_KIND', 'part', 'unsupported operation');
|
|
225
236
|
keepPublicInputs(asset);
|
|
226
|
-
|
|
237
|
+
compileFigureAsset(asset);
|
|
227
238
|
return asset;
|
|
228
239
|
}
|
|
229
240
|
/**
|
|
230
241
|
* Takes a part away, and says what else that changed (`RemovalNotice`): the parts let go, the values fixed, the
|
|
231
|
-
* controls made, the mounting face given up. `
|
|
242
|
+
* controls made, the mounting face given up. `editFigurePart` is this without the notice.
|
|
232
243
|
*/
|
|
233
|
-
export function removePart(source, edit) {
|
|
234
|
-
|
|
244
|
+
export function removePart(source, edit, consent) {
|
|
245
|
+
const removed = removeThePart(source, edit);
|
|
246
|
+
return { ...removed, asset: settleFigureClips(upgradeFigurePlacement(source), removed.asset, consent) };
|
|
247
|
+
}
|
|
248
|
+
function removeThePart(source, edit) {
|
|
249
|
+
source = upgradeFigurePlacement(source);
|
|
250
|
+
compileFigureAsset(source);
|
|
235
251
|
const asset = structuredClone(source), model = asset.document.model;
|
|
236
252
|
if (!asset.appearance.some(a => a.target === edit.target))
|
|
237
|
-
throw new
|
|
253
|
+
throw new FigureContractError('TARGET_ABSENT', 'part', edit.target);
|
|
238
254
|
/*
|
|
239
255
|
A part is a placement, a row's part (drawn through its row), or a part hanging in a row (drawn on every copy).
|
|
240
256
|
Each goes: a row with its copies, a part in a row from every copy (user, 2026-09-27).
|
|
241
257
|
*/
|
|
242
258
|
const was = model.nodes.find(n => n.id === edit.target);
|
|
243
259
|
if (!was || (was.op !== 'place@1' && was.op !== 'member@1'))
|
|
244
|
-
throw new
|
|
260
|
+
throw new FigureContractError('EDIT_TARGET', edit.target, 'not a part of this figure');
|
|
245
261
|
/*
|
|
246
262
|
「지우고 공간 다시 맞추기」: the declaration stays, whole, while the part goes -- the mounting plane's side is read
|
|
247
263
|
from it, and a wall lamp emptied of it was fastened to a floor (2026-09-27) -- and is declared again after. A
|
|
@@ -254,12 +270,12 @@ export function removePart(source, edit) {
|
|
|
254
270
|
: value && typeof value === 'object'
|
|
255
271
|
? Object.values(value).flatMap(references)
|
|
256
272
|
: [];
|
|
257
|
-
const room = edit.refitRoom && asset.occupancy?.bounds ? {
|
|
273
|
+
const room = edit.refitRoom && asset.occupancy?.bounds ? {} : null;
|
|
258
274
|
const mine = (ref) => ref === edit.target || ref.startsWith(`${edit.target}.`);
|
|
259
275
|
const contactLetGo = !!(room && asset.occupancy?.contact && references(asset.occupancy.contact).some(mine));
|
|
260
276
|
if (contactLetGo)
|
|
261
277
|
delete asset.occupancy.contact;
|
|
262
|
-
const notice =
|
|
278
|
+
const notice = releaseFigurePartJoints(asset, edit.target, { spaceFittedAgain: !!room });
|
|
263
279
|
if (room && contactLetGo)
|
|
264
280
|
notice.mountingFace = true;
|
|
265
281
|
const part = model.nodes.find(n => n.id === edit.target);
|
|
@@ -277,7 +293,7 @@ export function removePart(source, edit) {
|
|
|
277
293
|
const bound = new Set(references(asset.document.capabilities));
|
|
278
294
|
if (model.nodes.some(n => !goingIds.has(n.id) && n.args.some(ref => outputs.has(ref))) ||
|
|
279
295
|
[...outputs].some(ref => bound.has(ref))) {
|
|
280
|
-
throw new
|
|
296
|
+
throw new FigureContractError('PART_REFERENCED', part.id, 'another graph node or capability references this placement');
|
|
281
297
|
}
|
|
282
298
|
model.nodes = model.nodes.filter(n => !goingIds.has(n.id));
|
|
283
299
|
asset.appearance = asset.appearance.filter(a => a.target !== part.id);
|
|
@@ -325,15 +341,15 @@ export function removePart(source, edit) {
|
|
|
325
341
|
sweepNewlyUnread(source, asset);
|
|
326
342
|
keepPublicInputs(asset);
|
|
327
343
|
if (room) {
|
|
328
|
-
|
|
329
|
-
const fitted =
|
|
344
|
+
compileFigureAsset(asset);
|
|
345
|
+
const fitted = applyFigureAuthoring(asset, { kind: 'declare-occupancy', proposal: proposeFigureOccupancy(asset) });
|
|
330
346
|
sweepNewlyUnread(source, fitted);
|
|
331
347
|
keepPublicInputs(fitted);
|
|
332
|
-
|
|
348
|
+
compileFigureAsset(fitted);
|
|
333
349
|
return { asset: fitted, notice };
|
|
334
350
|
}
|
|
335
351
|
keepPublicInputs(asset);
|
|
336
|
-
|
|
352
|
+
compileFigureAsset(asset);
|
|
337
353
|
return { asset, notice };
|
|
338
354
|
}
|
|
339
355
|
/**
|
|
@@ -415,7 +431,7 @@ function duplicatePart(asset, target) {
|
|
|
415
431
|
const model = asset.document.model;
|
|
416
432
|
const placement = model.nodes.find(n => n.id === target);
|
|
417
433
|
if (!placement || (placement.op !== 'place@1' && placement.op !== 'member@1'))
|
|
418
|
-
throw new
|
|
434
|
+
throw new FigureContractError('EDIT_TARGET', target, 'not a part of this figure');
|
|
419
435
|
/* A row written in the graph is copied with its part; a row made by fastening is made again from the copied record. */
|
|
420
436
|
const fastened = (asset.joints ?? []).some(j => j.body1.part === target);
|
|
421
437
|
const row = fastened ? [] : graphRowOfPart(model, placement);
|
|
@@ -473,19 +489,19 @@ function renamePart(asset, target, name) {
|
|
|
473
489
|
const placement = model.nodes.find(n => n.id === target);
|
|
474
490
|
const rowTemplate = placement?.op === 'member@1' && model.nodes.some(n => n.id === `${target}.repeat`);
|
|
475
491
|
if (!placement || (placement.op !== 'place@1' && !rowTemplate))
|
|
476
|
-
throw new
|
|
492
|
+
throw new FigureContractError('EDIT_TARGET', target, 'rename an explicit placement');
|
|
477
493
|
if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name))
|
|
478
|
-
throw new
|
|
494
|
+
throw new FigureContractError('PART_ID', target, 'a part name starts with a letter and uses letters, digits, - and _');
|
|
479
495
|
if (name === target)
|
|
480
496
|
return;
|
|
481
497
|
const within = (id, root) => id === root || id.startsWith(`${root}.`);
|
|
482
498
|
const ids = [...model.nodes.map(n => n.id), ...model.inputs.map(i => i.id), ...model.constants.map(c => c.id), ...model.nodes.flatMap(n => Object.values(n.outputs))];
|
|
483
499
|
if (ids.some(id => within(id, name)))
|
|
484
|
-
throw new
|
|
500
|
+
throw new FigureContractError('PART_ID', name, 'already used in this figure');
|
|
485
501
|
/* Another placement named inside this part's namespace (`body.lid`) would be swept along with it. */
|
|
486
502
|
const nested = model.nodes.find(n => n.op === 'place@1' && n.id !== target && n.id.startsWith(`${target}.`));
|
|
487
503
|
if (nested)
|
|
488
|
-
throw new
|
|
504
|
+
throw new FigureContractError('PART_ID', target, `${nested.id} is named under it; rename that part first`);
|
|
489
505
|
const rename = (id) => (id === target ? name : id.startsWith(`${target}.`) ? name + id.slice(target.length) : id);
|
|
490
506
|
const values = (value) => typeof value === 'string'
|
|
491
507
|
? rename(value)
|
|
@@ -543,4 +559,4 @@ function dropUnread(asset, value) {
|
|
|
543
559
|
queue.push(arg);
|
|
544
560
|
}
|
|
545
561
|
}
|
|
546
|
-
//# sourceMappingURL=
|
|
562
|
+
//# sourceMappingURL=part-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"part-edit.js","sourceRoot":"","sources":["../src/part-edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An AI proposal for a figure: a list of the authoring commands a person gives in the modeller, applied in order.
|
|
3
|
+
*
|
|
4
|
+
* The model does not write an asset. It writes the steps -- add a part, fasten it, let it follow a size, move it on a
|
|
5
|
+
* joint -- and the kernel applies them exactly as it applies the modeller's buttons (r3 §3: the UI and the AI change
|
|
6
|
+
* the inputs of the same relations). A step the kernel refuses is refused with the kernel's own code and sentence, so
|
|
7
|
+
* the proposer can say it back to the model and ask again; a proposal is never half applied (ADR-0094).
|
|
8
|
+
*
|
|
9
|
+
* The words the model may use are the ones below, made from the kernel's own constants and checked against its
|
|
10
|
+
* command types when this file compiles: a command the kernel gains and the grammar does not name is a type error,
|
|
11
|
+
* not a prompt that quietly speaks an older language.
|
|
12
|
+
*/
|
|
13
|
+
import { type FigureClipConsent } from './clip-keeping.ts';
|
|
14
|
+
import { type FigurePrimitiveCreation } from './create.ts';
|
|
15
|
+
import { type FigureAuthoringAction } from './authoring-actions.ts';
|
|
16
|
+
import { type FigurePartEdit } from './part-edit.ts';
|
|
17
|
+
import { type FigureAsset, type FigurePlacement } from './asset-types.ts';
|
|
18
|
+
/** A part, new. Its place is where it is fastened; `position` is only for a part left unfastened. */
|
|
19
|
+
export interface FigureProposalAddPart {
|
|
20
|
+
kind: 'add-part';
|
|
21
|
+
part: Omit<FigurePrimitiveCreation, 'position'> & {
|
|
22
|
+
position?: FigurePrimitiveCreation['position'];
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** The room the figure takes up, fitted to its parts as they are -- the modeller's 「부품에 맞추기」. */
|
|
26
|
+
export interface FigureProposalFitRoom {
|
|
27
|
+
kind: 'fit-room';
|
|
28
|
+
placement: FigurePlacement;
|
|
29
|
+
}
|
|
30
|
+
export type FigureProposalStep = FigureProposalAddPart | FigureProposalFitRoom | FigureAuthoringAction | FigurePartEdit;
|
|
31
|
+
declare const PART_EDIT_KINDS: readonly ["set-material", "set-segments", "remove-part", "set-capabilities", "set-state-input", "set-state-defaults", "set-driver", "remove-driver", "set-clip", "duplicate-part", "move-part", "rename-part", "set-visibility"];
|
|
32
|
+
type Exhaustive<T extends never> = T;
|
|
33
|
+
export type _PartEditKindsComplete = Exhaustive<Exclude<FigurePartEdit['kind'], (typeof PART_EDIT_KINDS)[number]>>;
|
|
34
|
+
/**
|
|
35
|
+
* The steps in order, on a copy of the asset. The first one the kernel refuses stops the proposal, with the step's
|
|
36
|
+
* place in the list and the kernel's code and sentence; nothing is kept from it.
|
|
37
|
+
*/
|
|
38
|
+
export declare function applyFigureProposal(source: FigureAsset, steps: readonly FigureProposalStep[], consent?: FigureClipConsent): FigureAsset;
|
|
39
|
+
/** One step the model may write: its kind, its shape, and what it means, in the author's terms. */
|
|
40
|
+
export interface FigureProposalWord {
|
|
41
|
+
kind: string;
|
|
42
|
+
shape: string;
|
|
43
|
+
means: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The words, in the order a figure is usually made. Each shape is the command's own, written short; the means say
|
|
47
|
+
* the relation, not the graph. Kept complete against the kernel's command types (`_GrammarComplete` below).
|
|
48
|
+
*/
|
|
49
|
+
export declare const FIGURE_PROPOSAL_GRAMMAR: readonly FigureProposalWord[];
|
|
50
|
+
/** Taken only through a word of its own (`fit-room` asks the kernel for the proposal it confirms). */
|
|
51
|
+
type LeftOut = 'declare-occupancy';
|
|
52
|
+
export type _GrammarComplete = Exhaustive<Exclude<FigureAuthoringAction['kind'] | FigurePartEdit['kind'], LeftOut | (typeof FIGURE_PROPOSAL_KINDS)[number]>>;
|
|
53
|
+
export declare const FIGURE_PROPOSAL_KINDS: readonly ["add-part", "set-placement", "attach", "set-joint", "declare-instance-size", "link-dimension", "follow-size", "unlink-dimension", "scale-uniformly", "follow-size-in-proportion", "scale-position", "fix-position", "nudge-part", "detach", "remove-joint", "make-repeat", "set-repeat", "add-design-input", "set-input-range", "publish-input", "unpublish-input", "remove-repeat", "add-binding", "remove-binding", "fit-room", "set-mounting-face", "clear-mounting-face", "set-detail-level", "rename", "set-material", "set-segments", "rename-part", "set-visibility", "remove-part", "duplicate-part", "move-part", "set-capabilities", "set-state-input", "set-state-defaults", "set-driver", "remove-driver", "set-clip"];
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=proposal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGnF,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAkF,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnJ,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG5F,qGAAqG;AACrG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;KAAE,CAAA;CACrG;AACD,iGAAiG;AACjG,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,eAAe,CAAA;CAC3B;AACD,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,cAAc,CAAA;AAGvH,QAAA,MAAM,eAAe,kOAciC,CAAA;AACtD,KAAK,UAAU,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAA;AACpC,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAElH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,kBAAkB,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,WAAW,CA2BvI;AAED,mGAAmG;AACnG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAQD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,kBAAkB,EAiFhE,CAAA;AAMD,sGAAsG;AACtG,KAAK,OAAO,GAAG,mBAAmB,CAAA;AAClC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5J,eAAO,MAAM,qBAAqB,8sBA2CxB,CAAA"}
|