@pascal-app/nodes 1.0.5 → 1.0.7

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 (566) hide show
  1. package/README.md +1 -0
  2. package/dist/beam/actions/move-endpoint.d.ts +24 -0
  3. package/dist/beam/actions/move-endpoint.d.ts.map +1 -0
  4. package/dist/beam/actions/move-endpoint.js +54 -0
  5. package/dist/beam/definition.d.ts +14 -0
  6. package/dist/beam/definition.d.ts.map +1 -0
  7. package/dist/beam/definition.js +173 -0
  8. package/dist/beam/draft-settings.d.ts +17 -0
  9. package/dist/beam/draft-settings.d.ts.map +1 -0
  10. package/dist/beam/draft-settings.js +81 -0
  11. package/dist/beam/drafting.d.ts +35 -0
  12. package/dist/beam/drafting.d.ts.map +1 -0
  13. package/dist/beam/drafting.js +103 -0
  14. package/dist/beam/floorplan-affordances.d.ts +8 -0
  15. package/dist/beam/floorplan-affordances.d.ts.map +1 -0
  16. package/dist/beam/floorplan-affordances.js +40 -0
  17. package/dist/beam/floorplan-move.d.ts +11 -0
  18. package/dist/beam/floorplan-move.d.ts.map +1 -0
  19. package/dist/beam/floorplan-move.js +54 -0
  20. package/dist/beam/floorplan.d.ts +11 -0
  21. package/dist/beam/floorplan.d.ts.map +1 -0
  22. package/dist/beam/floorplan.js +91 -0
  23. package/dist/beam/geometry.d.ts +19 -0
  24. package/dist/beam/geometry.d.ts.map +1 -0
  25. package/dist/beam/geometry.js +63 -0
  26. package/dist/beam/index.d.ts +3 -0
  27. package/dist/beam/index.d.ts.map +1 -0
  28. package/dist/beam/index.js +2 -0
  29. package/dist/beam/move-endpoint-tool.d.ts +21 -0
  30. package/dist/beam/move-endpoint-tool.d.ts.map +1 -0
  31. package/dist/beam/move-endpoint-tool.js +49 -0
  32. package/dist/beam/move-tool.d.ts +12 -0
  33. package/dist/beam/move-tool.d.ts.map +1 -0
  34. package/dist/beam/move-tool.js +114 -0
  35. package/dist/beam/panel-model.d.ts +28 -0
  36. package/dist/beam/panel-model.d.ts.map +1 -0
  37. package/dist/beam/panel-model.js +123 -0
  38. package/dist/beam/panel.d.ts +13 -0
  39. package/dist/beam/panel.d.ts.map +1 -0
  40. package/dist/beam/panel.js +107 -0
  41. package/dist/beam/parametrics.d.ts +3 -0
  42. package/dist/beam/parametrics.d.ts.map +1 -0
  43. package/dist/beam/parametrics.js +4 -0
  44. package/dist/beam/renderer.d.ts +13 -0
  45. package/dist/beam/renderer.d.ts.map +1 -0
  46. package/dist/beam/renderer.js +36 -0
  47. package/dist/beam/schema.d.ts +2 -0
  48. package/dist/beam/schema.d.ts.map +1 -0
  49. package/dist/beam/schema.js +1 -0
  50. package/dist/beam/tool.d.ts +13 -0
  51. package/dist/beam/tool.d.ts.map +1 -0
  52. package/dist/beam/tool.js +152 -0
  53. package/dist/box-vent/panel.d.ts.map +1 -1
  54. package/dist/box-vent/panel.js +8 -7
  55. package/dist/cabinet/batchable.d.ts +10 -0
  56. package/dist/cabinet/batchable.d.ts.map +1 -0
  57. package/dist/cabinet/batchable.js +12 -0
  58. package/dist/cabinet/compartment-card.d.ts.map +1 -1
  59. package/dist/cabinet/compartment-card.js +142 -46
  60. package/dist/cabinet/countertop-layout.d.ts +5 -0
  61. package/dist/cabinet/countertop-layout.d.ts.map +1 -1
  62. package/dist/cabinet/definition.d.ts.map +1 -1
  63. package/dist/cabinet/definition.js +3 -0
  64. package/dist/cabinet/dimension-input.d.ts +6 -0
  65. package/dist/cabinet/dimension-input.d.ts.map +1 -0
  66. package/dist/cabinet/dimension-input.js +8 -0
  67. package/dist/cabinet/essential-controls.d.ts.map +1 -1
  68. package/dist/cabinet/essential-controls.js +82 -17
  69. package/dist/cabinet/index.d.ts +1 -1
  70. package/dist/cabinet/index.d.ts.map +1 -1
  71. package/dist/cabinet/index.js +1 -1
  72. package/dist/cabinet/kitchen-catalog.d.ts +17 -4
  73. package/dist/cabinet/kitchen-catalog.d.ts.map +1 -1
  74. package/dist/cabinet/kitchen-catalog.js +45 -7
  75. package/dist/cabinet/kitchen-collection.d.ts.map +1 -1
  76. package/dist/cabinet/kitchen-collection.js +21 -5
  77. package/dist/cabinet/kitchen-module-actions.d.ts.map +1 -1
  78. package/dist/cabinet/kitchen-module-actions.js +107 -14
  79. package/dist/cabinet/neighbor-placement.d.ts +10 -0
  80. package/dist/cabinet/neighbor-placement.d.ts.map +1 -1
  81. package/dist/cabinet/panel.d.ts.map +1 -1
  82. package/dist/cabinet/panel.js +127 -50
  83. package/dist/cabinet/run-finishing.d.ts +5 -0
  84. package/dist/cabinet/run-finishing.d.ts.map +1 -1
  85. package/dist/cabinet/run-ops.d.ts +5 -0
  86. package/dist/cabinet/run-ops.d.ts.map +1 -1
  87. package/dist/cabinet/run-panel.d.ts.map +1 -1
  88. package/dist/cabinet/run-panel.js +203 -52
  89. package/dist/cabinet/tool.d.ts.map +1 -1
  90. package/dist/cabinet/tool.js +8 -5
  91. package/dist/ceiling/build-up-section.d.ts +7 -0
  92. package/dist/ceiling/build-up-section.d.ts.map +1 -0
  93. package/dist/ceiling/build-up-section.js +57 -0
  94. package/dist/ceiling/definition.d.ts.map +1 -1
  95. package/dist/ceiling/definition.js +3 -1
  96. package/dist/ceiling/floorplan-affordances.d.ts +112 -0
  97. package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
  98. package/dist/ceiling/materials.d.ts +5 -0
  99. package/dist/ceiling/materials.d.ts.map +1 -1
  100. package/dist/ceiling/materials.js +17 -0
  101. package/dist/ceiling/panel-model.d.ts +13 -0
  102. package/dist/ceiling/panel-model.d.ts.map +1 -0
  103. package/dist/ceiling/panel-model.js +49 -0
  104. package/dist/ceiling/panel.d.ts.map +1 -1
  105. package/dist/ceiling/panel.js +82 -18
  106. package/dist/ceiling/renderer.d.ts.map +1 -1
  107. package/dist/ceiling/renderer.js +10 -4
  108. package/dist/ceiling/tool.d.ts.map +1 -1
  109. package/dist/ceiling/tool.js +24 -4
  110. package/dist/chimney/panel.d.ts.map +1 -1
  111. package/dist/chimney/panel.js +113 -41
  112. package/dist/column/definition.d.ts.map +1 -1
  113. package/dist/column/definition.js +3 -0
  114. package/dist/column/floorplan.d.ts.map +1 -1
  115. package/dist/column/floorplan.js +17 -0
  116. package/dist/column/hosted-resize.d.ts +28 -1
  117. package/dist/column/hosted-resize.d.ts.map +1 -1
  118. package/dist/column/panel.d.ts.map +1 -1
  119. package/dist/column/panel.js +125 -37
  120. package/dist/column/post-options.d.ts +10 -0
  121. package/dist/column/post-options.d.ts.map +1 -0
  122. package/dist/column/post-options.js +71 -0
  123. package/dist/column/post-placement.d.ts +78 -0
  124. package/dist/column/post-placement.d.ts.map +1 -0
  125. package/dist/column/post-placement.js +157 -0
  126. package/dist/column/post-section.d.ts +17 -0
  127. package/dist/column/post-section.d.ts.map +1 -0
  128. package/dist/column/post-section.js +95 -0
  129. package/dist/column/post-tool.d.ts +11 -0
  130. package/dist/column/post-tool.d.ts.map +1 -0
  131. package/dist/column/post-tool.js +94 -0
  132. package/dist/column/tool.d.ts +3 -10
  133. package/dist/column/tool.d.ts.map +1 -1
  134. package/dist/column/tool.js +13 -1
  135. package/dist/cupola/panel.d.ts.map +1 -1
  136. package/dist/cupola/panel.js +14 -7
  137. package/dist/door/actions.d.ts +7 -0
  138. package/dist/door/actions.d.ts.map +1 -0
  139. package/dist/door/actions.js +32 -0
  140. package/dist/door/contextual-dimensions.d.ts.map +1 -1
  141. package/dist/door/contextual-dimensions.js +11 -1
  142. package/dist/door/definition.d.ts.map +1 -1
  143. package/dist/door/definition.js +34 -7
  144. package/dist/door/floorplan-affordances.d.ts.map +1 -1
  145. package/dist/door/floorplan-affordances.js +5 -2
  146. package/dist/door/floorplan-move.d.ts.map +1 -1
  147. package/dist/door/floorplan-move.js +28 -6
  148. package/dist/door/floorplan.d.ts +2 -0
  149. package/dist/door/floorplan.d.ts.map +1 -1
  150. package/dist/door/floorplan.js +89 -16
  151. package/dist/door/move-tool.d.ts.map +1 -1
  152. package/dist/door/move-tool.js +60 -16
  153. package/dist/door/paint.d.ts +2 -7
  154. package/dist/door/paint.d.ts.map +1 -1
  155. package/dist/door/paint.js +26 -2
  156. package/dist/door/panel.d.ts.map +1 -1
  157. package/dist/door/panel.js +242 -90
  158. package/dist/door/parametrics.js +1 -1
  159. package/dist/door/placement.d.ts.map +1 -1
  160. package/dist/door/placement.js +9 -2
  161. package/dist/door/swing.d.ts +22 -0
  162. package/dist/door/swing.d.ts.map +1 -0
  163. package/dist/door/swing.js +36 -0
  164. package/dist/door/tool.d.ts.map +1 -1
  165. package/dist/door/tool.js +76 -29
  166. package/dist/dormer/panel-actions-section.d.ts.map +1 -1
  167. package/dist/dormer/panel-actions-section.js +3 -1
  168. package/dist/dormer/panel-position-section.d.ts.map +1 -1
  169. package/dist/dormer/panel-position-section.js +4 -3
  170. package/dist/dormer/panel-windows-section.d.ts.map +1 -1
  171. package/dist/dormer/panel-windows-section.js +38 -1
  172. package/dist/dormer/panel.d.ts.map +1 -1
  173. package/dist/dormer/panel.js +24 -18
  174. package/dist/downspout/inspector-editors.d.ts.map +1 -1
  175. package/dist/downspout/inspector-editors.js +3 -2
  176. package/dist/duct-fitting/inspector-editors.d.ts.map +1 -1
  177. package/dist/duct-fitting/inspector-editors.js +6 -1
  178. package/dist/duct-fitting/tool.d.ts.map +1 -1
  179. package/dist/duct-fitting/tool.js +11 -2
  180. package/dist/duct-terminal/tool.d.ts.map +1 -1
  181. package/dist/duct-terminal/tool.js +11 -2
  182. package/dist/elevator/panel.d.ts.map +1 -1
  183. package/dist/elevator/panel.js +41 -18
  184. package/dist/eyebrow-vent/panel.d.ts.map +1 -1
  185. package/dist/eyebrow-vent/panel.js +16 -6
  186. package/dist/fence/drafting.d.ts +2 -3
  187. package/dist/fence/drafting.d.ts.map +1 -1
  188. package/dist/fence/drafting.js +2 -3
  189. package/dist/fence/inspector-editors.d.ts.map +1 -1
  190. package/dist/fence/inspector-editors.js +64 -21
  191. package/dist/fence/move-endpoint-tool.d.ts.map +1 -1
  192. package/dist/fence/move-endpoint-tool.js +11 -2
  193. package/dist/fence/system.d.ts.map +1 -1
  194. package/dist/fence/system.js +13 -0
  195. package/dist/fence-feature/actions.d.ts.map +1 -1
  196. package/dist/fence-feature/actions.js +5 -2
  197. package/dist/fence-feature/inspector.d.ts.map +1 -1
  198. package/dist/fence-feature/inspector.js +150 -34
  199. package/dist/fence-feature/move-session.d.ts +1 -1
  200. package/dist/floor-opening/floorplan.d.ts +29 -6
  201. package/dist/floor-opening/floorplan.d.ts.map +1 -1
  202. package/dist/floor-opening/floorplan.js +172 -14
  203. package/dist/gutter/downspouts-panel.d.ts.map +1 -1
  204. package/dist/gutter/downspouts-panel.js +14 -2
  205. package/dist/hvac-equipment/tool.d.ts.map +1 -1
  206. package/dist/hvac-equipment/tool.js +3 -2
  207. package/dist/i18n/definition-messages.d.ts +5 -0
  208. package/dist/i18n/definition-messages.d.ts.map +1 -0
  209. package/dist/i18n/definition-messages.js +771 -0
  210. package/dist/index.d.ts +4 -1
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +6 -1
  213. package/dist/item/authored-params.d.ts.map +1 -1
  214. package/dist/item/authored-params.js +19 -4
  215. package/dist/item/floorplan.d.ts +1 -1
  216. package/dist/item/floorplan.d.ts.map +1 -1
  217. package/dist/item/panel.d.ts.map +1 -1
  218. package/dist/item/panel.js +9 -7
  219. package/dist/liquid-line/tool.d.ts.map +1 -1
  220. package/dist/liquid-line/tool.js +10 -3
  221. package/dist/measurement/tool.d.ts +1 -1
  222. package/dist/measurement/tool.d.ts.map +1 -1
  223. package/dist/measurement/tool.js +8 -8
  224. package/dist/pipe-fitting/tool.d.ts.map +1 -1
  225. package/dist/pipe-fitting/tool.js +3 -2
  226. package/dist/pipe-trap/tool.d.ts.map +1 -1
  227. package/dist/pipe-trap/tool.js +7 -2
  228. package/dist/procedural-item/renderer.d.ts.map +1 -1
  229. package/dist/procedural-item/renderer.js +8 -1
  230. package/dist/ridge-vent/panel.d.ts.map +1 -1
  231. package/dist/ridge-vent/panel.js +22 -9
  232. package/dist/roof/barrel-panel.d.ts.map +1 -1
  233. package/dist/roof/barrel-panel.js +7 -3
  234. package/dist/roof/definition.d.ts.map +1 -1
  235. package/dist/roof/definition.js +33 -3
  236. package/dist/roof/floorplan-overrides.d.ts +22 -0
  237. package/dist/roof/floorplan-overrides.d.ts.map +1 -0
  238. package/dist/roof/floorplan-overrides.js +46 -0
  239. package/dist/roof/floorplan-tool.d.ts +9 -0
  240. package/dist/roof/floorplan-tool.d.ts.map +1 -0
  241. package/dist/roof/floorplan-tool.js +168 -0
  242. package/dist/roof/floorplan.d.ts.map +1 -1
  243. package/dist/roof/floorplan.js +131 -41
  244. package/dist/roof/glazing-controls.d.ts +2 -1
  245. package/dist/roof/glazing-controls.d.ts.map +1 -1
  246. package/dist/roof/glazing-controls.js +51 -13
  247. package/dist/roof/glazing-panel-editor.d.ts.map +1 -1
  248. package/dist/roof/glazing-panel-editor.js +40 -13
  249. package/dist/roof/glazing-panel.d.ts.map +1 -1
  250. package/dist/roof/glazing-panel.js +73 -9
  251. package/dist/roof/paint.d.ts +19 -0
  252. package/dist/roof/paint.d.ts.map +1 -0
  253. package/dist/roof/paint.js +158 -0
  254. package/dist/roof/panel.d.ts.map +1 -1
  255. package/dist/roof/panel.js +90 -22
  256. package/dist/roof/renderer.d.ts.map +1 -1
  257. package/dist/roof/renderer.js +13 -2
  258. package/dist/roof/roof-footprint-source.d.ts +17 -0
  259. package/dist/roof/roof-footprint-source.d.ts.map +1 -1
  260. package/dist/roof/roof-footprint-source.js +14 -0
  261. package/dist/roof/roof-footprint.d.ts +36 -2
  262. package/dist/roof/roof-footprint.d.ts.map +1 -1
  263. package/dist/roof/roof-footprint.js +124 -2
  264. package/dist/roof/roof-materials.d.ts.map +1 -1
  265. package/dist/roof/roof-materials.js +10 -1
  266. package/dist/roof/roof-placement-mode.d.ts +0 -2
  267. package/dist/roof/roof-placement-mode.d.ts.map +1 -1
  268. package/dist/roof/roof-placement-mode.js +8 -6
  269. package/dist/roof/roof-plan-creases.d.ts +50 -0
  270. package/dist/roof/roof-plan-creases.d.ts.map +1 -0
  271. package/dist/roof/roof-plan-creases.js +194 -0
  272. package/dist/roof/roof-ridge-mode.d.ts +20 -0
  273. package/dist/roof/roof-ridge-mode.d.ts.map +1 -0
  274. package/dist/roof/roof-ridge-mode.js +16 -0
  275. package/dist/roof/tool.d.ts +17 -4
  276. package/dist/roof/tool.d.ts.map +1 -1
  277. package/dist/roof/tool.js +211 -113
  278. package/dist/roof/wall-catch.d.ts +106 -0
  279. package/dist/roof/wall-catch.d.ts.map +1 -0
  280. package/dist/roof/wall-catch.js +267 -0
  281. package/dist/roof-segment/build-up-section.d.ts +9 -0
  282. package/dist/roof-segment/build-up-section.d.ts.map +1 -0
  283. package/dist/roof-segment/build-up-section.js +191 -0
  284. package/dist/roof-segment/definition.d.ts.map +1 -1
  285. package/dist/roof-segment/definition.js +50 -5
  286. package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
  287. package/dist/roof-segment/floorplan-affordances.js +68 -19
  288. package/dist/roof-segment/floorplan.d.ts.map +1 -1
  289. package/dist/roof-segment/floorplan.js +16 -12
  290. package/dist/roof-segment/paint.d.ts +3 -1
  291. package/dist/roof-segment/paint.d.ts.map +1 -1
  292. package/dist/roof-segment/paint.js +43 -2
  293. package/dist/roof-segment/panel-model.d.ts +23 -0
  294. package/dist/roof-segment/panel-model.d.ts.map +1 -0
  295. package/dist/roof-segment/panel-model.js +64 -0
  296. package/dist/roof-segment/panel.d.ts.map +1 -1
  297. package/dist/roof-segment/panel.js +96 -14
  298. package/dist/roof-segment/parametrics.d.ts.map +1 -1
  299. package/dist/roof-segment/parametrics.js +4 -0
  300. package/dist/roof-segment/renderer.d.ts.map +1 -1
  301. package/dist/roof-segment/renderer.js +26 -5
  302. package/dist/separator/definition.d.ts.map +1 -1
  303. package/dist/separator/definition.js +10 -12
  304. package/dist/separator/floorplan-affordances.d.ts +9 -0
  305. package/dist/separator/floorplan-affordances.d.ts.map +1 -0
  306. package/dist/separator/floorplan-affordances.js +23 -0
  307. package/dist/separator/floorplan.d.ts +9 -0
  308. package/dist/separator/floorplan.d.ts.map +1 -0
  309. package/dist/separator/floorplan.js +54 -0
  310. package/dist/separator/renderer.d.ts +4 -0
  311. package/dist/separator/renderer.d.ts.map +1 -1
  312. package/dist/separator/renderer.js +21 -6
  313. package/dist/separator/selection.d.ts +10 -0
  314. package/dist/separator/selection.d.ts.map +1 -0
  315. package/dist/separator/selection.js +35 -0
  316. package/dist/shared/build-up-controls.d.ts +88 -0
  317. package/dist/shared/build-up-controls.d.ts.map +1 -0
  318. package/dist/shared/build-up-controls.js +139 -0
  319. package/dist/shared/curtain-opening-limits.d.ts.map +1 -1
  320. package/dist/shared/curtain-opening-limits.js +44 -14
  321. package/dist/shared/item-interaction-actions.d.ts.map +1 -1
  322. package/dist/shared/item-interaction-actions.js +11 -2
  323. package/dist/shared/layer-thickness.d.ts +2 -0
  324. package/dist/shared/layer-thickness.d.ts.map +1 -0
  325. package/dist/shared/layer-thickness.js +3 -0
  326. package/dist/shared/move-roof-tool.d.ts.map +1 -1
  327. package/dist/shared/move-roof-tool.js +100 -5
  328. package/dist/shared/node-batch/batchable.d.ts +2 -0
  329. package/dist/shared/node-batch/batchable.d.ts.map +1 -1
  330. package/dist/shared/node-batch/batchable.js +4 -0
  331. package/dist/shared/node-batch/candidates.d.ts +21 -5
  332. package/dist/shared/node-batch/candidates.d.ts.map +1 -1
  333. package/dist/shared/node-batch/candidates.js +85 -50
  334. package/dist/shared/node-batch/system.d.ts.map +1 -1
  335. package/dist/shared/node-batch/system.js +24 -15
  336. package/dist/shared/opening-casing-move.d.ts +16 -0
  337. package/dist/shared/opening-casing-move.d.ts.map +1 -0
  338. package/dist/shared/opening-casing-move.js +33 -0
  339. package/dist/shared/opening-casing-section.d.ts +15 -0
  340. package/dist/shared/opening-casing-section.d.ts.map +1 -0
  341. package/dist/shared/opening-casing-section.js +38 -0
  342. package/dist/shared/opening-casing.d.ts +26 -0
  343. package/dist/shared/opening-casing.d.ts.map +1 -0
  344. package/dist/shared/opening-casing.js +80 -0
  345. package/dist/shared/opening-depth-position.d.ts +13 -0
  346. package/dist/shared/opening-depth-position.d.ts.map +1 -0
  347. package/dist/shared/opening-depth-position.js +34 -0
  348. package/dist/shared/opening-documentation.d.ts.map +1 -1
  349. package/dist/shared/opening-documentation.js +17 -8
  350. package/dist/shared/opening-guides-runtime.d.ts +2 -1
  351. package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
  352. package/dist/shared/opening-guides-runtime.js +11 -7
  353. package/dist/shared/opening-labels.d.ts +11 -0
  354. package/dist/shared/opening-labels.d.ts.map +1 -0
  355. package/dist/shared/opening-labels.js +46 -0
  356. package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
  357. package/dist/shared/opening-placement-dimensions.js +11 -9
  358. package/dist/shared/opening-plane-offset.d.ts +4 -3
  359. package/dist/shared/opening-plane-offset.d.ts.map +1 -1
  360. package/dist/shared/opening-plane-offset.js +7 -4
  361. package/dist/shared/opening-swap.d.ts +8 -0
  362. package/dist/shared/opening-swap.d.ts.map +1 -0
  363. package/dist/shared/opening-swap.js +18 -0
  364. package/dist/shared/polygon-vertex-affordance.d.ts +19 -0
  365. package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
  366. package/dist/shared/polygon-vertex-affordance.js +65 -6
  367. package/dist/shared/roof-opening-host.d.ts +2 -1
  368. package/dist/shared/roof-opening-host.d.ts.map +1 -1
  369. package/dist/shared/roof-opening-host.js +14 -5
  370. package/dist/shared/roof-wall-opening-cut.d.ts.map +1 -1
  371. package/dist/shared/roof-wall-opening-cut.js +14 -6
  372. package/dist/shared/roof-wall-opening-placement.d.ts +2 -1
  373. package/dist/shared/roof-wall-opening-placement.d.ts.map +1 -1
  374. package/dist/shared/roof-wall-opening-placement.js +6 -4
  375. package/dist/shared/run-hanger-inspector.d.ts.map +1 -1
  376. package/dist/shared/run-hanger-inspector.js +39 -5
  377. package/dist/shared/system-check-panel.d.ts.map +1 -1
  378. package/dist/shared/system-check-panel.js +94 -15
  379. package/dist/shared/wall-attach-target.d.ts.map +1 -1
  380. package/dist/shared/wall-attach-target.js +6 -3
  381. package/dist/shelf/definition.d.ts.map +1 -1
  382. package/dist/shelf/definition.js +2 -0
  383. package/dist/site/ground-hole.d.ts +3 -3
  384. package/dist/site/ground-hole.js +3 -3
  385. package/dist/site/ground-veil.d.ts +5 -12
  386. package/dist/site/ground-veil.d.ts.map +1 -1
  387. package/dist/site/ground-veil.js +9 -33
  388. package/dist/site/panel.d.ts.map +1 -1
  389. package/dist/site/panel.js +52 -12
  390. package/dist/site/renderer.d.ts.map +1 -1
  391. package/dist/site/renderer.js +52 -23
  392. package/dist/skylight/panel.d.ts.map +1 -1
  393. package/dist/skylight/panel.js +49 -19
  394. package/dist/slab/deck-geometry.d.ts +28 -0
  395. package/dist/slab/deck-geometry.d.ts.map +1 -0
  396. package/dist/slab/deck-geometry.js +320 -0
  397. package/dist/slab/definition.d.ts +2 -1
  398. package/dist/slab/definition.d.ts.map +1 -1
  399. package/dist/slab/definition.js +6 -1
  400. package/dist/slab/dependency-tracker.d.ts.map +1 -1
  401. package/dist/slab/dependency-tracker.js +3 -0
  402. package/dist/slab/floorplan-affordances.d.ts +500 -0
  403. package/dist/slab/floorplan-affordances.d.ts.map +1 -1
  404. package/dist/slab/geometry.d.ts.map +1 -1
  405. package/dist/slab/geometry.js +46 -9
  406. package/dist/slab/panel.d.ts.map +1 -1
  407. package/dist/slab/panel.js +97 -21
  408. package/dist/slab/renderer.d.ts +11 -0
  409. package/dist/slab/renderer.d.ts.map +1 -0
  410. package/dist/slab/renderer.js +19 -0
  411. package/dist/slab/system.d.ts.map +1 -1
  412. package/dist/slab/system.js +12 -1
  413. package/dist/solar-panel/panel.d.ts.map +1 -1
  414. package/dist/solar-panel/panel.js +49 -14
  415. package/dist/stair/construction-controls.d.ts +3 -1
  416. package/dist/stair/construction-controls.d.ts.map +1 -1
  417. package/dist/stair/construction-controls.js +75 -12
  418. package/dist/stair/paint.d.ts +6 -0
  419. package/dist/stair/paint.d.ts.map +1 -1
  420. package/dist/stair/panel.d.ts.map +1 -1
  421. package/dist/stair/panel.js +243 -51
  422. package/dist/stair/parametrics.d.ts.map +1 -1
  423. package/dist/stair/parametrics.js +7 -0
  424. package/dist/stair/placement-defaults.d.ts +18 -0
  425. package/dist/stair/placement-defaults.d.ts.map +1 -0
  426. package/dist/stair/placement-defaults.js +27 -0
  427. package/dist/stair/railing-controls.d.ts.map +1 -1
  428. package/dist/stair/railing-controls.js +78 -18
  429. package/dist/stair/renderer.d.ts.map +1 -1
  430. package/dist/stair/renderer.js +16 -10
  431. package/dist/stair/structure-controls.d.ts +18 -0
  432. package/dist/stair/structure-controls.d.ts.map +1 -0
  433. package/dist/stair/structure-controls.js +275 -0
  434. package/dist/stair/tool.d.ts.map +1 -1
  435. package/dist/stair/tool.js +13 -9
  436. package/dist/stair/use-stair-render-data.d.ts +41 -0
  437. package/dist/stair/use-stair-render-data.d.ts.map +1 -1
  438. package/dist/stair-segment/panel.d.ts.map +1 -1
  439. package/dist/stair-segment/panel.js +65 -18
  440. package/dist/turbine-vent/panel.d.ts.map +1 -1
  441. package/dist/turbine-vent/panel.js +14 -5
  442. package/dist/unit/unit-panel.d.ts.map +1 -1
  443. package/dist/unit/unit-panel.js +28 -12
  444. package/dist/wall/actions.d.ts +1 -1
  445. package/dist/wall/actions.d.ts.map +1 -1
  446. package/dist/wall/actions.js +17 -13
  447. package/dist/wall/construction-dimensions.d.ts +6 -0
  448. package/dist/wall/construction-dimensions.d.ts.map +1 -1
  449. package/dist/wall/construction-dimensions.js +8 -0
  450. package/dist/wall/contextual-dimensions.d.ts +6 -0
  451. package/dist/wall/contextual-dimensions.d.ts.map +1 -1
  452. package/dist/wall/contextual-dimensions.js +104 -17
  453. package/dist/wall/curtain-opening-frame.d.ts.map +1 -1
  454. package/dist/wall/curtain-opening-frame.js +6 -4
  455. package/dist/wall/curtain-wall-layout.d.ts +1 -1
  456. package/dist/wall/curtain-wall-layout.d.ts.map +1 -1
  457. package/dist/wall/curtain-wall-layout.js +6 -4
  458. package/dist/wall/curtain-wall-materials.d.ts.map +1 -1
  459. package/dist/wall/curtain-wall-materials.js +8 -3
  460. package/dist/wall/curtain-wall-panel.d.ts.map +1 -1
  461. package/dist/wall/curtain-wall-panel.js +241 -37
  462. package/dist/wall/curve-tool.d.ts.map +1 -1
  463. package/dist/wall/curve-tool.js +2 -3
  464. package/dist/wall/definition.d.ts.map +1 -1
  465. package/dist/wall/definition.js +20 -5
  466. package/dist/wall/floorplan-affordances.d.ts.map +1 -1
  467. package/dist/wall/floorplan-affordances.js +9 -6
  468. package/dist/wall/floorplan-move.d.ts.map +1 -1
  469. package/dist/wall/floorplan-move.js +66 -16
  470. package/dist/wall/floorplan.d.ts +4 -5
  471. package/dist/wall/floorplan.d.ts.map +1 -1
  472. package/dist/wall/floorplan.js +62 -46
  473. package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
  474. package/dist/wall/move-endpoint-tool.js +1 -0
  475. package/dist/wall/move-tool.d.ts.map +1 -1
  476. package/dist/wall/move-tool.js +77 -12
  477. package/dist/wall/paint.d.ts +2 -2
  478. package/dist/wall/paint.d.ts.map +1 -1
  479. package/dist/wall/paint.js +11 -4
  480. package/dist/wall/panel-model.d.ts +17 -2
  481. package/dist/wall/panel-model.d.ts.map +1 -1
  482. package/dist/wall/panel-model.js +158 -18
  483. package/dist/wall/panel.d.ts +8 -0
  484. package/dist/wall/panel.d.ts.map +1 -1
  485. package/dist/wall/panel.js +228 -156
  486. package/dist/wall/parametrics.d.ts +1 -1
  487. package/dist/wall/parametrics.d.ts.map +1 -1
  488. package/dist/wall/parametrics.js +14 -1
  489. package/dist/wall/railing-wall-adapter.d.ts +7 -0
  490. package/dist/wall/railing-wall-adapter.d.ts.map +1 -0
  491. package/dist/wall/railing-wall-adapter.js +38 -0
  492. package/dist/wall/railing-wall-floorplan.d.ts +8 -0
  493. package/dist/wall/railing-wall-floorplan.d.ts.map +1 -0
  494. package/dist/wall/railing-wall-floorplan.js +27 -0
  495. package/dist/wall/railing-wall-geometry.d.ts +12 -0
  496. package/dist/wall/railing-wall-geometry.d.ts.map +1 -0
  497. package/dist/wall/railing-wall-geometry.js +51 -0
  498. package/dist/wall/railing-wall-guard.d.ts +81 -0
  499. package/dist/wall/railing-wall-guard.d.ts.map +1 -0
  500. package/dist/wall/railing-wall-guard.js +435 -0
  501. package/dist/wall/railing-wall-materials.d.ts +11 -0
  502. package/dist/wall/railing-wall-materials.d.ts.map +1 -0
  503. package/dist/wall/railing-wall-materials.js +31 -0
  504. package/dist/wall/railing-wall-panel-model.d.ts +30 -0
  505. package/dist/wall/railing-wall-panel-model.d.ts.map +1 -0
  506. package/dist/wall/railing-wall-panel-model.js +117 -0
  507. package/dist/wall/railing-wall-panel.d.ts +17 -0
  508. package/dist/wall/railing-wall-panel.d.ts.map +1 -0
  509. package/dist/wall/railing-wall-panel.js +42 -0
  510. package/dist/wall/rectangle-command.d.ts +79 -1
  511. package/dist/wall/rectangle-command.d.ts.map +1 -1
  512. package/dist/wall/rectangle-tool.d.ts.map +1 -1
  513. package/dist/wall/rectangle-tool.js +2 -0
  514. package/dist/wall/renderer.d.ts.map +1 -1
  515. package/dist/wall/renderer.js +3 -1
  516. package/dist/wall/skirting-floor-gaps.d.ts +8 -0
  517. package/dist/wall/skirting-floor-gaps.d.ts.map +1 -0
  518. package/dist/wall/skirting-floor-gaps.js +36 -0
  519. package/dist/wall/system.d.ts +0 -14
  520. package/dist/wall/system.d.ts.map +1 -1
  521. package/dist/wall/system.js +6 -1
  522. package/dist/wall/tool.d.ts +16 -0
  523. package/dist/wall/tool.d.ts.map +1 -1
  524. package/dist/wall/tool.js +160 -47
  525. package/dist/wall/treatments.d.ts +3 -0
  526. package/dist/wall/treatments.d.ts.map +1 -1
  527. package/dist/wall/treatments.js +30 -7
  528. package/dist/window/actions.d.ts +7 -0
  529. package/dist/window/actions.d.ts.map +1 -0
  530. package/dist/window/actions.js +29 -0
  531. package/dist/window/definition.d.ts.map +1 -1
  532. package/dist/window/definition.js +11 -2
  533. package/dist/window/floorplan-move.d.ts.map +1 -1
  534. package/dist/window/floorplan-move.js +5 -0
  535. package/dist/window/floorplan.d.ts +2 -0
  536. package/dist/window/floorplan.d.ts.map +1 -1
  537. package/dist/window/floorplan.js +58 -1
  538. package/dist/window/mechanism.d.ts.map +1 -1
  539. package/dist/window/mechanism.js +21 -1
  540. package/dist/window/move-tool.d.ts.map +1 -1
  541. package/dist/window/move-tool.js +10 -3
  542. package/dist/window/paint.d.ts +2 -7
  543. package/dist/window/paint.d.ts.map +1 -1
  544. package/dist/window/paint.js +31 -3
  545. package/dist/window/panel.d.ts.map +1 -1
  546. package/dist/window/panel.js +311 -69
  547. package/dist/window/placement.d.ts.map +1 -1
  548. package/dist/window/placement.js +5 -1
  549. package/dist/window/swing.d.ts +13 -0
  550. package/dist/window/swing.d.ts.map +1 -0
  551. package/dist/window/swing.js +16 -0
  552. package/dist/window/tool.d.ts.map +1 -1
  553. package/dist/window/tool.js +19 -14
  554. package/dist/zone/floorplan-affordances.d.ts +136 -0
  555. package/dist/zone/floorplan-affordances.d.ts.map +1 -1
  556. package/dist/zone/quantities-panel.d.ts.map +1 -1
  557. package/dist/zone/quantities-panel.js +34 -9
  558. package/dist/zone/renderer.d.ts.map +1 -1
  559. package/dist/zone/renderer.js +9 -5
  560. package/package.json +14 -14
  561. package/dist/site/generic-foundation-geometry.d.ts +0 -16
  562. package/dist/site/generic-foundation-geometry.d.ts.map +0 -1
  563. package/dist/site/generic-foundation-geometry.js +0 -75
  564. package/dist/site/generic-foundation.d.ts +0 -4
  565. package/dist/site/generic-foundation.d.ts.map +0 -1
  566. package/dist/site/generic-foundation.js +0 -91
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The ridges, hips and valleys a roof plan draws, read off the roof surface
3
+ * itself rather than off each segment on its own.
4
+ *
5
+ * A planar segment (gable, hip, shed, flat) is a convex solid: over its
6
+ * footprint its top is the lowest of its planes. Segments that overlap are
7
+ * unioned, so the roof's top is the highest of the segments there. The lines
8
+ * a plan draws are that surface's creases:
9
+ *
10
+ * - two planes of one segment meeting where both are its top: a ridge
11
+ * (level) or a hip (sloped), drawn wherever no other segment rises over
12
+ * it, so a wing's ridge runs on past the main roof's wall line until it
13
+ * dives under the main roof's slope;
14
+ * - two segments' tops meeting: always a valley (the higher of two planes
15
+ * is a V), from the corner where their eaves cross up to where it meets
16
+ * the ridges.
17
+ *
18
+ * Everything is linear, so each crease is solved exactly along its line.
19
+ */
20
+ export type PlanPoint = [number, number];
21
+ /** A plane over the plan: its height is `a·x + b·z + c`. */
22
+ export type RoofPlane = {
23
+ a: number;
24
+ b: number;
25
+ c: number;
26
+ };
27
+ export type RoofCreaseSurface = {
28
+ /** The roof node the segment belongs to: valleys between two roofs are drawn by one of them. */
29
+ roofId: string;
30
+ /** The segment's footprint in plan: a convex polygon. */
31
+ footprint: PlanPoint[];
32
+ /** The segment's roof planes; its top over the footprint is the lowest of them. */
33
+ planes: RoofPlane[];
34
+ };
35
+ export type RoofCreaseKind = 'ridge' | 'hip' | 'valley';
36
+ export type RoofCrease = {
37
+ kind: RoofCreaseKind;
38
+ from: PlanPoint;
39
+ to: PlanPoint;
40
+ /** The roof that draws the line: the segment's own roof, or the lesser id of a valley's two. */
41
+ roofId: string;
42
+ /** The indices of the surfaces that meet there (the same one twice for a ridge or hip). */
43
+ between: [number, number];
44
+ };
45
+ /**
46
+ * Every ridge, hip and valley of the roof surface the planar segments make
47
+ * together. Each crease is reported once, under the roof that draws it.
48
+ */
49
+ export declare function getRoofSurfaceCreases(surfaces: RoofCreaseSurface[]): RoofCrease[];
50
+ //# sourceMappingURL=roof-plan-creases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roof-plan-creases.d.ts","sourceRoot":"","sources":["../../src/roof/roof-plan-creases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAExC,4DAA4D;AAC5D,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gGAAgG;IAChG,MAAM,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,SAAS,EAAE,SAAS,EAAE,CAAA;IACtB,mFAAmF;IACnF,MAAM,EAAE,SAAS,EAAE,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEvD,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,SAAS,CAAA;IACf,EAAE,EAAE,SAAS,CAAA;IACb,gGAAgG;IAChG,MAAM,EAAE,MAAM,CAAA;IACd,2FAA2F;IAC3F,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1B,CAAA;AAuID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,UAAU,EAAE,CA4CjF"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * The ridges, hips and valleys a roof plan draws, read off the roof surface
3
+ * itself rather than off each segment on its own.
4
+ *
5
+ * A planar segment (gable, hip, shed, flat) is a convex solid: over its
6
+ * footprint its top is the lowest of its planes. Segments that overlap are
7
+ * unioned, so the roof's top is the highest of the segments there. The lines
8
+ * a plan draws are that surface's creases:
9
+ *
10
+ * - two planes of one segment meeting where both are its top: a ridge
11
+ * (level) or a hip (sloped), drawn wherever no other segment rises over
12
+ * it, so a wing's ridge runs on past the main roof's wall line until it
13
+ * dives under the main roof's slope;
14
+ * - two segments' tops meeting: always a valley (the higher of two planes
15
+ * is a V), from the corner where their eaves cross up to where it meets
16
+ * the ridges.
17
+ *
18
+ * Everything is linear, so each crease is solved exactly along its line.
19
+ */
20
+ const EPS = 1e-6;
21
+ /** Shorter than this, a crease is a point where planes meet, not a line. */
22
+ const MIN_CREASE = 0.01;
23
+ const heightAt = (plane, x, z) => plane.a * x + plane.b * z + plane.c;
24
+ /** The `t` where `slope·t + offset >= 0`, as an interval (empty as `null`). */
25
+ function halfLine(slope, offset) {
26
+ if (Math.abs(slope) <= 1e-12)
27
+ return offset >= -EPS ? [-Infinity, Infinity] : null;
28
+ const root = -offset / slope;
29
+ return slope > 0 ? [root, Infinity] : [-Infinity, root];
30
+ }
31
+ function intersect(a, b) {
32
+ if (!(a && b))
33
+ return null;
34
+ const lo = Math.max(a[0], b[0]);
35
+ const hi = Math.min(a[1], b[1]);
36
+ return hi > lo ? [lo, hi] : null;
37
+ }
38
+ function subtract(intervals, cut) {
39
+ return intervals.flatMap(([lo, hi]) => {
40
+ if (cut[1] <= lo || cut[0] >= hi)
41
+ return [[lo, hi]];
42
+ const kept = [];
43
+ if (cut[0] > lo)
44
+ kept.push([lo, cut[0]]);
45
+ if (cut[1] < hi)
46
+ kept.push([cut[1], hi]);
47
+ return kept;
48
+ });
49
+ }
50
+ /** The plan line along which two planes stand at one height, or `null` when they never cross. */
51
+ function meetingLine(p, q) {
52
+ const na = p.a - q.a;
53
+ const nb = p.b - q.b;
54
+ const norm2 = na * na + nb * nb;
55
+ if (norm2 <= 1e-12)
56
+ return null;
57
+ const dc = p.c - q.c;
58
+ const norm = Math.sqrt(norm2);
59
+ return {
60
+ origin: [(-dc * na) / norm2, (-dc * nb) / norm2],
61
+ dir: [-nb / norm, na / norm],
62
+ };
63
+ }
64
+ /** The stretch of a line inside a convex polygon. */
65
+ function clipToPolygon(line, polygon) {
66
+ if (polygon.length < 3)
67
+ return null;
68
+ let area = 0;
69
+ for (let i = 0; i < polygon.length; i++) {
70
+ const [x0, z0] = polygon[i];
71
+ const [x1, z1] = polygon[(i + 1) % polygon.length];
72
+ area += x0 * z1 - x1 * z0;
73
+ }
74
+ const sign = area >= 0 ? 1 : -1;
75
+ let range = [-Infinity, Infinity];
76
+ for (let i = 0; i < polygon.length && range; i++) {
77
+ const [x0, z0] = polygon[i];
78
+ const [x1, z1] = polygon[(i + 1) % polygon.length];
79
+ const ex = x1 - x0;
80
+ const ez = z1 - z0;
81
+ // inside: sign · cross(edge, point − start) >= 0, linear in t
82
+ const slope = sign * (ex * line.dir[1] - ez * line.dir[0]);
83
+ const offset = sign * (ex * (line.origin[1] - z0) - ez * (line.origin[0] - x0));
84
+ range = intersect(range, halfLine(slope, offset + EPS));
85
+ }
86
+ return range;
87
+ }
88
+ /** Along a line, the height of a plane as `slope·t + offset`. */
89
+ function along(plane, line) {
90
+ return [
91
+ plane.a * line.dir[0] + plane.b * line.dir[1],
92
+ heightAt(plane, line.origin[0], line.origin[1]),
93
+ ];
94
+ }
95
+ /** Where `plane` is the lowest of the surface's planes, so the surface's top, along the line. */
96
+ function activeRange(surface, plane, line) {
97
+ const [ps, po] = along(plane, line);
98
+ let range = [-Infinity, Infinity];
99
+ for (const other of surface.planes) {
100
+ if (other === plane)
101
+ continue;
102
+ const [os, oo] = along(other, line);
103
+ range = intersect(range, halfLine(os - ps, oo - po + EPS));
104
+ if (!range)
105
+ return null;
106
+ }
107
+ return range;
108
+ }
109
+ /** Where `surface` stands higher than the crease (on `plane`) along the line. */
110
+ function buriedRange(surface, plane, line) {
111
+ const [ps, po] = along(plane, line);
112
+ let range = clipToPolygon(line, surface.footprint);
113
+ for (const other of surface.planes) {
114
+ if (!range)
115
+ return null;
116
+ const [os, oo] = along(other, line);
117
+ range = intersect(range, halfLine(os - ps, oo - po - EPS * 10));
118
+ }
119
+ return range;
120
+ }
121
+ function pointAt(line, t) {
122
+ return [line.origin[0] + line.dir[0] * t, line.origin[1] + line.dir[1] * t];
123
+ }
124
+ /** The visible stretches of the line where plane `p` of surface `i` meets plane `q` of surface `k`. */
125
+ function visibleStretches(surfaces, i, p, k, q, line) {
126
+ const si = surfaces[i];
127
+ const sk = surfaces[k];
128
+ let range = intersect(clipToPolygon(line, si.footprint), activeRange(si, p, line));
129
+ if (k !== i)
130
+ range = intersect(range, clipToPolygon(line, sk.footprint));
131
+ range = intersect(range, activeRange(sk, q, line));
132
+ if (!range)
133
+ return [];
134
+ let stretches = [range];
135
+ for (let m = 0; m < surfaces.length && stretches.length > 0; m++) {
136
+ if (m === i || m === k)
137
+ continue;
138
+ const buried = buriedRange(surfaces[m], p, line);
139
+ if (buried)
140
+ stretches = subtract(stretches, buried);
141
+ }
142
+ return stretches.filter(([lo, hi]) => hi - lo >= MIN_CREASE);
143
+ }
144
+ /**
145
+ * Every ridge, hip and valley of the roof surface the planar segments make
146
+ * together. Each crease is reported once, under the roof that draws it.
147
+ */
148
+ export function getRoofSurfaceCreases(surfaces) {
149
+ const creases = [];
150
+ for (let i = 0; i < surfaces.length; i++) {
151
+ const si = surfaces[i];
152
+ // Within one segment: ridges and hips.
153
+ for (let pi = 0; pi < si.planes.length; pi++) {
154
+ for (let qi = pi + 1; qi < si.planes.length; qi++) {
155
+ const p = si.planes[pi];
156
+ const q = si.planes[qi];
157
+ const line = meetingLine(p, q);
158
+ if (!line)
159
+ continue;
160
+ const level = Math.abs(along(p, line)[0]) <= 1e-6;
161
+ for (const [lo, hi] of visibleStretches(surfaces, i, p, i, q, line)) {
162
+ creases.push({
163
+ kind: level ? 'ridge' : 'hip',
164
+ from: pointAt(line, lo),
165
+ to: pointAt(line, hi),
166
+ roofId: si.roofId,
167
+ between: [i, i],
168
+ });
169
+ }
170
+ }
171
+ }
172
+ // Between two segments: valleys.
173
+ for (let k = i + 1; k < surfaces.length; k++) {
174
+ const sk = surfaces[k];
175
+ for (const p of si.planes) {
176
+ for (const q of sk.planes) {
177
+ const line = meetingLine(p, q);
178
+ if (!line)
179
+ continue;
180
+ for (const [lo, hi] of visibleStretches(surfaces, i, p, k, q, line)) {
181
+ creases.push({
182
+ kind: 'valley',
183
+ from: pointAt(line, lo),
184
+ to: pointAt(line, hi),
185
+ roofId: si.roofId < sk.roofId ? si.roofId : sk.roofId,
186
+ between: [i, k],
187
+ });
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ return creases;
194
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Which way a placed roof's ridge runs over the drawn footprint: along its
3
+ * long side (the default, as a wing's roof usually does) or across it. The
4
+ * roof tool's R key and HUD chip flip it while placing.
5
+ */
6
+ export type RoofRidgeMode = 'long' | 'short';
7
+ type RoofRidgeModeState = {
8
+ mode: RoofRidgeMode;
9
+ toggle: () => void;
10
+ reset: () => void;
11
+ };
12
+ declare const useRoofRidgeMode: import("zustand").UseBoundStore<import("zustand").StoreApi<RoofRidgeModeState>>;
13
+ /**
14
+ * Whether the segment turns a quarter so its ridge runs along z. A segment's
15
+ * ridge runs along its own x (its width), so a footprint deeper than it is
16
+ * wide turns for a long-side ridge; a square one keeps x.
17
+ */
18
+ export declare function ridgeQuarterTurn(footprintWidth: number, footprintDepth: number, mode: RoofRidgeMode): boolean;
19
+ export default useRoofRidgeMode;
20
+ //# sourceMappingURL=roof-ridge-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roof-ridge-mode.d.ts","sourceRoot":"","sources":["../../src/roof/roof-ridge-mode.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAE5C,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,QAAA,MAAM,gBAAgB,iFAInB,CAAA;AAEH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAGT;eAEc,gBAAgB"}
@@ -0,0 +1,16 @@
1
+ import { create } from 'zustand';
2
+ const useRoofRidgeMode = create((set, get) => ({
3
+ mode: 'long',
4
+ toggle: () => set({ mode: get().mode === 'long' ? 'short' : 'long' }),
5
+ reset: () => set({ mode: 'long' }),
6
+ }));
7
+ /**
8
+ * Whether the segment turns a quarter so its ridge runs along z. A segment's
9
+ * ridge runs along its own x (its width), so a footprint deeper than it is
10
+ * wide turns for a long-side ridge; a square one keeps x.
11
+ */
12
+ export function ridgeQuarterTurn(footprintWidth, footprintDepth, mode) {
13
+ const alongDepth = footprintDepth > footprintWidth + 1e-6;
14
+ return mode === 'long' ? alongDepth : !alongDepth;
15
+ }
16
+ export default useRoofRidgeMode;
@@ -1,10 +1,23 @@
1
- import { type AnyNode, type LevelNode, type RoofFootprintTarget, type SceneApi } from '@pascal-app/core';
1
+ import { type AlignmentAnchor, type AnyNode, type GridEvent, type LevelNode, type RoofFootprintTarget, type RoofType, type SceneApi } from '@pascal-app/core';
2
2
  import { type RoofPlacementMode } from './roof-placement-mode.js';
3
+ import { type RoofRidgeMode } from './roof-ridge-mode.js';
4
+ export declare function collectRoofAlignmentAnchors(nodes: Readonly<Record<string, AnyNode>>, currentLevelId: string | null, roofType: RoofType): AlignmentAnchor[];
3
5
  /**
4
- * Creates a roof group with one default gable segment
6
+ * A grid event's point as the roof tools draft and commit it, the 3D tool and the plan's alike:
7
+ * through the shared surface snap pipeline, magnetic lock onto wall corners / midpoints / crossings
8
+ * / bodies on the active level and the floor below (raising the green beacon), falling back to
9
+ * alignment guides, then to the building-grid snap. The pipeline reads the active snapping mode
10
+ * (grid / lines / angles / off). `levelId` is intentionally omitted so the explicit floor-below
11
+ * `walls` aren't filtered back out.
5
12
  */
6
- export declare const commitRoofPlacement: (sceneApi: SceneApi, levelId: LevelNode['id'], corner1: [number, number, number], corner2: [number, number, number], selectedIds: string[], quarterTurn: boolean, placementMode: RoofPlacementMode) => AnyNode['id'] | null;
7
- export declare const commitRoofFootprint: (sceneApi: SceneApi, levelId: LevelNode['id'], target: RoofFootprintTarget, quarterTurn: boolean) => AnyNode['id'] | null;
13
+ export declare function resolveRoofDraftPoint(event: GridEvent, levelId: string, nodes: Readonly<Record<string, AnyNode>>, roofType: RoofType, candidates: readonly AlignmentAnchor[]): [number, number];
14
+ /**
15
+ * Creates a roof group with one default gable segment. `ridge` is a quarter
16
+ * turn outright, or a ridge mode: 'long' runs the ridge along the drawn
17
+ * rectangle's long side, 'short' across it.
18
+ */
19
+ export declare const commitRoofPlacement: (sceneApi: SceneApi, levelId: LevelNode['id'], corner1: [number, number, number], corner2: [number, number, number], selectedIds: string[], ridge: boolean | RoofRidgeMode, placementMode: RoofPlacementMode) => AnyNode['id'] | null;
20
+ export declare const commitRoofFootprint: (sceneApi: SceneApi, levelId: LevelNode['id'], target: RoofFootprintTarget, ridge: boolean | RoofRidgeMode) => AnyNode['id'] | null;
8
21
  export declare const RoofTool: React.FC;
9
22
  export default RoofTool;
10
23
  //# sourceMappingURL=tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/roof/tool.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EAUZ,KAAK,SAAS,EACd,KAAK,mBAAmB,EAQxB,KAAK,QAAQ,EAKd,MAAM,kBAAkB,CAAA;AA+CzB,OAA6B,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AA6GpF;;GAEG;AACH,eAAO,MAAM,mBAAmB,aACpB,QAAQ,WACT,SAAS,CAAC,IAAI,CAAC,WACf,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,WACxB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eACpB,MAAM,EAAE,eACR,OAAO,iBACL,iBAAiB,KAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAkMlB,CAAA;AAED,eAAO,MAAM,mBAAmB,aACpB,QAAQ,WACT,SAAS,CAAC,IAAI,CAAC,UAChB,mBAAmB,eACd,OAAO,KACnB,OAAO,CAAC,IAAI,CAAC,GAAG,IAyClB,CAAA;AA2LD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EA6tB5B,CAAA;eAEc,QAAQ"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/roof/tool.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,OAAO,EAIZ,KAAK,SAAS,EAOd,KAAK,SAAS,EACd,KAAK,mBAAmB,EAGxB,KAAK,QAAQ,EAIb,KAAK,QAAQ,EAId,MAAM,kBAAkB,CAAA;AAoDzB,OAA6B,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAyB,EAAE,KAAK,aAAa,EAAoB,MAAM,mBAAmB,CAAA;AAoI1F,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,QAAQ,EAAE,QAAQ,GACjB,eAAe,EAAE,CAoBnB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,SAAS,eAAe,EAAE,GACrC,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBlB;AA6BD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,aACpB,QAAQ,WACT,SAAS,CAAC,IAAI,CAAC,WACf,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,WACxB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,eACpB,MAAM,EAAE,SACd,OAAO,GAAG,aAAa,iBACf,iBAAiB,KAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAuMlB,CAAA;AAED,eAAO,MAAM,mBAAmB,aACpB,QAAQ,WACT,SAAS,CAAC,IAAI,CAAC,UAChB,mBAAmB,SACpB,OAAO,GAAG,aAAa,KAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,IA0DlB,CAAA;AA2LD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EA6uB5B,CAAA;eAEc,QAAQ"}