@pascal-app/nodes 1.0.0-beta.4 → 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 (863) 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/flame-index.d.ts +3 -0
  109. package/dist/cabinet/flame-index.d.ts.map +1 -0
  110. package/dist/cabinet/flame-index.js +13 -0
  111. package/dist/cabinet/floorplan-move.d.ts.map +1 -1
  112. package/dist/cabinet/floorplan-move.js +91 -22
  113. package/dist/cabinet/geometry/fridge.d.ts.map +1 -1
  114. package/dist/cabinet/geometry/fridge.js +25 -1
  115. package/dist/cabinet/geometry/fronts.d.ts +4 -0
  116. package/dist/cabinet/geometry/fronts.d.ts.map +1 -1
  117. package/dist/cabinet/geometry/fronts.js +1 -1
  118. package/dist/cabinet/geometry/run.d.ts.map +1 -1
  119. package/dist/cabinet/geometry/run.js +19 -1
  120. package/dist/cabinet/geometry.d.ts.map +1 -1
  121. package/dist/cabinet/geometry.js +63 -1
  122. package/dist/cabinet/index.d.ts +1 -0
  123. package/dist/cabinet/index.d.ts.map +1 -1
  124. package/dist/cabinet/index.js +1 -0
  125. package/dist/cabinet/insertion.d.ts +19 -0
  126. package/dist/cabinet/insertion.d.ts.map +1 -0
  127. package/dist/cabinet/insertion.js +49 -0
  128. package/dist/cabinet/move-frame.d.ts.map +1 -1
  129. package/dist/cabinet/move-frame.js +68 -2
  130. package/dist/cabinet/panel-context.d.ts +7 -0
  131. package/dist/cabinet/panel-context.d.ts.map +1 -0
  132. package/dist/cabinet/panel-context.js +16 -0
  133. package/dist/cabinet/panel-visibility.d.ts +9 -0
  134. package/dist/cabinet/panel-visibility.d.ts.map +1 -0
  135. package/dist/cabinet/panel-visibility.js +26 -0
  136. package/dist/cabinet/panel.d.ts.map +1 -1
  137. package/dist/cabinet/panel.js +221 -37
  138. package/dist/cabinet/placement-dimensions.d.ts +42 -0
  139. package/dist/cabinet/placement-dimensions.d.ts.map +1 -0
  140. package/dist/cabinet/placement-dimensions.js +227 -0
  141. package/dist/cabinet/placement-snap.d.ts +21 -1
  142. package/dist/cabinet/placement-snap.d.ts.map +1 -1
  143. package/dist/cabinet/placement-snap.js +48 -6
  144. package/dist/cabinet/preset-width-debt.d.ts +7 -0
  145. package/dist/cabinet/preset-width-debt.d.ts.map +1 -0
  146. package/dist/cabinet/preset-width-debt.js +45 -0
  147. package/dist/cabinet/presets.d.ts.map +1 -1
  148. package/dist/cabinet/presets.js +14 -13
  149. package/dist/cabinet/profiles.d.ts +14 -0
  150. package/dist/cabinet/profiles.d.ts.map +1 -0
  151. package/dist/cabinet/profiles.js +30 -0
  152. package/dist/cabinet/quick-actions.d.ts.map +1 -1
  153. package/dist/cabinet/quick-actions.js +8 -24
  154. package/dist/cabinet/reveals.d.ts +37 -0
  155. package/dist/cabinet/reveals.d.ts.map +1 -0
  156. package/dist/cabinet/reveals.js +13 -0
  157. package/dist/cabinet/run-layout.d.ts +90 -4
  158. package/dist/cabinet/run-layout.d.ts.map +1 -1
  159. package/dist/cabinet/run-layout.js +408 -23
  160. package/dist/cabinet/run-ops.d.ts +202 -10
  161. package/dist/cabinet/run-ops.d.ts.map +1 -1
  162. package/dist/cabinet/run-ops.js +520 -33
  163. package/dist/cabinet/run-panel.d.ts +6 -2
  164. package/dist/cabinet/run-panel.d.ts.map +1 -1
  165. package/dist/cabinet/run-panel.js +285 -108
  166. package/dist/cabinet/stack-transitions.d.ts.map +1 -1
  167. package/dist/cabinet/stack-transitions.js +35 -24
  168. package/dist/cabinet/stack.d.ts +169 -1
  169. package/dist/cabinet/stack.d.ts.map +1 -1
  170. package/dist/cabinet/stack.js +57 -18
  171. package/dist/cabinet/system.d.ts +2 -0
  172. package/dist/cabinet/system.d.ts.map +1 -1
  173. package/dist/cabinet/system.js +28 -8
  174. package/dist/cabinet/tool.d.ts.map +1 -1
  175. package/dist/cabinet/tool.js +616 -91
  176. package/dist/cabinet/validation.d.ts +27 -0
  177. package/dist/cabinet/validation.d.ts.map +1 -0
  178. package/dist/cabinet/validation.js +56 -0
  179. package/dist/cabinet/wall-height-presets.d.ts +12 -0
  180. package/dist/cabinet/wall-height-presets.d.ts.map +1 -0
  181. package/dist/cabinet/wall-height-presets.js +15 -0
  182. package/dist/cabinet/wall-snap.d.ts +27 -3
  183. package/dist/cabinet/wall-snap.d.ts.map +1 -1
  184. package/dist/cabinet/wall-snap.js +278 -62
  185. package/dist/cabinet/widths.d.ts +10 -0
  186. package/dist/cabinet/widths.d.ts.map +1 -0
  187. package/dist/cabinet/widths.js +13 -0
  188. package/dist/ceiling/definition.d.ts.map +1 -1
  189. package/dist/ceiling/definition.js +7 -1
  190. package/dist/ceiling/floorplan-affordances.d.ts +8 -8
  191. package/dist/ceiling/materials.d.ts.map +1 -1
  192. package/dist/ceiling/materials.js +0 -1
  193. package/dist/ceiling/panel.d.ts.map +1 -1
  194. package/dist/ceiling/panel.js +8 -2
  195. package/dist/ceiling/parametrics.js +1 -1
  196. package/dist/chimney/definition.js +1 -1
  197. package/dist/chimney/panel.js +1 -1
  198. package/dist/chimney/parametrics.js +3 -3
  199. package/dist/column/definition.d.ts.map +1 -1
  200. package/dist/column/definition.js +22 -4
  201. package/dist/column/panel.d.ts.map +1 -1
  202. package/dist/column/panel.js +37 -7
  203. package/dist/column/parametrics.d.ts.map +1 -1
  204. package/dist/column/parametrics.js +5 -3
  205. package/dist/column/tool.d.ts.map +1 -1
  206. package/dist/column/tool.js +50 -14
  207. package/dist/cupola/definition.d.ts.map +1 -1
  208. package/dist/cupola/definition.js +15 -6
  209. package/dist/cupola/geometry.d.ts +6 -0
  210. package/dist/cupola/geometry.d.ts.map +1 -1
  211. package/dist/cupola/geometry.js +60 -13
  212. package/dist/cupola/paint.d.ts +4 -0
  213. package/dist/cupola/paint.d.ts.map +1 -0
  214. package/dist/cupola/paint.js +39 -0
  215. package/dist/cupola/panel.js +1 -1
  216. package/dist/cupola/parametrics.js +3 -3
  217. package/dist/cupola/renderer.d.ts.map +1 -1
  218. package/dist/cupola/renderer.js +27 -8
  219. package/dist/door/floorplan-move.d.ts.map +1 -1
  220. package/dist/door/floorplan-move.js +1 -1
  221. package/dist/door/move-tool.d.ts.map +1 -1
  222. package/dist/door/move-tool.js +86 -32
  223. package/dist/door/panel.d.ts.map +1 -1
  224. package/dist/door/panel.js +1 -1
  225. package/dist/door/parametrics.js +2 -2
  226. package/dist/door/tool.d.ts.map +1 -1
  227. package/dist/door/tool.js +16 -4
  228. package/dist/dormer/csg-geometry.d.ts +6 -42
  229. package/dist/dormer/csg-geometry.d.ts.map +1 -1
  230. package/dist/dormer/csg-geometry.js +38 -209
  231. package/dist/dormer/definition.d.ts +4 -12
  232. package/dist/dormer/definition.d.ts.map +1 -1
  233. package/dist/dormer/definition.js +18 -193
  234. package/dist/dormer/floorplan.d.ts +3 -3
  235. package/dist/dormer/floorplan.d.ts.map +1 -1
  236. package/dist/dormer/floorplan.js +6 -17
  237. package/dist/dormer/geometry.d.ts +5 -24
  238. package/dist/dormer/geometry.d.ts.map +1 -1
  239. package/dist/dormer/geometry.js +64 -41
  240. package/dist/dormer/index.d.ts +1 -1
  241. package/dist/dormer/index.d.ts.map +1 -1
  242. package/dist/dormer/index.js +1 -1
  243. package/dist/dormer/move-tool.d.ts.map +1 -1
  244. package/dist/dormer/move-tool.js +31 -3
  245. package/dist/dormer/panel-windows-section.d.ts +9 -0
  246. package/dist/dormer/panel-windows-section.d.ts.map +1 -0
  247. package/dist/dormer/panel-windows-section.js +7 -0
  248. package/dist/dormer/panel.d.ts.map +1 -1
  249. package/dist/dormer/panel.js +100 -18
  250. package/dist/dormer/parametrics.d.ts.map +1 -1
  251. package/dist/dormer/parametrics.js +8 -77
  252. package/dist/dormer/placement-guides.d.ts.map +1 -1
  253. package/dist/dormer/placement-guides.js +5 -4
  254. package/dist/dormer/preview.d.ts.map +1 -1
  255. package/dist/dormer/preview.js +9 -1
  256. package/dist/dormer/renderer.d.ts.map +1 -1
  257. package/dist/dormer/renderer.js +24 -26
  258. package/dist/dormer/tool.d.ts.map +1 -1
  259. package/dist/dormer/tool.js +3 -1
  260. package/dist/dormer/window-layout.d.ts +15 -0
  261. package/dist/dormer/window-layout.d.ts.map +1 -0
  262. package/dist/dormer/window-layout.js +59 -0
  263. package/dist/downspout/definition.d.ts.map +1 -1
  264. package/dist/downspout/definition.js +17 -4
  265. package/dist/downspout/geometry.d.ts.map +1 -1
  266. package/dist/downspout/geometry.js +10 -0
  267. package/dist/downspout/inspector-editors.d.ts.map +1 -1
  268. package/dist/downspout/inspector-editors.js +9 -1
  269. package/dist/downspout/parametrics.d.ts.map +1 -1
  270. package/dist/downspout/parametrics.js +2 -1
  271. package/dist/downspout/renderer.d.ts.map +1 -1
  272. package/dist/downspout/renderer.js +19 -3
  273. package/dist/downspout/system.d.ts +7 -0
  274. package/dist/downspout/system.d.ts.map +1 -0
  275. package/dist/downspout/system.js +114 -0
  276. package/dist/duct-fitting/accessory-geometry.d.ts +4 -0
  277. package/dist/duct-fitting/accessory-geometry.d.ts.map +1 -0
  278. package/dist/duct-fitting/accessory-geometry.js +47 -0
  279. package/dist/duct-fitting/definition.d.ts.map +1 -1
  280. package/dist/duct-fitting/definition.js +11 -1
  281. package/dist/duct-fitting/floorplan.d.ts.map +1 -1
  282. package/dist/duct-fitting/floorplan.js +8 -0
  283. package/dist/duct-fitting/geometry.d.ts.map +1 -1
  284. package/dist/duct-fitting/geometry.js +52 -38
  285. package/dist/duct-fitting/parametrics.d.ts.map +1 -1
  286. package/dist/duct-fitting/parametrics.js +78 -15
  287. package/dist/duct-fitting/ports.d.ts +1 -0
  288. package/dist/duct-fitting/ports.d.ts.map +1 -1
  289. package/dist/duct-fitting/ports.js +46 -0
  290. package/dist/duct-fitting/tool.d.ts +19 -0
  291. package/dist/duct-fitting/tool.d.ts.map +1 -1
  292. package/dist/duct-fitting/tool.js +126 -34
  293. package/dist/duct-segment/continuation.d.ts +21 -0
  294. package/dist/duct-segment/continuation.d.ts.map +1 -0
  295. package/dist/duct-segment/continuation.js +167 -0
  296. package/dist/duct-segment/definition.d.ts.map +1 -1
  297. package/dist/duct-segment/definition.js +19 -18
  298. package/dist/duct-segment/floorplan.d.ts.map +1 -1
  299. package/dist/duct-segment/floorplan.js +43 -0
  300. package/dist/duct-segment/geometry.d.ts.map +1 -1
  301. package/dist/duct-segment/geometry.js +3 -0
  302. package/dist/duct-segment/move-tool.d.ts.map +1 -1
  303. package/dist/duct-segment/move-tool.js +33 -6
  304. package/dist/duct-segment/parametrics.d.ts.map +1 -1
  305. package/dist/duct-segment/parametrics.js +45 -1
  306. package/dist/duct-segment/selection.d.ts +3 -4
  307. package/dist/duct-segment/selection.d.ts.map +1 -1
  308. package/dist/duct-segment/selection.js +186 -158
  309. package/dist/duct-segment/tool.d.ts +37 -0
  310. package/dist/duct-segment/tool.d.ts.map +1 -1
  311. package/dist/duct-segment/tool.js +305 -678
  312. package/dist/duct-terminal/parametrics.js +2 -2
  313. package/dist/duct-terminal/tool.d.ts.map +1 -1
  314. package/dist/duct-terminal/tool.js +37 -7
  315. package/dist/elevator/definition.d.ts.map +1 -1
  316. package/dist/elevator/definition.js +2 -0
  317. package/dist/elevator/panel.d.ts.map +1 -1
  318. package/dist/elevator/panel.js +7 -7
  319. package/dist/elevator/system.d.ts.map +1 -1
  320. package/dist/elevator/system.js +10 -1
  321. package/dist/eyebrow-vent/definition.d.ts.map +1 -1
  322. package/dist/eyebrow-vent/definition.js +8 -5
  323. package/dist/eyebrow-vent/geometry.d.ts +4 -0
  324. package/dist/eyebrow-vent/geometry.d.ts.map +1 -1
  325. package/dist/eyebrow-vent/geometry.js +60 -15
  326. package/dist/eyebrow-vent/paint.d.ts +4 -0
  327. package/dist/eyebrow-vent/paint.d.ts.map +1 -0
  328. package/dist/eyebrow-vent/paint.js +33 -0
  329. package/dist/eyebrow-vent/panel.js +1 -1
  330. package/dist/eyebrow-vent/parametrics.js +3 -3
  331. package/dist/eyebrow-vent/renderer.d.ts.map +1 -1
  332. package/dist/eyebrow-vent/renderer.js +27 -8
  333. package/dist/fence/curve-tool.d.ts.map +1 -1
  334. package/dist/fence/curve-tool.js +14 -9
  335. package/dist/fence/definition.d.ts.map +1 -1
  336. package/dist/fence/definition.js +2 -1
  337. package/dist/fence/floorplan-affordances.d.ts +1 -0
  338. package/dist/fence/floorplan-affordances.d.ts.map +1 -1
  339. package/dist/fence/floorplan-affordances.js +30 -1
  340. package/dist/fence/floorplan.d.ts.map +1 -1
  341. package/dist/fence/floorplan.js +14 -0
  342. package/dist/fence/move-control-point-tool.d.ts.map +1 -1
  343. package/dist/fence/move-control-point-tool.js +13 -8
  344. package/dist/fence/move-tangent-tool.d.ts.map +1 -1
  345. package/dist/fence/move-tangent-tool.js +13 -8
  346. package/dist/fence/parametrics.js +3 -3
  347. package/dist/fence/tool.d.ts.map +1 -1
  348. package/dist/fence/tool.js +55 -31
  349. package/dist/gutter/corner-mitre.d.ts.map +1 -1
  350. package/dist/gutter/corner-mitre.js +47 -7
  351. package/dist/gutter/definition.d.ts.map +1 -1
  352. package/dist/gutter/definition.js +23 -13
  353. package/dist/gutter/eave-align.d.ts.map +1 -1
  354. package/dist/gutter/eave-align.js +10 -0
  355. package/dist/gutter/eave-snap.d.ts +1 -1
  356. package/dist/gutter/eave-snap.d.ts.map +1 -1
  357. package/dist/gutter/eave-snap.js +10 -23
  358. package/dist/gutter/geometry.d.ts.map +1 -1
  359. package/dist/gutter/geometry.js +126 -8
  360. package/dist/gutter/outlet-lookup.d.ts.map +1 -1
  361. package/dist/gutter/outlet-lookup.js +22 -1
  362. package/dist/gutter/paint.d.ts +3 -0
  363. package/dist/gutter/paint.d.ts.map +1 -0
  364. package/dist/gutter/paint.js +6 -0
  365. package/dist/gutter/parametrics.d.ts.map +1 -1
  366. package/dist/gutter/parametrics.js +4 -1
  367. package/dist/gutter/renderer.d.ts.map +1 -1
  368. package/dist/gutter/renderer.js +63 -7
  369. package/dist/gutter/trim-clip.d.ts +3 -0
  370. package/dist/gutter/trim-clip.d.ts.map +1 -0
  371. package/dist/gutter/trim-clip.js +5 -0
  372. package/dist/hvac-equipment/parametrics.js +3 -3
  373. package/dist/hvac-equipment/tool.d.ts.map +1 -1
  374. package/dist/hvac-equipment/tool.js +12 -2
  375. package/dist/index.d.ts +5 -2
  376. package/dist/index.d.ts.map +1 -1
  377. package/dist/index.js +9 -2
  378. package/dist/item/definition.d.ts.map +1 -1
  379. package/dist/item/definition.js +10 -2
  380. package/dist/item/floorplan-move.d.ts.map +1 -1
  381. package/dist/item/floorplan-move.js +20 -1
  382. package/dist/item/floorplan.d.ts.map +1 -1
  383. package/dist/item/floorplan.js +22 -1
  384. package/dist/item/move-tool.d.ts +28 -1
  385. package/dist/item/move-tool.d.ts.map +1 -1
  386. package/dist/item/move-tool.js +14 -2
  387. package/dist/item/renderer.d.ts.map +1 -1
  388. package/dist/item/renderer.js +16 -6
  389. package/dist/item/system.d.ts +5 -0
  390. package/dist/item/system.d.ts.map +1 -1
  391. package/dist/item/system.js +7 -1
  392. package/dist/lean-to-extension/arc.d.ts +14 -0
  393. package/dist/lean-to-extension/arc.d.ts.map +1 -0
  394. package/dist/lean-to-extension/arc.js +56 -0
  395. package/dist/lean-to-extension/assembly.d.ts +61 -0
  396. package/dist/lean-to-extension/assembly.d.ts.map +1 -0
  397. package/dist/lean-to-extension/assembly.js +761 -0
  398. package/dist/lean-to-extension/canopy-joint.d.ts +35 -0
  399. package/dist/lean-to-extension/canopy-joint.d.ts.map +1 -0
  400. package/dist/lean-to-extension/canopy-joint.js +234 -0
  401. package/dist/lean-to-extension/conical-host.d.ts +15 -0
  402. package/dist/lean-to-extension/conical-host.d.ts.map +1 -0
  403. package/dist/lean-to-extension/conical-host.js +113 -0
  404. package/dist/lean-to-extension/corner-joint.d.ts +29 -0
  405. package/dist/lean-to-extension/corner-joint.d.ts.map +1 -0
  406. package/dist/lean-to-extension/corner-joint.js +1202 -0
  407. package/dist/lean-to-extension/definition.d.ts +4 -0
  408. package/dist/lean-to-extension/definition.d.ts.map +1 -0
  409. package/dist/lean-to-extension/definition.js +433 -0
  410. package/dist/lean-to-extension/floorplan-affordances.d.ts +4 -0
  411. package/dist/lean-to-extension/floorplan-affordances.d.ts.map +1 -0
  412. package/dist/lean-to-extension/floorplan-affordances.js +144 -0
  413. package/dist/lean-to-extension/floorplan-move.d.ts +3 -0
  414. package/dist/lean-to-extension/floorplan-move.d.ts.map +1 -0
  415. package/dist/lean-to-extension/floorplan-move.js +157 -0
  416. package/dist/lean-to-extension/floorplan-tool.d.ts +4 -0
  417. package/dist/lean-to-extension/floorplan-tool.d.ts.map +1 -0
  418. package/dist/lean-to-extension/floorplan-tool.js +385 -0
  419. package/dist/lean-to-extension/floorplan.d.ts +3 -0
  420. package/dist/lean-to-extension/floorplan.d.ts.map +1 -0
  421. package/dist/lean-to-extension/floorplan.js +373 -0
  422. package/dist/lean-to-extension/geometry.d.ts +7 -0
  423. package/dist/lean-to-extension/geometry.d.ts.map +1 -0
  424. package/dist/lean-to-extension/geometry.js +662 -0
  425. package/dist/lean-to-extension/index.d.ts +8 -0
  426. package/dist/lean-to-extension/index.d.ts.map +1 -0
  427. package/dist/lean-to-extension/index.js +7 -0
  428. package/dist/lean-to-extension/layout.d.ts +108 -0
  429. package/dist/lean-to-extension/layout.d.ts.map +1 -0
  430. package/dist/lean-to-extension/layout.js +477 -0
  431. package/dist/lean-to-extension/managed-preview.d.ts +3 -0
  432. package/dist/lean-to-extension/managed-preview.d.ts.map +1 -0
  433. package/dist/lean-to-extension/managed-preview.js +93 -0
  434. package/dist/lean-to-extension/move-tool.d.ts +8 -0
  435. package/dist/lean-to-extension/move-tool.d.ts.map +1 -0
  436. package/dist/lean-to-extension/move-tool.js +202 -0
  437. package/dist/lean-to-extension/paint.d.ts +2 -0
  438. package/dist/lean-to-extension/paint.d.ts.map +1 -0
  439. package/dist/lean-to-extension/paint.js +16 -0
  440. package/dist/lean-to-extension/parametrics.d.ts +4 -0
  441. package/dist/lean-to-extension/parametrics.d.ts.map +1 -0
  442. package/dist/lean-to-extension/parametrics.js +570 -0
  443. package/dist/lean-to-extension/placement-scope.d.ts +3 -0
  444. package/dist/lean-to-extension/placement-scope.d.ts.map +1 -0
  445. package/dist/lean-to-extension/placement-scope.js +4 -0
  446. package/dist/lean-to-extension/placement-validation.d.ts +4 -0
  447. package/dist/lean-to-extension/placement-validation.d.ts.map +1 -0
  448. package/dist/lean-to-extension/placement-validation.js +324 -0
  449. package/dist/lean-to-extension/placement.d.ts +59 -0
  450. package/dist/lean-to-extension/placement.d.ts.map +1 -0
  451. package/dist/lean-to-extension/placement.js +331 -0
  452. package/dist/lean-to-extension/plan-footprint.d.ts +10 -0
  453. package/dist/lean-to-extension/plan-footprint.d.ts.map +1 -0
  454. package/dist/lean-to-extension/plan-footprint.js +27 -0
  455. package/dist/lean-to-extension/preview-geometry.d.ts +7 -0
  456. package/dist/lean-to-extension/preview-geometry.d.ts.map +1 -0
  457. package/dist/lean-to-extension/preview-geometry.js +40 -0
  458. package/dist/lean-to-extension/preview.d.ts +7 -0
  459. package/dist/lean-to-extension/preview.d.ts.map +1 -0
  460. package/dist/lean-to-extension/preview.js +20 -0
  461. package/dist/lean-to-extension/renderer.d.ts +6 -0
  462. package/dist/lean-to-extension/renderer.d.ts.map +1 -0
  463. package/dist/lean-to-extension/renderer.js +34 -0
  464. package/dist/lean-to-extension/roof-attachment.d.ts +28 -0
  465. package/dist/lean-to-extension/roof-attachment.d.ts.map +1 -0
  466. package/dist/lean-to-extension/roof-attachment.js +376 -0
  467. package/dist/lean-to-extension/schema.d.ts +2 -0
  468. package/dist/lean-to-extension/schema.d.ts.map +1 -0
  469. package/dist/lean-to-extension/schema.js +1 -0
  470. package/dist/lean-to-extension/slots.d.ts +5 -0
  471. package/dist/lean-to-extension/slots.d.ts.map +1 -0
  472. package/dist/lean-to-extension/slots.js +15 -0
  473. package/dist/lean-to-extension/system.d.ts +7 -0
  474. package/dist/lean-to-extension/system.d.ts.map +1 -0
  475. package/dist/lean-to-extension/system.js +726 -0
  476. package/dist/lean-to-extension/tool.d.ts +3 -0
  477. package/dist/lean-to-extension/tool.d.ts.map +1 -0
  478. package/dist/lean-to-extension/tool.js +580 -0
  479. package/dist/lean-to-extension/wall-target.d.ts +10 -0
  480. package/dist/lean-to-extension/wall-target.d.ts.map +1 -0
  481. package/dist/lean-to-extension/wall-target.js +29 -0
  482. package/dist/lineset/definition.d.ts.map +1 -1
  483. package/dist/lineset/definition.js +1 -0
  484. package/dist/liquid-line/definition.d.ts.map +1 -1
  485. package/dist/liquid-line/definition.js +1 -0
  486. package/dist/measurement/renderer.d.ts.map +1 -1
  487. package/dist/measurement/renderer.js +6 -5
  488. package/dist/measurement/surface-query.js +5 -5
  489. package/dist/measurement/tool.d.ts.map +1 -1
  490. package/dist/measurement/tool.js +7 -5
  491. package/dist/pipe-fitting/definition.d.ts.map +1 -1
  492. package/dist/pipe-fitting/definition.js +16 -2
  493. package/dist/pipe-fitting/floorplan.d.ts.map +1 -1
  494. package/dist/pipe-fitting/floorplan.js +4 -0
  495. package/dist/pipe-fitting/geometry.d.ts +3 -5
  496. package/dist/pipe-fitting/geometry.d.ts.map +1 -1
  497. package/dist/pipe-fitting/geometry.js +154 -21
  498. package/dist/pipe-fitting/inline-insertion.d.ts +13 -0
  499. package/dist/pipe-fitting/inline-insertion.d.ts.map +1 -0
  500. package/dist/pipe-fitting/inline-insertion.js +96 -0
  501. package/dist/pipe-fitting/parametrics.d.ts.map +1 -1
  502. package/dist/pipe-fitting/parametrics.js +17 -3
  503. package/dist/pipe-fitting/ports.d.ts.map +1 -1
  504. package/dist/pipe-fitting/ports.js +8 -1
  505. package/dist/pipe-fitting/tool.d.ts +26 -0
  506. package/dist/pipe-fitting/tool.d.ts.map +1 -1
  507. package/dist/pipe-fitting/tool.js +182 -37
  508. package/dist/pipe-segment/continuation.d.ts +22 -0
  509. package/dist/pipe-segment/continuation.d.ts.map +1 -0
  510. package/dist/pipe-segment/continuation.js +146 -0
  511. package/dist/pipe-segment/definition.d.ts.map +1 -1
  512. package/dist/pipe-segment/definition.js +23 -7
  513. package/dist/pipe-segment/floorplan.d.ts.map +1 -1
  514. package/dist/pipe-segment/floorplan.js +42 -0
  515. package/dist/pipe-segment/geometry.d.ts +2 -1
  516. package/dist/pipe-segment/geometry.d.ts.map +1 -1
  517. package/dist/pipe-segment/geometry.js +4 -1
  518. package/dist/pipe-segment/move-tool.d.ts.map +1 -1
  519. package/dist/pipe-segment/move-tool.js +25 -5
  520. package/dist/pipe-segment/parametrics.d.ts.map +1 -1
  521. package/dist/pipe-segment/parametrics.js +45 -0
  522. package/dist/pipe-segment/selection.d.ts +3 -4
  523. package/dist/pipe-segment/selection.d.ts.map +1 -1
  524. package/dist/pipe-segment/selection.js +169 -105
  525. package/dist/pipe-segment/slope.d.ts +5 -0
  526. package/dist/pipe-segment/slope.d.ts.map +1 -0
  527. package/dist/pipe-segment/slope.js +10 -0
  528. package/dist/pipe-segment/tool.d.ts.map +1 -1
  529. package/dist/pipe-segment/tool.js +325 -545
  530. package/dist/pipe-trap/tool.d.ts.map +1 -1
  531. package/dist/pipe-trap/tool.js +15 -2
  532. package/dist/ridge-vent/definition.js +1 -1
  533. package/dist/ridge-vent/panel.d.ts.map +1 -1
  534. package/dist/ridge-vent/panel.js +2 -2
  535. package/dist/ridge-vent/parametrics.js +1 -1
  536. package/dist/ridge-vent/renderer.d.ts.map +1 -1
  537. package/dist/ridge-vent/renderer.js +2 -2
  538. package/dist/roof/conical-roof-placement.d.ts +36 -0
  539. package/dist/roof/conical-roof-placement.d.ts.map +1 -0
  540. package/dist/roof/conical-roof-placement.js +134 -0
  541. package/dist/roof/conical-roof.d.ts +3 -0
  542. package/dist/roof/conical-roof.d.ts.map +1 -0
  543. package/dist/roof/conical-roof.js +53 -0
  544. package/dist/roof/definition.d.ts +3 -10
  545. package/dist/roof/definition.d.ts.map +1 -1
  546. package/dist/roof/definition.js +83 -13
  547. package/dist/roof/floorplan.d.ts +3 -10
  548. package/dist/roof/floorplan.d.ts.map +1 -1
  549. package/dist/roof/floorplan.js +139 -165
  550. package/dist/roof/index.d.ts +1 -0
  551. package/dist/roof/index.d.ts.map +1 -1
  552. package/dist/roof/index.js +1 -0
  553. package/dist/roof/panel.d.ts.map +1 -1
  554. package/dist/roof/panel.js +22 -23
  555. package/dist/roof/renderer.d.ts.map +1 -1
  556. package/dist/roof/roof-footprint-source.d.ts +16 -0
  557. package/dist/roof/roof-footprint-source.d.ts.map +1 -0
  558. package/dist/roof/roof-footprint-source.js +14 -0
  559. package/dist/roof/roof-footprint.d.ts +25 -0
  560. package/dist/roof/roof-footprint.d.ts.map +1 -0
  561. package/dist/roof/roof-footprint.js +94 -0
  562. package/dist/roof/roof-placement-mode.d.ts +18 -0
  563. package/dist/roof/roof-placement-mode.d.ts.map +1 -0
  564. package/dist/roof/roof-placement-mode.js +24 -0
  565. package/dist/roof/tool.d.ts +10 -0
  566. package/dist/roof/tool.d.ts.map +1 -0
  567. package/dist/roof/tool.js +922 -0
  568. package/dist/roof-segment/definition.d.ts.map +1 -1
  569. package/dist/roof-segment/definition.js +52 -8
  570. package/dist/roof-segment/floorplan-affordances.d.ts +5 -6
  571. package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
  572. package/dist/roof-segment/floorplan-affordances.js +64 -18
  573. package/dist/roof-segment/floorplan.d.ts +3 -2
  574. package/dist/roof-segment/floorplan.d.ts.map +1 -1
  575. package/dist/roof-segment/floorplan.js +95 -46
  576. package/dist/roof-segment/panel.d.ts.map +1 -1
  577. package/dist/roof-segment/panel.js +122 -27
  578. package/dist/scan/definition.d.ts +2 -3
  579. package/dist/scan/definition.d.ts.map +1 -1
  580. package/dist/scan/definition.js +9 -7
  581. package/dist/scan/parametrics.d.ts.map +1 -1
  582. package/dist/scan/parametrics.js +13 -1
  583. package/dist/scan/renderer.d.ts.map +1 -1
  584. package/dist/scan/renderer.js +8 -2
  585. package/dist/shared/accessory-cursor.d.ts +7 -0
  586. package/dist/shared/accessory-cursor.d.ts.map +1 -0
  587. package/dist/shared/accessory-cursor.js +83 -0
  588. package/dist/shared/accessory-floorplan.d.ts +4 -0
  589. package/dist/shared/accessory-floorplan.d.ts.map +1 -0
  590. package/dist/shared/accessory-floorplan.js +51 -0
  591. package/dist/shared/accessory-geometry.d.ts +7 -0
  592. package/dist/shared/accessory-geometry.d.ts.map +1 -0
  593. package/dist/shared/accessory-geometry.js +79 -0
  594. package/dist/shared/accessory-placement.d.ts +10 -0
  595. package/dist/shared/accessory-placement.d.ts.map +1 -0
  596. package/dist/shared/accessory-placement.js +126 -0
  597. package/dist/shared/accessory-snapping.d.ts +5 -0
  598. package/dist/shared/accessory-snapping.d.ts.map +1 -0
  599. package/dist/shared/accessory-snapping.js +40 -0
  600. package/dist/shared/automatic-run-end-cap.d.ts +11 -0
  601. package/dist/shared/automatic-run-end-cap.d.ts.map +1 -0
  602. package/dist/shared/automatic-run-end-cap.js +159 -0
  603. package/dist/shared/block-face-host.d.ts +15 -0
  604. package/dist/shared/block-face-host.d.ts.map +1 -0
  605. package/dist/shared/block-face-host.js +36 -0
  606. package/dist/shared/connection-compatibility.d.ts +8 -0
  607. package/dist/shared/connection-compatibility.d.ts.map +1 -0
  608. package/dist/shared/connection-compatibility.js +28 -0
  609. package/dist/shared/connection-feedback.d.ts +10 -0
  610. package/dist/shared/connection-feedback.d.ts.map +1 -0
  611. package/dist/shared/connection-feedback.js +17 -0
  612. package/dist/shared/distribution-run-contract.d.ts +49 -0
  613. package/dist/shared/distribution-run-contract.d.ts.map +1 -0
  614. package/dist/shared/distribution-run-contract.js +30 -0
  615. package/dist/shared/distribution-run-tool.d.ts +107 -0
  616. package/dist/shared/distribution-run-tool.d.ts.map +1 -0
  617. package/dist/shared/distribution-run-tool.js +941 -0
  618. package/dist/shared/dormer-wall-opening-placement.d.ts +21 -0
  619. package/dist/shared/dormer-wall-opening-placement.d.ts.map +1 -0
  620. package/dist/shared/dormer-wall-opening-placement.js +101 -0
  621. package/dist/shared/duct-adapter.d.ts +10 -0
  622. package/dist/shared/duct-adapter.d.ts.map +1 -0
  623. package/dist/shared/duct-adapter.js +43 -0
  624. package/dist/shared/elbow-branch-continuation.d.ts +20 -0
  625. package/dist/shared/elbow-branch-continuation.d.ts.map +1 -0
  626. package/dist/shared/elbow-branch-continuation.js +200 -0
  627. package/dist/shared/fitting-clearance.d.ts +5 -0
  628. package/dist/shared/fitting-clearance.d.ts.map +1 -0
  629. package/dist/shared/fitting-clearance.js +11 -0
  630. package/dist/shared/fitting-deletion-cleanup.d.ts +14 -0
  631. package/dist/shared/fitting-deletion-cleanup.d.ts.map +1 -0
  632. package/dist/shared/fitting-deletion-cleanup.js +297 -0
  633. package/dist/shared/fitting-surface-support.d.ts +5 -0
  634. package/dist/shared/fitting-surface-support.d.ts.map +1 -0
  635. package/dist/shared/fitting-surface-support.js +42 -0
  636. package/dist/shared/fitting-tool-options.d.ts +4 -0
  637. package/dist/shared/fitting-tool-options.d.ts.map +1 -0
  638. package/dist/shared/fitting-tool-options.js +175 -0
  639. package/dist/shared/floor-placement.d.ts +1 -1
  640. package/dist/shared/floor-placement.d.ts.map +1 -1
  641. package/dist/shared/floor-placement.js +13 -33
  642. package/dist/shared/ghost-materials.d.ts.map +1 -1
  643. package/dist/shared/ghost-materials.js +2 -1
  644. package/dist/shared/lean-to-post-omissions.d.ts +8 -0
  645. package/dist/shared/lean-to-post-omissions.d.ts.map +1 -0
  646. package/dist/shared/lean-to-post-omissions.js +51 -0
  647. package/dist/shared/mep-fitting-actions.d.ts +5 -0
  648. package/dist/shared/mep-fitting-actions.d.ts.map +1 -0
  649. package/dist/shared/mep-fitting-actions.js +16 -0
  650. package/dist/shared/mep-ghost.d.ts.map +1 -1
  651. package/dist/shared/mep-ghost.js +19 -1
  652. package/dist/shared/mep-presets.d.ts +11 -0
  653. package/dist/shared/mep-presets.d.ts.map +1 -0
  654. package/dist/shared/mep-presets.js +34 -0
  655. package/dist/shared/node-batch/candidates.d.ts +29 -0
  656. package/dist/shared/node-batch/candidates.d.ts.map +1 -0
  657. package/dist/shared/node-batch/candidates.js +260 -0
  658. package/dist/shared/node-batch/store.d.ts +26 -0
  659. package/dist/shared/node-batch/store.d.ts.map +1 -0
  660. package/dist/shared/node-batch/store.js +319 -0
  661. package/dist/shared/node-batch/system.d.ts +8 -0
  662. package/dist/shared/node-batch/system.d.ts.map +1 -0
  663. package/dist/shared/node-batch/system.js +569 -0
  664. package/dist/shared/node-batch/types.d.ts +99 -0
  665. package/dist/shared/node-batch/types.d.ts.map +1 -0
  666. package/dist/shared/node-batch/types.js +4 -0
  667. package/dist/shared/opening-move-history.d.ts +47 -0
  668. package/dist/shared/opening-move-history.d.ts.map +1 -0
  669. package/dist/shared/opening-move-history.js +18 -0
  670. package/dist/shared/opening-move-wall-gate.d.ts +55 -0
  671. package/dist/shared/opening-move-wall-gate.d.ts.map +1 -0
  672. package/dist/shared/opening-move-wall-gate.js +44 -0
  673. package/dist/shared/path-point-affordance.d.ts +2 -2
  674. package/dist/shared/path-point-affordance.d.ts.map +1 -1
  675. package/dist/shared/path-point-affordance.js +30 -6
  676. package/dist/shared/placeholder-geometry.d.ts.map +1 -1
  677. package/dist/shared/placeholder-geometry.js +4 -0
  678. package/dist/shared/ports.d.ts +20 -3
  679. package/dist/shared/ports.d.ts.map +1 -1
  680. package/dist/shared/ports.js +148 -7
  681. package/dist/shared/primitive-uv.d.ts +17 -0
  682. package/dist/shared/primitive-uv.d.ts.map +1 -0
  683. package/dist/shared/primitive-uv.js +107 -0
  684. package/dist/shared/reducer-size.d.ts +2 -0
  685. package/dist/shared/reducer-size.d.ts.map +1 -0
  686. package/dist/shared/reducer-size.js +12 -0
  687. package/dist/shared/ridge-snap.js +1 -1
  688. package/dist/shared/roof-surface.d.ts.map +1 -1
  689. package/dist/shared/roof-surface.js +17 -2
  690. package/dist/shared/run-cursor.d.ts +22 -0
  691. package/dist/shared/run-cursor.d.ts.map +1 -0
  692. package/dist/shared/run-cursor.js +19 -0
  693. package/dist/shared/run-direction-feedback.d.ts +20 -0
  694. package/dist/shared/run-direction-feedback.d.ts.map +1 -0
  695. package/dist/shared/run-direction-feedback.js +139 -0
  696. package/dist/shared/run-hanger-controls.d.ts +7 -0
  697. package/dist/shared/run-hanger-controls.d.ts.map +1 -0
  698. package/dist/shared/run-hanger-controls.js +44 -0
  699. package/dist/shared/run-hanger-inspector.d.ts +5 -0
  700. package/dist/shared/run-hanger-inspector.d.ts.map +1 -0
  701. package/dist/shared/run-hanger-inspector.js +43 -0
  702. package/dist/shared/run-hanger-mode.d.ts +11 -0
  703. package/dist/shared/run-hanger-mode.d.ts.map +1 -0
  704. package/dist/shared/run-hanger-mode.js +32 -0
  705. package/dist/shared/run-hanger-system.d.ts +3 -0
  706. package/dist/shared/run-hanger-system.d.ts.map +1 -0
  707. package/dist/shared/run-hanger-system.js +39 -0
  708. package/dist/shared/run-hangers.d.ts +25 -0
  709. package/dist/shared/run-hangers.d.ts.map +1 -0
  710. package/dist/shared/run-hangers.js +261 -0
  711. package/dist/shared/run-port-snap.d.ts +11 -0
  712. package/dist/shared/run-port-snap.d.ts.map +1 -0
  713. package/dist/shared/run-port-snap.js +19 -0
  714. package/dist/shared/run-screen-direction.d.ts +5 -0
  715. package/dist/shared/run-screen-direction.d.ts.map +1 -0
  716. package/dist/shared/run-screen-direction.js +24 -0
  717. package/dist/shared/selection-handles.d.ts +4 -0
  718. package/dist/shared/selection-handles.d.ts.map +1 -1
  719. package/dist/shared/selection-handles.js +10 -0
  720. package/dist/shared/slot-paint.d.ts +8 -1
  721. package/dist/shared/slot-paint.d.ts.map +1 -1
  722. package/dist/shared/slot-paint.js +120 -27
  723. package/dist/shared/surface-paint.d.ts +1 -2
  724. package/dist/shared/surface-paint.d.ts.map +1 -1
  725. package/dist/shared/surface-paint.js +9 -20
  726. package/dist/shared/system-check-panel.d.ts +6 -0
  727. package/dist/shared/system-check-panel.d.ts.map +1 -0
  728. package/dist/shared/system-check-panel.js +62 -0
  729. package/dist/shared/system-checks.d.ts +9 -0
  730. package/dist/shared/system-checks.d.ts.map +1 -0
  731. package/dist/shared/system-checks.js +131 -0
  732. package/dist/shared/wall-attach-target.d.ts +14 -2
  733. package/dist/shared/wall-attach-target.d.ts.map +1 -1
  734. package/dist/shared/wall-attach-target.js +108 -4
  735. package/dist/shared/wall-opening-clearance.d.ts +19 -0
  736. package/dist/shared/wall-opening-clearance.d.ts.map +1 -0
  737. package/dist/shared/wall-opening-clearance.js +28 -0
  738. package/dist/shared/wall-run-move.d.ts +17 -0
  739. package/dist/shared/wall-run-move.d.ts.map +1 -0
  740. package/dist/shared/wall-run-move.js +56 -0
  741. package/dist/shelf/parametrics.js +4 -4
  742. package/dist/site/renderer.d.ts.map +1 -1
  743. package/dist/site/renderer.js +40 -28
  744. package/dist/site/terrain-geometry.d.ts +1 -1
  745. package/dist/site/terrain-geometry.d.ts.map +1 -1
  746. package/dist/site/terrain-geometry.js +35 -9
  747. package/dist/site/terrain-mesh.d.ts +5 -0
  748. package/dist/site/terrain-mesh.d.ts.map +1 -1
  749. package/dist/site/terrain-mesh.js +63 -34
  750. package/dist/skylight/definition.js +1 -1
  751. package/dist/skylight/panel.js +1 -1
  752. package/dist/skylight/parametrics.js +2 -2
  753. package/dist/slab/definition.d.ts.map +1 -1
  754. package/dist/slab/definition.js +6 -1
  755. package/dist/slab/dependency-tracker.d.ts +3 -0
  756. package/dist/slab/dependency-tracker.d.ts.map +1 -0
  757. package/dist/slab/dependency-tracker.js +104 -0
  758. package/dist/slab/floorplan-affordances.d.ts +8 -8
  759. package/dist/slab/geometry.d.ts.map +1 -1
  760. package/dist/slab/geometry.js +16 -2
  761. package/dist/slab/panel.d.ts.map +1 -1
  762. package/dist/slab/panel.js +1 -1
  763. package/dist/slab/parametrics.js +1 -1
  764. package/dist/slab/system.d.ts.map +1 -1
  765. package/dist/slab/system.js +8 -64
  766. package/dist/solar-panel/definition.js +1 -1
  767. package/dist/solar-panel/panel.js +1 -1
  768. package/dist/solar-panel/parametrics.js +2 -2
  769. package/dist/stair/panel.d.ts.map +1 -1
  770. package/dist/stair/panel.js +18 -13
  771. package/dist/stair/stair-type.d.ts +18 -0
  772. package/dist/stair/stair-type.d.ts.map +1 -0
  773. package/dist/stair/stair-type.js +25 -0
  774. package/dist/stair-segment/panel.d.ts.map +1 -1
  775. package/dist/stair-segment/panel.js +44 -5
  776. package/dist/turbine-vent/definition.d.ts.map +1 -1
  777. package/dist/turbine-vent/definition.js +8 -5
  778. package/dist/turbine-vent/geometry.d.ts.map +1 -1
  779. package/dist/turbine-vent/geometry.js +48 -18
  780. package/dist/turbine-vent/paint.d.ts +4 -0
  781. package/dist/turbine-vent/paint.d.ts.map +1 -0
  782. package/dist/turbine-vent/paint.js +35 -0
  783. package/dist/turbine-vent/panel.js +1 -1
  784. package/dist/turbine-vent/parametrics.js +2 -2
  785. package/dist/turbine-vent/renderer.d.ts.map +1 -1
  786. package/dist/turbine-vent/renderer.js +31 -9
  787. package/dist/wall/curve-eligibility.d.ts +3 -0
  788. package/dist/wall/curve-eligibility.d.ts.map +1 -0
  789. package/dist/wall/curve-eligibility.js +10 -0
  790. package/dist/wall/curve-tool.d.ts +3 -4
  791. package/dist/wall/curve-tool.d.ts.map +1 -1
  792. package/dist/wall/curve-tool.js +24 -23
  793. package/dist/wall/definition.d.ts +1 -1
  794. package/dist/wall/definition.d.ts.map +1 -1
  795. package/dist/wall/definition.js +36 -13
  796. package/dist/wall/floorplan-affordances.d.ts +1 -0
  797. package/dist/wall/floorplan-affordances.d.ts.map +1 -1
  798. package/dist/wall/floorplan-affordances.js +46 -7
  799. package/dist/wall/floorplan-move.d.ts +3 -4
  800. package/dist/wall/floorplan-move.d.ts.map +1 -1
  801. package/dist/wall/floorplan-move.js +122 -9
  802. package/dist/wall/floorplan.d.ts.map +1 -1
  803. package/dist/wall/floorplan.js +19 -23
  804. package/dist/wall/move-shared.d.ts.map +1 -1
  805. package/dist/wall/move-shared.js +10 -7
  806. package/dist/wall/paint.d.ts.map +1 -1
  807. package/dist/wall/paint.js +2 -0
  808. package/dist/wall/panel.d.ts.map +1 -1
  809. package/dist/wall/panel.js +62 -27
  810. package/dist/wall/parametrics.js +2 -2
  811. package/dist/wall/pointer-transparency.d.ts +128 -0
  812. package/dist/wall/pointer-transparency.d.ts.map +1 -0
  813. package/dist/wall/pointer-transparency.js +147 -0
  814. package/dist/wall/renderer.d.ts.map +1 -1
  815. package/dist/wall/renderer.js +65 -8
  816. package/dist/wall/selection-hit-owner.d.ts +53 -0
  817. package/dist/wall/selection-hit-owner.d.ts.map +1 -0
  818. package/dist/wall/selection-hit-owner.js +79 -0
  819. package/dist/wall/system.d.ts +5 -0
  820. package/dist/wall/system.d.ts.map +1 -1
  821. package/dist/wall/system.js +71 -26
  822. package/dist/wall/tool.d.ts.map +1 -1
  823. package/dist/wall/tool.js +29 -27
  824. package/dist/wall/treatment-level-data.d.ts +6 -1
  825. package/dist/wall/treatment-level-data.d.ts.map +1 -1
  826. package/dist/wall/treatment-level-data.js +82 -5
  827. package/dist/wall/treatments.d.ts +1 -0
  828. package/dist/wall/treatments.d.ts.map +1 -1
  829. package/dist/wall/treatments.js +5 -0
  830. package/dist/wall/wall-batch-system.d.ts +55 -0
  831. package/dist/wall/wall-batch-system.d.ts.map +1 -0
  832. package/dist/wall/wall-batch-system.js +486 -0
  833. package/dist/wall/wall-batch.d.ts +66 -0
  834. package/dist/wall/wall-batch.d.ts.map +1 -0
  835. package/dist/wall/wall-batch.js +169 -0
  836. package/dist/window/definition.d.ts +2 -1
  837. package/dist/window/definition.d.ts.map +1 -1
  838. package/dist/window/definition.js +51 -24
  839. package/dist/window/floorplan-move.d.ts.map +1 -1
  840. package/dist/window/floorplan-move.js +1 -1
  841. package/dist/window/move-tool.d.ts +7 -5
  842. package/dist/window/move-tool.d.ts.map +1 -1
  843. package/dist/window/move-tool.js +344 -58
  844. package/dist/window/panel.d.ts.map +1 -1
  845. package/dist/window/panel.js +2 -0
  846. package/dist/window/parametrics.js +2 -2
  847. package/dist/window/renderer.d.ts.map +1 -1
  848. package/dist/window/renderer.js +5 -7
  849. package/dist/window/tool.d.ts.map +1 -1
  850. package/dist/window/tool.js +227 -13
  851. package/dist/zone/floorplan-affordances.d.ts +12 -12
  852. package/dist/zone/quantities-panel.d.ts.map +1 -1
  853. package/dist/zone/quantities-panel.js +4 -3
  854. package/package.json +11 -9
  855. package/dist/dormer/panel-window-section.d.ts +0 -14
  856. package/dist/dormer/panel-window-section.d.ts.map +0 -1
  857. package/dist/dormer/panel-window-section.js +0 -59
  858. package/dist/dormer/window-assembly.d.ts +0 -22
  859. package/dist/dormer/window-assembly.d.ts.map +0 -1
  860. package/dist/dormer/window-assembly.js +0 -111
  861. package/dist/dormer/window-frame.d.ts +0 -24
  862. package/dist/dormer/window-frame.d.ts.map +0 -1
  863. package/dist/dormer/window-frame.js +0 -100
@@ -0,0 +1,227 @@
1
+ import { runLocalToPlan } from './run-layout';
2
+ import { collectCabinetWallSnapNeighbors, findClosestCabinetWallInPlan, resolveCabinetWallFaceOffset, } from './wall-snap';
3
+ const DIMENSION_Y = 0.035;
4
+ const DIMENSION_OFFSET = 0.22;
5
+ const DIMENSION_EPSILON = 1e-4;
6
+ export function buildCabinetPlacementSizeDimensions({ depth, height, position, rotation, width, }) {
7
+ const run = {
8
+ position: [position[0], position[1], position[2]],
9
+ rotation,
10
+ };
11
+ return [
12
+ {
13
+ id: 'cabinet-width',
14
+ start: runLocalToPlan(run, [-width / 2, 0, depth / 2]),
15
+ end: runLocalToPlan(run, [width / 2, 0, depth / 2]),
16
+ offsetNormal: [0, 1],
17
+ offsetDistance: 0.18,
18
+ value: width,
19
+ renderIn3d: false,
20
+ },
21
+ {
22
+ id: 'cabinet-depth',
23
+ start: runLocalToPlan(run, [width / 2, 0, -depth / 2]),
24
+ end: runLocalToPlan(run, [width / 2, 0, depth / 2]),
25
+ offsetNormal: [1, 0],
26
+ offsetDistance: 0.18,
27
+ value: depth,
28
+ renderIn3d: false,
29
+ },
30
+ {
31
+ id: 'cabinet-height',
32
+ start: runLocalToPlan(run, [-width / 2, 0, -depth / 2]),
33
+ end: runLocalToPlan(run, [-width / 2, height, -depth / 2]),
34
+ offsetNormal: [0, 0],
35
+ offsetDistance: 0,
36
+ value: height,
37
+ renderIn3d: false,
38
+ renderInFloorplan: false,
39
+ },
40
+ ];
41
+ }
42
+ function pointOnWall(wall, dir, localX) {
43
+ return [wall.start[0] + dir[0] * localX, DIMENSION_Y, wall.start[1] + dir[1] * localX];
44
+ }
45
+ function createWallDimension({ endLocalX, hit, id, startLocalX, value, }) {
46
+ const frontNormal = [-hit.dirY, hit.dirX];
47
+ const normalScale = hit.side === 'front' ? 1 : -1;
48
+ return {
49
+ id,
50
+ start: pointOnWall(hit.wall, [hit.dirX, hit.dirY], startLocalX),
51
+ end: pointOnWall(hit.wall, [hit.dirX, hit.dirY], endLocalX),
52
+ offsetNormal: [frontNormal[0] * -normalScale, frontNormal[1] * -normalScale],
53
+ offsetDistance: DIMENSION_OFFSET,
54
+ value,
55
+ };
56
+ }
57
+ function findPlacementWallHit({ levelId, nodes, position, rotation, wallId, }) {
58
+ const selectedWall = wallId ? nodes[wallId] : undefined;
59
+ const excludedWallIds = selectedWall?.type === 'wall'
60
+ ? Object.values(nodes)
61
+ .filter((node) => node.type === 'wall' && node.id !== selectedWall.id)
62
+ .map((node) => node.id)
63
+ : [];
64
+ const hit = findClosestCabinetWallInPlan({
65
+ excludeIds: excludedWallIds,
66
+ nodes: nodes,
67
+ parentLevelId: levelId,
68
+ planPoint: [position[0], position[2]],
69
+ yaw: rotation,
70
+ });
71
+ return selectedWall?.type === 'wall' && hit?.wall.id !== selectedWall.id ? null : hit;
72
+ }
73
+ export function resolveCabinetPlacementDimensions({ depth, levelId, nodes, position, rotation, wallId, width, }) {
74
+ const wallHit = findPlacementWallHit({ levelId, nodes, position, rotation, wallId });
75
+ if (!wallHit)
76
+ return [];
77
+ const minLocalX = wallHit.localX - width / 2;
78
+ const maxLocalX = wallHit.localX + width / 2;
79
+ const dimensions = [];
80
+ if (minLocalX > DIMENSION_EPSILON) {
81
+ dimensions.push(createWallDimension({
82
+ endLocalX: minLocalX,
83
+ hit: wallHit,
84
+ id: 'wall-start',
85
+ startLocalX: 0,
86
+ value: minLocalX,
87
+ }));
88
+ }
89
+ const neighbors = collectCabinetWallSnapNeighbors({
90
+ hit: wallHit,
91
+ nodes: nodes,
92
+ parentLevelId: levelId,
93
+ width,
94
+ });
95
+ const leftNeighbor = neighbors
96
+ .filter((neighbor) => neighbor.maxX <= minLocalX + DIMENSION_EPSILON)
97
+ .sort((a, b) => b.maxX - a.maxX)[0];
98
+ const rightNeighbor = neighbors
99
+ .filter((neighbor) => neighbor.minX >= maxLocalX - DIMENSION_EPSILON)
100
+ .sort((a, b) => a.minX - b.minX)[0];
101
+ const neighborGap = leftNeighbor
102
+ ? { end: minLocalX, start: leftNeighbor.maxX }
103
+ : rightNeighbor
104
+ ? { end: rightNeighbor.minX, start: maxLocalX }
105
+ : null;
106
+ if (neighborGap && neighborGap.end - neighborGap.start >= -DIMENSION_EPSILON) {
107
+ dimensions.push(createWallDimension({
108
+ endLocalX: neighborGap.end,
109
+ hit: wallHit,
110
+ id: 'neighbor-gap',
111
+ startLocalX: neighborGap.start,
112
+ value: Math.max(0, neighborGap.end - neighborGap.start),
113
+ }));
114
+ }
115
+ if (dimensions.length > 0)
116
+ return dimensions;
117
+ const faceOffset = resolveCabinetWallFaceOffset({
118
+ hit: wallHit,
119
+ nodes: nodes,
120
+ parentLevelId: levelId,
121
+ });
122
+ const normalScale = wallHit.side === 'front' ? 1 : -1;
123
+ const expectedPerpendicular = faceOffset + normalScale * (depth / 2);
124
+ const wallGap = Math.abs(wallHit.perpDistance - expectedPerpendicular);
125
+ if (wallGap <= DIMENSION_EPSILON)
126
+ return [];
127
+ const wallPoint = pointOnWall(wallHit.wall, [wallHit.dirX, wallHit.dirY], wallHit.localX);
128
+ const frontNormal = [-wallHit.dirY, wallHit.dirX];
129
+ const facePoint = [
130
+ wallPoint[0] + frontNormal[0] * wallHit.perpDistance,
131
+ DIMENSION_Y,
132
+ wallPoint[2] + frontNormal[1] * wallHit.perpDistance,
133
+ ];
134
+ const backPoint = [
135
+ facePoint[0] + Math.sin(rotation) * depth,
136
+ DIMENSION_Y,
137
+ facePoint[2] + Math.cos(rotation) * depth,
138
+ ];
139
+ return [
140
+ {
141
+ id: 'wall-clearance',
142
+ start: facePoint,
143
+ end: backPoint,
144
+ offsetNormal: [0, 0],
145
+ offsetDistance: 0,
146
+ value: wallGap,
147
+ },
148
+ ];
149
+ }
150
+ export function resolveCabinetPlacementDimensionPosition({ depth, dimensionId, levelId, nodes, position, rotation, wallId, width, value, }) {
151
+ if (!Number.isFinite(value) || value < 0)
152
+ return null;
153
+ const hit = findPlacementWallHit({ levelId, nodes, position, rotation, wallId });
154
+ if (!hit)
155
+ return null;
156
+ const neighbors = collectCabinetWallSnapNeighbors({
157
+ hit,
158
+ nodes: nodes,
159
+ parentLevelId: levelId,
160
+ width,
161
+ });
162
+ const currentMinLocalX = hit.localX - width / 2;
163
+ const currentMaxLocalX = hit.localX + width / 2;
164
+ let localX;
165
+ if (dimensionId === 'wall-start') {
166
+ localX = value + width / 2;
167
+ }
168
+ else if (dimensionId === 'neighbor-gap') {
169
+ const leftNeighbor = neighbors
170
+ .filter((neighbor) => neighbor.maxX <= currentMinLocalX + DIMENSION_EPSILON)
171
+ .sort((a, b) => b.maxX - a.maxX)[0];
172
+ const rightNeighbor = neighbors
173
+ .filter((neighbor) => neighbor.minX >= currentMaxLocalX - DIMENSION_EPSILON)
174
+ .sort((a, b) => a.minX - b.minX)[0];
175
+ if (leftNeighbor)
176
+ localX = leftNeighbor.maxX + value + width / 2;
177
+ else if (rightNeighbor)
178
+ localX = rightNeighbor.minX - value - width / 2;
179
+ else
180
+ return null;
181
+ }
182
+ else if (dimensionId === 'wall-clearance') {
183
+ const faceOffset = resolveCabinetWallFaceOffset({
184
+ hit,
185
+ nodes: nodes,
186
+ parentLevelId: levelId,
187
+ });
188
+ const normalScale = hit.side === 'front' ? 1 : -1;
189
+ const expectedPerpendicular = faceOffset + normalScale * (depth / 2);
190
+ const targetPerpendicular = expectedPerpendicular + normalScale * value;
191
+ const frontNormal = [-hit.dirY, hit.dirX];
192
+ const wallPoint = pointOnWall(hit.wall, [hit.dirX, hit.dirY], hit.localX);
193
+ return {
194
+ position: [
195
+ wallPoint[0] + frontNormal[0] * targetPerpendicular,
196
+ position[1],
197
+ wallPoint[2] + frontNormal[1] * targetPerpendicular,
198
+ ],
199
+ wallLocalX: hit.localX,
200
+ };
201
+ }
202
+ else {
203
+ return null;
204
+ }
205
+ if (localX < width / 2 - DIMENSION_EPSILON ||
206
+ localX > hit.wallLength - width / 2 + DIMENSION_EPSILON) {
207
+ return null;
208
+ }
209
+ const clampedLocalX = Math.min(hit.wallLength - width / 2, Math.max(width / 2, localX));
210
+ const faceOffset = resolveCabinetWallFaceOffset({
211
+ hit,
212
+ nodes: nodes,
213
+ parentLevelId: levelId,
214
+ });
215
+ const normalScale = hit.side === 'front' ? 1 : -1;
216
+ const frontNormal = [-hit.dirY, hit.dirX];
217
+ const wallPoint = pointOnWall(hit.wall, [hit.dirX, hit.dirY], clampedLocalX);
218
+ const centerOffset = faceOffset + normalScale * (depth / 2);
219
+ return {
220
+ position: [
221
+ wallPoint[0] + frontNormal[0] * centerOffset,
222
+ position[1],
223
+ wallPoint[2] + frontNormal[1] * centerOffset,
224
+ ],
225
+ wallLocalX: clampedLocalX,
226
+ };
227
+ }
@@ -1,8 +1,28 @@
1
+ import type { AnyNode } from '@pascal-app/core';
1
2
  export declare function snapCabinetFootprintCenter(value: number, extent: number, step: number): number;
2
- export declare function resolveCabinetGridPosition({ raw, dimensions, yaw, step, }: {
3
+ /** Resolve the XZ frame of a level from scene data, without consulting the
4
+ * mounted Three.js registry. Levels inherit their plan transform from their
5
+ * building; an unparented or unavailable level uses the plan origin. */
6
+ export declare function resolveCabinetLevelPlanFrame(levelId: string, nodes: Readonly<Record<string, AnyNode>>): {
7
+ position: [number, number];
8
+ rotationY: number;
9
+ };
10
+ export declare function resolveCabinetGridPosition({ raw, dimensions, footprintOffset, yaw, step, }: {
3
11
  raw: [number, number, number];
4
12
  dimensions: [number, number, number];
13
+ footprintOffset?: [number, number];
5
14
  yaw: number;
6
15
  step: number;
7
16
  }): [number, number, number];
17
+ export declare function resolveCabinetGridPositionInFrame({ raw, dimensions, footprintOffset, yaw, step, frame, }: {
18
+ raw: [number, number, number];
19
+ dimensions: [number, number, number];
20
+ footprintOffset?: [number, number];
21
+ yaw: number;
22
+ step: number;
23
+ frame: {
24
+ position: [number, number];
25
+ rotationY: number;
26
+ };
27
+ }): [number, number, number];
8
28
  //# sourceMappingURL=placement-snap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"placement-snap.d.ts","sourceRoot":"","sources":["../../src/cabinet/placement-snap.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9F;AAED,wBAAgB,0BAA0B,CAAC,EACzC,GAAG,EACH,UAAU,EACV,GAAG,EACH,IAAI,GACL,EAAE;IACD,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAW3B"}
1
+ {"version":3,"file":"placement-snap.d.ts","sourceRoot":"","sources":["../../src/cabinet/placement-snap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9F;AAED;;wEAEwE;AACxE,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC;IAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAQnD;AAED,wBAAgB,0BAA0B,CAAC,EACzC,GAAG,EACH,UAAU,EACV,eAAwB,EACxB,GAAG,EACH,IAAI,GACL,EAAE;IACD,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAgB3B;AAED,wBAAgB,iCAAiC,CAAC,EAChD,GAAG,EACH,UAAU,EACV,eAAwB,EACxB,GAAG,EACH,IAAI,EACJ,KAAK,GACN,EAAE;IACD,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CACzD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAwB3B"}
@@ -5,15 +5,57 @@ export function snapCabinetFootprintCenter(value, extent, step) {
5
5
  const offset = ((halfExtent % step) + step) % step;
6
6
  return Math.round((value - offset) / step) * step + offset;
7
7
  }
8
- export function resolveCabinetGridPosition({ raw, dimensions, yaw, step, }) {
8
+ /** Resolve the XZ frame of a level from scene data, without consulting the
9
+ * mounted Three.js registry. Levels inherit their plan transform from their
10
+ * building; an unparented or unavailable level uses the plan origin. */
11
+ export function resolveCabinetLevelPlanFrame(levelId, nodes) {
12
+ const level = nodes[levelId];
13
+ const building = level?.parentId ? nodes[level.parentId] : undefined;
14
+ if (building?.type !== 'building')
15
+ return { position: [0, 0], rotationY: 0 };
16
+ return {
17
+ position: [building.position[0], building.position[2]],
18
+ rotationY: building.rotation[1],
19
+ };
20
+ }
21
+ export function resolveCabinetGridPosition({ raw, dimensions, footprintOffset = [0, 0], yaw, step, }) {
22
+ if (step <= 0)
23
+ return [raw[0], 0, raw[2]];
24
+ const cos = Math.cos(yaw);
25
+ const sin = Math.sin(yaw);
26
+ const footprintCenterX = raw[0] + footprintOffset[0] * cos + footprintOffset[1] * sin;
27
+ const footprintCenterZ = raw[2] - footprintOffset[0] * sin + footprintOffset[1] * cos;
28
+ const extentX = Math.abs(cos) * dimensions[0] + Math.abs(sin) * dimensions[2];
29
+ const extentZ = Math.abs(sin) * dimensions[0] + Math.abs(cos) * dimensions[2];
30
+ const snappedCenterX = snapCabinetFootprintCenter(footprintCenterX, extentX, step);
31
+ const snappedCenterZ = snapCabinetFootprintCenter(footprintCenterZ, extentZ, step);
32
+ return [
33
+ snappedCenterX - footprintOffset[0] * cos - footprintOffset[1] * sin,
34
+ 0,
35
+ snappedCenterZ + footprintOffset[0] * sin - footprintOffset[1] * cos,
36
+ ];
37
+ }
38
+ export function resolveCabinetGridPositionInFrame({ raw, dimensions, footprintOffset = [0, 0], yaw, step, frame, }) {
9
39
  if (step <= 0)
10
40
  return [raw[0], 0, raw[2]];
11
- const swapAxes = Math.abs(Math.sin(yaw)) > 0.9;
12
- const extentX = swapAxes ? dimensions[2] : dimensions[0];
13
- const extentZ = swapAxes ? dimensions[0] : dimensions[2];
41
+ const frameCos = Math.cos(frame.rotationY);
42
+ const frameSin = Math.sin(frame.rotationY);
43
+ const worldX = frame.position[0] + raw[0] * frameCos + raw[2] * frameSin;
44
+ const worldZ = frame.position[1] - raw[0] * frameSin + raw[2] * frameCos;
45
+ const worldYaw = frame.rotationY + yaw;
46
+ const yawCos = Math.cos(worldYaw);
47
+ const yawSin = Math.sin(worldYaw);
48
+ const footprintCenterX = worldX + footprintOffset[0] * yawCos + footprintOffset[1] * yawSin;
49
+ const footprintCenterZ = worldZ - footprintOffset[0] * yawSin + footprintOffset[1] * yawCos;
50
+ const extentX = Math.abs(yawCos) * dimensions[0] + Math.abs(yawSin) * dimensions[2];
51
+ const extentZ = Math.abs(yawSin) * dimensions[0] + Math.abs(yawCos) * dimensions[2];
52
+ const snappedCenterX = snapCabinetFootprintCenter(footprintCenterX, extentX, step);
53
+ const snappedCenterZ = snapCabinetFootprintCenter(footprintCenterZ, extentZ, step);
54
+ const snappedWorldX = snappedCenterX - footprintOffset[0] * yawCos - footprintOffset[1] * yawSin;
55
+ const snappedWorldZ = snappedCenterZ + footprintOffset[0] * yawSin - footprintOffset[1] * yawCos;
14
56
  return [
15
- snapCabinetFootprintCenter(raw[0], extentX, step),
57
+ (snappedWorldX - frame.position[0]) * frameCos - (snappedWorldZ - frame.position[1]) * frameSin,
16
58
  0,
17
- snapCabinetFootprintCenter(raw[2], extentZ, step),
59
+ (snappedWorldX - frame.position[0]) * frameSin + (snappedWorldZ - frame.position[1]) * frameCos,
18
60
  ];
19
61
  }
@@ -0,0 +1,7 @@
1
+ import type { CabinetModuleNode as CabinetModuleNodeType } from '@pascal-app/core';
2
+ export declare function presetWidthDebt(module: CabinetModuleNodeType, sourceId: CabinetModuleNodeType['id']): number;
3
+ export declare function metadataWithPresetWidthDebt(module: CabinetModuleNodeType, sourceId: CabinetModuleNodeType['id'], widthDelta: number): CabinetModuleNodeType['metadata'];
4
+ export declare function metadataForSelectedWidth(module: CabinetModuleNodeType, width: number, patchMetadata?: CabinetModuleNodeType['metadata']): CabinetModuleNodeType['metadata'];
5
+ export declare function presetNominalWidth(module: CabinetModuleNodeType): number;
6
+ export declare function recordedPresetNominalWidth(module: CabinetModuleNodeType): number;
7
+ //# sourceMappingURL=preset-width-debt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-width-debt.d.ts","sourceRoot":"","sources":["../../src/cabinet/preset-width-debt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAOlF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,MAAM,CAKR;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,EACrC,UAAU,EAAE,MAAM,GACjB,qBAAqB,CAAC,UAAU,CAAC,CAiBnC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,GAChD,qBAAqB,CAAC,UAAU,CAAC,CAInC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAGxE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAGhF"}
@@ -0,0 +1,45 @@
1
+ import { MAX_CABINET_WIDTH } from './resize-limits';
2
+ import { cabinetMetadataRecord } from './run-ops';
3
+ const PRESET_WIDTH_DEBT_KEY = 'cabinetPresetWidthDebtBySource';
4
+ const PRESET_NOMINAL_WIDTH_KEY = 'cabinetPresetNominalWidth';
5
+ export function presetWidthDebt(module, sourceId) {
6
+ const value = cabinetMetadataRecord(module.metadata)[PRESET_WIDTH_DEBT_KEY];
7
+ if (!value || typeof value !== 'object' || Array.isArray(value))
8
+ return 0;
9
+ const debt = value[sourceId];
10
+ return typeof debt === 'number' && debt > 0 ? debt : 0;
11
+ }
12
+ export function metadataWithPresetWidthDebt(module, sourceId, widthDelta) {
13
+ const metadata = cabinetMetadataRecord(module.metadata);
14
+ const value = metadata[PRESET_WIDTH_DEBT_KEY];
15
+ const debts = value && typeof value === 'object' && !Array.isArray(value)
16
+ ? { ...value }
17
+ : {};
18
+ const nextDebt = Math.max(0, presetWidthDebt(module, sourceId) - widthDelta);
19
+ if (nextDebt > 1e-4)
20
+ debts[sourceId] = nextDebt;
21
+ else
22
+ delete debts[sourceId];
23
+ const nextMetadata = { ...metadata };
24
+ if (widthDelta < -1e-4 && typeof nextMetadata[PRESET_NOMINAL_WIDTH_KEY] !== 'number') {
25
+ nextMetadata[PRESET_NOMINAL_WIDTH_KEY] = module.width;
26
+ }
27
+ if (Object.keys(debts).length > 0)
28
+ nextMetadata[PRESET_WIDTH_DEBT_KEY] = debts;
29
+ else
30
+ delete nextMetadata[PRESET_WIDTH_DEBT_KEY];
31
+ return nextMetadata;
32
+ }
33
+ export function metadataForSelectedWidth(module, width, patchMetadata) {
34
+ const metadata = cabinetMetadataRecord(patchMetadata ?? module.metadata);
35
+ const { [PRESET_WIDTH_DEBT_KEY]: _removed, ...rest } = metadata;
36
+ return { ...rest, [PRESET_NOMINAL_WIDTH_KEY]: width };
37
+ }
38
+ export function presetNominalWidth(module) {
39
+ const value = cabinetMetadataRecord(module.metadata)[PRESET_NOMINAL_WIDTH_KEY];
40
+ return typeof value === 'number' && value >= module.width ? value : MAX_CABINET_WIDTH;
41
+ }
42
+ export function recordedPresetNominalWidth(module) {
43
+ const value = cabinetMetadataRecord(module.metadata)[PRESET_NOMINAL_WIDTH_KEY];
44
+ return typeof value === 'number' && value >= module.width ? value : module.width;
45
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/cabinet/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAetE,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,aAAa,GACb,YAAY,GACZ,aAAa,GACb,mBAAmB,GACnB,WAAW,GACX,aAAa,GACb,YAAY,GACZ,eAAe,CAAA;AAEnB,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,eAAe,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC/D,CAAA;AAgBD,eAAO,MAAM,eAAe,EAAE,aAAa,EAuJ1C,CAAA;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,eAAe,GAAG,aAAa,CAEpE"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/cabinet/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAetE,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,aAAa,GACb,YAAY,GACZ,aAAa,GACb,mBAAmB,GACnB,WAAW,GACX,aAAa,GACb,YAAY,GACZ,eAAe,CAAA;AAEnB,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,eAAe,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC/D,CAAA;AAkBD,eAAO,MAAM,eAAe,EAAE,aAAa,EAsJ1C,CAAA;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,eAAe,GAAG,aAAa,CAEpE"}
@@ -1,16 +1,18 @@
1
- import { COOKTOP_STANDARD_WIDTH, cooktopCabinetStack, DISHWASHER_STANDARD_HEIGHT, DISHWASHER_STANDARD_WIDTH, FRIDGE_COLUMN_WIDTH, fridgeCabinetStack, MICROWAVE_STANDARD_WIDTH, newCabinetCompartment, SINK_STANDARD_WIDTH, sinkCabinetStack, TALL_CABINET_CARCASS_HEIGHT, } from './stack';
1
+ import { CABINET_METRIC_DEFAULTS } from '@pascal-app/core';
2
+ import { COOKTOP_STANDARD_WIDTH, cooktopCabinetStack, DISHWASHER_STANDARD_WIDTH, FRIDGE_COLUMN_HEIGHT, FRIDGE_COLUMN_WIDTH, fridgeCabinetStack, MICROWAVE_STANDARD_WIDTH, newCabinetCompartment, SINK_STANDARD_WIDTH, sinkCabinetStack, } from './stack';
2
3
  const baseShared = (run) => ({
3
4
  cabinetType: 'base',
4
- depth: run?.depth ?? 0.5,
5
- carcassHeight: run?.carcassHeight ?? 0.72,
6
- plinthHeight: run?.plinthHeight ?? 0.1,
5
+ depth: run?.depth ?? CABINET_METRIC_DEFAULTS.depth,
6
+ carcassHeight: run?.carcassHeight ?? CABINET_METRIC_DEFAULTS.carcassHeight,
7
+ plinthHeight: run?.plinthHeight ?? CABINET_METRIC_DEFAULTS.plinthHeight,
7
8
  toeKickDepth: run?.toeKickDepth ?? 0.075,
8
9
  countertopThickness: 0,
9
10
  countertopOverhang: run?.countertopOverhang ?? 0.02,
10
11
  showPlinth: false,
11
12
  withCountertop: false,
12
13
  });
13
- const runDepth = (run) => run?.depth ?? 0.5;
14
+ const runDepth = (run) => run?.depth ?? CABINET_METRIC_DEFAULTS.depth;
15
+ const runCarcassHeight = (run) => run?.carcassHeight ?? CABINET_METRIC_DEFAULTS.carcassHeight;
14
16
  export const CABINET_PRESETS = [
15
17
  {
16
18
  id: 'base-door',
@@ -48,11 +50,10 @@ export const CABINET_PRESETS = [
48
50
  ...baseShared(run),
49
51
  name: 'Dishwasher',
50
52
  width: DISHWASHER_STANDARD_WIDTH,
51
- carcassHeight: DISHWASHER_STANDARD_HEIGHT,
52
53
  handleStyle: 'bar',
53
54
  handlePosition: 'top',
54
55
  frontOverlay: 'full',
55
- stack: [{ ...newCabinetCompartment('dishwasher'), height: DISHWASHER_STANDARD_HEIGHT }],
56
+ stack: [{ ...newCabinetCompartment('dishwasher'), height: runCarcassHeight(run) }],
56
57
  }),
57
58
  },
58
59
  {
@@ -101,9 +102,9 @@ export const CABINET_PRESETS = [
101
102
  cabinetType: 'tall',
102
103
  name: 'Tall Pantry',
103
104
  width: 0.5,
104
- depth: run?.depth ?? 0.5,
105
+ depth: run?.depth ?? CABINET_METRIC_DEFAULTS.depth,
105
106
  carcassHeight: 2.07,
106
- plinthHeight: 0.1,
107
+ plinthHeight: CABINET_METRIC_DEFAULTS.plinthHeight,
107
108
  toeKickDepth: 0.075,
108
109
  countertopThickness: 0,
109
110
  countertopOverhang: run?.countertopOverhang ?? 0.02,
@@ -122,9 +123,9 @@ export const CABINET_PRESETS = [
122
123
  cabinetType: 'tall',
123
124
  name: 'Oven Tower',
124
125
  width: MICROWAVE_STANDARD_WIDTH,
125
- depth: run?.depth ?? 0.5,
126
+ depth: run?.depth ?? CABINET_METRIC_DEFAULTS.depth,
126
127
  carcassHeight: 2.07,
127
- plinthHeight: 0.1,
128
+ plinthHeight: CABINET_METRIC_DEFAULTS.plinthHeight,
128
129
  toeKickDepth: 0.075,
129
130
  countertopThickness: 0,
130
131
  countertopOverhang: run?.countertopOverhang ?? 0.02,
@@ -149,8 +150,8 @@ export const CABINET_PRESETS = [
149
150
  name: 'Single Door Refrigerator',
150
151
  width: FRIDGE_COLUMN_WIDTH,
151
152
  depth: runDepth(run),
152
- carcassHeight: TALL_CABINET_CARCASS_HEIGHT,
153
- plinthHeight: 0.1,
153
+ carcassHeight: FRIDGE_COLUMN_HEIGHT,
154
+ plinthHeight: CABINET_METRIC_DEFAULTS.plinthHeight,
154
155
  toeKickDepth: 0.075,
155
156
  countertopThickness: 0,
156
157
  countertopOverhang: run?.countertopOverhang ?? 0.02,
@@ -0,0 +1,14 @@
1
+ import type { CabinetNode } from '@pascal-app/core';
2
+ export type CabinetDimensionProfileId = 'metric-base' | 'us-base';
3
+ export type CabinetDimensionProfile = {
4
+ id: CabinetDimensionProfileId;
5
+ label: string;
6
+ depth: number;
7
+ carcassHeight: number;
8
+ plinthHeight: number;
9
+ countertopThickness: number;
10
+ };
11
+ export declare const CABINET_DIMENSION_PROFILES: CabinetDimensionProfile[];
12
+ export declare function cabinetDimensionProfileId(node: Pick<CabinetNode, 'depth' | 'carcassHeight' | 'plinthHeight' | 'countertopThickness'>): CabinetDimensionProfileId | 'custom';
13
+ export declare function cabinetDimensionProfileById(id: CabinetDimensionProfileId): CabinetDimensionProfile;
14
+ //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/cabinet/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG,SAAS,CAAA;AAEjE,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,yBAAyB,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,uBAAuB,EAiB/D,CAAA;AAID,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,eAAe,GAAG,cAAc,GAAG,qBAAqB,CAAC,GAC1F,yBAAyB,GAAG,QAAQ,CAStC;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,yBAAyB,2BAExE"}
@@ -0,0 +1,30 @@
1
+ import { CABINET_METRIC_DEFAULTS } from '@pascal-app/core';
2
+ export const CABINET_DIMENSION_PROFILES = [
3
+ {
4
+ id: 'metric-base',
5
+ label: 'Metric · 600 mm',
6
+ depth: CABINET_METRIC_DEFAULTS.depth,
7
+ carcassHeight: CABINET_METRIC_DEFAULTS.carcassHeight,
8
+ plinthHeight: CABINET_METRIC_DEFAULTS.plinthHeight,
9
+ countertopThickness: CABINET_METRIC_DEFAULTS.countertopThickness,
10
+ },
11
+ {
12
+ id: 'us-base',
13
+ label: 'US · 24 in',
14
+ depth: 0.6096,
15
+ carcassHeight: 0.762,
16
+ plinthHeight: 0.1016,
17
+ countertopThickness: 0.0381,
18
+ },
19
+ ];
20
+ const PROFILE_MATCH_TOLERANCE = 1e-4;
21
+ export function cabinetDimensionProfileId(node) {
22
+ const profile = CABINET_DIMENSION_PROFILES.find((candidate) => Math.abs(candidate.depth - node.depth) <= PROFILE_MATCH_TOLERANCE &&
23
+ Math.abs(candidate.carcassHeight - node.carcassHeight) <= PROFILE_MATCH_TOLERANCE &&
24
+ Math.abs(candidate.plinthHeight - node.plinthHeight) <= PROFILE_MATCH_TOLERANCE &&
25
+ Math.abs(candidate.countertopThickness - node.countertopThickness) <= PROFILE_MATCH_TOLERANCE);
26
+ return profile?.id ?? 'custom';
27
+ }
28
+ export function cabinetDimensionProfileById(id) {
29
+ return CABINET_DIMENSION_PROFILES.find((profile) => profile.id === id);
30
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"quick-actions.d.ts","sourceRoot":"","sources":["../../src/cabinet/quick-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,WAAW,EAEX,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAqEzB,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,KAAK,GACN,EAAE;IACD,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAAA;IACrC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CACrD,GAAG,eAAe,EAAE,CA4LpB"}
1
+ {"version":3,"file":"quick-actions.d.ts","sourceRoot":"","sources":["../../src/cabinet/quick-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,WAAW,EAEX,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAmEzB,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,KAAK,GACN,EAAE;IACD,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAAA;IACrC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CACrD,GAAG,eAAe,EAAE,CA0KpB"}
@@ -1,5 +1,5 @@
1
- import { moduleSideOpen, sideInsertX } from './run-layout';
2
- import { addCabinetModuleSide, addCornerRun, addWallChildAbove, CABINET_BASE_WIDTH, CABINET_EDGE_EPSILON, cabinetModulesForRun, planCabinetModuleSideAddition, previewCornerAdditionLayout, resolveCabinetType, switchCabinetToBase, switchCabinetToTall, wallChildAdditionOverlaps, wallChildOf, } from './run-ops';
1
+ import { moduleSideOpen } from './run-layout';
2
+ import { addCabinetModuleSide, addCornerRun, addWallChildAbove, CABINET_EDGE_EPSILON, cabinetModulesForRun, planCabinetModuleSideAddition, previewCornerAdditionLayout, resolveCabinetType, switchCabinetToBase, switchCabinetToTall, wallChildAdditionOverlaps, wallChildOf, } from './run-ops';
3
3
  function resolveRunEndModule(runModules, run, side) {
4
4
  const standardBaseModules = runModules.filter((module) => module.moduleKind === 'standard' && resolveCabinetType(module, run) === 'base');
5
5
  if (standardBaseModules.length === 0)
@@ -59,34 +59,18 @@ export function cabinetQuickActions({ node, nodes, }) {
59
59
  const rightCornerModule = context.module && standardModule && selectedCabinetType === 'base'
60
60
  ? context.module
61
61
  : resolveRunEndModule(runModules, context.run, 'right');
62
- const leftHasInsertSlot = sideInsertX({
62
+ const leftAvailable = planCabinetModuleSideAddition({
63
63
  anchorModule: context.module,
64
- modules: runModules,
64
+ nodes,
65
+ run: context.run,
65
66
  side: 'left',
66
- width: CABINET_BASE_WIDTH,
67
- epsilon: CABINET_EDGE_EPSILON,
68
67
  }) != null;
69
- const rightHasInsertSlot = sideInsertX({
68
+ const rightAvailable = planCabinetModuleSideAddition({
70
69
  anchorModule: context.module,
71
- modules: runModules,
70
+ nodes,
71
+ run: context.run,
72
72
  side: 'right',
73
- width: CABINET_BASE_WIDTH,
74
- epsilon: CABINET_EDGE_EPSILON,
75
73
  }) != null;
76
- const leftAvailable = leftHasInsertSlot &&
77
- planCabinetModuleSideAddition({
78
- anchorModule: context.module,
79
- nodes,
80
- run: context.run,
81
- side: 'left',
82
- }) != null;
83
- const rightAvailable = rightHasInsertSlot &&
84
- planCabinetModuleSideAddition({
85
- anchorModule: context.module,
86
- nodes,
87
- run: context.run,
88
- side: 'right',
89
- }) != null;
90
74
  const canAddCornerLeft = leftCornerModule != null &&
91
75
  context.run.runTier === 'base' &&
92
76
  moduleSideOpen(runModules, leftCornerModule.id, 'left', CABINET_EDGE_EPSILON) &&
@@ -0,0 +1,37 @@
1
+ export type CabinetRevealGapId = '2' | '3' | '4' | '6';
2
+ export declare const CABINET_REVEAL_GAPS: readonly [{
3
+ readonly id: "2";
4
+ readonly label: "2 mm";
5
+ readonly value: 0.002;
6
+ }, {
7
+ readonly id: "3";
8
+ readonly label: "3 mm";
9
+ readonly value: 0.003;
10
+ }, {
11
+ readonly id: "4";
12
+ readonly label: "4 mm";
13
+ readonly value: 0.004;
14
+ }, {
15
+ readonly id: "6";
16
+ readonly label: "6 mm";
17
+ readonly value: 0.006;
18
+ }];
19
+ export declare function cabinetRevealGapId(value: number): CabinetRevealGapId | 'custom';
20
+ export declare function cabinetRevealGapById(id: CabinetRevealGapId): {
21
+ readonly id: "2";
22
+ readonly label: "2 mm";
23
+ readonly value: 0.002;
24
+ } | {
25
+ readonly id: "3";
26
+ readonly label: "3 mm";
27
+ readonly value: 0.003;
28
+ } | {
29
+ readonly id: "4";
30
+ readonly label: "4 mm";
31
+ readonly value: 0.004;
32
+ } | {
33
+ readonly id: "6";
34
+ readonly label: "6 mm";
35
+ readonly value: 0.006;
36
+ };
37
+ //# sourceMappingURL=reveals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reveals.d.ts","sourceRoot":"","sources":["../../src/cabinet/reveals.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAEtD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;EAS9B,CAAA;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,QAAQ,CAG/E;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,kBAAkB;;;;;;;;;;;;;;;;EAE1D"}
@@ -0,0 +1,13 @@
1
+ export const CABINET_REVEAL_GAPS = [
2
+ { id: '2', label: '2 mm', value: 0.002 },
3
+ { id: '3', label: '3 mm', value: 0.003 },
4
+ { id: '4', label: '4 mm', value: 0.004 },
5
+ { id: '6', label: '6 mm', value: 0.006 },
6
+ ];
7
+ export function cabinetRevealGapId(value) {
8
+ const match = CABINET_REVEAL_GAPS.find((gap) => Math.abs(gap.value - value) < 1e-4);
9
+ return match?.id ?? 'custom';
10
+ }
11
+ export function cabinetRevealGapById(id) {
12
+ return CABINET_REVEAL_GAPS.find((gap) => gap.id === id) ?? CABINET_REVEAL_GAPS[1];
13
+ }