@pascal-app/nodes 1.0.0-beta.5 → 1.0.0

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 (831) hide show
  1. package/LICENSE +21 -0
  2. package/dist/block/commands.d.ts +68 -0
  3. package/dist/block/commands.d.ts.map +1 -0
  4. package/dist/block/commands.js +1144 -0
  5. package/dist/block/contextual-help.d.ts +3 -0
  6. package/dist/block/contextual-help.d.ts.map +1 -0
  7. package/dist/block/contextual-help.js +38 -0
  8. package/dist/block/definition.d.ts +8 -0
  9. package/dist/block/definition.d.ts.map +1 -0
  10. package/dist/block/definition.js +126 -0
  11. package/dist/block/edit-session.d.ts +16 -0
  12. package/dist/block/edit-session.d.ts.map +1 -0
  13. package/dist/block/edit-session.js +32 -0
  14. package/dist/block/face-host.d.ts +3 -0
  15. package/dist/block/face-host.d.ts.map +1 -0
  16. package/dist/block/face-host.js +178 -0
  17. package/dist/block/floorplan.d.ts +3 -0
  18. package/dist/block/floorplan.d.ts.map +1 -0
  19. package/dist/block/floorplan.js +43 -0
  20. package/dist/block/geometry-snap.d.ts +18 -0
  21. package/dist/block/geometry-snap.d.ts.map +1 -0
  22. package/dist/block/geometry-snap.js +137 -0
  23. package/dist/block/geometry.d.ts +11 -0
  24. package/dist/block/geometry.d.ts.map +1 -0
  25. package/dist/block/geometry.js +146 -0
  26. package/dist/block/gesture-wheel.d.ts +8 -0
  27. package/dist/block/gesture-wheel.d.ts.map +1 -0
  28. package/dist/block/gesture-wheel.js +7 -0
  29. package/dist/block/interaction-sfx.d.ts +3 -0
  30. package/dist/block/interaction-sfx.d.ts.map +1 -0
  31. package/dist/block/interaction-sfx.js +16 -0
  32. package/dist/block/last-operation.d.ts +48 -0
  33. package/dist/block/last-operation.d.ts.map +1 -0
  34. package/dist/block/last-operation.js +120 -0
  35. package/dist/block/loop-cut-interaction.d.ts +5 -0
  36. package/dist/block/loop-cut-interaction.d.ts.map +1 -0
  37. package/dist/block/loop-cut-interaction.js +13 -0
  38. package/dist/block/material-slots.d.ts +61 -0
  39. package/dist/block/material-slots.d.ts.map +1 -0
  40. package/dist/block/material-slots.js +131 -0
  41. package/dist/block/modal-face-operation.d.ts +13 -0
  42. package/dist/block/modal-face-operation.d.ts.map +1 -0
  43. package/dist/block/modal-face-operation.js +40 -0
  44. package/dist/block/modal-session.d.ts +15 -0
  45. package/dist/block/modal-session.d.ts.map +1 -0
  46. package/dist/block/modal-session.js +40 -0
  47. package/dist/block/modal-transform.d.ts +30 -0
  48. package/dist/block/modal-transform.d.ts.map +1 -0
  49. package/dist/block/modal-transform.js +144 -0
  50. package/dist/block/paint.d.ts +3 -0
  51. package/dist/block/paint.d.ts.map +1 -0
  52. package/dist/block/paint.js +136 -0
  53. package/dist/block/panel.d.ts +2 -0
  54. package/dist/block/panel.d.ts.map +1 -0
  55. package/dist/block/panel.js +234 -0
  56. package/dist/block/parametrics.d.ts +4 -0
  57. package/dist/block/parametrics.d.ts.map +1 -0
  58. package/dist/block/parametrics.js +9 -0
  59. package/dist/block/preview.d.ts +6 -0
  60. package/dist/block/preview.d.ts.map +1 -0
  61. package/dist/block/preview.js +46 -0
  62. package/dist/block/rotation-drag.d.ts +5 -0
  63. package/dist/block/rotation-drag.d.ts.map +1 -0
  64. package/dist/block/rotation-drag.js +18 -0
  65. package/dist/block/schema.d.ts +2 -0
  66. package/dist/block/schema.d.ts.map +1 -0
  67. package/dist/block/schema.js +1 -0
  68. package/dist/block/selection-geometry.d.ts +9 -0
  69. package/dist/block/selection-geometry.d.ts.map +1 -0
  70. package/dist/block/selection-geometry.js +31 -0
  71. package/dist/block/selection-model.d.ts +17 -0
  72. package/dist/block/selection-model.d.ts.map +1 -0
  73. package/dist/block/selection-model.js +84 -0
  74. package/dist/block/selection.d.ts +4 -0
  75. package/dist/block/selection.d.ts.map +1 -0
  76. package/dist/block/selection.js +2570 -0
  77. package/dist/block/slots.d.ts +4 -0
  78. package/dist/block/slots.d.ts.map +1 -0
  79. package/dist/block/slots.js +17 -0
  80. package/dist/block/tool.d.ts +3 -0
  81. package/dist/block/tool.d.ts.map +1 -0
  82. package/dist/block/tool.js +174 -0
  83. package/dist/block/toolbar-state.d.ts +46 -0
  84. package/dist/block/toolbar-state.d.ts.map +1 -0
  85. package/dist/block/toolbar-state.js +67 -0
  86. package/dist/block/use-block-face-operation.d.ts +39 -0
  87. package/dist/block/use-block-face-operation.d.ts.map +1 -0
  88. package/dist/block/use-block-face-operation.js +218 -0
  89. package/dist/box-vent/definition.d.ts.map +1 -1
  90. package/dist/box-vent/definition.js +8 -5
  91. package/dist/box-vent/geometry.d.ts +4 -0
  92. package/dist/box-vent/geometry.d.ts.map +1 -1
  93. package/dist/box-vent/geometry.js +76 -44
  94. package/dist/box-vent/paint.d.ts +4 -0
  95. package/dist/box-vent/paint.d.ts.map +1 -0
  96. package/dist/box-vent/paint.js +40 -0
  97. package/dist/box-vent/panel.js +1 -1
  98. package/dist/box-vent/parametrics.js +3 -3
  99. package/dist/box-vent/renderer.d.ts.map +1 -1
  100. package/dist/box-vent/renderer.js +29 -10
  101. package/dist/cabinet/compartment-card.d.ts.map +1 -1
  102. package/dist/cabinet/compartment-card.js +11 -3
  103. package/dist/cabinet/continuous-placement.d.ts +3 -0
  104. package/dist/cabinet/continuous-placement.d.ts.map +1 -1
  105. package/dist/cabinet/continuous-placement.js +6 -0
  106. package/dist/cabinet/definition.d.ts.map +1 -1
  107. package/dist/cabinet/definition.js +400 -54
  108. package/dist/cabinet/floorplan-move.d.ts.map +1 -1
  109. package/dist/cabinet/floorplan-move.js +91 -22
  110. package/dist/cabinet/geometry/fridge.d.ts.map +1 -1
  111. package/dist/cabinet/geometry/fridge.js +25 -1
  112. package/dist/cabinet/geometry/fronts.d.ts +4 -0
  113. package/dist/cabinet/geometry/fronts.d.ts.map +1 -1
  114. package/dist/cabinet/geometry/fronts.js +1 -1
  115. package/dist/cabinet/geometry/run.d.ts.map +1 -1
  116. package/dist/cabinet/geometry/run.js +19 -1
  117. package/dist/cabinet/geometry.d.ts.map +1 -1
  118. package/dist/cabinet/geometry.js +63 -1
  119. package/dist/cabinet/index.d.ts +1 -0
  120. package/dist/cabinet/index.d.ts.map +1 -1
  121. package/dist/cabinet/index.js +1 -0
  122. package/dist/cabinet/insertion.d.ts +19 -0
  123. package/dist/cabinet/insertion.d.ts.map +1 -0
  124. package/dist/cabinet/insertion.js +49 -0
  125. package/dist/cabinet/move-frame.d.ts.map +1 -1
  126. package/dist/cabinet/move-frame.js +68 -2
  127. package/dist/cabinet/panel-context.d.ts +7 -0
  128. package/dist/cabinet/panel-context.d.ts.map +1 -0
  129. package/dist/cabinet/panel-context.js +16 -0
  130. package/dist/cabinet/panel-visibility.d.ts +9 -0
  131. package/dist/cabinet/panel-visibility.d.ts.map +1 -0
  132. package/dist/cabinet/panel-visibility.js +26 -0
  133. package/dist/cabinet/panel.d.ts.map +1 -1
  134. package/dist/cabinet/panel.js +221 -37
  135. package/dist/cabinet/placement-dimensions.d.ts +42 -0
  136. package/dist/cabinet/placement-dimensions.d.ts.map +1 -0
  137. package/dist/cabinet/placement-dimensions.js +227 -0
  138. package/dist/cabinet/placement-snap.d.ts +21 -1
  139. package/dist/cabinet/placement-snap.d.ts.map +1 -1
  140. package/dist/cabinet/placement-snap.js +48 -6
  141. package/dist/cabinet/preset-width-debt.d.ts +7 -0
  142. package/dist/cabinet/preset-width-debt.d.ts.map +1 -0
  143. package/dist/cabinet/preset-width-debt.js +45 -0
  144. package/dist/cabinet/presets.d.ts.map +1 -1
  145. package/dist/cabinet/presets.js +14 -13
  146. package/dist/cabinet/profiles.d.ts +14 -0
  147. package/dist/cabinet/profiles.d.ts.map +1 -0
  148. package/dist/cabinet/profiles.js +30 -0
  149. package/dist/cabinet/quick-actions.d.ts.map +1 -1
  150. package/dist/cabinet/quick-actions.js +8 -24
  151. package/dist/cabinet/reveals.d.ts +37 -0
  152. package/dist/cabinet/reveals.d.ts.map +1 -0
  153. package/dist/cabinet/reveals.js +13 -0
  154. package/dist/cabinet/run-layout.d.ts +90 -4
  155. package/dist/cabinet/run-layout.d.ts.map +1 -1
  156. package/dist/cabinet/run-layout.js +408 -23
  157. package/dist/cabinet/run-ops.d.ts +202 -10
  158. package/dist/cabinet/run-ops.d.ts.map +1 -1
  159. package/dist/cabinet/run-ops.js +520 -33
  160. package/dist/cabinet/run-panel.d.ts +6 -2
  161. package/dist/cabinet/run-panel.d.ts.map +1 -1
  162. package/dist/cabinet/run-panel.js +285 -108
  163. package/dist/cabinet/stack-transitions.d.ts.map +1 -1
  164. package/dist/cabinet/stack-transitions.js +35 -24
  165. package/dist/cabinet/stack.d.ts +169 -1
  166. package/dist/cabinet/stack.d.ts.map +1 -1
  167. package/dist/cabinet/stack.js +57 -18
  168. package/dist/cabinet/tool.d.ts.map +1 -1
  169. package/dist/cabinet/tool.js +615 -91
  170. package/dist/cabinet/validation.d.ts +27 -0
  171. package/dist/cabinet/validation.d.ts.map +1 -0
  172. package/dist/cabinet/validation.js +56 -0
  173. package/dist/cabinet/wall-height-presets.d.ts +12 -0
  174. package/dist/cabinet/wall-height-presets.d.ts.map +1 -0
  175. package/dist/cabinet/wall-height-presets.js +15 -0
  176. package/dist/cabinet/wall-snap.d.ts +27 -3
  177. package/dist/cabinet/wall-snap.d.ts.map +1 -1
  178. package/dist/cabinet/wall-snap.js +278 -62
  179. package/dist/cabinet/widths.d.ts +10 -0
  180. package/dist/cabinet/widths.d.ts.map +1 -0
  181. package/dist/cabinet/widths.js +13 -0
  182. package/dist/ceiling/definition.d.ts.map +1 -1
  183. package/dist/ceiling/definition.js +7 -1
  184. package/dist/ceiling/floorplan-affordances.d.ts +8 -8
  185. package/dist/ceiling/materials.d.ts.map +1 -1
  186. package/dist/ceiling/materials.js +0 -1
  187. package/dist/ceiling/panel.js +1 -1
  188. package/dist/ceiling/parametrics.js +1 -1
  189. package/dist/chimney/definition.js +1 -1
  190. package/dist/chimney/panel.js +1 -1
  191. package/dist/chimney/parametrics.js +3 -3
  192. package/dist/column/definition.d.ts.map +1 -1
  193. package/dist/column/definition.js +22 -4
  194. package/dist/column/panel.d.ts.map +1 -1
  195. package/dist/column/panel.js +37 -7
  196. package/dist/column/parametrics.d.ts.map +1 -1
  197. package/dist/column/parametrics.js +5 -3
  198. package/dist/column/tool.d.ts.map +1 -1
  199. package/dist/column/tool.js +50 -14
  200. package/dist/cupola/definition.d.ts.map +1 -1
  201. package/dist/cupola/definition.js +15 -6
  202. package/dist/cupola/geometry.d.ts +6 -0
  203. package/dist/cupola/geometry.d.ts.map +1 -1
  204. package/dist/cupola/geometry.js +60 -13
  205. package/dist/cupola/paint.d.ts +4 -0
  206. package/dist/cupola/paint.d.ts.map +1 -0
  207. package/dist/cupola/paint.js +39 -0
  208. package/dist/cupola/panel.js +1 -1
  209. package/dist/cupola/parametrics.js +3 -3
  210. package/dist/cupola/renderer.d.ts.map +1 -1
  211. package/dist/cupola/renderer.js +27 -8
  212. package/dist/door/floorplan-move.d.ts.map +1 -1
  213. package/dist/door/floorplan-move.js +1 -1
  214. package/dist/door/move-tool.d.ts.map +1 -1
  215. package/dist/door/move-tool.js +86 -32
  216. package/dist/door/panel.d.ts.map +1 -1
  217. package/dist/door/panel.js +1 -1
  218. package/dist/door/parametrics.js +2 -2
  219. package/dist/door/tool.d.ts.map +1 -1
  220. package/dist/door/tool.js +16 -4
  221. package/dist/dormer/csg-geometry.d.ts +6 -42
  222. package/dist/dormer/csg-geometry.d.ts.map +1 -1
  223. package/dist/dormer/csg-geometry.js +38 -209
  224. package/dist/dormer/definition.d.ts +4 -12
  225. package/dist/dormer/definition.d.ts.map +1 -1
  226. package/dist/dormer/definition.js +18 -193
  227. package/dist/dormer/floorplan.d.ts +3 -3
  228. package/dist/dormer/floorplan.d.ts.map +1 -1
  229. package/dist/dormer/floorplan.js +6 -17
  230. package/dist/dormer/geometry.d.ts +5 -24
  231. package/dist/dormer/geometry.d.ts.map +1 -1
  232. package/dist/dormer/geometry.js +64 -41
  233. package/dist/dormer/index.d.ts +1 -1
  234. package/dist/dormer/index.d.ts.map +1 -1
  235. package/dist/dormer/index.js +1 -1
  236. package/dist/dormer/move-tool.d.ts.map +1 -1
  237. package/dist/dormer/move-tool.js +31 -3
  238. package/dist/dormer/panel-windows-section.d.ts +9 -0
  239. package/dist/dormer/panel-windows-section.d.ts.map +1 -0
  240. package/dist/dormer/panel-windows-section.js +7 -0
  241. package/dist/dormer/panel.d.ts.map +1 -1
  242. package/dist/dormer/panel.js +100 -18
  243. package/dist/dormer/parametrics.d.ts.map +1 -1
  244. package/dist/dormer/parametrics.js +8 -77
  245. package/dist/dormer/preview.d.ts.map +1 -1
  246. package/dist/dormer/preview.js +9 -1
  247. package/dist/dormer/renderer.d.ts.map +1 -1
  248. package/dist/dormer/renderer.js +24 -26
  249. package/dist/dormer/tool.d.ts.map +1 -1
  250. package/dist/dormer/tool.js +3 -1
  251. package/dist/dormer/window-layout.d.ts +15 -0
  252. package/dist/dormer/window-layout.d.ts.map +1 -0
  253. package/dist/dormer/window-layout.js +59 -0
  254. package/dist/downspout/definition.d.ts.map +1 -1
  255. package/dist/downspout/definition.js +17 -4
  256. package/dist/downspout/geometry.d.ts.map +1 -1
  257. package/dist/downspout/geometry.js +10 -0
  258. package/dist/downspout/inspector-editors.d.ts.map +1 -1
  259. package/dist/downspout/inspector-editors.js +9 -1
  260. package/dist/downspout/parametrics.d.ts.map +1 -1
  261. package/dist/downspout/parametrics.js +2 -1
  262. package/dist/downspout/renderer.d.ts.map +1 -1
  263. package/dist/downspout/renderer.js +19 -3
  264. package/dist/downspout/system.d.ts +7 -0
  265. package/dist/downspout/system.d.ts.map +1 -0
  266. package/dist/downspout/system.js +114 -0
  267. package/dist/duct-fitting/accessory-geometry.d.ts +4 -0
  268. package/dist/duct-fitting/accessory-geometry.d.ts.map +1 -0
  269. package/dist/duct-fitting/accessory-geometry.js +47 -0
  270. package/dist/duct-fitting/definition.d.ts.map +1 -1
  271. package/dist/duct-fitting/definition.js +11 -1
  272. package/dist/duct-fitting/floorplan.d.ts.map +1 -1
  273. package/dist/duct-fitting/floorplan.js +8 -0
  274. package/dist/duct-fitting/geometry.d.ts.map +1 -1
  275. package/dist/duct-fitting/geometry.js +52 -38
  276. package/dist/duct-fitting/parametrics.d.ts.map +1 -1
  277. package/dist/duct-fitting/parametrics.js +78 -15
  278. package/dist/duct-fitting/ports.d.ts +1 -0
  279. package/dist/duct-fitting/ports.d.ts.map +1 -1
  280. package/dist/duct-fitting/ports.js +46 -0
  281. package/dist/duct-fitting/tool.d.ts +19 -0
  282. package/dist/duct-fitting/tool.d.ts.map +1 -1
  283. package/dist/duct-fitting/tool.js +126 -34
  284. package/dist/duct-segment/continuation.d.ts +21 -0
  285. package/dist/duct-segment/continuation.d.ts.map +1 -0
  286. package/dist/duct-segment/continuation.js +167 -0
  287. package/dist/duct-segment/definition.d.ts.map +1 -1
  288. package/dist/duct-segment/definition.js +19 -18
  289. package/dist/duct-segment/floorplan.d.ts.map +1 -1
  290. package/dist/duct-segment/floorplan.js +43 -0
  291. package/dist/duct-segment/geometry.d.ts.map +1 -1
  292. package/dist/duct-segment/geometry.js +3 -0
  293. package/dist/duct-segment/move-tool.d.ts.map +1 -1
  294. package/dist/duct-segment/move-tool.js +33 -6
  295. package/dist/duct-segment/parametrics.d.ts.map +1 -1
  296. package/dist/duct-segment/parametrics.js +45 -1
  297. package/dist/duct-segment/selection.d.ts +3 -4
  298. package/dist/duct-segment/selection.d.ts.map +1 -1
  299. package/dist/duct-segment/selection.js +186 -158
  300. package/dist/duct-segment/tool.d.ts +37 -0
  301. package/dist/duct-segment/tool.d.ts.map +1 -1
  302. package/dist/duct-segment/tool.js +305 -678
  303. package/dist/duct-terminal/parametrics.js +2 -2
  304. package/dist/duct-terminal/tool.d.ts.map +1 -1
  305. package/dist/duct-terminal/tool.js +37 -7
  306. package/dist/elevator/panel.d.ts.map +1 -1
  307. package/dist/elevator/panel.js +7 -7
  308. package/dist/elevator/system.d.ts.map +1 -1
  309. package/dist/elevator/system.js +10 -1
  310. package/dist/eyebrow-vent/definition.d.ts.map +1 -1
  311. package/dist/eyebrow-vent/definition.js +8 -5
  312. package/dist/eyebrow-vent/geometry.d.ts +4 -0
  313. package/dist/eyebrow-vent/geometry.d.ts.map +1 -1
  314. package/dist/eyebrow-vent/geometry.js +60 -15
  315. package/dist/eyebrow-vent/paint.d.ts +4 -0
  316. package/dist/eyebrow-vent/paint.d.ts.map +1 -0
  317. package/dist/eyebrow-vent/paint.js +33 -0
  318. package/dist/eyebrow-vent/panel.js +1 -1
  319. package/dist/eyebrow-vent/parametrics.js +3 -3
  320. package/dist/eyebrow-vent/renderer.d.ts.map +1 -1
  321. package/dist/eyebrow-vent/renderer.js +27 -8
  322. package/dist/fence/definition.d.ts.map +1 -1
  323. package/dist/fence/definition.js +2 -1
  324. package/dist/fence/floorplan-affordances.d.ts +1 -0
  325. package/dist/fence/floorplan-affordances.d.ts.map +1 -1
  326. package/dist/fence/floorplan-affordances.js +30 -1
  327. package/dist/fence/floorplan.d.ts.map +1 -1
  328. package/dist/fence/floorplan.js +14 -0
  329. package/dist/fence/parametrics.js +3 -3
  330. package/dist/fence/tool.d.ts.map +1 -1
  331. package/dist/fence/tool.js +47 -20
  332. package/dist/gutter/corner-mitre.d.ts.map +1 -1
  333. package/dist/gutter/corner-mitre.js +47 -7
  334. package/dist/gutter/definition.d.ts.map +1 -1
  335. package/dist/gutter/definition.js +23 -13
  336. package/dist/gutter/eave-align.d.ts.map +1 -1
  337. package/dist/gutter/eave-align.js +10 -0
  338. package/dist/gutter/eave-snap.d.ts +1 -1
  339. package/dist/gutter/eave-snap.d.ts.map +1 -1
  340. package/dist/gutter/eave-snap.js +10 -23
  341. package/dist/gutter/geometry.d.ts.map +1 -1
  342. package/dist/gutter/geometry.js +126 -8
  343. package/dist/gutter/outlet-lookup.d.ts.map +1 -1
  344. package/dist/gutter/outlet-lookup.js +22 -1
  345. package/dist/gutter/paint.d.ts +3 -0
  346. package/dist/gutter/paint.d.ts.map +1 -0
  347. package/dist/gutter/paint.js +6 -0
  348. package/dist/gutter/parametrics.d.ts.map +1 -1
  349. package/dist/gutter/parametrics.js +4 -1
  350. package/dist/gutter/renderer.d.ts.map +1 -1
  351. package/dist/gutter/renderer.js +63 -7
  352. package/dist/gutter/trim-clip.d.ts +3 -0
  353. package/dist/gutter/trim-clip.d.ts.map +1 -0
  354. package/dist/gutter/trim-clip.js +5 -0
  355. package/dist/hvac-equipment/parametrics.js +3 -3
  356. package/dist/hvac-equipment/tool.d.ts.map +1 -1
  357. package/dist/hvac-equipment/tool.js +12 -2
  358. package/dist/index.d.ts +5 -2
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.js +9 -2
  361. package/dist/item/definition.d.ts.map +1 -1
  362. package/dist/item/definition.js +10 -2
  363. package/dist/item/floorplan-move.d.ts.map +1 -1
  364. package/dist/item/floorplan-move.js +20 -1
  365. package/dist/item/floorplan.d.ts.map +1 -1
  366. package/dist/item/floorplan.js +22 -1
  367. package/dist/item/move-tool.d.ts +28 -1
  368. package/dist/item/move-tool.d.ts.map +1 -1
  369. package/dist/item/move-tool.js +14 -2
  370. package/dist/item/renderer.d.ts.map +1 -1
  371. package/dist/item/renderer.js +16 -6
  372. package/dist/item/system.d.ts +5 -0
  373. package/dist/item/system.d.ts.map +1 -1
  374. package/dist/item/system.js +7 -1
  375. package/dist/lean-to-extension/arc.d.ts +14 -0
  376. package/dist/lean-to-extension/arc.d.ts.map +1 -0
  377. package/dist/lean-to-extension/arc.js +56 -0
  378. package/dist/lean-to-extension/assembly.d.ts +61 -0
  379. package/dist/lean-to-extension/assembly.d.ts.map +1 -0
  380. package/dist/lean-to-extension/assembly.js +761 -0
  381. package/dist/lean-to-extension/canopy-joint.d.ts +35 -0
  382. package/dist/lean-to-extension/canopy-joint.d.ts.map +1 -0
  383. package/dist/lean-to-extension/canopy-joint.js +234 -0
  384. package/dist/lean-to-extension/conical-host.d.ts +15 -0
  385. package/dist/lean-to-extension/conical-host.d.ts.map +1 -0
  386. package/dist/lean-to-extension/conical-host.js +113 -0
  387. package/dist/lean-to-extension/corner-joint.d.ts +29 -0
  388. package/dist/lean-to-extension/corner-joint.d.ts.map +1 -0
  389. package/dist/lean-to-extension/corner-joint.js +1202 -0
  390. package/dist/lean-to-extension/definition.d.ts +4 -0
  391. package/dist/lean-to-extension/definition.d.ts.map +1 -0
  392. package/dist/lean-to-extension/definition.js +433 -0
  393. package/dist/lean-to-extension/floorplan-affordances.d.ts +4 -0
  394. package/dist/lean-to-extension/floorplan-affordances.d.ts.map +1 -0
  395. package/dist/lean-to-extension/floorplan-affordances.js +144 -0
  396. package/dist/lean-to-extension/floorplan-move.d.ts +3 -0
  397. package/dist/lean-to-extension/floorplan-move.d.ts.map +1 -0
  398. package/dist/lean-to-extension/floorplan-move.js +157 -0
  399. package/dist/lean-to-extension/floorplan-tool.d.ts +4 -0
  400. package/dist/lean-to-extension/floorplan-tool.d.ts.map +1 -0
  401. package/dist/lean-to-extension/floorplan-tool.js +385 -0
  402. package/dist/lean-to-extension/floorplan.d.ts +3 -0
  403. package/dist/lean-to-extension/floorplan.d.ts.map +1 -0
  404. package/dist/lean-to-extension/floorplan.js +373 -0
  405. package/dist/lean-to-extension/geometry.d.ts +7 -0
  406. package/dist/lean-to-extension/geometry.d.ts.map +1 -0
  407. package/dist/lean-to-extension/geometry.js +662 -0
  408. package/dist/lean-to-extension/index.d.ts +8 -0
  409. package/dist/lean-to-extension/index.d.ts.map +1 -0
  410. package/dist/lean-to-extension/index.js +7 -0
  411. package/dist/lean-to-extension/layout.d.ts +108 -0
  412. package/dist/lean-to-extension/layout.d.ts.map +1 -0
  413. package/dist/lean-to-extension/layout.js +477 -0
  414. package/dist/lean-to-extension/managed-preview.d.ts +3 -0
  415. package/dist/lean-to-extension/managed-preview.d.ts.map +1 -0
  416. package/dist/lean-to-extension/managed-preview.js +93 -0
  417. package/dist/lean-to-extension/move-tool.d.ts +8 -0
  418. package/dist/lean-to-extension/move-tool.d.ts.map +1 -0
  419. package/dist/lean-to-extension/move-tool.js +202 -0
  420. package/dist/lean-to-extension/paint.d.ts +2 -0
  421. package/dist/lean-to-extension/paint.d.ts.map +1 -0
  422. package/dist/lean-to-extension/paint.js +16 -0
  423. package/dist/lean-to-extension/parametrics.d.ts +4 -0
  424. package/dist/lean-to-extension/parametrics.d.ts.map +1 -0
  425. package/dist/lean-to-extension/parametrics.js +570 -0
  426. package/dist/lean-to-extension/placement-scope.d.ts +3 -0
  427. package/dist/lean-to-extension/placement-scope.d.ts.map +1 -0
  428. package/dist/lean-to-extension/placement-scope.js +4 -0
  429. package/dist/lean-to-extension/placement-validation.d.ts +4 -0
  430. package/dist/lean-to-extension/placement-validation.d.ts.map +1 -0
  431. package/dist/lean-to-extension/placement-validation.js +324 -0
  432. package/dist/lean-to-extension/placement.d.ts +59 -0
  433. package/dist/lean-to-extension/placement.d.ts.map +1 -0
  434. package/dist/lean-to-extension/placement.js +331 -0
  435. package/dist/lean-to-extension/plan-footprint.d.ts +10 -0
  436. package/dist/lean-to-extension/plan-footprint.d.ts.map +1 -0
  437. package/dist/lean-to-extension/plan-footprint.js +27 -0
  438. package/dist/lean-to-extension/preview-geometry.d.ts +7 -0
  439. package/dist/lean-to-extension/preview-geometry.d.ts.map +1 -0
  440. package/dist/lean-to-extension/preview-geometry.js +40 -0
  441. package/dist/lean-to-extension/preview.d.ts +7 -0
  442. package/dist/lean-to-extension/preview.d.ts.map +1 -0
  443. package/dist/lean-to-extension/preview.js +20 -0
  444. package/dist/lean-to-extension/renderer.d.ts +6 -0
  445. package/dist/lean-to-extension/renderer.d.ts.map +1 -0
  446. package/dist/lean-to-extension/renderer.js +34 -0
  447. package/dist/lean-to-extension/roof-attachment.d.ts +28 -0
  448. package/dist/lean-to-extension/roof-attachment.d.ts.map +1 -0
  449. package/dist/lean-to-extension/roof-attachment.js +376 -0
  450. package/dist/lean-to-extension/schema.d.ts +2 -0
  451. package/dist/lean-to-extension/schema.d.ts.map +1 -0
  452. package/dist/lean-to-extension/schema.js +1 -0
  453. package/dist/lean-to-extension/slots.d.ts +5 -0
  454. package/dist/lean-to-extension/slots.d.ts.map +1 -0
  455. package/dist/lean-to-extension/slots.js +15 -0
  456. package/dist/lean-to-extension/system.d.ts +7 -0
  457. package/dist/lean-to-extension/system.d.ts.map +1 -0
  458. package/dist/lean-to-extension/system.js +726 -0
  459. package/dist/lean-to-extension/tool.d.ts +3 -0
  460. package/dist/lean-to-extension/tool.d.ts.map +1 -0
  461. package/dist/lean-to-extension/tool.js +580 -0
  462. package/dist/lean-to-extension/wall-target.d.ts +10 -0
  463. package/dist/lean-to-extension/wall-target.d.ts.map +1 -0
  464. package/dist/lean-to-extension/wall-target.js +29 -0
  465. package/dist/lineset/definition.d.ts.map +1 -1
  466. package/dist/lineset/definition.js +1 -0
  467. package/dist/liquid-line/definition.d.ts.map +1 -1
  468. package/dist/liquid-line/definition.js +1 -0
  469. package/dist/pipe-fitting/definition.d.ts.map +1 -1
  470. package/dist/pipe-fitting/definition.js +16 -2
  471. package/dist/pipe-fitting/floorplan.d.ts.map +1 -1
  472. package/dist/pipe-fitting/floorplan.js +4 -0
  473. package/dist/pipe-fitting/geometry.d.ts +3 -5
  474. package/dist/pipe-fitting/geometry.d.ts.map +1 -1
  475. package/dist/pipe-fitting/geometry.js +154 -21
  476. package/dist/pipe-fitting/inline-insertion.d.ts +13 -0
  477. package/dist/pipe-fitting/inline-insertion.d.ts.map +1 -0
  478. package/dist/pipe-fitting/inline-insertion.js +96 -0
  479. package/dist/pipe-fitting/parametrics.d.ts.map +1 -1
  480. package/dist/pipe-fitting/parametrics.js +17 -3
  481. package/dist/pipe-fitting/ports.d.ts.map +1 -1
  482. package/dist/pipe-fitting/ports.js +8 -1
  483. package/dist/pipe-fitting/tool.d.ts +26 -0
  484. package/dist/pipe-fitting/tool.d.ts.map +1 -1
  485. package/dist/pipe-fitting/tool.js +182 -37
  486. package/dist/pipe-segment/continuation.d.ts +22 -0
  487. package/dist/pipe-segment/continuation.d.ts.map +1 -0
  488. package/dist/pipe-segment/continuation.js +146 -0
  489. package/dist/pipe-segment/definition.d.ts.map +1 -1
  490. package/dist/pipe-segment/definition.js +23 -7
  491. package/dist/pipe-segment/floorplan.d.ts.map +1 -1
  492. package/dist/pipe-segment/floorplan.js +42 -0
  493. package/dist/pipe-segment/geometry.d.ts +2 -1
  494. package/dist/pipe-segment/geometry.d.ts.map +1 -1
  495. package/dist/pipe-segment/geometry.js +4 -1
  496. package/dist/pipe-segment/move-tool.d.ts.map +1 -1
  497. package/dist/pipe-segment/move-tool.js +25 -5
  498. package/dist/pipe-segment/parametrics.d.ts.map +1 -1
  499. package/dist/pipe-segment/parametrics.js +45 -0
  500. package/dist/pipe-segment/selection.d.ts +3 -4
  501. package/dist/pipe-segment/selection.d.ts.map +1 -1
  502. package/dist/pipe-segment/selection.js +169 -105
  503. package/dist/pipe-segment/slope.d.ts +5 -0
  504. package/dist/pipe-segment/slope.d.ts.map +1 -0
  505. package/dist/pipe-segment/slope.js +10 -0
  506. package/dist/pipe-segment/tool.d.ts.map +1 -1
  507. package/dist/pipe-segment/tool.js +325 -545
  508. package/dist/pipe-trap/tool.d.ts.map +1 -1
  509. package/dist/pipe-trap/tool.js +15 -2
  510. package/dist/ridge-vent/definition.js +1 -1
  511. package/dist/ridge-vent/panel.d.ts.map +1 -1
  512. package/dist/ridge-vent/panel.js +2 -2
  513. package/dist/ridge-vent/parametrics.js +1 -1
  514. package/dist/roof/conical-roof-placement.d.ts +36 -0
  515. package/dist/roof/conical-roof-placement.d.ts.map +1 -0
  516. package/dist/roof/conical-roof-placement.js +134 -0
  517. package/dist/roof/conical-roof.d.ts +3 -0
  518. package/dist/roof/conical-roof.d.ts.map +1 -0
  519. package/dist/roof/conical-roof.js +53 -0
  520. package/dist/roof/definition.d.ts +3 -10
  521. package/dist/roof/definition.d.ts.map +1 -1
  522. package/dist/roof/definition.js +83 -13
  523. package/dist/roof/floorplan.d.ts +3 -10
  524. package/dist/roof/floorplan.d.ts.map +1 -1
  525. package/dist/roof/floorplan.js +139 -165
  526. package/dist/roof/index.d.ts +1 -0
  527. package/dist/roof/index.d.ts.map +1 -1
  528. package/dist/roof/index.js +1 -0
  529. package/dist/roof/panel.d.ts.map +1 -1
  530. package/dist/roof/panel.js +22 -23
  531. package/dist/roof/renderer.d.ts.map +1 -1
  532. package/dist/roof/roof-footprint-source.d.ts +16 -0
  533. package/dist/roof/roof-footprint-source.d.ts.map +1 -0
  534. package/dist/roof/roof-footprint-source.js +14 -0
  535. package/dist/roof/roof-footprint.d.ts +25 -0
  536. package/dist/roof/roof-footprint.d.ts.map +1 -0
  537. package/dist/roof/roof-footprint.js +94 -0
  538. package/dist/roof/roof-placement-mode.d.ts +18 -0
  539. package/dist/roof/roof-placement-mode.d.ts.map +1 -0
  540. package/dist/roof/roof-placement-mode.js +24 -0
  541. package/dist/roof/tool.d.ts +10 -0
  542. package/dist/roof/tool.d.ts.map +1 -0
  543. package/dist/roof/tool.js +922 -0
  544. package/dist/roof-segment/definition.d.ts.map +1 -1
  545. package/dist/roof-segment/definition.js +52 -8
  546. package/dist/roof-segment/floorplan-affordances.d.ts +5 -6
  547. package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
  548. package/dist/roof-segment/floorplan-affordances.js +64 -18
  549. package/dist/roof-segment/floorplan.d.ts +3 -2
  550. package/dist/roof-segment/floorplan.d.ts.map +1 -1
  551. package/dist/roof-segment/floorplan.js +95 -46
  552. package/dist/roof-segment/panel.d.ts.map +1 -1
  553. package/dist/roof-segment/panel.js +122 -27
  554. package/dist/scan/definition.d.ts +2 -3
  555. package/dist/scan/definition.d.ts.map +1 -1
  556. package/dist/scan/definition.js +9 -7
  557. package/dist/scan/parametrics.d.ts.map +1 -1
  558. package/dist/scan/parametrics.js +13 -1
  559. package/dist/scan/renderer.d.ts.map +1 -1
  560. package/dist/scan/renderer.js +8 -2
  561. package/dist/shared/accessory-cursor.d.ts +7 -0
  562. package/dist/shared/accessory-cursor.d.ts.map +1 -0
  563. package/dist/shared/accessory-cursor.js +83 -0
  564. package/dist/shared/accessory-floorplan.d.ts +4 -0
  565. package/dist/shared/accessory-floorplan.d.ts.map +1 -0
  566. package/dist/shared/accessory-floorplan.js +51 -0
  567. package/dist/shared/accessory-geometry.d.ts +7 -0
  568. package/dist/shared/accessory-geometry.d.ts.map +1 -0
  569. package/dist/shared/accessory-geometry.js +79 -0
  570. package/dist/shared/accessory-placement.d.ts +10 -0
  571. package/dist/shared/accessory-placement.d.ts.map +1 -0
  572. package/dist/shared/accessory-placement.js +126 -0
  573. package/dist/shared/accessory-snapping.d.ts +5 -0
  574. package/dist/shared/accessory-snapping.d.ts.map +1 -0
  575. package/dist/shared/accessory-snapping.js +40 -0
  576. package/dist/shared/automatic-run-end-cap.d.ts +11 -0
  577. package/dist/shared/automatic-run-end-cap.d.ts.map +1 -0
  578. package/dist/shared/automatic-run-end-cap.js +159 -0
  579. package/dist/shared/block-face-host.d.ts +15 -0
  580. package/dist/shared/block-face-host.d.ts.map +1 -0
  581. package/dist/shared/block-face-host.js +36 -0
  582. package/dist/shared/connection-compatibility.d.ts +8 -0
  583. package/dist/shared/connection-compatibility.d.ts.map +1 -0
  584. package/dist/shared/connection-compatibility.js +28 -0
  585. package/dist/shared/connection-feedback.d.ts +10 -0
  586. package/dist/shared/connection-feedback.d.ts.map +1 -0
  587. package/dist/shared/connection-feedback.js +17 -0
  588. package/dist/shared/distribution-run-contract.d.ts +49 -0
  589. package/dist/shared/distribution-run-contract.d.ts.map +1 -0
  590. package/dist/shared/distribution-run-contract.js +30 -0
  591. package/dist/shared/distribution-run-tool.d.ts +107 -0
  592. package/dist/shared/distribution-run-tool.d.ts.map +1 -0
  593. package/dist/shared/distribution-run-tool.js +941 -0
  594. package/dist/shared/dormer-wall-opening-placement.d.ts +21 -0
  595. package/dist/shared/dormer-wall-opening-placement.d.ts.map +1 -0
  596. package/dist/shared/dormer-wall-opening-placement.js +101 -0
  597. package/dist/shared/duct-adapter.d.ts +10 -0
  598. package/dist/shared/duct-adapter.d.ts.map +1 -0
  599. package/dist/shared/duct-adapter.js +43 -0
  600. package/dist/shared/elbow-branch-continuation.d.ts +20 -0
  601. package/dist/shared/elbow-branch-continuation.d.ts.map +1 -0
  602. package/dist/shared/elbow-branch-continuation.js +200 -0
  603. package/dist/shared/fitting-clearance.d.ts +5 -0
  604. package/dist/shared/fitting-clearance.d.ts.map +1 -0
  605. package/dist/shared/fitting-clearance.js +11 -0
  606. package/dist/shared/fitting-deletion-cleanup.d.ts +14 -0
  607. package/dist/shared/fitting-deletion-cleanup.d.ts.map +1 -0
  608. package/dist/shared/fitting-deletion-cleanup.js +297 -0
  609. package/dist/shared/fitting-surface-support.d.ts +5 -0
  610. package/dist/shared/fitting-surface-support.d.ts.map +1 -0
  611. package/dist/shared/fitting-surface-support.js +42 -0
  612. package/dist/shared/fitting-tool-options.d.ts +4 -0
  613. package/dist/shared/fitting-tool-options.d.ts.map +1 -0
  614. package/dist/shared/fitting-tool-options.js +175 -0
  615. package/dist/shared/floor-placement.d.ts +1 -1
  616. package/dist/shared/floor-placement.d.ts.map +1 -1
  617. package/dist/shared/floor-placement.js +13 -33
  618. package/dist/shared/ghost-materials.d.ts.map +1 -1
  619. package/dist/shared/ghost-materials.js +2 -1
  620. package/dist/shared/lean-to-post-omissions.d.ts +8 -0
  621. package/dist/shared/lean-to-post-omissions.d.ts.map +1 -0
  622. package/dist/shared/lean-to-post-omissions.js +51 -0
  623. package/dist/shared/mep-fitting-actions.d.ts +5 -0
  624. package/dist/shared/mep-fitting-actions.d.ts.map +1 -0
  625. package/dist/shared/mep-fitting-actions.js +16 -0
  626. package/dist/shared/mep-presets.d.ts +11 -0
  627. package/dist/shared/mep-presets.d.ts.map +1 -0
  628. package/dist/shared/mep-presets.js +34 -0
  629. package/dist/shared/node-batch/candidates.d.ts +29 -0
  630. package/dist/shared/node-batch/candidates.d.ts.map +1 -0
  631. package/dist/shared/node-batch/candidates.js +260 -0
  632. package/dist/shared/node-batch/store.d.ts +26 -0
  633. package/dist/shared/node-batch/store.d.ts.map +1 -0
  634. package/dist/shared/node-batch/store.js +319 -0
  635. package/dist/shared/node-batch/system.d.ts +8 -0
  636. package/dist/shared/node-batch/system.d.ts.map +1 -0
  637. package/dist/shared/node-batch/system.js +569 -0
  638. package/dist/shared/node-batch/types.d.ts +99 -0
  639. package/dist/shared/node-batch/types.d.ts.map +1 -0
  640. package/dist/shared/node-batch/types.js +4 -0
  641. package/dist/shared/opening-move-history.d.ts +47 -0
  642. package/dist/shared/opening-move-history.d.ts.map +1 -0
  643. package/dist/shared/opening-move-history.js +18 -0
  644. package/dist/shared/opening-move-wall-gate.d.ts +55 -0
  645. package/dist/shared/opening-move-wall-gate.d.ts.map +1 -0
  646. package/dist/shared/opening-move-wall-gate.js +44 -0
  647. package/dist/shared/path-point-affordance.d.ts +2 -2
  648. package/dist/shared/path-point-affordance.d.ts.map +1 -1
  649. package/dist/shared/path-point-affordance.js +30 -6
  650. package/dist/shared/placeholder-geometry.d.ts.map +1 -1
  651. package/dist/shared/placeholder-geometry.js +4 -0
  652. package/dist/shared/ports.d.ts +20 -3
  653. package/dist/shared/ports.d.ts.map +1 -1
  654. package/dist/shared/ports.js +148 -7
  655. package/dist/shared/primitive-uv.d.ts +17 -0
  656. package/dist/shared/primitive-uv.d.ts.map +1 -0
  657. package/dist/shared/primitive-uv.js +107 -0
  658. package/dist/shared/reducer-size.d.ts +2 -0
  659. package/dist/shared/reducer-size.d.ts.map +1 -0
  660. package/dist/shared/reducer-size.js +12 -0
  661. package/dist/shared/ridge-snap.js +1 -1
  662. package/dist/shared/roof-surface.d.ts.map +1 -1
  663. package/dist/shared/roof-surface.js +17 -2
  664. package/dist/shared/run-cursor.d.ts +22 -0
  665. package/dist/shared/run-cursor.d.ts.map +1 -0
  666. package/dist/shared/run-cursor.js +19 -0
  667. package/dist/shared/run-direction-feedback.d.ts +20 -0
  668. package/dist/shared/run-direction-feedback.d.ts.map +1 -0
  669. package/dist/shared/run-direction-feedback.js +139 -0
  670. package/dist/shared/run-hanger-controls.d.ts +7 -0
  671. package/dist/shared/run-hanger-controls.d.ts.map +1 -0
  672. package/dist/shared/run-hanger-controls.js +44 -0
  673. package/dist/shared/run-hanger-inspector.d.ts +5 -0
  674. package/dist/shared/run-hanger-inspector.d.ts.map +1 -0
  675. package/dist/shared/run-hanger-inspector.js +43 -0
  676. package/dist/shared/run-hanger-mode.d.ts +11 -0
  677. package/dist/shared/run-hanger-mode.d.ts.map +1 -0
  678. package/dist/shared/run-hanger-mode.js +32 -0
  679. package/dist/shared/run-hanger-system.d.ts +3 -0
  680. package/dist/shared/run-hanger-system.d.ts.map +1 -0
  681. package/dist/shared/run-hanger-system.js +39 -0
  682. package/dist/shared/run-hangers.d.ts +25 -0
  683. package/dist/shared/run-hangers.d.ts.map +1 -0
  684. package/dist/shared/run-hangers.js +261 -0
  685. package/dist/shared/run-port-snap.d.ts +11 -0
  686. package/dist/shared/run-port-snap.d.ts.map +1 -0
  687. package/dist/shared/run-port-snap.js +19 -0
  688. package/dist/shared/run-screen-direction.d.ts +5 -0
  689. package/dist/shared/run-screen-direction.d.ts.map +1 -0
  690. package/dist/shared/run-screen-direction.js +24 -0
  691. package/dist/shared/selection-handles.d.ts +4 -0
  692. package/dist/shared/selection-handles.d.ts.map +1 -1
  693. package/dist/shared/selection-handles.js +10 -0
  694. package/dist/shared/slot-paint.d.ts +8 -1
  695. package/dist/shared/slot-paint.d.ts.map +1 -1
  696. package/dist/shared/slot-paint.js +120 -27
  697. package/dist/shared/surface-paint.d.ts +1 -2
  698. package/dist/shared/surface-paint.d.ts.map +1 -1
  699. package/dist/shared/surface-paint.js +9 -20
  700. package/dist/shared/system-check-panel.d.ts +6 -0
  701. package/dist/shared/system-check-panel.d.ts.map +1 -0
  702. package/dist/shared/system-check-panel.js +62 -0
  703. package/dist/shared/system-checks.d.ts +9 -0
  704. package/dist/shared/system-checks.d.ts.map +1 -0
  705. package/dist/shared/system-checks.js +131 -0
  706. package/dist/shared/wall-attach-target.d.ts +14 -2
  707. package/dist/shared/wall-attach-target.d.ts.map +1 -1
  708. package/dist/shared/wall-attach-target.js +108 -4
  709. package/dist/shared/wall-opening-clearance.d.ts +19 -0
  710. package/dist/shared/wall-opening-clearance.d.ts.map +1 -0
  711. package/dist/shared/wall-opening-clearance.js +28 -0
  712. package/dist/shared/wall-run-move.d.ts +17 -0
  713. package/dist/shared/wall-run-move.d.ts.map +1 -0
  714. package/dist/shared/wall-run-move.js +56 -0
  715. package/dist/shelf/parametrics.js +4 -4
  716. package/dist/site/renderer.d.ts.map +1 -1
  717. package/dist/site/renderer.js +40 -28
  718. package/dist/site/terrain-geometry.d.ts +1 -1
  719. package/dist/site/terrain-geometry.d.ts.map +1 -1
  720. package/dist/site/terrain-geometry.js +35 -9
  721. package/dist/site/terrain-mesh.d.ts +5 -0
  722. package/dist/site/terrain-mesh.d.ts.map +1 -1
  723. package/dist/site/terrain-mesh.js +63 -34
  724. package/dist/skylight/definition.js +1 -1
  725. package/dist/skylight/panel.js +1 -1
  726. package/dist/skylight/parametrics.js +2 -2
  727. package/dist/slab/definition.d.ts.map +1 -1
  728. package/dist/slab/definition.js +6 -1
  729. package/dist/slab/dependency-tracker.d.ts +3 -0
  730. package/dist/slab/dependency-tracker.d.ts.map +1 -0
  731. package/dist/slab/dependency-tracker.js +104 -0
  732. package/dist/slab/floorplan-affordances.d.ts +8 -8
  733. package/dist/slab/geometry.d.ts.map +1 -1
  734. package/dist/slab/geometry.js +16 -2
  735. package/dist/slab/panel.js +1 -1
  736. package/dist/slab/parametrics.js +1 -1
  737. package/dist/slab/system.d.ts.map +1 -1
  738. package/dist/slab/system.js +8 -64
  739. package/dist/solar-panel/definition.js +1 -1
  740. package/dist/solar-panel/panel.js +1 -1
  741. package/dist/solar-panel/parametrics.js +2 -2
  742. package/dist/stair/panel.d.ts.map +1 -1
  743. package/dist/stair/panel.js +18 -13
  744. package/dist/stair/stair-type.d.ts +18 -0
  745. package/dist/stair/stair-type.d.ts.map +1 -0
  746. package/dist/stair/stair-type.js +25 -0
  747. package/dist/stair-segment/panel.d.ts.map +1 -1
  748. package/dist/stair-segment/panel.js +44 -5
  749. package/dist/turbine-vent/definition.d.ts.map +1 -1
  750. package/dist/turbine-vent/definition.js +8 -5
  751. package/dist/turbine-vent/geometry.d.ts.map +1 -1
  752. package/dist/turbine-vent/geometry.js +48 -18
  753. package/dist/turbine-vent/paint.d.ts +4 -0
  754. package/dist/turbine-vent/paint.d.ts.map +1 -0
  755. package/dist/turbine-vent/paint.js +35 -0
  756. package/dist/turbine-vent/panel.js +1 -1
  757. package/dist/turbine-vent/parametrics.js +2 -2
  758. package/dist/turbine-vent/renderer.d.ts.map +1 -1
  759. package/dist/turbine-vent/renderer.js +31 -9
  760. package/dist/wall/curve-eligibility.d.ts +3 -0
  761. package/dist/wall/curve-eligibility.d.ts.map +1 -0
  762. package/dist/wall/curve-eligibility.js +10 -0
  763. package/dist/wall/curve-tool.d.ts.map +1 -1
  764. package/dist/wall/curve-tool.js +8 -11
  765. package/dist/wall/definition.d.ts +1 -1
  766. package/dist/wall/definition.d.ts.map +1 -1
  767. package/dist/wall/definition.js +36 -13
  768. package/dist/wall/floorplan-affordances.d.ts +1 -0
  769. package/dist/wall/floorplan-affordances.d.ts.map +1 -1
  770. package/dist/wall/floorplan-affordances.js +46 -7
  771. package/dist/wall/floorplan-move.d.ts +3 -4
  772. package/dist/wall/floorplan-move.d.ts.map +1 -1
  773. package/dist/wall/floorplan-move.js +122 -9
  774. package/dist/wall/floorplan.d.ts.map +1 -1
  775. package/dist/wall/floorplan.js +19 -23
  776. package/dist/wall/move-shared.d.ts.map +1 -1
  777. package/dist/wall/move-shared.js +10 -7
  778. package/dist/wall/paint.d.ts.map +1 -1
  779. package/dist/wall/paint.js +2 -0
  780. package/dist/wall/panel.d.ts.map +1 -1
  781. package/dist/wall/panel.js +10 -17
  782. package/dist/wall/parametrics.js +2 -2
  783. package/dist/wall/pointer-transparency.d.ts +128 -0
  784. package/dist/wall/pointer-transparency.d.ts.map +1 -0
  785. package/dist/wall/pointer-transparency.js +147 -0
  786. package/dist/wall/renderer.d.ts.map +1 -1
  787. package/dist/wall/renderer.js +65 -8
  788. package/dist/wall/selection-hit-owner.d.ts +53 -0
  789. package/dist/wall/selection-hit-owner.d.ts.map +1 -0
  790. package/dist/wall/selection-hit-owner.js +79 -0
  791. package/dist/wall/system.d.ts +2 -0
  792. package/dist/wall/system.d.ts.map +1 -1
  793. package/dist/wall/system.js +66 -25
  794. package/dist/wall/tool.d.ts.map +1 -1
  795. package/dist/wall/tool.js +5 -0
  796. package/dist/wall/treatment-level-data.d.ts +6 -1
  797. package/dist/wall/treatment-level-data.d.ts.map +1 -1
  798. package/dist/wall/treatment-level-data.js +82 -5
  799. package/dist/wall/treatments.d.ts +1 -0
  800. package/dist/wall/treatments.d.ts.map +1 -1
  801. package/dist/wall/treatments.js +5 -0
  802. package/dist/wall/wall-batch-system.d.ts +38 -6
  803. package/dist/wall/wall-batch-system.d.ts.map +1 -1
  804. package/dist/wall/wall-batch-system.js +122 -25
  805. package/dist/wall/wall-batch.js +2 -2
  806. package/dist/window/definition.d.ts +2 -1
  807. package/dist/window/definition.d.ts.map +1 -1
  808. package/dist/window/definition.js +51 -24
  809. package/dist/window/floorplan-move.d.ts.map +1 -1
  810. package/dist/window/floorplan-move.js +1 -1
  811. package/dist/window/move-tool.d.ts +7 -5
  812. package/dist/window/move-tool.d.ts.map +1 -1
  813. package/dist/window/move-tool.js +344 -58
  814. package/dist/window/panel.d.ts.map +1 -1
  815. package/dist/window/panel.js +2 -0
  816. package/dist/window/parametrics.js +2 -2
  817. package/dist/window/renderer.d.ts.map +1 -1
  818. package/dist/window/renderer.js +5 -7
  819. package/dist/window/tool.d.ts.map +1 -1
  820. package/dist/window/tool.js +227 -13
  821. package/dist/zone/floorplan-affordances.d.ts +12 -12
  822. package/package.json +11 -9
  823. package/dist/dormer/panel-window-section.d.ts +0 -14
  824. package/dist/dormer/panel-window-section.d.ts.map +0 -1
  825. package/dist/dormer/panel-window-section.js +0 -59
  826. package/dist/dormer/window-assembly.d.ts +0 -22
  827. package/dist/dormer/window-assembly.d.ts.map +0 -1
  828. package/dist/dormer/window-assembly.js +0 -111
  829. package/dist/dormer/window-frame.d.ts +0 -24
  830. package/dist/dormer/window-frame.d.ts.map +0 -1
  831. package/dist/dormer/window-frame.js +0 -100
@@ -1,3 +1,4 @@
1
+ import { computeGutterEaveY, GUTTER_EAVE_TUCK_INWARD, GUTTER_EAVE_TUCK_UP, getRoofShapeEaveSides, } from '@pascal-app/core';
1
2
  /**
2
3
  * Shared eave-snap math for the gutter's placement + move tools.
3
4
  *
@@ -18,8 +19,8 @@
18
19
  // drip-edge. These tuck the snap so the gutter reads as "attached to
19
20
  // the fascia" rather than "floating at the very tip of the overhang".
20
21
  // Tuned by feel — bump them up if the gutter looks too low / outboard.
21
- export const EAVE_TUCK_INWARD = 0.04;
22
- export const EAVE_TUCK_UP = 0.04;
22
+ export const EAVE_TUCK_INWARD = GUTTER_EAVE_TUCK_INWARD;
23
+ export const EAVE_TUCK_UP = GUTTER_EAVE_TUCK_UP;
23
24
  /**
24
25
  * Live eave Y from a segment's wallHeight + overhang + pitch. Pulled
25
26
  * out as a shared helper because the renderer derives Y from this same
@@ -28,18 +29,7 @@ export const EAVE_TUCK_UP = 0.04;
28
29
  * `resolveEaveSnap` uses the same formula at placement.
29
30
  */
30
31
  export function computeEaveY(segment) {
31
- const wallHeight = segment.wallHeight ?? 0;
32
- // Flat roofs have no slope drop and no slope-surface-vs-deck-top
33
- // offset — the deck top IS the eave line. EAVE_TUCK_UP is a
34
- // correction that lifts a SLOPED gutter from the slope-surface up to
35
- // the deck-top line; applying it to a flat deck floats the gutter
36
- // above the roof and leaves a visible gap between the edge and the
37
- // gutter. So mount flat gutters right at the deck top.
38
- if ((segment.roofType ?? 'gable') === 'flat')
39
- return wallHeight;
40
- const overhang = segment.overhang ?? 0;
41
- const pitchRad = ((segment.pitch ?? 0) * Math.PI) / 180;
42
- return wallHeight - overhang * Math.tan(pitchRad) + EAVE_TUCK_UP;
32
+ return computeGutterEaveY(segment);
43
33
  }
44
34
  /**
45
35
  * Pick which of the segment's eaves is closest to the cursor.
@@ -49,7 +39,7 @@ export function computeEaveY(segment) {
49
39
  * regardless of which side the cursor is on — clicking on the high
50
40
  * side still rolls the gutter down to the low eave.
51
41
  *
52
- * - `hip` / `flat` / `dutch`: 4-way. The slope the user is standing
42
+ * - Four-eave roofs: the slope the user is standing
53
43
  * on is determined by whichever of `|lx|/halfW` or `|lz|/halfD` is
54
44
  * larger — same `max(fx, fz)` discriminator the segment-hit's
55
45
  * `analyticalSurfaceY` uses for hip. Sign of the dominant axis
@@ -57,16 +47,13 @@ export function computeEaveY(segment) {
57
47
  * lower run has all four eaves at the eave line — it gets the same
58
48
  * 4-way snap as hip.
59
49
  *
60
- * - `gable` / `gambrel` / `mansard`: 2-way `±Z`. Mansard has real
61
- * 4-side eaves in plan, but the segment-hit formula approximates it
62
- * as 2-slope (depth-only), so we stay consistent here — the user
63
- * can re-place the gutter manually on a side eave if mansard
64
- * becomes important.
50
+ * - `gable` / `gambrel`: 2-way `±Z`.
65
51
  */
66
52
  function pickEaveSide(roofType, localX, localZ, halfW, halfD) {
67
- if (roofType === 'shed')
68
- return '+Z';
69
- if (roofType === 'hip' || roofType === 'flat' || roofType === 'dutch') {
53
+ const sides = getRoofShapeEaveSides(roofType);
54
+ if (sides.length === 1)
55
+ return sides[0];
56
+ if (sides.includes('+X')) {
70
57
  const fx = halfW > 0 ? Math.abs(localX) / halfW : 0;
71
58
  const fz = halfD > 0 ? Math.abs(localZ) / halfD : 0;
72
59
  if (fx > fz)
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/gutter/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAQlD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,gBAAgB,CAAA;AAW7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,YAAwB,GAC/B,KAAK,CAAC,cAAc,CAsLtB"}
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/gutter/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAQlD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,gBAAgB,CAAA;AAW7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,YAAwB,GAC/B,KAAK,CAAC,cAAc,CA8LtB"}
@@ -1,6 +1,7 @@
1
1
  import { Brush, csgEvaluator, csgGeometry, prepareBrushForCSG, SUBTRACTION, } from '@pascal-app/viewer';
2
2
  import * as THREE from 'three';
3
3
  import { mergeGeometries } from 'three/examples/jsm/utils/BufferGeometryUtils.js';
4
+ import { applyCylinderWorldUvs, applyPlanarWorldUvs, copyUvToSecondaryChannel, } from '../shared/primitive-uv';
4
5
  import { NO_MITRES } from './corner-mitre';
5
6
  import { OUTLET_STUB_LENGTH, OUTLET_WALL_THICKNESS, outletDims, outletShapeForProfile, profileFloorMidZ, } from './profile-geometry';
6
7
  /**
@@ -78,7 +79,7 @@ export function buildGutterGeometry(node, mitres = NO_MITRES) {
78
79
  depth: channelLen,
79
80
  bevelEnabled: false,
80
81
  curveSegments: 16,
81
- steps: 1,
82
+ steps: gutterArcSteps(node, channelLen),
82
83
  });
83
84
  // Apply the corner-mitre skew while we're still in the source frame.
84
85
  // Source axes (pre-rotation): X_cs = outward, Y_cs = vertical,
@@ -135,7 +136,7 @@ export function buildGutterGeometry(node, mitres = NO_MITRES) {
135
136
  depth: capLeftLen,
136
137
  bevelEnabled: false,
137
138
  curveSegments: 16,
138
- steps: 1,
139
+ steps: gutterArcSteps(node, capLeftLen),
139
140
  });
140
141
  leftCap.rotateY(-Math.PI / 2);
141
142
  // Left cap spans [-len/2, -len/2 + capLeftLen]: translate by
@@ -149,7 +150,7 @@ export function buildGutterGeometry(node, mitres = NO_MITRES) {
149
150
  depth: capRightLen,
150
151
  bevelEnabled: false,
151
152
  curveSegments: 16,
152
- steps: 1,
153
+ steps: gutterArcSteps(node, capRightLen),
153
154
  });
154
155
  rightCap.rotateY(-Math.PI / 2);
155
156
  // Right cap spans [+len/2 - capRightLen, +len/2].
@@ -190,7 +191,11 @@ export function buildGutterGeometry(node, mitres = NO_MITRES) {
190
191
  // CSG drill — punches each bore through the merged geometry. Runs
191
192
  // last so the floor + collars are already in one mesh; each drill
192
193
  // cuts both at once, subtracted sequentially.
193
- if (placements.length > 0) {
194
+ // Subtracting a near-end outlet from an already subdivided curved run makes
195
+ // three-bvh-csg discard the complete cross-section around the drill, leaving
196
+ // a visible break in the fascia. Keep the curved trough watertight; its collar
197
+ // and connected downspout still conceal the floor where the bore would sit.
198
+ if (placements.length > 0 && !node.arc) {
194
199
  let workingBrush = new Brush(merged);
195
200
  prepareBrushForCSG(workingBrush);
196
201
  for (const p of placements) {
@@ -208,9 +213,115 @@ export function buildGutterGeometry(node, mitres = NO_MITRES) {
208
213
  }
209
214
  const cutGeometry = csgGeometry(workingBrush);
210
215
  merged.dispose();
211
- return cutGeometry;
216
+ const finished = bendGutterGeometryAlongArc(cutGeometry, node, mitres);
217
+ copyUvToSecondaryChannel(finished);
218
+ return finished;
212
219
  }
213
- return merged;
220
+ const finished = bendGutterGeometryAlongArc(merged, node, mitres);
221
+ copyUvToSecondaryChannel(finished);
222
+ return finished;
223
+ }
224
+ function gutterArcSteps(node, length) {
225
+ if (!node.arc || !Number.isFinite(node.arc.radius))
226
+ return 1;
227
+ return Math.max(1, Math.min(32, Math.ceil(length / 0.4)));
228
+ }
229
+ // Bend the finished straight gutter (length along mesh-+X, outward along mesh-+Z)
230
+ // onto its stored concentric arc. Each vertex keeps its vertical Y; its (x, z) rotate
231
+ // about the arc center by the angle its along-length coordinate subtends, so the trough
232
+ // hugs the same circle as the deck's eave. Absent `arc` is a straight no-op.
233
+ function bendGutterGeometryAlongArc(geometry, node, mitres) {
234
+ const arc = node.arc;
235
+ if (!arc || !Number.isFinite(arc.radius))
236
+ return geometry;
237
+ const signedRef = (Math.sign(arc.centerZ) || 1) * arc.radius;
238
+ const position = geometry.attributes.position;
239
+ const metadata = node.metadata && typeof node.metadata === 'object' && !Array.isArray(node.metadata)
240
+ ? node.metadata
241
+ : {};
242
+ const rawStraightEnds = metadata.leanToGutterArcStraightEnds;
243
+ const straightEnds = rawStraightEnds && typeof rawStraightEnds === 'object' && !Array.isArray(rawStraightEnds)
244
+ ? rawStraightEnds
245
+ : {};
246
+ const straightEnd = (side) => {
247
+ const raw = straightEnds[side];
248
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
249
+ return null;
250
+ const value = raw;
251
+ return typeof value.startX === 'number' && typeof value.endX === 'number'
252
+ ? { startX: value.startX, endX: value.endX }
253
+ : null;
254
+ };
255
+ const leftStraight = straightEnd('left');
256
+ const rightStraight = straightEnd('right');
257
+ const bendPoint = (x, z, phi) => {
258
+ const radial = z - arc.centerZ;
259
+ return {
260
+ x: arc.centerX - radial * Math.sin(phi),
261
+ z: arc.centerZ + radial * Math.cos(phi),
262
+ };
263
+ };
264
+ const bendMitredEnd = (x, z, endX) => {
265
+ const phi = (endX - arc.centerX) / signedRef;
266
+ const base = bendPoint(endX, z, phi);
267
+ const extension = x - endX;
268
+ return {
269
+ x: base.x + extension * Math.cos(phi),
270
+ z: base.z + extension * Math.sin(phi),
271
+ };
272
+ };
273
+ const bendStraightEnd = (x, z, transition) => {
274
+ const startPhi = (transition.startX - arc.centerX) / signedRef;
275
+ const endPhi = (transition.endX - arc.centerX) / signedRef;
276
+ const start = bendPoint(transition.startX, 0, startPhi);
277
+ const end = bendPoint(transition.endX, 0, endPhi);
278
+ const spanX = transition.endX - transition.startX;
279
+ const direction = Math.sign(spanX) || 1;
280
+ const beyondEnd = Math.max(0, (x - transition.endX) * direction);
281
+ const pathX = x - beyondEnd * direction;
282
+ const ratio = Math.abs(spanX) > 1e-6 ? (pathX - transition.startX) / spanX : 0;
283
+ let centerX = start.x + (end.x - start.x) * ratio;
284
+ let centerZ = start.z + (end.z - start.z) * ratio;
285
+ const chordLength = Math.hypot(end.x - start.x, end.z - start.z);
286
+ const tangentX = chordLength > 1e-6 ? (end.x - start.x) / chordLength : Math.cos(startPhi);
287
+ const tangentZ = chordLength > 1e-6 ? (end.z - start.z) / chordLength : Math.sin(startPhi);
288
+ centerX += beyondEnd * tangentX;
289
+ centerZ += beyondEnd * tangentZ;
290
+ let normalX = -tangentZ;
291
+ let normalZ = tangentX;
292
+ const midPhi = (startPhi + endPhi) / 2;
293
+ if (normalX * -Math.sin(midPhi) + normalZ * Math.cos(midPhi) < 0) {
294
+ normalX = -normalX;
295
+ normalZ = -normalZ;
296
+ }
297
+ return { x: centerX + z * normalX, z: centerZ + z * normalZ };
298
+ };
299
+ const rightTan = Math.tan(mitres.right);
300
+ const leftTan = Math.tan(mitres.left);
301
+ const halfLength = Math.max(0.05, node.length) / 2;
302
+ const endEpsilon = 1e-4;
303
+ for (let index = 0; index < position.count; index++) {
304
+ const x = position.getX(index);
305
+ const z = position.getZ(index);
306
+ const onRightMitre = mitres.right !== 0 && Math.abs(x - (halfLength + z * rightTan)) < endEpsilon;
307
+ const onLeftMitre = mitres.left !== 0 && Math.abs(x - (-halfLength - z * leftTan)) < endEpsilon;
308
+ const onRightStraight = rightStraight && x >= rightStraight.startX - endEpsilon;
309
+ const onLeftStraight = leftStraight && x <= leftStraight.startX + endEpsilon;
310
+ const bent = onRightStraight
311
+ ? bendStraightEnd(x, z, rightStraight)
312
+ : onLeftStraight
313
+ ? bendStraightEnd(x, z, leftStraight)
314
+ : onRightMitre
315
+ ? bendMitredEnd(x, z, halfLength)
316
+ : onLeftMitre
317
+ ? bendMitredEnd(x, z, -halfLength)
318
+ : bendPoint(x, z, (x - arc.centerX) / signedRef);
319
+ position.setX(index, bent.x);
320
+ position.setZ(index, bent.z);
321
+ }
322
+ position.needsUpdate = true;
323
+ geometry.computeVertexNormals();
324
+ return geometry;
214
325
  }
215
326
  // Remove the extrude's cross-section CAP triangles at a mitred end so two
216
327
  // gutters meeting at a corner don't leave coincident, z-fighting end
@@ -431,6 +542,7 @@ function buildHangers(node, len, size, capLeftLen, capRightLen, mitres) {
431
542
  // not. `mergeGeometries` rejects mixed-index sets, so flatten the
432
543
  // box to non-indexed before pushing.
433
544
  const bar = new THREE.BoxGeometry(HANGER_BAR_LEN, HANGER_BAR_THICKNESS, strapDepth).toNonIndexed();
545
+ applyPlanarWorldUvs(bar);
434
546
  // Center the bar at X = position, Y just above the rim line, Z
435
547
  // straddling 0 so the strap covers the full back-to-front span.
436
548
  bar.translate(x, HANGER_BAR_THICKNESS / 2 + 0.001, rimWidth / 2);
@@ -485,9 +597,13 @@ function resolveOutletPlacements(node, len, size, capLeftLen, capRightLen) {
485
597
  /** Cylinder (round) or box (rect) sized to `dims`, height `h` along Y. */
486
598
  function outletSolid(dims, h) {
487
599
  if (dims.shape === 'round') {
488
- return new THREE.CylinderGeometry(dims.halfX, dims.halfX, h, OUTLET_RADIAL_SEGMENTS).toNonIndexed();
600
+ const geometry = new THREE.CylinderGeometry(dims.halfX, dims.halfX, h, OUTLET_RADIAL_SEGMENTS).toNonIndexed();
601
+ applyCylinderWorldUvs(geometry, dims.halfX, h);
602
+ return geometry;
489
603
  }
490
- return new THREE.BoxGeometry(2 * dims.halfX, h, 2 * dims.halfZ).toNonIndexed();
604
+ const geometry = new THREE.BoxGeometry(2 * dims.halfX, h, 2 * dims.halfZ).toNonIndexed();
605
+ applyPlanarWorldUvs(geometry);
606
+ return geometry;
491
607
  }
492
608
  /**
493
609
  * Solid collar at the OUTER cross-section; the CSG drill hollows out the
@@ -509,9 +625,11 @@ function buildOutletFunnel(p, size) {
509
625
  let funnel;
510
626
  if (p.shape === 'round') {
511
627
  funnel = new THREE.CylinderGeometry(p.outer.halfX * OUTLET_FLARE_SCALE, p.outer.halfX, OUTLET_FLARE_HEIGHT, OUTLET_RADIAL_SEGMENTS).toNonIndexed();
628
+ applyCylinderWorldUvs(funnel, p.outer.halfX * OUTLET_FLARE_SCALE, OUTLET_FLARE_HEIGHT);
512
629
  }
513
630
  else {
514
631
  funnel = new THREE.BoxGeometry(2 * p.outer.halfX * OUTLET_FLARE_SCALE, OUTLET_FLARE_HEIGHT, 2 * p.outer.halfZ * OUTLET_FLARE_SCALE).toNonIndexed();
632
+ applyPlanarWorldUvs(funnel);
515
633
  }
516
634
  funnel.translate(p.x, centerY, p.z);
517
635
  return funnel;
@@ -1 +1 @@
1
- {"version":3,"file":"outlet-lookup.d.ts","sourceRoot":"","sources":["../../src/gutter/outlet-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAEL,KAAK,WAAW,EAIjB,MAAM,oBAAoB,CAAA;AAE3B;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,qBAAqB,GAAG;IAClC,uEAAuE;IACvE,CAAC,EAAE,MAAM,CAAA;IACT,uDAAuD;IACvD,CAAC,EAAE,MAAM,CAAA;IACT,8DAA8D;IAC9D,CAAC,EAAE,MAAM,CAAA;IACT,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,yEAAyE;IACzE,KAAK,EAAE,WAAW,CAAA;IAClB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAwCD,2FAA2F;AAC3F,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,qBAAqB,GAAG,IAAI,CAM9B;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,GACjB,KAAK,CAAC,qBAAqB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/C"}
1
+ {"version":3,"file":"outlet-lookup.d.ts","sourceRoot":"","sources":["../../src/gutter/outlet-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAEL,KAAK,WAAW,EAIjB,MAAM,oBAAoB,CAAA;AAE3B;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,qBAAqB,GAAG;IAClC,uEAAuE;IACvE,CAAC,EAAE,MAAM,CAAA;IACT,uDAAuD;IACvD,CAAC,EAAE,MAAM,CAAA;IACT,8DAA8D;IAC9D,CAAC,EAAE,MAAM,CAAA;IACT,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,yEAAyE;IACzE,KAAK,EAAE,WAAW,CAAA;IAClB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AA8DD,2FAA2F;AAC3F,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,qBAAqB,GAAG,IAAI,CAM9B;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,GACjB,KAAK,CAAC,qBAAqB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/C"}
@@ -11,10 +11,31 @@ function placeOutlet(gutter, outlet, len, size, t) {
11
11
  if (maxX <= minX)
12
12
  return null;
13
13
  const x = Math.max(minX, Math.min(maxX, outlet.offset ?? 0));
14
+ const z = profileFloorMidZ(gutter.profile ?? 'k-style', size);
15
+ // Straight run: the along-length X and outward Z are already the
16
+ // mesh-local center. A managed lean-to gutter following a curved wall
17
+ // carries a concentric arc, so the trough floor bends along its length —
18
+ // remap (x, z) onto the same arc the geometry uses so the drop tube mounts
19
+ // on the actual bent floor rather than the straight chord.
20
+ const arc = gutter.arc;
21
+ if (arc && Number.isFinite(arc.radius)) {
22
+ const signedRef = (Math.sign(arc.centerZ) || 1) * arc.radius;
23
+ const phi = (x - arc.centerX) / signedRef;
24
+ const radial = z - arc.centerZ;
25
+ return {
26
+ x: arc.centerX - radial * Math.sin(phi),
27
+ y: -size,
28
+ z: arc.centerZ + radial * Math.cos(phi),
29
+ bore: inner.halfX,
30
+ shape,
31
+ innerHalfX: inner.halfX,
32
+ innerHalfZ: inner.halfZ,
33
+ };
34
+ }
14
35
  return {
15
36
  x,
16
37
  y: -size,
17
- z: profileFloorMidZ(gutter.profile ?? 'k-style', size),
38
+ z,
18
39
  bore: inner.halfX,
19
40
  shape,
20
41
  innerHalfX: inner.halfX,
@@ -0,0 +1,3 @@
1
+ import type { PaintCapability } from '@pascal-app/core';
2
+ export declare const gutterPaint: PaintCapability;
3
+ //# sourceMappingURL=paint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/gutter/paint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD,eAAO,MAAM,WAAW,EAAE,eAIzB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { surfacePaintCapability } from '../shared/surface-paint';
2
+ export const gutterPaint = {
3
+ ...surfacePaintCapability,
4
+ materialTarget: 'gutter',
5
+ resolveRole: () => 'gutter',
6
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"parametrics.d.ts","sourceRoot":"","sources":["../../src/gutter/parametrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,eAAO,MAAM,iBAAiB,EAAE,oBAAoB,CAAC,UAAU,CA6D9D,CAAA"}
1
+ {"version":3,"file":"parametrics.d.ts","sourceRoot":"","sources":["../../src/gutter/parametrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,eAAO,MAAM,iBAAiB,EAAE,oBAAoB,CAAC,UAAU,CAiE9D,CAAA"}
@@ -14,7 +14,7 @@ export const gutterParametrics = {
14
14
  {
15
15
  label: 'Dimensions',
16
16
  fields: [
17
- { key: 'length', kind: 'number', unit: 'm', min: 0.2, max: 12, step: 0.05 },
17
+ { key: 'length', kind: 'number', unit: 'm', min: 0.2, max: 1000, step: 0.05 },
18
18
  { key: 'size', kind: 'number', unit: 'm', min: 0.05, max: 0.3, step: 0.005 },
19
19
  {
20
20
  key: 'thickness',
@@ -54,6 +54,9 @@ export const gutterParametrics = {
54
54
  ],
55
55
  },
56
56
  ],
57
+ onDeleteCascade: (node, nodes) => Object.values(nodes)
58
+ .filter((candidate) => candidate.type === 'downspout' && candidate.gutterId === node.id)
59
+ .map((candidate) => candidate.id),
57
60
  // Lazy-loaded section that lists every downspout attached to this
58
61
  // gutter and offers an Add button at the bottom. Outlets are created
59
62
  // and removed through this panel (and the downspout placement tool) —
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/gutter/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,UAAU,EAKhB,MAAM,kBAAkB,CAAA;AAwBzB;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,cAAc,GAAI,qBAAqB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,uCAmNhE,CAAA;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/gutter/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,UAAU,EAKhB,MAAM,kBAAkB,CAAA;AAwCzB;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,cAAc,GAAI,qBAAqB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,uCA8PhE,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useLiveNodeOverrides, useRegistry, useScene, } from '@pascal-app/core';
4
- import { createMaterial, createMaterialFromPresetRef, createSurfaceRoleMaterial, useNodeEvents, useViewer, } from '@pascal-app/viewer';
4
+ import { createMaterial, createMaterialFromPresetRef, createSurfaceRoleMaterial, resolveMaterialRef, useNodeEvents, useViewer, } from '@pascal-app/viewer';
5
5
  import { useEffect, useMemo, useRef } from 'react';
6
6
  import * as THREE from 'three';
7
7
  import { useShallow } from 'zustand/react/shallow';
@@ -10,11 +10,25 @@ import { computeGutterMitres, NO_MITRES } from './corner-mitre';
10
10
  import { computeSharedEaveY } from './eave-align';
11
11
  import { computeEaveY } from './eave-snap';
12
12
  import { buildGutterGeometry } from './geometry';
13
+ import { segmentForGutterTrimClip } from './trim-clip';
13
14
  const defaultMaterial = new THREE.MeshStandardMaterial({
14
15
  color: 0xff_ff_ff,
15
16
  roughness: 0.7,
16
17
  metalness: 0.25,
17
18
  });
19
+ function leanToJointMitres(node) {
20
+ const metadata = node.metadata && typeof node.metadata === 'object' && !Array.isArray(node.metadata)
21
+ ? node.metadata
22
+ : {};
23
+ const value = metadata.leanToGutterMitres;
24
+ if (!(value && typeof value === 'object' && !Array.isArray(value)))
25
+ return NO_MITRES;
26
+ const mitres = value;
27
+ return {
28
+ left: typeof mitres.left === 'number' && Number.isFinite(mitres.left) ? mitres.left : 0,
29
+ right: typeof mitres.right === 'number' && Number.isFinite(mitres.right) ? mitres.right : 0,
30
+ };
31
+ }
18
32
  /**
19
33
  * Gutter renderer. Mounts at the eave of the host roof-segment — the
20
34
  * gutter hangs level off the eave line (gravity wins; no slope tilt).
@@ -39,6 +53,7 @@ const GutterRenderer = ({ node: storeNode }) => {
39
53
  const textures = useViewer((s) => s.textures);
40
54
  const colorPreset = useViewer((s) => s.colorPreset);
41
55
  const sceneTheme = useViewer((s) => s.sceneTheme);
56
+ const sceneMaterials = useScene((s) => s.materials);
42
57
  const overrides = useLiveNodeOverrides((s) => s.get(storeNode.id));
43
58
  const node = overrides ? { ...storeNode, ...overrides } : storeNode;
44
59
  const segment = useScene((state) => node.roofSegmentId
@@ -74,6 +89,9 @@ const GutterRenderer = ({ node: storeNode }) => {
74
89
  if (!roof)
75
90
  return [];
76
91
  const out = [];
92
+ const managedByLeanTo = typeof node.metadata?.managedByLeanTo === 'string'
93
+ ? node.metadata.managedByLeanTo
94
+ : null;
77
95
  for (const sid of roof.children ?? []) {
78
96
  const s = state.nodes[sid];
79
97
  if (s?.type !== 'roof-segment')
@@ -85,6 +103,21 @@ const GutterRenderer = ({ node: storeNode }) => {
85
103
  out.push(g);
86
104
  }
87
105
  }
106
+ if (managedByLeanTo) {
107
+ for (const candidate of Object.values(state.nodes)) {
108
+ if (candidate?.type !== 'gutter' || candidate.id === storeNode.id)
109
+ continue;
110
+ const candidateMetadata = candidate.metadata;
111
+ if (typeof candidateMetadata?.managedByLeanTo !== 'string')
112
+ continue;
113
+ const segment = candidate.roofSegmentId
114
+ ? state.nodes[candidate.roofSegmentId]
115
+ : undefined;
116
+ if (!segment || out.some((node) => node.id === segment.id))
117
+ continue;
118
+ out.push(segment, candidate);
119
+ }
120
+ }
88
121
  return out;
89
122
  }));
90
123
  // Mitres AND the run's shared eave height come from the same sibling
@@ -133,8 +166,13 @@ const GutterRenderer = ({ node: storeNode }) => {
133
166
  effectiveSegment?.roofType,
134
167
  mitreNodes,
135
168
  ]);
169
+ const jointMitres = leanToJointMitres(node);
170
+ const renderedMitres = {
171
+ left: jointMitres.left || mitres.left,
172
+ right: jointMitres.right || mitres.right,
173
+ };
136
174
  // biome-ignore lint/correctness/useExhaustiveDependencies: deps deliberately list the build inputs; depending on the whole object would rebuild on unrelated field changes.
137
- const geometry = useMemo(() => buildGutterGeometry(node, mitres), [
175
+ const geometry = useMemo(() => buildGutterGeometry(node, renderedMitres), [
138
176
  node.length,
139
177
  node.size,
140
178
  node.thickness,
@@ -143,11 +181,14 @@ const GutterRenderer = ({ node: storeNode }) => {
143
181
  node.endCapRight,
144
182
  node.hangerStyle,
145
183
  node.hangerSpacing,
184
+ node.arc?.centerX,
185
+ node.arc?.centerZ,
186
+ node.arc?.radius,
146
187
  // Value-compare the outlets array so the CSG drills only rebuild
147
188
  // when an outlet's offset / diameter changes or one is added.
148
189
  JSON.stringify(node.outlets),
149
- mitres.left,
150
- mitres.right,
190
+ renderedMitres.left,
191
+ renderedMitres.right,
151
192
  ]);
152
193
  useEffect(() => () => geometry.dispose(), [geometry]);
153
194
  // Paint surface: explicit material wins, then preset, then the cached
@@ -162,20 +203,35 @@ const GutterRenderer = ({ node: storeNode }) => {
162
203
  // visible face. FrontSide is therefore sufficient and DoubleSide is not
163
204
  // needed.
164
205
  const material = useMemo(() => {
165
- if (!textures || (!node.material && !node.materialPreset)) {
206
+ if (!textures) {
207
+ return createSurfaceRoleMaterial('roof', colorPreset, THREE.FrontSide, sceneTheme);
208
+ }
209
+ const slotMaterial = resolveMaterialRef(node.slots?.gutter, sceneMaterials, shading);
210
+ if (slotMaterial)
211
+ return slotMaterial;
212
+ if (!node.material && !node.materialPreset) {
166
213
  return createSurfaceRoleMaterial('roof', colorPreset, THREE.FrontSide, sceneTheme);
167
214
  }
168
215
  return node.material
169
216
  ? createMaterial(node.material, shading)
170
217
  : (createMaterialFromPresetRef(node.materialPreset, shading) ?? defaultMaterial);
171
- }, [textures, colorPreset, sceneTheme, shading, node.material, node.materialPreset]);
218
+ }, [
219
+ textures,
220
+ colorPreset,
221
+ sceneTheme,
222
+ shading,
223
+ node.slots?.gutter,
224
+ node.material,
225
+ node.materialPreset,
226
+ sceneMaterials,
227
+ ]);
172
228
  // Map gutter-local geometry into the host segment's local frame (where the
173
229
  // trim cut prisms live) — same pose the inner mesh group is mounted with
174
230
  // (position [x, liveEaveY, z] + yaw). Computed before the early return so the
175
231
  // hook order stays stable.
176
232
  const liveEaveYForClip = sharedEaveY ?? (effectiveSegment ? computeEaveY(effectiveSegment) : 0);
177
233
  const localToSegment = useMemo(() => new THREE.Matrix4().compose(new THREE.Vector3(node.position[0] ?? 0, liveEaveYForClip, node.position[2] ?? 0), new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), node.rotation ?? 0), new THREE.Vector3(1, 1, 1)), [node.position[0], node.position[2], node.rotation, liveEaveYForClip]);
178
- const clippedGeometry = useSegmentTrimClippedGeometry(geometry, effectiveSegment, localToSegment);
234
+ const clippedGeometry = useSegmentTrimClippedGeometry(geometry, segmentForGutterTrimClip(node, effectiveSegment), localToSegment);
179
235
  if (!segment || !effectiveSegment)
180
236
  return null;
181
237
  // `node.position` is segment-local — the placement tool resolves the
@@ -0,0 +1,3 @@
1
+ import type { GutterNode, RoofSegmentNode } from '@pascal-app/core';
2
+ export declare function segmentForGutterTrimClip(gutter: Pick<GutterNode, 'arc'>, segment: RoofSegmentNode | undefined): RoofSegmentNode | undefined;
3
+ //# sourceMappingURL=trim-clip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trim-clip.d.ts","sourceRoot":"","sources":["../../src/gutter/trim-clip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAC/B,OAAO,EAAE,eAAe,GAAG,SAAS,GACnC,eAAe,GAAG,SAAS,CAI7B"}
@@ -0,0 +1,5 @@
1
+ export function segmentForGutterTrimClip(gutter, segment) {
2
+ // Segment trim cutters are axis-aligned boxes. On a long arc, the back cutter
3
+ // crosses the gutter twice and removes two unrelated sections of the run.
4
+ return gutter.arc && segment?.arc ? undefined : segment;
5
+ }
@@ -14,9 +14,9 @@ export const hvacEquipmentParametrics = {
14
14
  {
15
15
  label: 'Cabinet',
16
16
  fields: [
17
- { key: 'width', kind: 'number', unit: 'm', min: 0.3, max: 2, step: 0.05 },
18
- { key: 'depth', kind: 'number', unit: 'm', min: 0.3, max: 2, step: 0.05 },
19
- { key: 'height', kind: 'number', unit: 'm', min: 0.4, max: 2.5, step: 0.05 },
17
+ { key: 'width', kind: 'number', unit: 'm', min: 0.3, max: 1000, step: 0.05 },
18
+ { key: 'depth', kind: 'number', unit: 'm', min: 0.3, max: 1000, step: 0.05 },
19
+ { key: 'height', kind: 'number', unit: 'm', min: 0.4, max: 1000, step: 0.05 },
20
20
  ],
21
21
  },
22
22
  {
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/hvac-equipment/tool.tsx"],"names":[],"mappings":"AA2BA;;;;;;;GAOG;AACH,QAAA,MAAM,iBAAiB,0CAyGtB,CAAA;AAED,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/hvac-equipment/tool.tsx"],"names":[],"mappings":"AA4BA;;;;;;;GAOG;AACH,QAAA,MAAM,iBAAiB,0CAiHtB,CAAA;AAED,eAAe,iBAAiB,CAAA"}
@@ -5,6 +5,7 @@ import { isGridSnapActive, isMagneticSnapActive, triggerSFX, useEditor } from '@
5
5
  import { useViewer } from '@pascal-app/viewer';
6
6
  import { Html } from '@react-three/drei';
7
7
  import { useEffect, useMemo, useRef, useState } from 'react';
8
+ import { subscribeAccessorySnapping } from '../shared/accessory-snapping';
8
9
  import { alignDrawPoint, clearDrawAlignment } from '../shared/draw-alignment';
9
10
  import { LevelOffsetGroup } from '../shared/level-offset-group';
10
11
  import { hvacEquipmentDefinition } from './definition';
@@ -55,9 +56,13 @@ const HvacEquipmentTool = () => {
55
56
  // it); `'off'` is the no-snap bypass.
56
57
  const resolveAligned = (event) => alignDrawPoint(resolve(event), {
57
58
  applySnap: isMagneticSnapActive(),
58
- bypass: false,
59
+ bypass: !isMagneticSnapActive(),
59
60
  });
60
- const onMove = (event) => setCursor(resolveAligned(event));
61
+ let lastEvent = null;
62
+ const onMove = (event) => {
63
+ lastEvent = event;
64
+ setCursor(resolveAligned(event));
65
+ };
61
66
  const onClick = (event) => {
62
67
  const position = resolveAligned(event);
63
68
  const unit = HvacEquipmentNode.parse({
@@ -91,10 +96,15 @@ const HvacEquipmentTool = () => {
91
96
  setYaw(yawRef.current);
92
97
  triggerSFX('sfx:item-rotate');
93
98
  };
99
+ const unsubscribeSnapping = subscribeAccessorySnapping(() => {
100
+ if (lastEvent)
101
+ onMove(lastEvent);
102
+ });
94
103
  emitter.on('grid:move', onMove);
95
104
  emitter.on('grid:click', onClick);
96
105
  window.addEventListener('keydown', onKeyDown, true);
97
106
  return () => {
107
+ unsubscribeSnapping();
98
108
  emitter.off('grid:move', onMove);
99
109
  emitter.off('grid:click', onClick);
100
110
  window.removeEventListener('keydown', onKeyDown, true);
package/dist/index.d.ts CHANGED
@@ -16,9 +16,11 @@ import type { Plugin } from '@pascal-app/core';
16
16
  * gone — every kind dispatches through the registry.
17
17
  */
18
18
  export declare const builtinPlugin: Plugin;
19
+ export { applyBlockCommand, type BlockCommand, type BlockCommandResult, type BlockSelection, blockFaceCentroid, blockFaceNormal, } from './block/commands';
20
+ export { blockDefinition } from './block/definition';
19
21
  export { boxVentDefinition } from './box-vent';
20
22
  export { buildingDefinition } from './building';
21
- export { bakeCabinetAnimationClip, type CabinetPlacementType, cabinetDefinition, cabinetModuleDefinition, poseCabinetMovingParts, useCabinetPlacementStatus, useCabinetPlacementType, } from './cabinet';
23
+ export { bakeCabinetAnimationClip, CABINET_PLANNING_TOLERANCE, type CabinetPlacementType, type CabinetPlanningIssue, type CabinetPlanningIssueCode, type CabinetPlanningOptions, type CabinetPlanningReport, cabinetDefinition, cabinetModuleDefinition, MIN_PRACTICAL_TOP_CABINET_HEIGHT, poseCabinetMovingParts, useCabinetPlacementStatus, useCabinetPlacementType, validateCabinetRun, } from './cabinet';
22
24
  export { ceilingDefinition } from './ceiling';
23
25
  export { chimneyDefinition } from './chimney';
24
26
  export { columnDefinition } from './column';
@@ -37,6 +39,7 @@ export { guideDefinition } from './guide';
37
39
  export { gutterDefinition } from './gutter';
38
40
  export { hvacEquipmentDefinition } from './hvac-equipment';
39
41
  export { itemDefinition } from './item';
42
+ export { leanToExtensionDefinition } from './lean-to-extension';
40
43
  export { levelDefinition } from './level';
41
44
  export { linesetDefinition } from './lineset';
42
45
  export { liquidLineDefinition, useLiquidLineToolOptions } from './liquid-line';
@@ -45,7 +48,7 @@ export { pipeFittingDefinition } from './pipe-fitting';
45
48
  export { pipeSegmentDefinition } from './pipe-segment';
46
49
  export { pipeTrapDefinition } from './pipe-trap';
47
50
  export { ridgeVentDefinition } from './ridge-vent';
48
- export { roofDefinition } from './roof';
51
+ export { type RoofFootprintSourceChoice, roofDefinition, useRoofFootprintSource } from './roof';
49
52
  export { roofSegmentDefinition } from './roof-segment';
50
53
  export { scanDefinition } from './scan';
51
54
  export { shelfDefinition } from './shelf';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}