@hatiolab/figure-model 0.4.6 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/asset-types.d.ts +1 -1
  2. package/dist/asset-types.d.ts.map +1 -1
  3. package/dist/asset.d.ts +5 -0
  4. package/dist/asset.d.ts.map +1 -1
  5. package/dist/asset.js +11 -5
  6. package/dist/asset.js.map +1 -1
  7. package/dist/authoring-actions.d.ts +2 -795
  8. package/dist/authoring-actions.d.ts.map +1 -1
  9. package/dist/authoring-actions.js +66 -3748
  10. package/dist/authoring-actions.js.map +1 -1
  11. package/dist/authoring-bindings.d.ts +35 -0
  12. package/dist/authoring-bindings.d.ts.map +1 -0
  13. package/dist/authoring-bindings.js +241 -0
  14. package/dist/authoring-bindings.js.map +1 -0
  15. package/dist/authoring-dimensions.d.ts +10 -0
  16. package/dist/authoring-dimensions.d.ts.map +1 -0
  17. package/dist/authoring-dimensions.js +88 -0
  18. package/dist/authoring-dimensions.js.map +1 -0
  19. package/dist/authoring-fastening.d.ts +24 -0
  20. package/dist/authoring-fastening.d.ts.map +1 -0
  21. package/dist/authoring-fastening.js +562 -0
  22. package/dist/authoring-fastening.js.map +1 -0
  23. package/dist/authoring-geometry.d.ts +119 -0
  24. package/dist/authoring-geometry.d.ts.map +1 -0
  25. package/dist/authoring-geometry.js +419 -0
  26. package/dist/authoring-geometry.js.map +1 -0
  27. package/dist/authoring-nodes.d.ts +77 -0
  28. package/dist/authoring-nodes.d.ts.map +1 -0
  29. package/dist/authoring-nodes.js +310 -0
  30. package/dist/authoring-nodes.js.map +1 -0
  31. package/dist/authoring-occupancy.d.ts +28 -0
  32. package/dist/authoring-occupancy.d.ts.map +1 -0
  33. package/dist/authoring-occupancy.js +784 -0
  34. package/dist/authoring-occupancy.js.map +1 -0
  35. package/dist/authoring-proportion.d.ts +27 -0
  36. package/dist/authoring-proportion.d.ts.map +1 -0
  37. package/dist/authoring-proportion.js +378 -0
  38. package/dist/authoring-proportion.js.map +1 -0
  39. package/dist/authoring-size.d.ts +17 -0
  40. package/dist/authoring-size.d.ts.map +1 -0
  41. package/dist/authoring-size.js +140 -0
  42. package/dist/authoring-size.js.map +1 -0
  43. package/dist/authoring-types.d.ts +753 -0
  44. package/dist/authoring-types.d.ts.map +1 -0
  45. package/dist/authoring-types.js +42 -0
  46. package/dist/authoring-types.js.map +1 -0
  47. package/dist/command-preview.d.ts +5 -5
  48. package/dist/command-preview.d.ts.map +1 -1
  49. package/dist/command-preview.js +11 -5
  50. package/dist/command-preview.js.map +1 -1
  51. package/dist/contract.d.ts +129 -3
  52. package/dist/contract.d.ts.map +1 -1
  53. package/dist/contract.js +1 -1
  54. package/dist/contract.js.map +1 -1
  55. package/dist/cost.d.ts.map +1 -1
  56. package/dist/cost.js +3 -0
  57. package/dist/cost.js.map +1 -1
  58. package/dist/create.d.ts +36 -0
  59. package/dist/create.d.ts.map +1 -1
  60. package/dist/create.js +60 -0
  61. package/dist/create.js.map +1 -1
  62. package/dist/document.d.ts.map +1 -1
  63. package/dist/document.js +4 -3
  64. package/dist/document.js.map +1 -1
  65. package/dist/editor-workspace.d.ts +12 -3
  66. package/dist/editor-workspace.d.ts.map +1 -1
  67. package/dist/editor-workspace.js +40 -8
  68. package/dist/editor-workspace.js.map +1 -1
  69. package/dist/examples.d.ts.map +1 -1
  70. package/dist/examples.js +3 -1
  71. package/dist/examples.js.map +1 -1
  72. package/dist/gate.d.ts.map +1 -1
  73. package/dist/gate.js +2 -0
  74. package/dist/gate.js.map +1 -1
  75. package/dist/graph-types.d.ts +3 -2
  76. package/dist/graph-types.d.ts.map +1 -1
  77. package/dist/graph.d.ts.map +1 -1
  78. package/dist/graph.js +3 -3
  79. package/dist/graph.js.map +1 -1
  80. package/dist/index.d.ts +11 -5
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +9 -3
  83. package/dist/index.js.map +1 -1
  84. package/dist/joint-list.js +1 -1
  85. package/dist/joint-list.js.map +1 -1
  86. package/dist/joint-part-edits.d.ts +40 -0
  87. package/dist/joint-part-edits.d.ts.map +1 -0
  88. package/dist/joint-part-edits.js +488 -0
  89. package/dist/joint-part-edits.js.map +1 -0
  90. package/dist/joint-writing.d.ts +50 -0
  91. package/dist/joint-writing.d.ts.map +1 -0
  92. package/dist/joint-writing.js +847 -0
  93. package/dist/joint-writing.js.map +1 -0
  94. package/dist/json.d.ts.map +1 -1
  95. package/dist/json.js +11 -8
  96. package/dist/json.js.map +1 -1
  97. package/dist/kernel-version.d.ts +1 -1
  98. package/dist/kernel-version.js +1 -1
  99. package/dist/package.d.ts +15 -3
  100. package/dist/package.d.ts.map +1 -1
  101. package/dist/package.js +58 -0
  102. package/dist/package.js.map +1 -1
  103. package/dist/part-edit.d.ts +1 -1
  104. package/dist/part-edit.d.ts.map +1 -1
  105. package/dist/part-edit.js +7 -4
  106. package/dist/part-edit.js.map +1 -1
  107. package/dist/proposal.d.ts +1 -1
  108. package/dist/proposal.d.ts.map +1 -1
  109. package/dist/proposal.js +5 -2
  110. package/dist/proposal.js.map +1 -1
  111. package/dist/render-batches.d.ts +10 -2
  112. package/dist/render-batches.d.ts.map +1 -1
  113. package/dist/render-batches.js +19 -5
  114. package/dist/render-batches.js.map +1 -1
  115. package/dist/resize-plan.d.ts +1 -1
  116. package/dist/resize-plan.d.ts.map +1 -1
  117. package/dist/robots.d.ts.map +1 -1
  118. package/dist/robots.js +3 -1
  119. package/dist/robots.js.map +1 -1
  120. package/dist/room.d.ts +1 -1
  121. package/dist/room.d.ts.map +1 -1
  122. package/dist/room.js +2 -1
  123. package/dist/room.js.map +1 -1
  124. package/dist/shape-edit.js +4 -4
  125. package/dist/shape-edit.js.map +1 -1
  126. package/dist/shape-ops.d.ts +62 -7
  127. package/dist/shape-ops.d.ts.map +1 -1
  128. package/dist/shape-ops.js +117 -8
  129. package/dist/shape-ops.js.map +1 -1
  130. package/dist/slot-layout-presets.d.ts +102 -0
  131. package/dist/slot-layout-presets.d.ts.map +1 -0
  132. package/dist/slot-layout-presets.js +185 -0
  133. package/dist/slot-layout-presets.js.map +1 -0
  134. package/dist/slot-layout.d.ts +16 -1
  135. package/dist/slot-layout.d.ts.map +1 -1
  136. package/dist/slot-layout.js.map +1 -1
  137. package/docs/modeller-interaction-performance-2026-10-07.md +60 -8
  138. package/docs/shape-contract.md +46 -0
  139. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"joint-list.js","sourceRoot":"","sources":["../src/joint-list.ts"],"names":[],"mappings":"AAwDA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAoB,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAG/C,qEAAqE;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAA;AACzC,0GAA0G;AAC1G,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAA;AAsC7C;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzD,OAAO,EAAE,GAAG,EAAE,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAG,KAAiB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;AAClJ,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,MAAc,EAAS,EAAE;IACtD,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,EAAE,UAAU,KAAK,EAAE,EAAE,MAAM,CAAC,CAAA;AAC/E,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAA;AAEzD,2FAA2F;AAC3F,SAAS,SAAS,CAAC,MAAqB;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,CAAC,CAAc,EAAU,EAAE;QACvC,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,KAAK,GAAG,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC7F,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YAAE,CAAC,EAAE,CAAA;QAC/C,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3G,CAAC;AAED,uCAAuC;AAEvC,mHAAmH;AACnH,SAAS,QAAQ,CAAC,EAAU;IAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAc,CAAA;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3E,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5E,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,CAAY,EAAE,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAGtG,gGAAgG;AAChG,MAAM,KAAK,GAAG,IAAI,OAAO,EAAkB,CAAA;AAC3C,SAAS,QAAQ,CAAC,QAAmB;IACnC,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC5E,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC9D,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,QAAmB,EAAE,MAAqB,EAAE,KAAa,EAAE,KAAa;IAC1F,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,iFAAiF,CAAC,CAAA;IACzH,IAAI,KAAK,GAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;IACrD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjI,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,uBAAuB,KAAK,iCAAiC,CAAC,CAAA;QACjH,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAA;IAC1B,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAA;AACrE,CAAC;AAED,MAAM,QAAQ,GAAG;IACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CACV,CAAA;AACD,MAAM,EAAE,GAAG,CAAC,CAAa,EAAE,CAAW,EAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAQ,CAAA;AACpI,MAAM,EAAE,GAAG,CAAC,CAAa,EAAE,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;AAC9I,MAAM,SAAS,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;AAC1F,MAAM,OAAO,GAAG,CAAC,CAAa,EAAE,CAAa,EAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAA;AAC/H,MAAM,OAAO,GAAG,CAAC,CAAa,EAAc,EAAE;IAC5C,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC/C,CAAC,CAAA;AACD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;IACnC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC,CAAA;AAED,oGAAoG;AACpG,MAAM,aAAa,GAAG,CAAC,KAAkB,EAAE,KAAa,EAAsB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAE1J,0HAA0H;AAC1H,SAAS,UAAU,CAAC,GAAW,EAAE,MAA+B;IAC9D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC;AAUD;;;;GAIG;AACH,SAAS,MAAM,CAAC,MAAc,EAAE,KAAkB,EAAE,CAAc,EAAE,OAA2B;IAC7F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACtD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;IAC1B,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACvC,MAAM,EAAE,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAiC,CAAC,CAAA;IAC3G,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,mCAAmC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5G,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAqB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAChF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;QAClD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3I,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;YACnE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAI,EAAE,KAAK,CAAC,MAAiC,CAAE,GAAG,EAAE,CAAA;YAC1E,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBAAE,MAAK;YACjC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,QAAqB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YACxE,mHAAmH;YACnH,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC5C,IAAI,KAAU,CAAA;YACd,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACb,MAAM,CAAC,GAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtG,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;gBACvD,8DAA8D;gBAC9D,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI;oBAAE,SAAQ;gBACtC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAQ,CAAA;YACtD,CAAC;iBAAM,CAAC;gBACN,0GAA0G;gBAC1G,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;gBAC/F,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,aAAa,CAAC,CAAC,EAAE,oDAAoD,CAAC,CAAA;gBAC9G,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAQ,CAAA;gBACnC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;oBAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,iBAAiB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAA;YAC9I,CAAC;YACD,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;YAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAQ,CAAA;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,kBAAkB,KAAK,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAA;AACvI,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAA;AAE3D,8GAA8G;AAC9G,SAAS,cAAc,CAAC,KAAkB,EAAE,UAAoC;IAC9E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACjK,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACxF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,OAAO,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAkB,EAAE,UAAmC;IACjF,MAAM,OAAO,GAAG,CAAE,KAAiB,CAAC,MAAM,IAAI,EAAE,CAAkB,CAAA;IAClE;;;MAGE;IACF,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACzB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC,CAAC,CAAA;IAChH,mGAAmG;IACnG,MAAM,IAAI,GAA2B,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC/G;;;;MAIE;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/G,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAA;IACpF,IAAI,OAAO;QAAE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAChJ,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,IAAI,GAAoB,EAAE,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IACtI,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,MAAM,QAAQ,GAAG,UAAU,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QACvE,MAAM,QAAQ,GAAG,CAAC,KAA6B,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;QAClI,MAAM,MAAM,GAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA;QACjE,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;YAC1D,MAAM,KAAK,GAAsB;gBAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBACjE,UAAU;gBACV,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;aACpB,CAAA;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;gBAC3C,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;wBAChC,MAAM,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;wBACrD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;oBAC7B,CAAC,CAAC,CAAA;oBACF,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;oBAC9C,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;gBACzB,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;oBACtC,IAAI,CAAC,KAAK;wBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAA;oBACnG,uGAAuG;oBACvG,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAA;oBAClG,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;oBAC9C,KAAK,CAAC,OAAO,GAAG;wBACd,KAAK,EAAE,KAAK,CAAC,EAAE;wBACf,SAAS,EAAE,KAAK,CAAC,IAA4B;wBAC7C,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;wBAChD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACvD,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACvB,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAChI,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAkB,EAAE,OAAe,EAAE,SAAiC,EAAE;IAC1G,MAAM,CAAC,GAAI,CAAE,KAAiB,CAAC,MAAM,IAAI,EAAE,CAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;IAC1F,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,EAAE,UAAU,OAAO,EAAE,EAAE,GAAG,OAAO,gCAAgC,CAAC,CAAA;IACvH,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/E,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,mBAAmB,CAAC,cAAc,EAAE,UAAU,OAAO,EAAE,EAAE,GAAG,OAAO,yCAAyC,CAAC,CAAA;IAC9I,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,MAAiC,CAAA;IAChK,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAE,CAAA;IACtC,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;AAChE,CAAC"}
1
+ {"version":3,"file":"joint-list.js","sourceRoot":"","sources":["../src/joint-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { FigureAsset } from './asset-types.ts';
2
+ import { type RemovalNotice } from './authoring-types.ts';
3
+ /**
4
+ * The records follow a part's new name -- as a joint's parent, as its child, and as the joint a follower follows -- and
5
+ * the nodes are made again from them. Nothing is frozen: a length that followed the part still follows it, and the
6
+ * stored design inputs keep their values under the carried names, so the figure stands as it did at every size.
7
+ */
8
+ export declare function renameFigurePartInJoints(asset: FigureAsset, from: string, to: string): void;
9
+ /**
10
+ * A copied part is fastened as the original is: its own record, the same faces and place, so it is not held by nodes
11
+ * no record makes. A moving joint gets its own control -- a copy is a second thing, not the original's shadow.
12
+ */
13
+ export declare function copyFigurePartJoint(asset: FigureAsset, from: string, to: string): void;
14
+ /**
15
+ * Before a part is taken away (chief architect's ruling 2026-09-27, replacing the refusals of 2026-09-25). What hung
16
+ * from it stays where it stood at rest -- every control at zero -- fastened to nothing: its joint, and the motion and
17
+ * control the joint gave it, go. A part that moved with its joint gets a control of its own, named after the part,
18
+ * over the leader's range put through the multiplier and offset, starting where it stood. A value that followed its
19
+ * size or place becomes the number it is now. One thing is refused, by name: a row laid along it, or hanging in it --
20
+ * a row is made from its record, and a record needs the part (ADR-0093).
21
+ */
22
+ export declare function releaseFigurePartJoints(asset: FigureAsset, part: string, options?: {
23
+ spaceFittedAgain?: boolean;
24
+ }): RemovalNotice;
25
+ /**
26
+ * The nodes that make the declared space and nothing else: reached from what \`occupancy\` names, not from any drawn
27
+ * body, record or binding. Named by what they do, not by their names -- an older fitting named them \`occ.*\`
28
+ * (FORKLIFT), a still older one left some the declaration no longer reaches (WALL_LAMP), and a part's own chain the
29
+ * space also reads is the part's (2026-09-27).
30
+ */
31
+ export declare function spaceOnlyNodesOf(asset: FigureAsset): Set<string>;
32
+ /**
33
+ * A node no drawn body, declaration or record reaches, reading a value that is gone: an earlier fitting's space left
34
+ * reading a joint's node that went with its part (WALL_LAMP's shade, 2026-09-27). It was read by nothing before, and it
35
+ * goes with what it read. A node something does reach is left, and the figure is refused as broken.
36
+ */
37
+ export declare function dropDeadDanglers(asset: FigureAsset): void;
38
+ /** Every value a drawn body, a declaration or a record reaches, however far up. */
39
+ export declare function liveRefsOf(asset: FigureAsset): Set<string>;
40
+ //# sourceMappingURL=joint-part-edits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joint-part-edits.d.ts","sourceRoot":"","sources":["../src/joint-part-edits.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAA;AAyB7B;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CA+C3F;AAiCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAkBtF;AAaD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,aAAa,CAwQf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAwBhE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAuCzD;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAuB1D"}
@@ -0,0 +1,488 @@
1
+ /*
2
+ * Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ /*
5
+ * What the part edits (part-edit.ts) do to the joints: a part renamed, copied, or removed with what hangs from it.
6
+ */
7
+ import { compileFigureGraph } from "./graph.js";
8
+ import { AXES } from "./words.js";
9
+ import { figureMimicLeadersOf, followedTermsOf } from "./authoring-types.js";
10
+ import { fail, nodeById, writerOf, partOf, namer, constantOf, stableDimension, ownInput, dropIfUnused, round6, stringsIn } from "./authoring-nodes.js";
11
+ import { eulerXYZ } from "./authoring-geometry.js";
12
+ import { stateIdOf, stripJoint, jointMeasures, mapMeasureSources, rewriteJoints } from "./joint-writing.js";
13
+ /*
14
+ * A part edit that renames or removes a part reads the joint records first: the records are the canon and the joint
15
+ * nodes are made from them (ADR-0093). Renaming or deleting a part in the graph alone left records naming a part that
16
+ * was no longer there, and the author could not save (TARGET_ABSENT on joints.*, 2026-09-25).
17
+ */
18
+ /**
19
+ * The records follow a part's new name -- as a joint's parent, as its child, and as the joint a follower follows -- and
20
+ * the nodes are made again from them. Nothing is frozen: a length that followed the part still follows it, and the
21
+ * stored design inputs keep their values under the carried names, so the figure stands as it did at every size.
22
+ */
23
+ export function renameFigurePartInJoints(asset, from, to) {
24
+ const joints = asset.joints;
25
+ if (!joints?.length)
26
+ return;
27
+ const name = (id) => (id === from ? to : id);
28
+ /*
29
+ A joint's nodes carry its parent's name (`leg-2.on.top.*`); what reads them -- the space declared from the parts,
30
+ a size that follows a fastened place -- follows them to the new name (빈틈 H, 2026-09-25).
31
+ */
32
+ const infix = `.on.${from}.`;
33
+ const carried = (value) => typeof value === 'string'
34
+ ? value.includes(infix)
35
+ ? value.split(infix).join(`.on.${to}.`)
36
+ : value
37
+ : Array.isArray(value)
38
+ ? value.map(carried)
39
+ : value && typeof value === 'object'
40
+ ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, carried(v)]))
41
+ : value;
42
+ const out = asset;
43
+ out.document = carried(out.document);
44
+ if (out.occupancy)
45
+ out.occupancy = carried(out.occupancy);
46
+ out.designInputs = Object.fromEntries(Object.entries(out.designInputs ?? {}).map(([k, v]) => [carried(k), v]));
47
+ /* A length that follows the part's measure follows it under its new name, in each term of a sum too. */
48
+ const source = (s) => s?.of === 'part' ? { ...s, part: name(s.part) } : s;
49
+ asset.joints = joints.map(was => {
50
+ const j = structuredClone(was);
51
+ for (const { get, set } of jointMeasures(j))
52
+ set(mapMeasureSources(get(), source));
53
+ return {
54
+ ...j,
55
+ id: name(j.id),
56
+ body0: 'part' in j.body0 ? { ...j.body0, part: name(j.body0.part) } : j.body0,
57
+ body1: { ...j.body1, part: name(j.body1.part) },
58
+ ...(j.mimic
59
+ ? {
60
+ mimic: Object.hasOwn(j.mimic, 'sum')
61
+ ? { ...j.mimic, sum: figureMimicLeadersOf(j).map(t => ({ ...t, joint: name(t.joint) })) }
62
+ : { ...j.mimic, joint: name(j.mimic.joint) }
63
+ }
64
+ : {}),
65
+ ...(j.state?.id !== undefined ? { state: { ...j.state, id: name(j.state.id) } } : {})
66
+ };
67
+ });
68
+ rewriteJoints(asset);
69
+ }
70
+ /**
71
+ * What reads a part that is to be taken away, said in the author's words: the space declared from the parts, another
72
+ * part's size or place that follows it. Taking it would leave them reading nothing (빈틈 H, 2026-09-25).
73
+ */
74
+ /** `spaceFittedAgain`: the space is declared again once the part is gone, so its reading the part is no refusal. */
75
+ function refuseIfRead(asset, part, spaceFittedAgain = false) {
76
+ const m = asset.document.model;
77
+ const own = (id) => id === part || id.startsWith(`${part}.`);
78
+ const mine = new Set([
79
+ ...m.nodes
80
+ .filter((n) => own(n.id))
81
+ .flatMap((n) => Object.values(n.outputs)),
82
+ ...m.inputs.filter((i) => own(i.id)).map((i) => i.id),
83
+ ...m.constants.filter((c) => own(c.id)).map((c) => c.id)
84
+ ]);
85
+ const readsOf = (refs) => (n) => [...n.args, ...Object.values(n.params ?? {})].some((r) => typeof r === 'string' && refs.has(r));
86
+ const readers = m.nodes.filter((n) => !own(n.id) && readsOf(mine)(n));
87
+ const space = spaceOnlyNodesOf(asset);
88
+ if (!spaceFittedAgain &&
89
+ (readers.some((n) => space.has(n.id)) || stringsIn(asset.occupancy).some(r => mine.has(r))))
90
+ fail('PART_REFERENCED', part, `${part} is in the space the figure declares; declare the space again, or fit it to the parts, without it first`, { reason: 'in-declared-space', part });
91
+ }
92
+ /**
93
+ * A copied part is fastened as the original is: its own record, the same faces and place, so it is not held by nodes
94
+ * no record makes. A moving joint gets its own control -- a copy is a second thing, not the original's shadow.
95
+ */
96
+ export function copyFigurePartJoint(asset, from, to) {
97
+ const joints = (asset.joints ?? []);
98
+ const j = joints.find(o => o.body1.part === from);
99
+ if (!j)
100
+ return;
101
+ const m = asset.document.model;
102
+ const ids = new Set(joints.map(o => o.id));
103
+ const inputs = new Set(m.inputs.map((i) => i.id));
104
+ const fresh = (base, taken) => {
105
+ let id = base;
106
+ for (let n = 2; taken.has(id); n++)
107
+ id = `${base}-${n}`;
108
+ return id;
109
+ };
110
+ const id = fresh(j.id === from ? to : `${j.id}-copy`, ids);
111
+ const copy = { ...structuredClone(j), id, body1: { ...j.body1, part: to } };
112
+ if (j.type !== 'fixed' && !j.mimic)
113
+ copy.state = { ...(j.state ?? {}), id: fresh(j.state?.id ? `${j.state.id}-copy` : id, inputs) };
114
+ asset.joints = [...joints, copy];
115
+ rewriteJoints(asset);
116
+ }
117
+ /** The unit a value of this type is written in, as the graph keeps it (base units), or undefined for a pose and the rest. */
118
+ function baseUnitOf(type) {
119
+ const t = JSON.stringify(type);
120
+ if (t === '[1,0,0]')
121
+ return 'mm';
122
+ if (t === '[0,1,0]')
123
+ return 'rad';
124
+ if (t === '[0,0,1]')
125
+ return 's';
126
+ if (t === '[0,0,0]')
127
+ return 'ratio';
128
+ if (t === '{"kind":"count"}')
129
+ return 'count';
130
+ return undefined;
131
+ }
132
+ /**
133
+ * Before a part is taken away (chief architect's ruling 2026-09-27, replacing the refusals of 2026-09-25). What hung
134
+ * from it stays where it stood at rest -- every control at zero -- fastened to nothing: its joint, and the motion and
135
+ * control the joint gave it, go. A part that moved with its joint gets a control of its own, named after the part,
136
+ * over the leader's range put through the multiplier and offset, starting where it stood. A value that followed its
137
+ * size or place becomes the number it is now. One thing is refused, by name: a row laid along it, or hanging in it --
138
+ * a row is made from its record, and a record needs the part (ADR-0093).
139
+ */
140
+ export function releaseFigurePartJoints(asset, part, options = {}) {
141
+ const a = asset;
142
+ const m = a.document.model;
143
+ const notice = { released: [], fixed: [], controls: [] };
144
+ refuseIfRead(a, part, options.spaceFittedAgain);
145
+ let joints = (a.joints ?? []);
146
+ const rows = joints.filter(j => 'part' in j.body0 && j.body0.part === part && j.repeat).map(j => j.body1.part);
147
+ if (rows.length)
148
+ fail('PART_ROW', part, `${rows.join(', ')} ${rows.length > 1 ? 'are rows' : 'is a row'} laid along ${part}; fasten ${rows.length > 1 ? 'them' : 'it'} to another part, or make ${rows.length > 1 ? 'them' : 'it'} one part, first`, { reason: 'row-along', part, rows });
149
+ const own = joints.find(j => j.body1.part === part);
150
+ const children = joints.filter(j => 'part' in j.body0 && j.body0.part === part);
151
+ if (own?.repeat && children.length)
152
+ fail('PART_ROW', part, `${children.map(j => j.body1.part).join(', ')} ${children.length > 1 ? 'hang' : 'hangs'} in the row ${part}, on every copy; take ${children.length > 1 ? 'them' : 'it'} off first`, {
153
+ reason: 'hangs-in-row',
154
+ part,
155
+ parts: children.map(j => j.body1.part)
156
+ });
157
+ /*
158
+ Every number frozen below -- a follower's range and start, a measure that followed the part, a value read from it --
159
+ is evaluated at the asset's stored design inputs and state defaults: the figure as it is authored, so its placement
160
+ there is what it was. At another instance size the frozen numbers no longer follow.
161
+ */
162
+ const inputs = (over = {}) => ({ ...a.designInputs, ...a.stateDefaults, ...over });
163
+ const controls = m.inputs.filter((i) => i.role === 'state');
164
+ const rest = Object.fromEntries(controls.map((i) => [i.id, Math.min(i.max, Math.max(i.min, 0))]));
165
+ const graph = compileFigureGraph(m);
166
+ const atRest = graph.evaluate(inputs(rest)).values;
167
+ const now = graph.evaluate(inputs()).values;
168
+ /* A part moving with a joint that goes: its own control, over what the leader's distance or angle came to. */
169
+ const going = new Set([...(own ? [own.id] : []), ...children.map(j => j.id)]);
170
+ /* A follower has no control of its own, so its own record's nominal id is not taken. */
171
+ const taken = new Set([...m.inputs.map((i) => i.id), ...joints.filter(j => !j.mimic).map(stateIdOf)]);
172
+ for (const f of joints.filter(o => figureMimicLeadersOf(o).some(t => going.has(t.joint)) && !going.has(o.id))) {
173
+ /*
174
+ A sum whose leaders all go is a control of its own over what the sum came to, as one leader's follower is. One
175
+ whose other leaders stay would follow them and stand still by the rest -- what it should then be is not said, so
176
+ it is refused by name rather than made up.
177
+ */
178
+ const staying = figureMimicLeadersOf(f).filter(t => !going.has(t.joint));
179
+ if (staying.length)
180
+ fail('PART_FOLLOWED', part, `${f.id} follows ${staying.map(t => t.joint).join(', ')} as well as a joint that goes with ${part}; make ${f.id} follow only the joints that stay first`);
181
+ const terms = figureMimicLeadersOf(f).map(t => {
182
+ const leader = joints.find(o => o.id === t.joint);
183
+ const quantity = nodeById(m, `${leader.body1.part}.motion`)?.args[3] ?? stateIdOf(leader);
184
+ const state = m.inputs.find((i) => i.id === stateIdOf(leader));
185
+ const distance = (value) => Number(graph.evaluate(inputs({ [stateIdOf(leader)]: value })).values[quantity]);
186
+ const [a, b] = [distance(state?.min ?? 0) * t.multiplier, distance(state?.max ?? 1) * t.multiplier];
187
+ return { lo: Math.min(a, b), hi: Math.max(a, b), now: Number(now[quantity]) * t.multiplier };
188
+ });
189
+ const turn = f.type === 'revolute';
190
+ const toUnit = (base) => round6(turn ? (base * 180) / Math.PI : base);
191
+ const offset = (f.mimic.offset ?? 0) * (turn ? Math.PI / 180 : 1);
192
+ /*
193
+ Each leader moves on its own control, so the sum's least and greatest are each term's, added (a negative multiplier
194
+ swaps a term's ends, above). When leaders are driven by one upstream input -- not the case today, a leader leads
195
+ itself -- the summed range is conservative: it holds every value the sum can take, not the exact reach.
196
+ */
197
+ const total = (pick) => toUnit(terms.reduce((sum, t, i) => (i ? sum + pick(t) : pick(t)), 0) + offset);
198
+ const [lo, hi] = [total(t => t.lo), total(t => t.hi)];
199
+ let id = f.body1.part;
200
+ for (let n = 2; taken.has(id); n++)
201
+ id = `${f.body1.part}-${n}`;
202
+ taken.add(id);
203
+ const start = Math.min(hi, Math.max(lo, total(t => t.now)));
204
+ const { mimic: _led, travel: _share, ...alone } = f;
205
+ joints = joints.map(o => o.id === f.id ? { ...alone, lowerLimit: lo, upperLimit: hi, state: { ...(f.state ?? {}), id, start } } : o);
206
+ notice.controls.push({ part: f.body1.part, control: id, min: lo, max: hi });
207
+ }
208
+ /*
209
+ A value in a record that followed the part: the number it is now -- at the stored design inputs (above). In a sum, each term that reads the part becomes
210
+ its number, added to the margin, and the terms that read something else still follow; no term left, the number.
211
+ */
212
+ const freezeMeasure = (measure, where) => {
213
+ const f = followedTermsOf(measure);
214
+ if (!f || !f.terms.some(t => t.from?.of === 'part' && t.from.part === part))
215
+ return measure;
216
+ const probe = structuredClone(m);
217
+ let frozen = 0;
218
+ const rest = [];
219
+ for (const t of f.terms) {
220
+ if (!(t.from.of === 'part' && t.from.part === part)) {
221
+ rest.push(t);
222
+ continue;
223
+ }
224
+ const ref = stableDimension(probe, part, t.from.axis, where);
225
+ frozen += Number(compileFigureGraph(probe).evaluate(inputs()).values[ref]) * (t.times ?? 1);
226
+ }
227
+ if (!rest.length) {
228
+ const value = round6(frozen + f.plus);
229
+ notice.fixed.push({ part: where, value, unit: 'mm' });
230
+ return value;
231
+ }
232
+ notice.fixed.push({ part: where, value: round6(frozen), unit: 'mm' });
233
+ return { sum: rest, ...(round6(frozen + f.plus) ? { plus: round6(frozen + f.plus) } : {}) };
234
+ };
235
+ joints = joints.map(j => {
236
+ if (j.id === own?.id || children.includes(j))
237
+ return j;
238
+ const out = structuredClone(j);
239
+ for (const { get, set } of jointMeasures(out)) {
240
+ const was = get();
241
+ const fixed = freezeMeasure(was, j.body1.part);
242
+ if (fixed !== was)
243
+ set(fixed);
244
+ }
245
+ return out;
246
+ });
247
+ /*
248
+ What reads a value that goes -- where the part, or a part let go of, is fastened (its joint's nodes), or where it is
249
+ drawn -- and is not the space (fitted again, or refused above): the number it is now. Values the part shares with
250
+ another (a shape two placements draw) stay, as before; they do not go.
251
+ */
252
+ const jointNodes = (p) => (n) => n.id.startsWith(`${p}.on.`) ||
253
+ n.id.startsWith(`${p}.row`) ||
254
+ [
255
+ `${p}.seat.rigid`,
256
+ `${p}.chain`,
257
+ `${p}.world`,
258
+ `${p}.turned`,
259
+ `${p}.motion`,
260
+ `${p}.layout`,
261
+ `${p}.assembly`,
262
+ `${p}.repeat`
263
+ ].includes(n.id);
264
+ const leaving = [part, ...children.map(j => j.body1.part)];
265
+ const goingNodes = new Set(m.nodes.filter(n => leaving.some(p => jointNodes(p)(n))).map(n => n.id));
266
+ const goingRefs = new Set(m.nodes
267
+ .filter(n => goingNodes.has(n.id))
268
+ .flatMap(n => Object.values(n.outputs)));
269
+ const types = graph.outputTypes;
270
+ const live = liveRefsOf(a);
271
+ const space = spaceOnlyNodesOf(a);
272
+ const partOf = (id) => String(id).split('.')[0];
273
+ for (const n of m.nodes) {
274
+ /* The parts leaving are released below; a row's copies are gathered again from the records. */
275
+ if (goingNodes.has(n.id) ||
276
+ leaving.includes(partOf(n.id)) ||
277
+ n.op === 'assembly@1' ||
278
+ space.has(n.id) ||
279
+ !Object.values(n.outputs).some(o => live.has(o)))
280
+ continue;
281
+ /* A joint's own nodes are made again from its record, from where its parent stands then. */
282
+ if (joints.some(j => jointNodes(j.body1.part)(n)))
283
+ continue;
284
+ n.args = n.args.map((ref, i) => {
285
+ if (!goingRefs.has(ref))
286
+ return ref;
287
+ const unit = baseUnitOf(types[ref]);
288
+ const value = now[ref];
289
+ if (typeof value === 'number' && unit) {
290
+ notice.fixed.push({
291
+ part: partOf(n.id),
292
+ value: round6(unit === 'rad' ? (value * 180) / Math.PI : value),
293
+ unit: unit === 'rad' ? 'deg' : unit
294
+ });
295
+ return constantOf(m, unit, round6(value) + 0, 'fixed');
296
+ }
297
+ const pose = value;
298
+ const type = types[ref];
299
+ if (pose?.r && pose.t && type?.kind === 'transform') {
300
+ const id = namer(m, `${n.id}.fixed`)(`pose.${i}`);
301
+ const [rx, ry, rz] = eulerXYZ(pose.r);
302
+ m.nodes.push({
303
+ id,
304
+ op: 'rigid@1',
305
+ args: [
306
+ ...pose.t.map(v => constantOf(m, 'mm', round6(v) + 0, 'fixed')),
307
+ ...[rx, ry, rz].map(v => constantOf(m, 'rad', round6((v * Math.PI) / 180), 'fixed'))
308
+ ],
309
+ outputs: { pose: `${id}.value` },
310
+ params: { from: type.from, to: type.to }
311
+ });
312
+ notice.fixed.push({ part: partOf(n.id), value: 0, unit: 'pose' });
313
+ return `${id}.value`;
314
+ }
315
+ fail('PART_REFERENCED', part, `${partOf(n.id)} reads ${part}'s ${ref}, which cannot be written as a number`);
316
+ });
317
+ }
318
+ /* What hung from it: where it stood at rest, fastened to nothing. */
319
+ const standing = new Map(children.map(j => [j.body1.part, atRest[nodeById(m, j.body1.part).args[1]]]));
320
+ a.joints = joints.filter(j => j.id !== own?.id && !children.includes(j));
321
+ if (!a.joints.length)
322
+ delete a.joints;
323
+ for (const j of children) {
324
+ const child = j.body1.part;
325
+ const control = j.type !== 'fixed' && !j.mimic ? stateIdOf(j) : undefined;
326
+ stripJoint(a, j);
327
+ const at = standing.get(child);
328
+ const pose = nodeById(m, `${child}.pose`);
329
+ const turn = eulerXYZ(at.r);
330
+ const values = [...at.t.map(v => round6(v) + 0), ...turn];
331
+ const old = pose.args.slice(0, 6);
332
+ pose.args = [
333
+ ...AXES.map(axis => `${child}.position.${axis}`),
334
+ ...AXES.map(axis => `${child}.rotation.${axis}`)
335
+ ].map((id, i) => {
336
+ if (!m.inputs.some((n) => n.id === id))
337
+ m.inputs.push({ id, unit: i < 3 ? 'mm' : 'deg', min: -Number.MAX_VALUE, max: Number.MAX_VALUE, role: 'design' });
338
+ a.designInputs[id] = values[i];
339
+ return id;
340
+ });
341
+ for (const ref of old)
342
+ if (!pose.args.includes(ref))
343
+ dropIfUnused(a, ref, ownInput(m, child, ref) ? ref : undefined);
344
+ notice.released.push({ part: child, ...(control ? { control } : {}) });
345
+ }
346
+ /*
347
+ A control goes with its joint once nothing reads it -- read only after every part is let go of: a lamp and the shade
348
+ that followed it, both released, left the lamp's control behind while the shade still read it (2026-09-27).
349
+ */
350
+ const readAnywhere = (id) => m.nodes.some((n) => n.args.includes(id) || stringsIn(n.params).includes(id)) ||
351
+ stringsIn(a.occupancy).includes(id) ||
352
+ stringsIn(a.document.capabilities).includes(id);
353
+ for (const r of notice.released) {
354
+ if (!r.control)
355
+ continue;
356
+ if (readAnywhere(r.control)) {
357
+ delete r.control;
358
+ continue;
359
+ }
360
+ const id = r.control;
361
+ m.inputs = m.inputs.filter((i) => i.id !== id);
362
+ delete a.stateDefaults[id];
363
+ delete a.designInputs[id];
364
+ /* Its clip and its label go with it, as a motion's do (removeMotion). */
365
+ if (a.drivers)
366
+ a.drivers = a.drivers.filter((d) => d.state !== id);
367
+ if (a.drivers && !a.drivers.length)
368
+ delete a.drivers;
369
+ if (a.stateInputs?.[id]) {
370
+ const { [id]: _gone, ...rest } = a.stateInputs;
371
+ if (Object.keys(rest).length)
372
+ a.stateInputs = rest;
373
+ else
374
+ delete a.stateInputs;
375
+ }
376
+ }
377
+ if (own)
378
+ stripJoint(a, own);
379
+ dropDeadDanglers(a);
380
+ if (a.joints?.length)
381
+ rewriteJoints(a);
382
+ return notice;
383
+ }
384
+ /**
385
+ * The nodes that make the declared space and nothing else: reached from what \`occupancy\` names, not from any drawn
386
+ * body, record or binding. Named by what they do, not by their names -- an older fitting named them \`occ.*\`
387
+ * (FORKLIFT), a still older one left some the declaration no longer reaches (WALL_LAMP), and a part's own chain the
388
+ * space also reads is the part's (2026-09-27).
389
+ */
390
+ export function spaceOnlyNodesOf(asset) {
391
+ const a = asset;
392
+ const m = a.document.model;
393
+ const reach = (from) => {
394
+ const seen = new Set();
395
+ for (const pending = [...from]; pending.length;) {
396
+ const writer = writerOf(m, pending.pop());
397
+ if (!writer || seen.has(writer.id))
398
+ continue;
399
+ seen.add(writer.id);
400
+ pending.push(...writer.args, ...stringsIn(writer.params));
401
+ }
402
+ return seen;
403
+ };
404
+ const drawn = reach([
405
+ ...m.nodes
406
+ .filter((n) => n.op === 'place@1' || n.op === 'repeat@1')
407
+ .flatMap((n) => Object.values(n.outputs)),
408
+ ...stringsIn(a.appearance),
409
+ ...stringsIn(a.document.capabilities),
410
+ ...stringsIn(a.drivers),
411
+ ...stringsIn(a.publicInputs),
412
+ ...stringsIn(a.joints)
413
+ ]);
414
+ return new Set([...reach(stringsIn(a.occupancy))].filter(id => !drawn.has(id)));
415
+ }
416
+ /**
417
+ * A node no drawn body, declaration or record reaches, reading a value that is gone: an earlier fitting's space left
418
+ * reading a joint's node that went with its part (WALL_LAMP's shade, 2026-09-27). It was read by nothing before, and it
419
+ * goes with what it read. A node something does reach is left, and the figure is refused as broken.
420
+ */
421
+ export function dropDeadDanglers(asset) {
422
+ const model = asset.document.model;
423
+ const strings = (v) => typeof v === 'string'
424
+ ? [v]
425
+ : Array.isArray(v)
426
+ ? v.flatMap(strings)
427
+ : v && typeof v === 'object'
428
+ ? Object.values(v).flatMap(strings)
429
+ : [];
430
+ for (;;) {
431
+ const written = new Set([
432
+ ...model.nodes.flatMap(n => Object.values(n.outputs)),
433
+ ...model.inputs.map(i => i.id),
434
+ ...model.constants.map(c => c.id)
435
+ ]);
436
+ const live = new Set();
437
+ const pending = [
438
+ ...model.nodes.filter(n => n.op === 'place@1' || n.op === 'repeat@1').flatMap(n => Object.values(n.outputs)),
439
+ ...strings(asset.appearance),
440
+ ...strings(asset.occupancy),
441
+ ...strings(asset.document.capabilities),
442
+ ...strings(asset.drivers),
443
+ ...strings(asset.publicInputs),
444
+ ...strings(asset.joints)
445
+ ];
446
+ while (pending.length) {
447
+ const ref = pending.pop();
448
+ if (live.has(ref))
449
+ continue;
450
+ live.add(ref);
451
+ const writer = model.nodes.find(n => Object.values(n.outputs).includes(ref));
452
+ if (writer)
453
+ pending.push(...writer.args, ...strings(writer.params));
454
+ }
455
+ const dead = model.nodes.filter(n => n.args.some(a => !written.has(a)) && !Object.values(n.outputs).some(o => live.has(o)));
456
+ if (!dead.length)
457
+ return;
458
+ model.nodes = model.nodes.filter(n => !dead.includes(n));
459
+ }
460
+ }
461
+ /** Every value a drawn body, a declaration or a record reaches, however far up. */
462
+ export function liveRefsOf(asset) {
463
+ const a = asset;
464
+ const m = a.document.model;
465
+ const live = new Set();
466
+ const pending = [
467
+ ...m.nodes
468
+ .filter((n) => n.op === 'place@1' || n.op === 'repeat@1')
469
+ .flatMap((n) => Object.values(n.outputs)),
470
+ ...stringsIn(a.appearance),
471
+ ...stringsIn(a.occupancy),
472
+ ...stringsIn(a.document.capabilities),
473
+ ...stringsIn(a.drivers),
474
+ ...stringsIn(a.publicInputs),
475
+ ...stringsIn(a.joints)
476
+ ];
477
+ while (pending.length) {
478
+ const ref = pending.pop();
479
+ if (live.has(ref))
480
+ continue;
481
+ live.add(ref);
482
+ const writer = writerOf(m, ref);
483
+ if (writer)
484
+ pending.push(...writer.args, ...stringsIn(writer.params));
485
+ }
486
+ return live;
487
+ }
488
+ //# sourceMappingURL=joint-part-edits.js.map