@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.
Files changed (296) hide show
  1. package/CHANGELOG.md +12 -12
  2. package/README.md +25 -25
  3. package/dist/{v3-asset-types.d.ts → asset-types.d.ts} +67 -67
  4. package/dist/asset-types.d.ts.map +1 -0
  5. package/dist/asset-types.js +2 -0
  6. package/dist/asset-types.js.map +1 -0
  7. package/dist/asset.d.ts +8 -0
  8. package/dist/asset.d.ts.map +1 -0
  9. package/dist/{v3-asset.js → asset.js} +23 -23
  10. package/dist/asset.js.map +1 -0
  11. package/dist/{v3-authoring-actions.d.ts → authoring-actions.d.ts} +66 -66
  12. package/dist/authoring-actions.d.ts.map +1 -0
  13. package/dist/{v3-authoring-actions.js → authoring-actions.js} +107 -78
  14. package/dist/authoring-actions.js.map +1 -0
  15. package/dist/{v3-authoring-session.d.ts → authoring-session.d.ts} +21 -21
  16. package/dist/authoring-session.d.ts.map +1 -0
  17. package/dist/{v3-authoring-session.js → authoring-session.js} +4 -4
  18. package/dist/authoring-session.js.map +1 -0
  19. package/dist/capabilities.d.ts +3 -0
  20. package/dist/capabilities.d.ts.map +1 -0
  21. package/dist/{v3-capabilities.js → capabilities.js} +8 -8
  22. package/dist/capabilities.js.map +1 -0
  23. package/dist/contract.d.ts +7 -0
  24. package/dist/contract.d.ts.map +1 -0
  25. package/dist/contract.js +12 -0
  26. package/dist/contract.js.map +1 -0
  27. package/dist/{v3-cost.d.ts → cost.d.ts} +5 -5
  28. package/dist/cost.d.ts.map +1 -0
  29. package/dist/{v3-cost.js → cost.js} +11 -11
  30. package/dist/cost.js.map +1 -0
  31. package/dist/{v3-create.d.ts → create.d.ts} +8 -8
  32. package/dist/{v3-create.d.ts.map → create.d.ts.map} +1 -1
  33. package/dist/{v3-create.js → create.js} +26 -26
  34. package/dist/create.js.map +1 -0
  35. package/dist/document.d.ts +5 -0
  36. package/dist/document.d.ts.map +1 -0
  37. package/dist/document.js +31 -0
  38. package/dist/document.js.map +1 -0
  39. package/dist/{v3-driver.d.ts → driver.d.ts} +10 -10
  40. package/dist/driver.d.ts.map +1 -0
  41. package/dist/{v3-driver.js → driver.js} +10 -10
  42. package/dist/driver.js.map +1 -0
  43. package/dist/{v3-editor-workspace.d.ts → editor-workspace.d.ts} +73 -73
  44. package/dist/editor-workspace.d.ts.map +1 -0
  45. package/dist/{v3-editor-workspace.js → editor-workspace.js} +29 -29
  46. package/dist/editor-workspace.js.map +1 -0
  47. package/dist/{v3-examples.d.ts → examples.d.ts} +5 -5
  48. package/dist/examples.d.ts.map +1 -0
  49. package/dist/{v3-examples.js → examples.js} +11 -11
  50. package/dist/examples.js.map +1 -0
  51. package/dist/{v3-follow.d.ts → follow.d.ts} +5 -5
  52. package/dist/follow.d.ts.map +1 -0
  53. package/dist/{v3-follow.js → follow.js} +2 -2
  54. package/dist/follow.js.map +1 -0
  55. package/dist/{v3-gate.d.ts → gate.d.ts} +28 -28
  56. package/dist/gate.d.ts.map +1 -0
  57. package/dist/{v3-gate.js → gate.js} +42 -42
  58. package/dist/gate.js.map +1 -0
  59. package/dist/{v3-graph-types.d.ts → graph-types.d.ts} +33 -33
  60. package/dist/graph-types.d.ts.map +1 -0
  61. package/dist/graph-types.js +2 -0
  62. package/dist/graph-types.js.map +1 -0
  63. package/dist/{v3-graph.d.ts → graph.d.ts} +14 -14
  64. package/dist/graph.d.ts.map +1 -0
  65. package/dist/{v3-graph.js → graph.js} +16 -16
  66. package/dist/graph.js.map +1 -0
  67. package/dist/index.d.ts +33 -33
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +33 -33
  70. package/dist/index.js.map +1 -1
  71. package/dist/{v3-instance-size.d.ts → instance-size.d.ts} +14 -14
  72. package/dist/instance-size.d.ts.map +1 -0
  73. package/dist/{v3-instance-size.js → instance-size.js} +13 -13
  74. package/dist/instance-size.js.map +1 -0
  75. package/dist/json.d.ts +12 -0
  76. package/dist/json.d.ts.map +1 -0
  77. package/dist/{v3-json.js → json.js} +13 -13
  78. package/dist/json.js.map +1 -0
  79. package/dist/kernel-version.d.ts +8 -0
  80. package/dist/kernel-version.d.ts.map +1 -0
  81. package/dist/{v3-kernel-version.js → kernel-version.js} +4 -4
  82. package/dist/kernel-version.js.map +1 -0
  83. package/dist/{v3-part-edit.d.ts → part-edit.d.ts} +10 -10
  84. package/dist/part-edit.d.ts.map +1 -0
  85. package/dist/{v3-part-edit.js → part-edit.js} +65 -65
  86. package/dist/part-edit.js.map +1 -0
  87. package/dist/proposal.d.ts +42 -0
  88. package/dist/proposal.d.ts.map +1 -0
  89. package/dist/{v3-proposal.js → proposal.js} +21 -21
  90. package/dist/proposal.js.map +1 -0
  91. package/dist/{v3-public-inputs.d.ts → public-inputs.d.ts} +4 -4
  92. package/dist/public-inputs.d.ts.map +1 -0
  93. package/dist/{v3-public-inputs.js → public-inputs.js} +3 -3
  94. package/dist/public-inputs.js.map +1 -0
  95. package/dist/recipe-build.d.ts +27 -0
  96. package/dist/recipe-build.d.ts.map +1 -0
  97. package/dist/{v3-recipe-build.js → recipe-build.js} +9 -9
  98. package/dist/recipe-build.js.map +1 -0
  99. package/dist/recipe-from-parts.d.ts +8 -0
  100. package/dist/recipe-from-parts.d.ts.map +1 -0
  101. package/dist/{v3-recipe-from-parts.js → recipe-from-parts.js} +9 -9
  102. package/dist/recipe-from-parts.js.map +1 -0
  103. package/dist/{v3-recipe.d.ts → recipe.d.ts} +25 -25
  104. package/dist/recipe.d.ts.map +1 -0
  105. package/dist/{v3-recipe.js → recipe.js} +30 -30
  106. package/dist/recipe.js.map +1 -0
  107. package/dist/release-contract.d.ts +19 -0
  108. package/dist/release-contract.d.ts.map +1 -0
  109. package/dist/{v3-release-contract.js → release-contract.js} +5 -5
  110. package/dist/release-contract.js.map +1 -0
  111. package/dist/{v3-render-batches.d.ts → render-batches.d.ts} +8 -8
  112. package/dist/render-batches.d.ts.map +1 -0
  113. package/dist/{v3-render-batches.js → render-batches.js} +4 -4
  114. package/dist/render-batches.js.map +1 -0
  115. package/dist/{v3-score.d.ts → score.d.ts} +19 -19
  116. package/dist/score.d.ts.map +1 -0
  117. package/dist/{v3-score.js → score.js} +32 -32
  118. package/dist/score.js.map +1 -0
  119. package/dist/{v3-shape-sampling.d.ts → shape-sampling.d.ts} +4 -4
  120. package/dist/shape-sampling.d.ts.map +1 -0
  121. package/dist/{v3-shape-sampling.js → shape-sampling.js} +3 -3
  122. package/dist/shape-sampling.js.map +1 -0
  123. package/dist/{v3-surface.d.ts → surface.d.ts} +5 -5
  124. package/dist/surface.d.ts.map +1 -0
  125. package/dist/{v3-surface.js → surface.js} +7 -7
  126. package/dist/surface.js.map +1 -0
  127. package/dist/{v3-words.d.ts → words.d.ts} +3 -3
  128. package/dist/words.d.ts.map +1 -0
  129. package/dist/{v3-words.js → words.js} +3 -3
  130. package/dist/words.js.map +1 -0
  131. package/docs/{assembly-constraints-v3.md → assembly-constraints.md} +1 -1
  132. package/docs/{v3-asset-persistence.md → asset-persistence.md} +8 -8
  133. package/docs/{v3-authoring-transactions.md → authoring-transactions.md} +2 -2
  134. package/docs/{v3-capability-bindings.md → capability-bindings.md} +8 -8
  135. package/docs/{v3-common-kernel-experiment.md → common-kernel-experiment.md} +4 -4
  136. package/docs/{v3-core-semantics.md → core-semantics.md} +5 -5
  137. package/docs/{v3-cutover.md → cutover.md} +4 -4
  138. package/docs/{v3-design.md → design.md} +11 -11
  139. package/docs/{v3-document-contract.md → document-contract.md} +9 -9
  140. package/docs/{v3-dryroom-profile-validation.md → dryroom-profile-validation.md} +4 -4
  141. package/docs/{v3-editor-integration.md → editor-integration.md} +6 -6
  142. package/docs/{v3-full-conveyor-validation.md → full-conveyor-validation.md} +4 -4
  143. package/docs/{v3-full-dryroom-validation.md → full-dryroom-validation.md} +4 -4
  144. package/docs/{v3-full-forklift-validation.md → full-forklift-validation.md} +5 -5
  145. package/docs/{v3-full-robot-validation.md → full-robot-validation.md} +4 -4
  146. package/docs/{v3-layout-system.md → layout-system.md} +4 -4
  147. package/docs/{v3-legacy-risk-audit-2026-09-23.md → legacy-risk-audit-2026-09-23.md} +5 -5
  148. package/docs/{v3-minimal-model.md → minimal-model.md} +6 -6
  149. package/docs/{v3-motion-contract.md → motion-contract.md} +3 -3
  150. package/docs/{v3-openusd-review.md → openusd-review.md} +8 -8
  151. package/docs/{v3-operator-contracts.md → operator-contracts.md} +6 -6
  152. package/docs/{v3-payload-collision-validation.md → payload-collision-validation.md} +4 -4
  153. package/docs/{v3-payload-contact-validation.md → payload-contact-validation.md} +5 -5
  154. package/docs/prototypes/README.md +10 -10
  155. package/docs/prototypes/{v3-asset-samples.mjs → asset-samples.mjs} +6 -6
  156. package/docs/prototypes/{v3-asset-store.mjs → asset-store.mjs} +3 -3
  157. package/docs/prototypes/{v3-asset-store.test.mjs → asset-store.test.mjs} +6 -6
  158. package/docs/prototypes/asset.mjs +1 -0
  159. package/docs/prototypes/{v3-asset.schema.json → asset.schema.json} +2 -2
  160. package/docs/prototypes/{v3-asset.test.mjs → asset.test.mjs} +10 -10
  161. package/docs/prototypes/authoring-session.mjs +1 -0
  162. package/docs/prototypes/{v3-authoring-session.test.mjs → authoring-session.test.mjs} +6 -6
  163. package/docs/prototypes/capability-plan.mjs +1 -0
  164. package/docs/prototypes/{v3-capability-plan.test.mjs → capability-plan.test.mjs} +5 -5
  165. package/docs/prototypes/{v3-capability-samples.mjs → capability-samples.mjs} +2 -2
  166. package/docs/prototypes/document.mjs +2 -0
  167. package/docs/prototypes/{v3-document.schema.json → document.schema.json} +1 -1
  168. package/docs/prototypes/{v3-document.test.mjs → document.test.mjs} +7 -7
  169. package/docs/prototypes/{v3-dryroom-mesh.mjs → dryroom-mesh.mjs} +1 -1
  170. package/docs/prototypes/{v3-dryroom-mesh.test.mjs → dryroom-mesh.test.mjs} +1 -1
  171. package/docs/prototypes/{v3-editor-browser.mjs → editor-browser.mjs} +13 -13
  172. package/docs/prototypes/editor-workspace.mjs +1 -0
  173. package/docs/prototypes/{v3-editor-workspace.test.mjs → editor-workspace.test.mjs} +3 -3
  174. package/docs/prototypes/{v3-feature-pattern.test.mjs → feature-pattern.test.mjs} +1 -1
  175. package/docs/prototypes/{v3-full-conveyor.mjs → full-conveyor.mjs} +2 -2
  176. package/docs/prototypes/{v3-full-conveyor.test.mjs → full-conveyor.test.mjs} +3 -3
  177. package/docs/prototypes/{v3-full-dryroom.mjs → full-dryroom.mjs} +2 -2
  178. package/docs/prototypes/{v3-full-dryroom.test.mjs → full-dryroom.test.mjs} +3 -3
  179. package/docs/prototypes/{v3-full-forklift.mjs → full-forklift.mjs} +2 -2
  180. package/docs/prototypes/{v3-full-forklift.test.mjs → full-forklift.test.mjs} +3 -3
  181. package/docs/prototypes/{v3-full-robot.mjs → full-robot.mjs} +2 -2
  182. package/docs/prototypes/{v3-full-robot.test.mjs → full-robot.test.mjs} +4 -4
  183. package/docs/prototypes/{v3-kernel.test.mjs → kernel.test.mjs} +1 -1
  184. package/docs/prototypes/{v3-layout.test.mjs → layout.test.mjs} +1 -1
  185. package/docs/prototypes/{v3-more-samples.test.mjs → more-samples.test.mjs} +2 -2
  186. package/docs/prototypes/{v3-payload-collision.mjs → payload-collision.mjs} +2 -2
  187. package/docs/prototypes/{v3-payload-collision.test.mjs → payload-collision.test.mjs} +3 -3
  188. package/docs/prototypes/{v3-payload-fit.mjs → payload-fit.mjs} +2 -2
  189. package/docs/prototypes/{v3-payload-fit.test.mjs → payload-fit.test.mjs} +4 -4
  190. package/docs/prototypes/render-full-dryroom.mjs +12 -12
  191. package/docs/prototypes/{v3-repeated-binding.mjs → repeated-binding.mjs} +1 -1
  192. package/docs/prototypes/{v3-repeated-binding.test.mjs → repeated-binding.test.mjs} +6 -6
  193. package/docs/prototypes/{v3-runtime-browser.mjs → runtime-browser.mjs} +26 -26
  194. package/docs/prototypes/{v3-samples.test.mjs → samples.test.mjs} +1 -1
  195. package/docs/prototypes/{v3-spatial-plan.test.mjs → spatial-plan.test.mjs} +1 -1
  196. package/docs/prototypes/typed-plan.mjs +3 -0
  197. package/docs/prototypes/{v3-typed-plan.test.mjs → typed-plan.test.mjs} +1 -1
  198. package/docs/prototypes/{v3-typed-repeat.test.mjs → typed-repeat.test.mjs} +2 -2
  199. package/docs/{v3-repeated-binding-validation.md → repeated-binding-validation.md} +4 -4
  200. package/docs/{v3-research-review.md → research-review.md} +2 -2
  201. package/docs/{v3-review-2026-09-22.md → review-2026-09-22.md} +10 -10
  202. package/docs/{v3-runtime-extraction.md → runtime-extraction.md} +16 -16
  203. package/docs/{v3-sample-validation-expanded.md → sample-validation-expanded.md} +5 -5
  204. package/docs/{v3-sample-validation.md → sample-validation.md} +3 -3
  205. package/docs/{v3-shape-dimension-contract.md → shape-dimension-contract.md} +12 -12
  206. package/docs/{v3-shapeassembly-reproduction.md → shapeassembly-reproduction.md} +4 -4
  207. package/docs/{v3-spatial-contracts.md → spatial-contracts.md} +5 -5
  208. package/docs/status.md +12 -0
  209. package/docs/{v3-storage-integration.md → storage-integration.md} +5 -5
  210. package/docs/{v3-typed-repeat-contracts.md → typed-repeat-contracts.md} +3 -3
  211. package/package.json +3 -3
  212. package/dist/v3-asset-types.d.ts.map +0 -1
  213. package/dist/v3-asset-types.js +0 -2
  214. package/dist/v3-asset-types.js.map +0 -1
  215. package/dist/v3-asset.d.ts +0 -8
  216. package/dist/v3-asset.d.ts.map +0 -1
  217. package/dist/v3-asset.js.map +0 -1
  218. package/dist/v3-authoring-actions.d.ts.map +0 -1
  219. package/dist/v3-authoring-actions.js.map +0 -1
  220. package/dist/v3-authoring-session.d.ts.map +0 -1
  221. package/dist/v3-authoring-session.js.map +0 -1
  222. package/dist/v3-capabilities.d.ts +0 -3
  223. package/dist/v3-capabilities.d.ts.map +0 -1
  224. package/dist/v3-capabilities.js.map +0 -1
  225. package/dist/v3-contract.d.ts +0 -7
  226. package/dist/v3-contract.d.ts.map +0 -1
  227. package/dist/v3-contract.js +0 -12
  228. package/dist/v3-contract.js.map +0 -1
  229. package/dist/v3-cost.d.ts.map +0 -1
  230. package/dist/v3-cost.js.map +0 -1
  231. package/dist/v3-create.js.map +0 -1
  232. package/dist/v3-document.d.ts +0 -5
  233. package/dist/v3-document.d.ts.map +0 -1
  234. package/dist/v3-document.js +0 -31
  235. package/dist/v3-document.js.map +0 -1
  236. package/dist/v3-driver.d.ts.map +0 -1
  237. package/dist/v3-driver.js.map +0 -1
  238. package/dist/v3-editor-workspace.d.ts.map +0 -1
  239. package/dist/v3-editor-workspace.js.map +0 -1
  240. package/dist/v3-examples.d.ts.map +0 -1
  241. package/dist/v3-examples.js.map +0 -1
  242. package/dist/v3-follow.d.ts.map +0 -1
  243. package/dist/v3-follow.js.map +0 -1
  244. package/dist/v3-gate.d.ts.map +0 -1
  245. package/dist/v3-gate.js.map +0 -1
  246. package/dist/v3-graph-types.d.ts.map +0 -1
  247. package/dist/v3-graph-types.js +0 -2
  248. package/dist/v3-graph-types.js.map +0 -1
  249. package/dist/v3-graph.d.ts.map +0 -1
  250. package/dist/v3-graph.js.map +0 -1
  251. package/dist/v3-instance-size.d.ts.map +0 -1
  252. package/dist/v3-instance-size.js.map +0 -1
  253. package/dist/v3-json.d.ts +0 -12
  254. package/dist/v3-json.d.ts.map +0 -1
  255. package/dist/v3-json.js.map +0 -1
  256. package/dist/v3-kernel-version.d.ts +0 -8
  257. package/dist/v3-kernel-version.d.ts.map +0 -1
  258. package/dist/v3-kernel-version.js.map +0 -1
  259. package/dist/v3-part-edit.d.ts.map +0 -1
  260. package/dist/v3-part-edit.js.map +0 -1
  261. package/dist/v3-proposal.d.ts +0 -42
  262. package/dist/v3-proposal.d.ts.map +0 -1
  263. package/dist/v3-proposal.js.map +0 -1
  264. package/dist/v3-public-inputs.d.ts.map +0 -1
  265. package/dist/v3-public-inputs.js.map +0 -1
  266. package/dist/v3-recipe-build.d.ts +0 -27
  267. package/dist/v3-recipe-build.d.ts.map +0 -1
  268. package/dist/v3-recipe-build.js.map +0 -1
  269. package/dist/v3-recipe-from-parts.d.ts +0 -8
  270. package/dist/v3-recipe-from-parts.d.ts.map +0 -1
  271. package/dist/v3-recipe-from-parts.js.map +0 -1
  272. package/dist/v3-recipe.d.ts.map +0 -1
  273. package/dist/v3-recipe.js.map +0 -1
  274. package/dist/v3-release-contract.d.ts +0 -19
  275. package/dist/v3-release-contract.d.ts.map +0 -1
  276. package/dist/v3-release-contract.js.map +0 -1
  277. package/dist/v3-render-batches.d.ts.map +0 -1
  278. package/dist/v3-render-batches.js.map +0 -1
  279. package/dist/v3-score.d.ts.map +0 -1
  280. package/dist/v3-score.js.map +0 -1
  281. package/dist/v3-shape-sampling.d.ts.map +0 -1
  282. package/dist/v3-shape-sampling.js.map +0 -1
  283. package/dist/v3-surface.d.ts.map +0 -1
  284. package/dist/v3-surface.js.map +0 -1
  285. package/dist/v3-words.d.ts.map +0 -1
  286. package/dist/v3-words.js.map +0 -1
  287. package/docs/prototypes/v3-asset.mjs +0 -1
  288. package/docs/prototypes/v3-authoring-session.mjs +0 -1
  289. package/docs/prototypes/v3-capability-plan.mjs +0 -1
  290. package/docs/prototypes/v3-document.mjs +0 -2
  291. package/docs/prototypes/v3-editor-workspace.mjs +0 -1
  292. package/docs/prototypes/v3-typed-plan.mjs +0 -3
  293. package/docs/v3-status.md +0 -50
  294. /package/docs/prototypes/{v3-kernel.mjs → kernel.mjs} +0 -0
  295. /package/docs/prototypes/{v3-linear-comparison.py → linear-comparison.py} +0 -0
  296. /package/docs/prototypes/{v3-semantics.test.mjs → semantics.test.mjs} +0 -0
@@ -1,45 +1,45 @@
1
- import { keepPublicInputs, renamePublicInputs } from "./v3-public-inputs.js";
2
- import { compileV3Asset } from "./v3-asset.js";
3
- import { V3ContractError } from "./v3-contract.js";
4
- import { applyV3Authoring, copyV3PartJoint, dropDeadDanglers, proposeV3Occupancy, releaseV3PartJoints, renameV3PartInJoints } from "./v3-authoring-actions.js";
5
- import { SEGMENT_PRESETS, FIGURE_CAPABILITIES } from "./v3-words.js";
1
+ import { keepPublicInputs, renamePublicInputs } from "./public-inputs.js";
2
+ import { compileFigureAsset } from "./asset.js";
3
+ import { FigureContractError } from "./contract.js";
4
+ import { applyFigureAuthoring, copyFigurePartJoint, dropDeadDanglers, proposeFigureOccupancy, releaseFigurePartJoints, renameFigurePartInJoints } from "./authoring-actions.js";
5
+ import { SEGMENT_PRESETS, FIGURE_CAPABILITIES } from "./words.js";
6
6
  /** Pure, validated structural edit. References are never silently retargeted or cascaded. */
7
- export function editV3Part(source, edit) {
8
- compileV3Asset(source);
7
+ export function editFigurePart(source, edit) {
8
+ compileFigureAsset(source);
9
9
  const asset = structuredClone(source), model = asset.document.model;
10
10
  if (edit.kind === 'set-capabilities') {
11
11
  if (!Array.isArray(edit.names) || edit.names.some(n => typeof n !== 'string'))
12
- throw new V3ContractError('CAPABILITY_NAME', 'names', 'a list of names');
12
+ throw new FigureContractError('CAPABILITY_NAME', 'names', 'a list of names');
13
13
  const unknown = edit.names.filter(n => !FIGURE_CAPABILITIES.includes(n));
14
14
  if (unknown.length)
15
- throw new V3ContractError('CAPABILITY_NAME', 'names', `${unknown.join(', ')} is not one of ${FIGURE_CAPABILITIES.join(', ')}`);
15
+ throw new FigureContractError('CAPABILITY_NAME', 'names', `${unknown.join(', ')} is not one of ${FIGURE_CAPABILITIES.join(', ')}`);
16
16
  if (new Set(edit.names).size !== edit.names.length)
17
- throw new V3ContractError('CAPABILITY_NAME', 'names', 'duplicate capability name');
17
+ throw new FigureContractError('CAPABILITY_NAME', 'names', 'duplicate capability name');
18
18
  if (edit.names.length)
19
19
  asset.document.capabilities.names = [...edit.names];
20
20
  else
21
21
  delete asset.document.capabilities.names;
22
- compileV3Asset(asset);
22
+ compileFigureAsset(asset);
23
23
  return asset;
24
24
  }
25
25
  if (edit.kind === 'set-state-input') {
26
26
  const input = model.inputs.find(i => i.id === edit.input && i.role === 'state');
27
27
  if (!input)
28
- throw new V3ContractError('TARGET_ABSENT', edit.input, 'not a state input of this asset');
28
+ throw new FigureContractError('TARGET_ABSENT', edit.input, 'not a state input of this asset');
29
29
  const policy = {};
30
30
  if (edit.label !== undefined && edit.label.trim())
31
31
  policy.label = edit.label.trim();
32
32
  if (edit.sweep !== undefined) {
33
33
  if (!(Number.isFinite(edit.sweep) && edit.sweep >= 0))
34
- throw new V3ContractError('STATE_INPUT', edit.input, 'sweep is seconds, zero or more');
34
+ throw new FigureContractError('STATE_INPUT', edit.input, 'sweep is seconds, zero or more');
35
35
  if (edit.sweep > 0)
36
36
  policy.sweep = edit.sweep;
37
37
  }
38
38
  const min = edit.min ?? input.min, max = edit.max ?? input.max;
39
39
  if (!(Number.isFinite(min) && Number.isFinite(max) && min < max))
40
- throw new V3ContractError('STATE_INPUT', edit.input, 'the range runs from a smaller number to a larger one');
40
+ throw new FigureContractError('STATE_INPUT', edit.input, 'the range runs from a smaller number to a larger one');
41
41
  if (edit.start !== undefined && !(Number.isFinite(edit.start) && edit.start >= min && edit.start <= max))
42
- throw new V3ContractError('STATE_INPUT', edit.input, `it starts inside its range, ${min} to ${max}`);
42
+ throw new FigureContractError('STATE_INPUT', edit.input, `it starts inside its range, ${min} to ${max}`);
43
43
  /*
44
44
  A joint's value: its range is the joint record's limit, and the two are one (ADR-0093) -- changing only the
45
45
  input would leave the record saying otherwise, and the asset would be refused the next time it is read.
@@ -49,9 +49,9 @@ export function editV3Part(source, edit) {
49
49
  const ranged = edit.min !== undefined || edit.max !== undefined;
50
50
  const endless = joint.type === 'revolute' && joint.lowerLimit === undefined && joint.upperLimit === undefined;
51
51
  if (endless && ranged)
52
- throw new V3ContractError('STATE_INPUT', edit.input, 'a joint that turns without end has no range; its value is a phase, -180..180');
52
+ throw new FigureContractError('STATE_INPUT', edit.input, 'a joint that turns without end has no range; its value is a phase, -180..180');
53
53
  if (ranged && !(min <= 0 && 0 <= max))
54
- throw new V3ContractError('STATE_INPUT', edit.input, 'the rest pose is the joint at 0, so its range holds 0');
54
+ throw new FigureContractError('STATE_INPUT', edit.input, 'the rest pose is the joint at 0, so its range holds 0');
55
55
  if (!endless) {
56
56
  joint.lowerLimit = min;
57
57
  joint.upperLimit = max;
@@ -73,26 +73,26 @@ export function editV3Part(source, edit) {
73
73
  delete asset.stateInputs[edit.input];
74
74
  if (!Object.keys(asset.stateInputs).length)
75
75
  delete asset.stateInputs;
76
- compileV3Asset(asset);
76
+ compileFigureAsset(asset);
77
77
  return asset;
78
78
  }
79
79
  if (edit.kind === 'set-driver') {
80
80
  const input = model.inputs.find(i => i.id === edit.state && i.role === 'state');
81
81
  if (!input)
82
- throw new V3ContractError('TARGET_ABSENT', String(edit.state), 'not a state input of this asset');
82
+ throw new FigureContractError('TARGET_ABSENT', String(edit.state), 'not a state input of this asset');
83
83
  const clip = typeof edit.clip === 'string' ? edit.clip.trim() : '';
84
84
  if (!clip)
85
- throw new V3ContractError('DRIVER', edit.state, 'a clip is named');
85
+ throw new FigureContractError('DRIVER', edit.state, 'a clip is named');
86
86
  const others = (asset.drivers ?? []).filter(d => d.state !== edit.state);
87
87
  const previous = (asset.drivers ?? []).find(d => d.state === edit.state);
88
88
  /* 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
89
  const shared = others.find(d => d.clip === clip)?.time.duration ?? (previous?.clip === clip ? previous.time.duration : undefined);
90
90
  const duration = edit.duration ?? shared;
91
91
  if (!(typeof duration === 'number' && Number.isFinite(duration) && duration > 0))
92
- throw new V3ContractError('DRIVER_TIME', edit.state, 'a new clip runs for a positive number of seconds');
92
+ throw new FigureContractError('DRIVER_TIME', edit.state, 'a new clip runs for a positive number of seconds');
93
93
  const keys = (Array.isArray(edit.keys) ? edit.keys : []).map(k => ({ at: k.seconds / duration, value: k.value }));
94
94
  if (keys.some(k => !(Number.isFinite(k.at) && k.at >= 0 && k.at <= 1)))
95
- throw new V3ContractError('DRIVER_KEYS', edit.state, `every key lies within the clip, 0 to ${duration} s`);
95
+ throw new FigureContractError('DRIVER_KEYS', edit.state, `every key lies within the clip, 0 to ${duration} s`);
96
96
  keys.sort((a, b) => a.at - b.at);
97
97
  asset.drivers = [
98
98
  ...others.map(d => (d.clip === clip ? { ...d, time: { unit: 's', duration } } : d)),
@@ -107,32 +107,32 @@ export function editV3Part(source, edit) {
107
107
  accumulates: edit.accumulates ?? previous?.accumulates ?? false
108
108
  }
109
109
  ];
110
- compileV3Asset(asset);
110
+ compileFigureAsset(asset);
111
111
  return asset;
112
112
  }
113
113
  if (edit.kind === 'remove-driver') {
114
114
  if (!(asset.drivers ?? []).some(d => d.state === edit.state))
115
- throw new V3ContractError('TARGET_ABSENT', String(edit.state), 'this control is not played');
115
+ throw new FigureContractError('TARGET_ABSENT', String(edit.state), 'this control is not played');
116
116
  asset.drivers = asset.drivers.filter(d => d.state !== edit.state);
117
117
  if (!asset.drivers.length)
118
118
  delete asset.drivers;
119
- compileV3Asset(asset);
119
+ compileFigureAsset(asset);
120
120
  return asset;
121
121
  }
122
122
  if (edit.kind === 'set-clip') {
123
123
  const drivers = (asset.drivers ?? []).filter(d => d.clip === edit.clip);
124
124
  if (!drivers.length)
125
- throw new V3ContractError('TARGET_ABSENT', String(edit.clip), 'no clip by this name');
125
+ throw new FigureContractError('TARGET_ABSENT', String(edit.clip), 'no clip by this name');
126
126
  const name = edit.name === undefined ? edit.clip : edit.name.trim();
127
127
  if (!name)
128
- throw new V3ContractError('DRIVER', edit.clip, 'a clip is named');
128
+ throw new FigureContractError('DRIVER', edit.clip, 'a clip is named');
129
129
  if (name !== edit.clip && (asset.drivers ?? []).some(d => d.clip === name))
130
- throw new V3ContractError('DRIVER', name, 'another clip already has this name; clips are not merged in passing');
130
+ throw new FigureContractError('DRIVER', name, 'another clip already has this name; clips are not merged in passing');
131
131
  if (edit.duration !== undefined && !(Number.isFinite(edit.duration) && edit.duration > 0))
132
- throw new V3ContractError('DRIVER_TIME', edit.clip, 'a clip runs for a positive number of seconds');
132
+ throw new FigureContractError('DRIVER_TIME', edit.clip, 'a clip runs for a positive number of seconds');
133
133
  /* Keys are fractions of the duration: a longer clip plays the same keys more slowly. */
134
134
  asset.drivers = asset.drivers.map(d => (d.clip === edit.clip ? { ...d, clip: name, time: { unit: 's', duration: edit.duration ?? d.time.duration } } : d));
135
- compileV3Asset(asset);
135
+ compileFigureAsset(asset);
136
136
  return asset;
137
137
  }
138
138
  if (edit.kind === 'set-state-defaults') {
@@ -140,36 +140,36 @@ export function editV3Part(source, edit) {
140
140
  for (const [id, value] of Object.entries(values)) {
141
141
  const input = model.inputs.find(i => i.id === id && i.role === 'state');
142
142
  if (!input)
143
- throw new V3ContractError('TARGET_ABSENT', id, 'not a state input of this asset');
143
+ throw new FigureContractError('TARGET_ABSENT', id, 'not a state input of this asset');
144
144
  if (!(Number.isFinite(value) && value >= input.min && value <= input.max))
145
- throw new V3ContractError('STATE_INPUT', id, `it starts inside its range, ${input.min} to ${input.max}`);
145
+ throw new FigureContractError('STATE_INPUT', id, `it starts inside its range, ${input.min} to ${input.max}`);
146
146
  asset.stateDefaults[id] = value;
147
147
  }
148
- compileV3Asset(asset);
148
+ compileFigureAsset(asset);
149
149
  return asset;
150
150
  }
151
151
  const look = asset.appearance.find(a => a.target === edit.target);
152
152
  if (!look)
153
- throw new V3ContractError('TARGET_ABSENT', 'part', edit.target);
153
+ throw new FigureContractError('TARGET_ABSENT', 'part', edit.target);
154
154
  if (edit.kind === 'duplicate-part') {
155
- copyV3PartJoint(asset, edit.target, duplicatePart(asset, edit.target));
155
+ copyFigurePartJoint(asset, edit.target, duplicatePart(asset, edit.target));
156
156
  sweepNewlyUnread(source, asset);
157
- compileV3Asset(asset);
157
+ compileFigureAsset(asset);
158
158
  return asset;
159
159
  }
160
160
  if (edit.kind === 'set-visibility') {
161
161
  const look = asset.appearance.find(a => a.target === edit.target);
162
162
  if (!look)
163
- throw new V3ContractError('TARGET_ABSENT', edit.target, 'not a part of this asset');
163
+ throw new FigureContractError('TARGET_ABSENT', edit.target, 'not a part of this asset');
164
164
  const before = look.visibility;
165
165
  delete look.visibility;
166
166
  if (edit.shownWhen) {
167
167
  const { input, atLeast } = edit.shownWhen;
168
168
  const control = model.inputs.find(i => i.id === input && i.role === 'state');
169
169
  if (!control)
170
- throw new V3ContractError('TARGET_ABSENT', input, 'not a control (state input) of this asset');
170
+ throw new FigureContractError('TARGET_ABSENT', input, 'not a control (state input) of this asset');
171
171
  if (!Number.isFinite(atLeast))
172
- throw new V3ContractError('SCHEMA', 'atLeast', 'a number in the control\'s unit');
172
+ throw new FigureContractError('SCHEMA', 'atLeast', 'a number in the control\'s unit');
173
173
  const id = freeId(model, `${edit.target}.shown`);
174
174
  const at = freeId(model, `k.${edit.target}.shown.at`);
175
175
  model.constants.push({ id: at, unit: control.unit, value: atLeast });
@@ -178,70 +178,70 @@ export function editV3Part(source, edit) {
178
178
  }
179
179
  if (before)
180
180
  dropUnread(asset, before);
181
- compileV3Asset(asset);
181
+ compileFigureAsset(asset);
182
182
  return asset;
183
183
  }
184
184
  if (edit.kind === 'rename-part') {
185
185
  const name = typeof edit.name === 'string' ? edit.name.trim() : '';
186
186
  renamePart(asset, edit.target, name);
187
187
  if (name !== edit.target) {
188
- renameV3PartInJoints(asset, edit.target, name);
188
+ renameFigurePartInJoints(asset, edit.target, name);
189
189
  renamePublicInputs(asset, edit.target, name);
190
190
  }
191
- compileV3Asset(asset);
191
+ compileFigureAsset(asset);
192
192
  return asset;
193
193
  }
194
194
  if (edit.kind === 'move-part') {
195
195
  if (!Number.isInteger(edit.to) || edit.to < 0 || edit.to >= asset.appearance.length)
196
- throw new V3ContractError('EDIT_TARGET', edit.target, `to must be a position in the list, 0 to ${asset.appearance.length - 1}`);
196
+ throw new FigureContractError('EDIT_TARGET', edit.target, `to must be a position in the list, 0 to ${asset.appearance.length - 1}`);
197
197
  const from = asset.appearance.indexOf(look);
198
198
  asset.appearance.splice(from, 1);
199
199
  asset.appearance.splice(edit.to, 0, look);
200
- compileV3Asset(asset);
200
+ compileFigureAsset(asset);
201
201
  return asset;
202
202
  }
203
203
  if (edit.kind === 'set-material') {
204
204
  for (const [token, colour] of Object.entries(edit.palette ?? {})) {
205
205
  if (asset.palette[token] !== undefined && asset.palette[token] !== colour)
206
- throw new V3ContractError('PALETTE', token, 'already has another colour; changing it would repaint every part that uses it');
206
+ throw new FigureContractError('PALETTE', token, 'already has another colour; changing it would repaint every part that uses it');
207
207
  asset.palette[token] = colour;
208
208
  }
209
209
  look.material = structuredClone(edit.material);
210
210
  }
211
211
  else if (edit.kind === 'set-segments') {
212
212
  if (!SEGMENT_PRESETS.includes(edit.segments))
213
- throw new V3ContractError('QUALITY', edit.target, `segments must be one of ${SEGMENT_PRESETS.join(', ')}`);
213
+ throw new FigureContractError('QUALITY', edit.target, `segments must be one of ${SEGMENT_PRESETS.join(', ')}`);
214
214
  const place = model.nodes.find(n => n.id === edit.target);
215
215
  const shape = place && model.nodes.find(n => Object.values(n.outputs).includes(place.args[0]));
216
216
  if (!shape || !['cylinder-shape@1', 'cylinder-shape@2', 'sphere-shape@1', 'frustum-shape@1'].includes(shape.op))
217
- throw new V3ContractError('QUALITY', edit.target, 'segments apply to a round body only');
217
+ throw new FigureContractError('QUALITY', edit.target, 'segments apply to a round body only');
218
218
  look.segments = edit.segments;
219
219
  }
220
220
  else if (edit.kind === 'remove-part') {
221
221
  return removePart(source, edit).asset;
222
222
  }
223
223
  else
224
- throw new V3ContractError('EDIT_KIND', 'part', 'unsupported operation');
224
+ throw new FigureContractError('EDIT_KIND', 'part', 'unsupported operation');
225
225
  keepPublicInputs(asset);
226
- compileV3Asset(asset);
226
+ compileFigureAsset(asset);
227
227
  return asset;
228
228
  }
229
229
  /**
230
230
  * 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. `editV3Part` is this without the notice.
231
+ * controls made, the mounting face given up. `editFigurePart` is this without the notice.
232
232
  */
233
233
  export function removePart(source, edit) {
234
- compileV3Asset(source);
234
+ compileFigureAsset(source);
235
235
  const asset = structuredClone(source), model = asset.document.model;
236
236
  if (!asset.appearance.some(a => a.target === edit.target))
237
- throw new V3ContractError('TARGET_ABSENT', 'part', edit.target);
237
+ throw new FigureContractError('TARGET_ABSENT', 'part', edit.target);
238
238
  /*
239
239
  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
240
  Each goes: a row with its copies, a part in a row from every copy (user, 2026-09-27).
241
241
  */
242
242
  const was = model.nodes.find(n => n.id === edit.target);
243
243
  if (!was || (was.op !== 'place@1' && was.op !== 'member@1'))
244
- throw new V3ContractError('EDIT_TARGET', edit.target, 'not a part of this figure');
244
+ throw new FigureContractError('EDIT_TARGET', edit.target, 'not a part of this figure');
245
245
  /*
246
246
  「지우고 공간 다시 맞추기」: the declaration stays, whole, while the part goes -- the mounting plane's side is read
247
247
  from it, and a wall lamp emptied of it was fastened to a floor (2026-09-27) -- and is declared again after. A
@@ -259,7 +259,7 @@ export function removePart(source, edit) {
259
259
  const contactLetGo = !!(room && asset.occupancy?.contact && references(asset.occupancy.contact).some(mine));
260
260
  if (contactLetGo)
261
261
  delete asset.occupancy.contact;
262
- const notice = releaseV3PartJoints(asset, edit.target, { spaceFittedAgain: !!room });
262
+ const notice = releaseFigurePartJoints(asset, edit.target, { spaceFittedAgain: !!room });
263
263
  if (room && contactLetGo)
264
264
  notice.mountingFace = true;
265
265
  const part = model.nodes.find(n => n.id === edit.target);
@@ -277,7 +277,7 @@ export function removePart(source, edit) {
277
277
  const bound = new Set(references(asset.document.capabilities));
278
278
  if (model.nodes.some(n => !goingIds.has(n.id) && n.args.some(ref => outputs.has(ref))) ||
279
279
  [...outputs].some(ref => bound.has(ref))) {
280
- throw new V3ContractError('PART_REFERENCED', part.id, 'another graph node or capability references this placement');
280
+ throw new FigureContractError('PART_REFERENCED', part.id, 'another graph node or capability references this placement');
281
281
  }
282
282
  model.nodes = model.nodes.filter(n => !goingIds.has(n.id));
283
283
  asset.appearance = asset.appearance.filter(a => a.target !== part.id);
@@ -325,15 +325,15 @@ export function removePart(source, edit) {
325
325
  sweepNewlyUnread(source, asset);
326
326
  keepPublicInputs(asset);
327
327
  if (room) {
328
- compileV3Asset(asset);
329
- const fitted = applyV3Authoring(asset, { kind: 'declare-occupancy', proposal: proposeV3Occupancy(asset), placement: room.placement });
328
+ compileFigureAsset(asset);
329
+ const fitted = applyFigureAuthoring(asset, { kind: 'declare-occupancy', proposal: proposeFigureOccupancy(asset), placement: room.placement });
330
330
  sweepNewlyUnread(source, fitted);
331
331
  keepPublicInputs(fitted);
332
- compileV3Asset(fitted);
332
+ compileFigureAsset(fitted);
333
333
  return { asset: fitted, notice };
334
334
  }
335
335
  keepPublicInputs(asset);
336
- compileV3Asset(asset);
336
+ compileFigureAsset(asset);
337
337
  return { asset, notice };
338
338
  }
339
339
  /**
@@ -415,7 +415,7 @@ function duplicatePart(asset, target) {
415
415
  const model = asset.document.model;
416
416
  const placement = model.nodes.find(n => n.id === target);
417
417
  if (!placement || (placement.op !== 'place@1' && placement.op !== 'member@1'))
418
- throw new V3ContractError('EDIT_TARGET', target, 'not a part of this figure');
418
+ throw new FigureContractError('EDIT_TARGET', target, 'not a part of this figure');
419
419
  /* A row written in the graph is copied with its part; a row made by fastening is made again from the copied record. */
420
420
  const fastened = (asset.joints ?? []).some(j => j.body1.part === target);
421
421
  const row = fastened ? [] : graphRowOfPart(model, placement);
@@ -473,19 +473,19 @@ function renamePart(asset, target, name) {
473
473
  const placement = model.nodes.find(n => n.id === target);
474
474
  const rowTemplate = placement?.op === 'member@1' && model.nodes.some(n => n.id === `${target}.repeat`);
475
475
  if (!placement || (placement.op !== 'place@1' && !rowTemplate))
476
- throw new V3ContractError('EDIT_TARGET', target, 'rename an explicit placement');
476
+ throw new FigureContractError('EDIT_TARGET', target, 'rename an explicit placement');
477
477
  if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name))
478
- throw new V3ContractError('PART_ID', target, 'a part name starts with a letter and uses letters, digits, - and _');
478
+ throw new FigureContractError('PART_ID', target, 'a part name starts with a letter and uses letters, digits, - and _');
479
479
  if (name === target)
480
480
  return;
481
481
  const within = (id, root) => id === root || id.startsWith(`${root}.`);
482
482
  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
483
  if (ids.some(id => within(id, name)))
484
- throw new V3ContractError('PART_ID', name, 'already used in this figure');
484
+ throw new FigureContractError('PART_ID', name, 'already used in this figure');
485
485
  /* Another placement named inside this part's namespace (`body.lid`) would be swept along with it. */
486
486
  const nested = model.nodes.find(n => n.op === 'place@1' && n.id !== target && n.id.startsWith(`${target}.`));
487
487
  if (nested)
488
- throw new V3ContractError('PART_ID', target, `${nested.id} is named under it; rename that part first`);
488
+ throw new FigureContractError('PART_ID', target, `${nested.id} is named under it; rename that part first`);
489
489
  const rename = (id) => (id === target ? name : id.startsWith(`${target}.`) ? name + id.slice(target.length) : id);
490
490
  const values = (value) => typeof value === 'string'
491
491
  ? rename(value)
@@ -543,4 +543,4 @@ function dropUnread(asset, value) {
543
543
  queue.push(arg);
544
544
  }
545
545
  }
546
- //# sourceMappingURL=v3-part-edit.js.map
546
+ //# 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,42 @@
1
+ import { type FigurePrimitiveCreation } from './create.ts';
2
+ import { type FigureAuthoringAction } from './authoring-actions.ts';
3
+ import { type FigurePartEdit } from './part-edit.ts';
4
+ import { type FigureAsset, type FigurePlacement } from './asset-types.ts';
5
+ /** A part, new. Its place is where it is fastened; `position` is only for a part left unfastened. */
6
+ export interface FigureProposalAddPart {
7
+ kind: 'add-part';
8
+ part: Omit<FigurePrimitiveCreation, 'position'> & {
9
+ position?: FigurePrimitiveCreation['position'];
10
+ };
11
+ }
12
+ /** The room the figure takes up, fitted to its parts as they are -- the modeller's 「부품에 맞추기」. */
13
+ export interface FigureProposalFitRoom {
14
+ kind: 'fit-room';
15
+ placement: FigurePlacement;
16
+ }
17
+ export type FigureProposalStep = FigureProposalAddPart | FigureProposalFitRoom | FigureAuthoringAction | FigurePartEdit;
18
+ 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"];
19
+ type Exhaustive<T extends never> = T;
20
+ export type _PartEditKindsComplete = Exhaustive<Exclude<FigurePartEdit['kind'], (typeof PART_EDIT_KINDS)[number]>>;
21
+ /**
22
+ * The steps in order, on a copy of the asset. The first one the kernel refuses stops the proposal, with the step's
23
+ * place in the list and the kernel's code and sentence; nothing is kept from it.
24
+ */
25
+ export declare function applyFigureProposal(source: FigureAsset, steps: readonly FigureProposalStep[]): FigureAsset;
26
+ /** One step the model may write: its kind, its shape, and what it means, in the author's terms. */
27
+ export interface FigureProposalWord {
28
+ kind: string;
29
+ shape: string;
30
+ means: string;
31
+ }
32
+ /**
33
+ * The words, in the order a figure is usually made. Each shape is the command's own, written short; the means say
34
+ * the relation, not the graph. Kept complete against the kernel's command types (`_GrammarComplete` below).
35
+ */
36
+ export declare const FIGURE_PROPOSAL_GRAMMAR: readonly FigureProposalWord[];
37
+ /** Taken only through a word of its own (`fit-room` asks the kernel for the proposal it confirms). */
38
+ type LeftOut = 'declare-occupancy';
39
+ export type _GrammarComplete = Exhaustive<Exclude<FigureAuthoringAction['kind'] | FigurePartEdit['kind'], LeftOut | (typeof FIGURE_PROPOSAL_KINDS)[number]>>;
40
+ export declare const FIGURE_PROPOSAL_KINDS: readonly ["add-part", "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"];
41
+ export {};
42
+ //# sourceMappingURL=proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAaA,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,GAAG,WAAW,CAwB1G;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,EAgFhE,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,6rBA0CxB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * An AI proposal for a V3 figure: a list of the authoring commands a person gives in the modeller, applied in order.
2
+ * An AI proposal for a figure: a list of the authoring commands a person gives in the modeller, applied in order.
3
3
  *
4
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
5
  * joint -- and the kernel applies them exactly as it applies the modeller's buttons (r3 §3: the UI and the AI change
@@ -10,12 +10,12 @@
10
10
  * command types when this file compiles: a command the kernel gains and the grammar does not name is a type error,
11
11
  * not a prompt that quietly speaks an older language.
12
12
  */
13
- import { V3ContractError } from "./v3-contract.js";
14
- import { addV3Primitive } from "./v3-create.js";
15
- import { applyV3Authoring, proposeV3Occupancy, V3_FACES, V3_JOINT_TYPES } from "./v3-authoring-actions.js";
16
- import { editV3Part } from "./v3-part-edit.js";
17
- import { V3_PLACEMENTS } from "./v3-asset-types.js";
18
- import { AXES } from "./v3-words.js";
13
+ import { FigureContractError } from "./contract.js";
14
+ import { addFigurePrimitive } from "./create.js";
15
+ import { applyFigureAuthoring, proposeFigureOccupancy, FIGURE_FACES, FIGURE_JOINT_TYPES } from "./authoring-actions.js";
16
+ import { editFigurePart } from "./part-edit.js";
17
+ import { FIGURE_PLACEMENTS } from "./asset-types.js";
18
+ import { AXES } from "./words.js";
19
19
  /* The part edits, told apart from the authoring commands by kind -- one list, checked below to be the whole union. */
20
20
  const PART_EDIT_KINDS = [
21
21
  'set-material',
@@ -36,37 +36,37 @@ const PART_EDIT_KINDS = [
36
36
  * The steps in order, on a copy of the asset. The first one the kernel refuses stops the proposal, with the step's
37
37
  * place in the list and the kernel's code and sentence; nothing is kept from it.
38
38
  */
39
- export function applyV3Proposal(source, steps) {
39
+ export function applyFigureProposal(source, steps) {
40
40
  if (!Array.isArray(steps) || !steps.length)
41
- throw new V3ContractError('PROPOSAL_EMPTY', 'steps', 'a proposal is a list of one or more steps');
41
+ throw new FigureContractError('PROPOSAL_EMPTY', 'steps', 'a proposal is a list of one or more steps');
42
42
  let asset = structuredClone(source);
43
43
  steps.forEach((step, i) => {
44
44
  const at = `steps[${i}]`;
45
45
  try {
46
46
  if (!step || typeof step !== 'object' || typeof step.kind !== 'string')
47
- throw new V3ContractError('SCHEMA', at, 'a step is an object with a kind');
47
+ throw new FigureContractError('SCHEMA', at, 'a step is an object with a kind');
48
48
  if (step.kind === 'add-part') {
49
49
  const part = { position: { x: 0, y: 0, z: 0 }, ...step.part };
50
- asset = addV3Primitive(asset, part);
50
+ asset = addFigurePrimitive(asset, part);
51
51
  }
52
52
  else if (step.kind === 'fit-room') {
53
- asset = applyV3Authoring(asset, { kind: 'declare-occupancy', proposal: proposeV3Occupancy(asset), placement: step.placement });
53
+ asset = applyFigureAuthoring(asset, { kind: 'declare-occupancy', proposal: proposeFigureOccupancy(asset), placement: step.placement });
54
54
  }
55
55
  else if (PART_EDIT_KINDS.includes(step.kind)) {
56
- asset = editV3Part(asset, step);
56
+ asset = editFigurePart(asset, step);
57
57
  }
58
58
  else {
59
- asset = applyV3Authoring(asset, step);
59
+ asset = applyFigureAuthoring(asset, step);
60
60
  }
61
61
  }
62
62
  catch (e) {
63
63
  const error = e;
64
- throw new V3ContractError(error.code ?? 'SCHEMA', at, `${step?.kind ?? '?'}: ${String(error.message ?? e).replace(/^[A-Z_]+: /, '')}`);
64
+ throw new FigureContractError(error.code ?? 'SCHEMA', at, `${step?.kind ?? '?'}: ${String(error.message ?? e).replace(/^[A-Z_]+: /, '')}`);
65
65
  }
66
66
  });
67
67
  return asset;
68
68
  }
69
- const faces = Object.keys(V3_FACES).join(' | ');
69
+ const faces = Object.keys(FIGURE_FACES).join(' | ');
70
70
  const axes = AXES.join(' | ');
71
71
  const upper = AXES.map(a => a.toUpperCase()).join(' | ');
72
72
  const measure = `number (mm) | { from: { of: 'instance', axis: ${axes} } | { of: 'part', part, axis }, times?, plus? }`;
@@ -75,7 +75,7 @@ const alignment = `'centre' | 'min' | 'max' | { mm: ${measure} }`;
75
75
  * The words, in the order a figure is usually made. Each shape is the command's own, written short; the means say
76
76
  * the relation, not the graph. Kept complete against the kernel's command types (`_GrammarComplete` below).
77
77
  */
78
- export const V3_PROPOSAL_GRAMMAR = [
78
+ export const FIGURE_PROPOSAL_GRAMMAR = [
79
79
  {
80
80
  kind: 'add-part',
81
81
  shape: `{ kind: 'add-part', part: { id, kind: 'box', dimensions: { width, height, depth } } | { id, kind: 'cylinder', dimensions: { radius, length } } | { id, kind: 'rounded-box', dimensions: { width, height, depth, round } } | { id, kind: 'sphere', dimensions: { radiusX, radiusY, radiusZ } } | { id, kind: 'frustum', dimensions: { radiusTop, radiusBottom, height } } | { id, kind: 'portal', dimensions: { width, height, depth, jamb, head } } | { id, kind: 'hollow-box', dimensions: { width, height, depth, roundX, roundZ, wallX, wallZ, floor } } }`,
@@ -88,7 +88,7 @@ export const V3_PROPOSAL_GRAMMAR = [
88
88
  },
89
89
  {
90
90
  kind: 'set-joint',
91
- shape: `{ kind: 'set-joint', joint: { id, type: ${V3_JOINT_TYPES.map(t => `'${t}'`).join(' | ')}, body0, body1, origin, axis?: ${upper}, lowerLimit?, upperLimit?, state?: { id, label? }, mimic?: { joint, multiplier, offset? }, travel?: { source: { of: 'instance', axis } | { of: 'part', part, axis }, times?, plus? } }, narrowRange?: true }`,
91
+ shape: `{ kind: 'set-joint', joint: { id, type: ${FIGURE_JOINT_TYPES.map(t => `'${t}'`).join(' | ')}, body0, body1, origin, axis?: ${upper}, lowerLimit?, upperLimit?, state?: { id, label? }, mimic?: { joint, multiplier, offset? }, travel?: { source: { of: 'instance', axis } | { of: 'part', part, axis }, times?, plus? } }, narrowRange?: true }`,
92
92
  means: 'The fastening record, made to move: a revolute turns about axis (limits in degrees, none = turns without end), a prismatic slides along it (limits in mm, or a travel that is a share of a length with a ratio control 0..1). mimic follows another joint. Take body0, body1 and origin from the fastening as it is.'
93
93
  },
94
94
  {
@@ -135,7 +135,7 @@ export const V3_PROPOSAL_GRAMMAR = [
135
135
  means: 'A place things are held: a seat things rest on, a grip things are held in, on a face of a part; it follows the part. accepts names the types it takes.'
136
136
  },
137
137
  { kind: 'remove-binding', shape: `{ kind: 'remove-binding', id }`, means: 'The place goes.' },
138
- { kind: 'fit-room', shape: `{ kind: 'fit-room', placement: ${V3_PLACEMENTS.map(p => `'${p}'`).join(' | ')} }`, means: 'Declare the room the figure takes up, fitted to its parts, and what it is placed on. Do it last, after the parts and their motions.' },
138
+ { kind: 'fit-room', shape: `{ kind: 'fit-room', placement: ${FIGURE_PLACEMENTS.map(p => `'${p}'`).join(' | ')} }`, means: 'Declare the room the figure takes up, fitted to its parts, and what it is placed on. Do it last, after the parts and their motions.' },
139
139
  { kind: 'set-mounting-face', shape: `{ kind: 'set-mounting-face', part, face: ${faces} }`, means: 'The face that lies on the mounting plane (after the room is declared).' },
140
140
  { kind: 'clear-mounting-face', shape: `{ kind: 'clear-mounting-face' }`, means: 'No face is named as lying on the mounting plane.' },
141
141
  { kind: 'set-detail-level', shape: `{ kind: 'set-detail-level', level: 'S' | 'M' | 'L' | null }`, means: 'How much detail the figure is authored to, and so its part limit.' },
@@ -154,7 +154,7 @@ export const V3_PROPOSAL_GRAMMAR = [
154
154
  { kind: 'remove-driver', shape: `{ kind: 'remove-driver', state }`, means: 'The control is not played any more.' },
155
155
  { kind: 'set-clip', shape: `{ kind: 'set-clip', clip, name?, duration? }`, means: 'A clip renamed, or its length changed.' }
156
156
  ];
157
- export const V3_PROPOSAL_KINDS = [
157
+ export const FIGURE_PROPOSAL_KINDS = [
158
158
  'add-part',
159
159
  'attach',
160
160
  'set-joint',
@@ -197,4 +197,4 @@ export const V3_PROPOSAL_KINDS = [
197
197
  'remove-driver',
198
198
  'set-clip'
199
199
  ];
200
- //# sourceMappingURL=v3-proposal.js.map
200
+ //# sourceMappingURL=proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal.js","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAgC,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,YAAY,EAAE,kBAAkB,EAA8B,MAAM,wBAAwB,CAAA;AACnJ,OAAO,EAAE,cAAc,EAAuB,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAA0C,MAAM,kBAAkB,CAAA;AAC5F,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAcjC,sHAAsH;AACtH,MAAM,eAAe,GAAG;IACtB,cAAc;IACd,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,YAAY;IACZ,eAAe;IACf,UAAU;IACV,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,gBAAgB;CACoC,CAAA;AAItD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB,EAAE,KAAoC;IAC3F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,EAAE,2CAA2C,CAAC,CAAA;IACjJ,IAAI,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAA;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAQ,IAA2B,CAAC,IAAI,KAAK,QAAQ;gBAC5F,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,iCAAiC,CAAC,CAAA;YAChF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAA6B,CAAA;gBACxF,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACzC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACpC,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;YACxI,CAAC;iBAAM,IAAK,eAAqC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtE,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,IAAsB,CAAC,CAAA;YACvD,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAA6B,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAwC,CAAA;YACtD,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;QAC5I,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC;AASD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACxD,MAAM,OAAO,GAAG,iDAAiD,IAAI,kDAAkD,CAAA;AACvH,MAAM,SAAS,GAAG,oCAAoC,OAAO,IAAI,CAAA;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAkC;IACpE;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,+hBAA+hB;QACtiB,KAAK,EAAE,yIAAyI;KACjJ;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,iCAAiC,KAAK,gEAAgE,KAAK,wCAAwC,OAAO,eAAe,IAAI,MAAM,SAAS,uCAAuC;QAC1O,KAAK,EACH,ugBAAugB;KAC1gB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,2CAA2C,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kCAAkC,KAAK,+MAA+M;QACzV,KAAK,EACH,sTAAsT;KACzT;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,sIAAsI;QAC7I,KAAK,EAAE,mKAAmK;KAC3K;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,yCAAyC,IAAI,sHAAsH;QAC1K,KAAK,EAAE,wLAAwL;KAChM;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,wCAAwC,IAAI,OAAO;QAC1D,KAAK,EAAE,mKAAmK;KAC3K;IACD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,+CAA+C,EAAE;IAC3I,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,8EAA8E,EAAE;IACxJ,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,uCAAuC,EAAE,KAAK,EAAE,gGAAgG,EAAE;IAC9L,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,wCAAwC,EAAE,KAAK,EAAE,qEAAqE,EAAE;IACzJ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,sCAAsC,EAAE,KAAK,EAAE,0DAA0D,EAAE;IAC1I,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iGAAiG,EAAE,KAAK,EAAE,uEAAuE,EAAE;IAChN,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,0DAA0D,EAAE;IACxH,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,4DAA4D,EAAE;IACvI;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,sCAAsC,IAAI,qDAAqD,IAAI,8BAA8B;QACxI,KAAK,EAAE,yZAAyZ;KACja;IACD,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,4EAA4E,EAAE,KAAK,EAAE,2FAA2F,EAAE;IAC/M;QACE,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,2FAA2F;QAClG,KAAK,EAAE,uHAAuH;KAC/H;IACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,wFAAwF,EAAE;IACnL,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,0IAA0I,EAAE;IACrO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,2CAA2C,EAAE;IAC5H,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,gCAAgC,EAAE;IAC5G;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,wEAAwE,KAAK,uEAAuE;QAC3J,KAAK,EAAE,wJAAwJ;KAChK;IACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC7F,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,kCAAkC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,qIAAqI,EAAE;IACjQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,4CAA4C,KAAK,IAAI,EAAE,KAAK,EAAE,wEAAwE,EAAE;IAC5K,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,kDAAkD,EAAE;IACpI,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,6DAA6D,EAAE,KAAK,EAAE,mEAAmE,EAAE;IAC9K,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,2CAA2C,EAAE;IACzG,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,6DAA6D,EAAE,KAAK,EAAE,qCAAqC,EAAE;IAC5I,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,yCAAyC,EAAE;IACrI,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,4DAA4D,EAAE;IAClJ,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,iGAAiG,EAAE,KAAK,EAAE,yHAAyH,EAAE;IACtQ,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,yDAAyD,EAAE,KAAK,EAAE,kFAAkF,EAAE;IACpL,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,yEAAyE,EAAE;IAC/J,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,2CAA2C,EAAE;IAC3H,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,+CAA+C,EAAE,KAAK,EAAE,mEAAmE,EAAE;IAChK,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,wEAAwE,EAAE,KAAK,EAAE,iGAAiG,EAAE;IACtN,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,+DAA+D,EAAE,KAAK,EAAE,gCAAgC,EAAE;IAC/I,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,qJAAqJ,EAAE,KAAK,EAAE,uCAAuC,EAAE;IACpO,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,kCAAkC,EAAE,KAAK,EAAE,qCAAqC,EAAE;IAClH,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,wCAAwC,EAAE;CAC7H,CAAA;AASD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,UAAU;IACV,QAAQ;IACR,WAAW;IACX,uBAAuB;IACvB,gBAAgB;IAChB,aAAa;IACb,kBAAkB;IAClB,iBAAiB;IACjB,2BAA2B;IAC3B,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,QAAQ;IACR,cAAc;IACd,aAAa;IACb,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,UAAU;IACV,mBAAmB;IACnB,qBAAqB;IACrB,kBAAkB;IAClB,QAAQ;IACR,cAAc;IACd,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,YAAY;IACZ,eAAe;IACf,UAAU;CACF,CAAA"}