@pascal-app/nodes 0.1.1 → 1.0.0-beta.2

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 (408) hide show
  1. package/README.md +34 -0
  2. package/dist/building/definition.js +1 -1
  3. package/dist/cabinet/definition.d.ts.map +1 -1
  4. package/dist/cabinet/definition.js +809 -72
  5. package/dist/cabinet/geometry.d.ts.map +1 -1
  6. package/dist/cabinet/geometry.js +4 -0
  7. package/dist/cabinet/move-frame.js +3 -3
  8. package/dist/cabinet/panel.d.ts.map +1 -1
  9. package/dist/cabinet/panel.js +1 -0
  10. package/dist/cabinet/placement-snap.d.ts +8 -0
  11. package/dist/cabinet/placement-snap.d.ts.map +1 -0
  12. package/dist/cabinet/placement-snap.js +19 -0
  13. package/dist/cabinet/presets.js +8 -8
  14. package/dist/cabinet/quick-actions.d.ts.map +1 -1
  15. package/dist/cabinet/quick-actions.js +9 -3
  16. package/dist/cabinet/resize-limits.d.ts +11 -0
  17. package/dist/cabinet/resize-limits.d.ts.map +1 -0
  18. package/dist/cabinet/resize-limits.js +22 -0
  19. package/dist/cabinet/run-layout.d.ts +8 -2
  20. package/dist/cabinet/run-layout.d.ts.map +1 -1
  21. package/dist/cabinet/run-layout.js +59 -7
  22. package/dist/cabinet/run-ops.d.ts +44 -3
  23. package/dist/cabinet/run-ops.d.ts.map +1 -1
  24. package/dist/cabinet/run-ops.js +646 -110
  25. package/dist/cabinet/run-panel.d.ts +2 -1
  26. package/dist/cabinet/run-panel.d.ts.map +1 -1
  27. package/dist/cabinet/run-panel.js +38 -4
  28. package/dist/cabinet/stack-transitions.js +4 -4
  29. package/dist/cabinet/tool.d.ts.map +1 -1
  30. package/dist/cabinet/tool.js +95 -17
  31. package/dist/cabinet/wall-snap.d.ts.map +1 -1
  32. package/dist/cabinet/wall-snap.js +2 -6
  33. package/dist/ceiling/boundary-editor.d.ts.map +1 -1
  34. package/dist/ceiling/boundary-editor.js +2 -2
  35. package/dist/ceiling/definition.d.ts +1 -1
  36. package/dist/ceiling/definition.d.ts.map +1 -1
  37. package/dist/ceiling/definition.js +36 -5
  38. package/dist/ceiling/floorplan-affordances.d.ts +4 -4
  39. package/dist/ceiling/floorplan-move.d.ts +4 -4
  40. package/dist/ceiling/floorplan-move.d.ts.map +1 -1
  41. package/dist/ceiling/floorplan-move.js +5 -4
  42. package/dist/ceiling/hole-editor.d.ts.map +1 -1
  43. package/dist/ceiling/hole-editor.js +2 -2
  44. package/dist/ceiling/move-tool.d.ts.map +1 -1
  45. package/dist/ceiling/move-tool.js +4 -3
  46. package/dist/ceiling/panel.d.ts.map +1 -1
  47. package/dist/ceiling/panel.js +65 -3
  48. package/dist/ceiling/renderer.d.ts.map +1 -1
  49. package/dist/ceiling/renderer.js +6 -2
  50. package/dist/ceiling/tool.d.ts.map +1 -1
  51. package/dist/ceiling/tool.js +12 -1
  52. package/dist/chimney/definition.d.ts.map +1 -1
  53. package/dist/chimney/definition.js +1 -0
  54. package/dist/chimney/tool.d.ts.map +1 -1
  55. package/dist/chimney/tool.js +16 -1
  56. package/dist/column/definition.d.ts.map +1 -1
  57. package/dist/column/definition.js +14 -2
  58. package/dist/column/floorplan-affordances.d.ts.map +1 -1
  59. package/dist/column/floorplan-affordances.js +19 -14
  60. package/dist/column/floorplan-move.d.ts.map +1 -1
  61. package/dist/column/floorplan-move.js +7 -2
  62. package/dist/column/floorplan.d.ts +9 -1
  63. package/dist/column/floorplan.d.ts.map +1 -1
  64. package/dist/column/floorplan.js +59 -4
  65. package/dist/column/tool.d.ts.map +1 -1
  66. package/dist/column/tool.js +33 -7
  67. package/dist/construction-dimension/definition.d.ts +4 -0
  68. package/dist/construction-dimension/definition.d.ts.map +1 -0
  69. package/dist/construction-dimension/definition.js +83 -0
  70. package/dist/construction-dimension/drawing-coordination.d.ts +7 -0
  71. package/dist/construction-dimension/drawing-coordination.d.ts.map +1 -0
  72. package/dist/construction-dimension/drawing-coordination.js +54 -0
  73. package/dist/construction-dimension/floorplan-affordances.d.ts +4 -0
  74. package/dist/construction-dimension/floorplan-affordances.d.ts.map +1 -0
  75. package/dist/construction-dimension/floorplan-affordances.js +114 -0
  76. package/dist/construction-dimension/floorplan-tool.d.ts +21 -0
  77. package/dist/construction-dimension/floorplan-tool.d.ts.map +1 -0
  78. package/dist/construction-dimension/floorplan-tool.js +557 -0
  79. package/dist/construction-dimension/floorplan.d.ts +3 -0
  80. package/dist/construction-dimension/floorplan.d.ts.map +1 -0
  81. package/dist/construction-dimension/floorplan.js +457 -0
  82. package/dist/construction-dimension/geometry.d.ts +31 -0
  83. package/dist/construction-dimension/geometry.d.ts.map +1 -0
  84. package/dist/construction-dimension/geometry.js +144 -0
  85. package/dist/construction-dimension/index.d.ts +4 -0
  86. package/dist/construction-dimension/index.d.ts.map +1 -0
  87. package/dist/construction-dimension/index.js +3 -0
  88. package/dist/construction-dimension/panel.d.ts +2 -0
  89. package/dist/construction-dimension/panel.d.ts.map +1 -0
  90. package/dist/construction-dimension/panel.js +128 -0
  91. package/dist/construction-dimension/parametrics.d.ts +3 -0
  92. package/dist/construction-dimension/parametrics.d.ts.map +1 -0
  93. package/dist/construction-dimension/parametrics.js +4 -0
  94. package/dist/construction-dimension/schema.d.ts +2 -0
  95. package/dist/construction-dimension/schema.d.ts.map +1 -0
  96. package/dist/construction-dimension/schema.js +1 -0
  97. package/dist/door/contextual-dimensions.d.ts +3 -0
  98. package/dist/door/contextual-dimensions.d.ts.map +1 -0
  99. package/dist/door/contextual-dimensions.js +7 -0
  100. package/dist/door/definition.d.ts.map +1 -1
  101. package/dist/door/definition.js +13 -8
  102. package/dist/door/floorplan-affordances.d.ts +2 -5
  103. package/dist/door/floorplan-affordances.d.ts.map +1 -1
  104. package/dist/door/floorplan-affordances.js +9 -18
  105. package/dist/door/floorplan.d.ts +3 -4
  106. package/dist/door/floorplan.d.ts.map +1 -1
  107. package/dist/door/floorplan.js +88 -6
  108. package/dist/door/move-tool.d.ts.map +1 -1
  109. package/dist/door/move-tool.js +2 -2
  110. package/dist/door/panel.d.ts.map +1 -1
  111. package/dist/door/panel.js +3 -1
  112. package/dist/door/schema.d.ts +1 -1
  113. package/dist/door/schema.d.ts.map +1 -1
  114. package/dist/door/schema.js +1 -1
  115. package/dist/door/tool.d.ts.map +1 -1
  116. package/dist/door/tool.js +63 -6
  117. package/dist/dormer/definition.d.ts.map +1 -1
  118. package/dist/dormer/definition.js +1 -0
  119. package/dist/dormer/tool.d.ts.map +1 -1
  120. package/dist/dormer/tool.js +23 -1
  121. package/dist/duct-segment/tool.d.ts.map +1 -1
  122. package/dist/duct-segment/tool.js +20 -9
  123. package/dist/duct-terminal/tool.d.ts.map +1 -1
  124. package/dist/duct-terminal/tool.js +9 -6
  125. package/dist/elevator/floorplan-affordances.d.ts +2 -6
  126. package/dist/elevator/floorplan-affordances.d.ts.map +1 -1
  127. package/dist/elevator/floorplan-affordances.js +13 -12
  128. package/dist/fence/actions/move-endpoint.d.ts.map +1 -1
  129. package/dist/fence/actions/move-endpoint.js +29 -1
  130. package/dist/fence/definition.d.ts.map +1 -1
  131. package/dist/fence/definition.js +74 -14
  132. package/dist/fence/floorplan-affordances.d.ts.map +1 -1
  133. package/dist/fence/floorplan-affordances.js +48 -11
  134. package/dist/fence/floorplan-move.d.ts.map +1 -1
  135. package/dist/fence/floorplan-move.js +38 -3
  136. package/dist/fence/geometry.d.ts.map +1 -1
  137. package/dist/fence/geometry.js +15 -1
  138. package/dist/fence/lift.d.ts +38 -0
  139. package/dist/fence/lift.d.ts.map +1 -0
  140. package/dist/fence/lift.js +51 -0
  141. package/dist/fence/move-tool.d.ts.map +1 -1
  142. package/dist/fence/move-tool.js +25 -5
  143. package/dist/fence/system.d.ts +3 -0
  144. package/dist/fence/system.d.ts.map +1 -0
  145. package/dist/fence/system.js +46 -0
  146. package/dist/fence/tool.d.ts.map +1 -1
  147. package/dist/fence/tool.js +103 -32
  148. package/dist/hvac-equipment/tool.d.ts.map +1 -1
  149. package/dist/hvac-equipment/tool.js +8 -3
  150. package/dist/index.d.ts +2 -0
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +6 -0
  153. package/dist/item/definition.d.ts.map +1 -1
  154. package/dist/item/definition.js +7 -1
  155. package/dist/item/floorplan-move.d.ts.map +1 -1
  156. package/dist/item/floorplan-move.js +50 -43
  157. package/dist/item/floorplan.d.ts +1 -0
  158. package/dist/item/floorplan.d.ts.map +1 -1
  159. package/dist/item/floorplan.js +49 -0
  160. package/dist/item/renderer.d.ts +3 -0
  161. package/dist/item/renderer.d.ts.map +1 -1
  162. package/dist/item/renderer.js +96 -8
  163. package/dist/level/definition.d.ts.map +1 -1
  164. package/dist/level/definition.js +7 -3
  165. package/dist/lineset/tool.d.ts.map +1 -1
  166. package/dist/lineset/tool.js +5 -1
  167. package/dist/liquid-line/tool.d.ts.map +1 -1
  168. package/dist/liquid-line/tool.js +7 -1
  169. package/dist/measurement/definition.d.ts.map +1 -1
  170. package/dist/measurement/definition.js +5 -0
  171. package/dist/measurement/floorplan.d.ts.map +1 -1
  172. package/dist/measurement/floorplan.js +11 -10
  173. package/dist/measurement/index.d.ts +1 -1
  174. package/dist/measurement/index.d.ts.map +1 -1
  175. package/dist/measurement/index.js +1 -1
  176. package/dist/measurement/resolve.d.ts +5 -0
  177. package/dist/measurement/resolve.d.ts.map +1 -1
  178. package/dist/measurement/resolve.js +2 -2
  179. package/dist/measurement/surface-query.js +5 -5
  180. package/dist/measurement/tool.d.ts +6 -1
  181. package/dist/measurement/tool.d.ts.map +1 -1
  182. package/dist/measurement/tool.js +7 -11
  183. package/dist/pipe-segment/tool.d.ts.map +1 -1
  184. package/dist/pipe-segment/tool.js +22 -19
  185. package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
  186. package/dist/roof-segment/floorplan-affordances.js +14 -8
  187. package/dist/shared/construction-dimension-standards.d.ts +34 -0
  188. package/dist/shared/construction-dimension-standards.d.ts.map +1 -0
  189. package/dist/shared/construction-dimension-standards.js +18 -0
  190. package/dist/shared/construction-length.d.ts +10 -0
  191. package/dist/shared/construction-length.d.ts.map +1 -0
  192. package/dist/shared/construction-length.js +57 -0
  193. package/dist/shared/dimension-string.d.ts +20 -0
  194. package/dist/shared/dimension-string.d.ts.map +1 -0
  195. package/dist/shared/dimension-string.js +19 -0
  196. package/dist/shared/draft-axis-guides.d.ts +36 -0
  197. package/dist/shared/draft-axis-guides.d.ts.map +1 -0
  198. package/dist/shared/draft-axis-guides.js +107 -0
  199. package/dist/shared/move-roof-tool.d.ts.map +1 -1
  200. package/dist/shared/move-roof-tool.js +17 -3
  201. package/dist/shared/opening-documentation-fields.d.ts +16 -0
  202. package/dist/shared/opening-documentation-fields.d.ts.map +1 -0
  203. package/dist/shared/opening-documentation-fields.js +54 -0
  204. package/dist/shared/opening-documentation.d.ts +47 -0
  205. package/dist/shared/opening-documentation.d.ts.map +1 -0
  206. package/dist/shared/opening-documentation.js +300 -0
  207. package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
  208. package/dist/shared/opening-guides-runtime.js +3 -2
  209. package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
  210. package/dist/shared/opening-placement-dimensions.js +14 -5
  211. package/dist/shared/wall-opening-ceiling.d.ts +30 -0
  212. package/dist/shared/wall-opening-ceiling.d.ts.map +1 -0
  213. package/dist/shared/wall-opening-ceiling.js +29 -0
  214. package/dist/shelf/floorplan-affordances.d.ts.map +1 -1
  215. package/dist/shelf/floorplan-affordances.js +10 -5
  216. package/dist/shelf/floorplan-move.d.ts +2 -16
  217. package/dist/shelf/floorplan-move.d.ts.map +1 -1
  218. package/dist/shelf/floorplan-move.js +19 -40
  219. package/dist/shelf/tool.d.ts.map +1 -1
  220. package/dist/shelf/tool.js +8 -3
  221. package/dist/site/recessed-slab-ground-holes.d.ts.map +1 -1
  222. package/dist/site/recessed-slab-ground-holes.js +1 -4
  223. package/dist/site/renderer.d.ts.map +1 -1
  224. package/dist/site/renderer.js +118 -28
  225. package/dist/site/terrain-drape.d.ts +91 -0
  226. package/dist/site/terrain-drape.d.ts.map +1 -0
  227. package/dist/site/terrain-drape.js +205 -0
  228. package/dist/site/terrain-geometry.d.ts +131 -0
  229. package/dist/site/terrain-geometry.d.ts.map +1 -0
  230. package/dist/site/terrain-geometry.js +259 -0
  231. package/dist/site/terrain-mesh.d.ts +49 -0
  232. package/dist/site/terrain-mesh.d.ts.map +1 -0
  233. package/dist/site/terrain-mesh.js +122 -0
  234. package/dist/site/terrain-renderer.d.ts +28 -0
  235. package/dist/site/terrain-renderer.d.ts.map +1 -0
  236. package/dist/site/terrain-renderer.js +69 -0
  237. package/dist/skylight/definition.d.ts.map +1 -1
  238. package/dist/skylight/definition.js +1 -0
  239. package/dist/skylight/tool.d.ts.map +1 -1
  240. package/dist/skylight/tool.js +16 -1
  241. package/dist/slab/definition.d.ts.map +1 -1
  242. package/dist/slab/definition.js +87 -10
  243. package/dist/slab/elevation-limit.d.ts +43 -0
  244. package/dist/slab/elevation-limit.d.ts.map +1 -0
  245. package/dist/slab/elevation-limit.js +124 -0
  246. package/dist/slab/floorplan-affordances.d.ts +16 -0
  247. package/dist/slab/floorplan-affordances.d.ts.map +1 -1
  248. package/dist/slab/geometry.d.ts.map +1 -1
  249. package/dist/slab/geometry.js +98 -5
  250. package/dist/slab/panel.d.ts.map +1 -1
  251. package/dist/slab/panel.js +82 -4
  252. package/dist/slab/parametrics.d.ts +1 -1
  253. package/dist/slab/parametrics.d.ts.map +1 -1
  254. package/dist/slab/parametrics.js +13 -1
  255. package/dist/slab/placement-ownership.d.ts +3 -0
  256. package/dist/slab/placement-ownership.d.ts.map +1 -0
  257. package/dist/slab/placement-ownership.js +3 -0
  258. package/dist/slab/quick-measurement.d.ts.map +1 -1
  259. package/dist/slab/quick-measurement.js +3 -2
  260. package/dist/slab/system.d.ts.map +1 -1
  261. package/dist/slab/system.js +14 -4
  262. package/dist/slab/tool.d.ts.map +1 -1
  263. package/dist/slab/tool.js +81 -23
  264. package/dist/solar-panel/definition.d.ts.map +1 -1
  265. package/dist/solar-panel/definition.js +1 -0
  266. package/dist/solar-panel/tool.d.ts.map +1 -1
  267. package/dist/solar-panel/tool.js +17 -1
  268. package/dist/spawn/definition.d.ts.map +1 -1
  269. package/dist/spawn/definition.js +1 -0
  270. package/dist/spawn/floorplan-affordances.d.ts.map +1 -1
  271. package/dist/spawn/floorplan-affordances.js +7 -4
  272. package/dist/spawn/floorplan-move.d.ts.map +1 -1
  273. package/dist/spawn/floorplan-move.js +8 -6
  274. package/dist/spawn/renderer.d.ts +4 -0
  275. package/dist/spawn/renderer.d.ts.map +1 -1
  276. package/dist/spawn/renderer.js +32 -18
  277. package/dist/spawn/tool.d.ts +2 -2
  278. package/dist/spawn/tool.d.ts.map +1 -1
  279. package/dist/spawn/tool.js +78 -11
  280. package/dist/stair/definition.d.ts.map +1 -1
  281. package/dist/stair/definition.js +15 -7
  282. package/dist/stair/destination.d.ts +16 -0
  283. package/dist/stair/destination.d.ts.map +1 -0
  284. package/dist/stair/destination.js +24 -0
  285. package/dist/stair/documentation.d.ts +8 -0
  286. package/dist/stair/documentation.d.ts.map +1 -0
  287. package/dist/stair/documentation.js +245 -0
  288. package/dist/stair/floor-stack.d.ts.map +1 -1
  289. package/dist/stair/floor-stack.js +38 -0
  290. package/dist/stair/floorplan-affordances.d.ts.map +1 -1
  291. package/dist/stair/floorplan-affordances.js +28 -9
  292. package/dist/stair/floorplan-move.d.ts +3 -5
  293. package/dist/stair/floorplan-move.d.ts.map +1 -1
  294. package/dist/stair/floorplan-move.js +14 -16
  295. package/dist/stair/floorplan.d.ts.map +1 -1
  296. package/dist/stair/floorplan.js +27 -14
  297. package/dist/stair/panel.d.ts.map +1 -1
  298. package/dist/stair/panel.js +35 -2
  299. package/dist/stair/renderer.d.ts.map +1 -1
  300. package/dist/stair/renderer.js +4 -3
  301. package/dist/structural-grid/coordination.d.ts +16 -0
  302. package/dist/structural-grid/coordination.d.ts.map +1 -0
  303. package/dist/structural-grid/coordination.js +105 -0
  304. package/dist/structural-grid/definition.d.ts +4 -0
  305. package/dist/structural-grid/definition.d.ts.map +1 -0
  306. package/dist/structural-grid/definition.js +51 -0
  307. package/dist/structural-grid/floorplan-tool.d.ts +16 -0
  308. package/dist/structural-grid/floorplan-tool.d.ts.map +1 -0
  309. package/dist/structural-grid/floorplan-tool.js +183 -0
  310. package/dist/structural-grid/floorplan.d.ts +3 -0
  311. package/dist/structural-grid/floorplan.d.ts.map +1 -0
  312. package/dist/structural-grid/floorplan.js +61 -0
  313. package/dist/structural-grid/index.d.ts +2 -0
  314. package/dist/structural-grid/index.d.ts.map +1 -0
  315. package/dist/structural-grid/index.js +1 -0
  316. package/dist/structural-grid/schema.d.ts +2 -0
  317. package/dist/structural-grid/schema.d.ts.map +1 -0
  318. package/dist/structural-grid/schema.js +1 -0
  319. package/dist/wall/construction-dimensions.d.ts +32 -0
  320. package/dist/wall/construction-dimensions.d.ts.map +1 -0
  321. package/dist/wall/construction-dimensions.js +1031 -0
  322. package/dist/wall/contextual-dimensions.d.ts +13 -0
  323. package/dist/wall/contextual-dimensions.d.ts.map +1 -0
  324. package/dist/wall/contextual-dimensions.js +221 -0
  325. package/dist/wall/definition.d.ts.map +1 -1
  326. package/dist/wall/definition.js +20 -1
  327. package/dist/wall/floorplan-affordances.d.ts.map +1 -1
  328. package/dist/wall/floorplan-affordances.js +23 -8
  329. package/dist/wall/floorplan-overrides.d.ts +9 -6
  330. package/dist/wall/floorplan-overrides.d.ts.map +1 -1
  331. package/dist/wall/floorplan-overrides.js +20 -11
  332. package/dist/wall/floorplan.d.ts +12 -3
  333. package/dist/wall/floorplan.d.ts.map +1 -1
  334. package/dist/wall/floorplan.js +121 -79
  335. package/dist/wall/measurement.d.ts.map +1 -1
  336. package/dist/wall/measurement.js +17 -4
  337. package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
  338. package/dist/wall/move-endpoint-tool.js +74 -27
  339. package/dist/wall/move-shared.d.ts.map +1 -1
  340. package/dist/wall/move-shared.js +3 -2
  341. package/dist/wall/move-tool.d.ts.map +1 -1
  342. package/dist/wall/move-tool.js +15 -3
  343. package/dist/wall/paint.d.ts.map +1 -1
  344. package/dist/wall/paint.js +10 -6
  345. package/dist/wall/panel.d.ts.map +1 -1
  346. package/dist/wall/panel.js +32 -5
  347. package/dist/wall/parametrics.d.ts.map +1 -1
  348. package/dist/wall/parametrics.js +2 -0
  349. package/dist/wall/preview.d.ts +8 -0
  350. package/dist/wall/preview.d.ts.map +1 -0
  351. package/dist/wall/preview.js +39 -0
  352. package/dist/wall/quick-measurement.d.ts.map +1 -1
  353. package/dist/wall/quick-measurement.js +3 -2
  354. package/dist/wall/renderer.d.ts.map +1 -1
  355. package/dist/wall/renderer.js +7 -5
  356. package/dist/wall/system.d.ts +1 -1
  357. package/dist/wall/system.d.ts.map +1 -1
  358. package/dist/wall/system.js +37 -2
  359. package/dist/wall/tool.d.ts.map +1 -1
  360. package/dist/wall/tool.js +148 -96
  361. package/dist/wall/treatment-level-data.d.ts +14 -0
  362. package/dist/wall/treatment-level-data.d.ts.map +1 -0
  363. package/dist/wall/treatment-level-data.js +31 -0
  364. package/dist/wall/treatments.d.ts +8 -2
  365. package/dist/wall/treatments.d.ts.map +1 -1
  366. package/dist/wall/treatments.js +58 -15
  367. package/dist/window/contextual-dimensions.d.ts +3 -0
  368. package/dist/window/contextual-dimensions.d.ts.map +1 -0
  369. package/dist/window/contextual-dimensions.js +7 -0
  370. package/dist/window/definition.d.ts.map +1 -1
  371. package/dist/window/definition.js +15 -10
  372. package/dist/window/floorplan-affordances.d.ts +2 -5
  373. package/dist/window/floorplan-affordances.d.ts.map +1 -1
  374. package/dist/window/floorplan-affordances.js +9 -15
  375. package/dist/window/floorplan-move.d.ts.map +1 -1
  376. package/dist/window/floorplan-move.js +1 -1
  377. package/dist/window/floorplan.d.ts.map +1 -1
  378. package/dist/window/floorplan.js +7 -1
  379. package/dist/window/move-tool.d.ts.map +1 -1
  380. package/dist/window/move-tool.js +3 -3
  381. package/dist/window/panel.d.ts.map +1 -1
  382. package/dist/window/panel.js +4 -1
  383. package/dist/window/schema.d.ts +1 -1
  384. package/dist/window/schema.d.ts.map +1 -1
  385. package/dist/window/schema.js +1 -1
  386. package/dist/window/tool.d.ts.map +1 -1
  387. package/dist/window/tool.js +64 -7
  388. package/dist/window/window-math.d.ts +7 -3
  389. package/dist/window/window-math.d.ts.map +1 -1
  390. package/dist/window/window-math.js +8 -3
  391. package/dist/zone/contextual-dimensions.d.ts +3 -0
  392. package/dist/zone/contextual-dimensions.d.ts.map +1 -0
  393. package/dist/zone/contextual-dimensions.js +43 -0
  394. package/dist/zone/definition.d.ts.map +1 -1
  395. package/dist/zone/definition.js +9 -1
  396. package/dist/zone/floorplan-affordances.d.ts +36 -0
  397. package/dist/zone/floorplan-affordances.d.ts.map +1 -1
  398. package/dist/zone/floorplan.d.ts.map +1 -1
  399. package/dist/zone/floorplan.js +59 -3
  400. package/dist/zone/quantities-panel.d.ts.map +1 -1
  401. package/dist/zone/quantities-panel.js +48 -4
  402. package/dist/zone/room-clear-dimensions.d.ts +3 -0
  403. package/dist/zone/room-clear-dimensions.d.ts.map +1 -0
  404. package/dist/zone/room-clear-dimensions.js +406 -0
  405. package/dist/zone/room-documentation.d.ts +11 -0
  406. package/dist/zone/room-documentation.d.ts.map +1 -0
  407. package/dist/zone/room-documentation.js +97 -0
  408. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/cabinet/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAc7B,OAAO,EAAU,KAAK,mBAAmB,EAA2B,MAAM,mBAAmB,CAAA;AAkB7F,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,mBAAmB,EACzB,GAAG,CAAC,EAAE,eAAe,EACrB,OAAO,GAAE,aAA0B,EACnC,QAAQ,UAAO,EACf,WAAW,GAAE,WAAoB,EACjC,UAAU,CAAC,EAAE,MAAM,GAClB,KAAK,CAwdP"}
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/cabinet/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAc7B,OAAO,EAAU,KAAK,mBAAmB,EAA2B,MAAM,mBAAmB,CAAA;AAmB7F,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,mBAAmB,EACzB,GAAG,CAAC,EAAE,eAAe,EACrB,OAAO,GAAE,aAA0B,EACnC,QAAQ,UAAO,EACf,WAAW,GAAE,WAAoB,EACjC,UAAU,CAAC,EAAE,MAAM,GAClB,KAAK,CA2dP"}
@@ -14,6 +14,7 @@ const CORNER_FILLER_TOP_INSET = 0.001;
14
14
  const CORNER_FILLER_SIDE_INSET = 0.001;
15
15
  const WALL_CORNER_FILLER_FRONT_HEIGHT_INSET = 0.001;
16
16
  const SINK_FALSE_FRONT_HEIGHT = 0.22;
17
+ const MIN_RENDERABLE_BRIDGE_FILLER_WIDTH = 1e-4;
17
18
  export function buildCabinetGeometry(node, ctx, shading = 'rendered', textures = true, colorPreset = 'clay', sceneTheme) {
18
19
  if (node.type === 'cabinet') {
19
20
  const run = buildCabinetRunGeometry(node, ctx, shading, textures, colorPreset, sceneTheme);
@@ -21,6 +22,9 @@ export function buildCabinetGeometry(node, ctx, shading = 'rendered', textures =
21
22
  return run;
22
23
  return new Group();
23
24
  }
25
+ if (node.name === 'Wall Bridge Filler' && node.width <= MIN_RENDERABLE_BRIDGE_FILLER_WIDTH) {
26
+ return new Group();
27
+ }
24
28
  const group = new Group();
25
29
  const materials = getCabinetSlotMaterials(node, ctx, shading, textures, colorPreset, sceneTheme);
26
30
  const hoodRows = normalizeCabinetStack(node);
@@ -3,11 +3,11 @@ import { bumpCabinetRunLayoutRevision, syncCornerRunsFromSourceModule } from './
3
3
  /** Matches the generic move tool's Figma-alignment pull (8 cm). */
4
4
  const MAGNETIC_THRESHOLD_M = 0.08;
5
5
  const GUIDE_EPSILON_M = 1e-4;
6
- function runParent(node, nodes) {
6
+ function frameParent(node, nodes) {
7
7
  if (node.type !== 'cabinet-module' || !node.parentId)
8
8
  return null;
9
9
  const parent = nodes[node.parentId];
10
- return parent?.type === 'cabinet' ? parent : null;
10
+ return isCabinetFrameNode(parent) ? parent : null;
11
11
  }
12
12
  function isCabinetFrameNode(node) {
13
13
  return node?.type === 'cabinet' || node?.type === 'cabinet-module';
@@ -218,7 +218,7 @@ function magneticSnapMatches(node, parent, _local, snappedLocal, nodes) {
218
218
  return matches;
219
219
  }
220
220
  export const cabinetModuleParentFrame = {
221
- resolveParent: runParent,
221
+ resolveParent: frameParent,
222
222
  parentRotationY: (parent, nodes) => frameWorldTransform(parent, nodes).rotation,
223
223
  localToPlan,
224
224
  planToLocal,
@@ -1 +1 @@
1
- {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/cabinet/panel.tsx"],"names":[],"mappings":"AA2FA,MAAM,CAAC,OAAO,UAAU,YAAY,uCA2jBnC"}
1
+ {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/cabinet/panel.tsx"],"names":[],"mappings":"AA2FA,MAAM,CAAC,OAAO,UAAU,YAAY,uCA4jBnC"}
@@ -296,6 +296,7 @@ export default function CabinetPanel() {
296
296
  modules,
297
297
  parentRun,
298
298
  patch: nextPatch,
299
+ preserveExtent: true,
299
300
  scene,
300
301
  selected: node,
301
302
  });
@@ -0,0 +1,8 @@
1
+ export declare function snapCabinetFootprintCenter(value: number, extent: number, step: number): number;
2
+ export declare function resolveCabinetGridPosition({ raw, dimensions, yaw, step, }: {
3
+ raw: [number, number, number];
4
+ dimensions: [number, number, number];
5
+ yaw: number;
6
+ step: number;
7
+ }): [number, number, number];
8
+ //# sourceMappingURL=placement-snap.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,19 @@
1
+ export function snapCabinetFootprintCenter(value, extent, step) {
2
+ if (step <= 0)
3
+ return value;
4
+ const halfExtent = extent / 2;
5
+ const offset = ((halfExtent % step) + step) % step;
6
+ return Math.round((value - offset) / step) * step + offset;
7
+ }
8
+ export function resolveCabinetGridPosition({ raw, dimensions, yaw, step, }) {
9
+ if (step <= 0)
10
+ 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];
14
+ return [
15
+ snapCabinetFootprintCenter(raw[0], extentX, step),
16
+ 0,
17
+ snapCabinetFootprintCenter(raw[2], extentZ, step),
18
+ ];
19
+ }
@@ -1,7 +1,7 @@
1
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';
2
2
  const baseShared = (run) => ({
3
3
  cabinetType: 'base',
4
- depth: run?.depth ?? 0.58,
4
+ depth: run?.depth ?? 0.5,
5
5
  carcassHeight: run?.carcassHeight ?? 0.72,
6
6
  plinthHeight: run?.plinthHeight ?? 0.1,
7
7
  toeKickDepth: run?.toeKickDepth ?? 0.075,
@@ -10,7 +10,7 @@ const baseShared = (run) => ({
10
10
  showPlinth: false,
11
11
  withCountertop: false,
12
12
  });
13
- const runDepth = (run) => run?.depth ?? 0.58;
13
+ const runDepth = (run) => run?.depth ?? 0.5;
14
14
  export const CABINET_PRESETS = [
15
15
  {
16
16
  id: 'base-door',
@@ -18,10 +18,10 @@ export const CABINET_PRESETS = [
18
18
  createPatch: (run) => ({
19
19
  ...baseShared(run),
20
20
  name: 'Base Cabinet',
21
- width: 0.6,
21
+ width: 0.5,
22
22
  handleStyle: 'bar',
23
23
  handlePosition: 'auto',
24
- frontOverlay: 'inset',
24
+ frontOverlay: 'full',
25
25
  stack: [
26
26
  { ...newCabinetCompartment('drawer'), height: 0.44, drawerCount: 3 },
27
27
  { ...newCabinetCompartment('door'), doorType: 'double', shelfCount: 2 },
@@ -34,7 +34,7 @@ export const CABINET_PRESETS = [
34
34
  createPatch: (run) => ({
35
35
  ...baseShared(run),
36
36
  name: 'Drawer Base',
37
- width: 0.6,
37
+ width: 0.5,
38
38
  handleStyle: 'bar',
39
39
  handlePosition: 'top',
40
40
  frontOverlay: 'full',
@@ -100,8 +100,8 @@ export const CABINET_PRESETS = [
100
100
  createPatch: (run) => ({
101
101
  cabinetType: 'tall',
102
102
  name: 'Tall Pantry',
103
- width: 0.6,
104
- depth: run?.depth ?? 0.58,
103
+ width: 0.5,
104
+ depth: run?.depth ?? 0.5,
105
105
  carcassHeight: 2.07,
106
106
  plinthHeight: 0.1,
107
107
  toeKickDepth: 0.075,
@@ -122,7 +122,7 @@ export const CABINET_PRESETS = [
122
122
  cabinetType: 'tall',
123
123
  name: 'Oven Tower',
124
124
  width: MICROWAVE_STANDARD_WIDTH,
125
- depth: run?.depth ?? 0.58,
125
+ depth: run?.depth ?? 0.5,
126
126
  carcassHeight: 2.07,
127
127
  plinthHeight: 0.1,
128
128
  toeKickDepth: 0.075,
@@ -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;AAoEzB,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,CAqLpB"}
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,5 +1,5 @@
1
1
  import { moduleSideOpen, sideInsertX } from './run-layout';
2
- import { addCabinetModuleSide, addCornerRun, addWallChildAbove, CABINET_BASE_WIDTH, CABINET_EDGE_EPSILON, cabinetModulesForRun, planCabinetModuleSideAddition, previewCornerAdditionLayout, resolveCabinetType, switchCabinetToBase, switchCabinetToTall, wallChildOf, } from './run-ops';
2
+ import { addCabinetModuleSide, addCornerRun, addWallChildAbove, CABINET_BASE_WIDTH, 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)
@@ -49,6 +49,9 @@ export function cabinetQuickActions({ node, nodes, }) {
49
49
  const hasWallCabinet = context.module && standardModule && selectedCabinetType === 'base'
50
50
  ? Boolean(wallChildOf(context.module, nodes))
51
51
  : false;
52
+ const wallAdditionBlocked = context.module && standardModule && selectedCabinetType === 'base'
53
+ ? wallChildAdditionOverlaps(context.module, context.run, nodes)
54
+ : false;
52
55
  const runModules = cabinetModulesForRun(context.run, nodes);
53
56
  const leftCornerModule = context.module && standardModule && selectedCabinetType === 'base'
54
57
  ? context.module
@@ -154,9 +157,12 @@ export function cabinetQuickActions({ node, nodes, }) {
154
157
  label: 'Wall',
155
158
  title: hasWallCabinet
156
159
  ? 'A wall cabinet already exists above this cabinet'
157
- : 'Add wall cabinet above',
160
+ : wallAdditionBlocked
161
+ ? 'No space above—overlaps an existing wall cabinet'
162
+ : 'Add wall cabinet above',
158
163
  icon: cabinetWallIcon,
159
- disabled: hasWallCabinet,
164
+ disabled: hasWallCabinet || wallAdditionBlocked,
165
+ blockedFeedback: !hasWallCabinet && wallAdditionBlocked ? true : undefined,
160
166
  run: ({ sceneApi }) => {
161
167
  const id = addWallChildAbove({
162
168
  kind: 'cabinet',
@@ -0,0 +1,11 @@
1
+ export declare const MIN_CABINET_WIDTH = 0.3;
2
+ export declare const MIN_CABINET_DEPTH = 0.3;
3
+ export declare const MAX_CABINET_WIDTH = 1.2;
4
+ export declare const MAX_CABINET_DEPTH = 0.8;
5
+ export declare function cabinetResizeUpperBound(currentValue: number, limit: number): number;
6
+ export declare function connectedCabinetDepthUpperBound(currentDepth: number, sourceWidth?: number): number;
7
+ export declare function cabinetConnectedDepthBounds(currentDepth: number, compensatedWidths: readonly number[]): {
8
+ min: number;
9
+ max: number;
10
+ };
11
+ //# sourceMappingURL=resize-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-limits.d.ts","sourceRoot":"","sources":["../../src/cabinet/resize-limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,MAAM,CAAA;AACpC,eAAO,MAAM,iBAAiB,MAAM,CAAA;AACpC,eAAO,MAAM,iBAAiB,MAAM,CAAA;AACpC,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAE1E;AAED,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,UAKzF;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,SAAS,MAAM,EAAE;;;EAYrC"}
@@ -0,0 +1,22 @@
1
+ export const MIN_CABINET_WIDTH = 0.3;
2
+ export const MIN_CABINET_DEPTH = 0.3;
3
+ export const MAX_CABINET_WIDTH = 1.2;
4
+ export const MAX_CABINET_DEPTH = 0.8;
5
+ export function cabinetResizeUpperBound(currentValue, limit) {
6
+ return Math.max(currentValue, limit);
7
+ }
8
+ export function connectedCabinetDepthUpperBound(currentDepth, sourceWidth) {
9
+ return cabinetConnectedDepthBounds(currentDepth, typeof sourceWidth === 'number' ? [sourceWidth] : []).max;
10
+ }
11
+ export function cabinetConnectedDepthBounds(currentDepth, compensatedWidths) {
12
+ let min = MIN_CABINET_DEPTH;
13
+ let max = MAX_CABINET_DEPTH;
14
+ for (const width of compensatedWidths) {
15
+ min = Math.max(min, currentDepth - (MAX_CABINET_WIDTH - width));
16
+ max = Math.min(max, currentDepth + width - MIN_CABINET_WIDTH);
17
+ }
18
+ return {
19
+ min: Math.min(currentDepth, min),
20
+ max: Math.max(currentDepth, max),
21
+ };
22
+ }
@@ -7,6 +7,11 @@ import type { CabinetModuleNode, CabinetNode, GeometryContext } from '@pascal-ap
7
7
  */
8
8
  export declare const RUN_ADJACENCY_EPSILON = 0.0001;
9
9
  type ModuleLike = Pick<CabinetModuleNode, 'id' | 'position' | 'width'>;
10
+ type ReflowRunModulesOptions = {
11
+ minimumWidth?: number;
12
+ preserveExtent?: boolean;
13
+ restorableWidthById?: ReadonlyMap<CabinetModuleNode['id'], number>;
14
+ };
10
15
  export declare function sortRunModules<T extends ModuleLike>(modules: readonly T[]): T[];
11
16
  export declare function moduleMinX(module: Pick<CabinetModuleNode, 'position' | 'width'>): number;
12
17
  export declare function moduleMaxX(module: Pick<CabinetModuleNode, 'position' | 'width'>): number;
@@ -32,7 +37,8 @@ export type RunSpan = {
32
37
  /**
33
38
  * Contiguous same-height module groups along the run — the units the
34
39
  * countertop, plinth, and appliance-gap logic operate on. A gap, a
35
- * base↔tall transition, or a top-height change starts a new span.
40
+ * base↔tall transition, a top-height change, or a depth-footprint change
41
+ * starts a new span.
36
42
  */
37
43
  export declare function getRunSpans(modules: readonly Pick<CabinetModuleNode, 'position' | 'width' | 'depth' | 'carcassHeight' | 'cabinetType'>[], opts?: {
38
44
  runTier?: CabinetNode['runTier'];
@@ -73,7 +79,7 @@ export declare function sideInsertX({ anchorModule, modules, side, width, epsilo
73
79
  * Re-pack the run left-to-right after one module's width changes, keeping
74
80
  * every module flush with its left neighbor. Returns per-module patches.
75
81
  */
76
- export declare function reflowRunModules<T extends ModuleLike>(modules: readonly T[], selectedId: CabinetModuleNode['id'], selectedWidth: number): Array<{
82
+ export declare function reflowRunModules<T extends ModuleLike>(modules: readonly T[], selectedId: CabinetModuleNode['id'], selectedWidth: number, options?: ReflowRunModulesOptions): Array<{
77
83
  id: T['id'];
78
84
  position: T['position'];
79
85
  width: number;
@@ -1 +1 @@
1
- {"version":3,"file":"run-layout.d.ts","sourceRoot":"","sources":["../../src/cabinet/run-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-layout.d.ts","sourceRoot":"","sources":["../../src/cabinet/run-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEhG;;;;;GAKG;AAEH,eAAO,MAAM,qBAAqB,SAAO,CAAA;AAKzC,KAAK,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,CAAA;AAEtE,KAAK,uBAAuB,GAAG;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mBAAmB,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;CACnE,CAAA;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAE/E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,MAAM,CAExF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,MAAM,CAExF;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAE9D;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAE9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EACjD,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,OAAO,SAAwB,GAC9B,OAAO,CAUT;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,OAAO,CAAA;CACvB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,SAAS,IAAI,CACpB,iBAAiB,EACjB,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,eAAe,GAAG,aAAa,CACjE,EAAE,EACH,IAAI,GAAE;IACJ,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CAC5B,GACL,OAAO,EAAE,CA+CX;AAMD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,GAChB;IAAE,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,IAAI,CAa7E;AAuFD,MAAM,MAAM,WAAW,GAAG;IACxB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,eAAe,GAAG,SAAS,EAChC,KAAK,EAAE,SAAS,OAAO,EAAE,GACxB,WAAW,EAAE,CAwEf;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,KAAK,EACL,OAA+B,GAChC,EAAE;IACD,YAAY,EAAE,UAAU,GAAG,IAAI,CAAA;IAC/B,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;IAC9B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,MAAM,GAAG,IAAI,CAiChB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EACnD,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EACnC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,uBAA4B,GACpC,KAAK,CAAC;IAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA+DhE;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,IAAI,CAKP;AAED,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC,CAAA;AAEhE,wEAAwE;AACxE,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACvC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAS1B;AAED,yCAAyC;AACzC,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAM1B"}
@@ -42,7 +42,8 @@ export function moduleSideOpen(modules, moduleId, side, epsilon = RUN_ADJACENCY_
42
42
  /**
43
43
  * Contiguous same-height module groups along the run — the units the
44
44
  * countertop, plinth, and appliance-gap logic operate on. A gap, a
45
- * base↔tall transition, or a top-height change starts a new span.
45
+ * base↔tall transition, a top-height change, or a depth-footprint change
46
+ * starts a new span.
46
47
  */
47
48
  export function getRunSpans(modules, opts = {}) {
48
49
  const sorted = [...modules].sort((a, b) => a.position[0] - b.position[0]);
@@ -59,7 +60,9 @@ export function getRunSpans(modules, opts = {}) {
59
60
  if (!current ||
60
61
  minX - current.maxX > RUN_ADJACENCY_EPSILON ||
61
62
  current.hasCountertop !== hasCountertop ||
62
- Math.abs(current.topY - topY) > RUN_ADJACENCY_EPSILON) {
63
+ Math.abs(current.topY - topY) > RUN_ADJACENCY_EPSILON ||
64
+ Math.abs(current.minZ - minZ) > RUN_ADJACENCY_EPSILON ||
65
+ Math.abs(current.maxZ - maxZ) > RUN_ADJACENCY_EPSILON) {
63
66
  spans.push({
64
67
  minX,
65
68
  maxX,
@@ -185,10 +188,22 @@ export function getRunSpanEnds(node, ctx, spans) {
185
188
  return spans.map((span, spanIndex) => {
186
189
  const previousSpan = spans[spanIndex - 1];
187
190
  const nextSpan = spans[spanIndex + 1];
191
+ const hasFlushCountertopLeftNeighbor = !!previousSpan &&
192
+ previousSpan.hasCountertop &&
193
+ span.hasCountertop &&
194
+ Math.abs(previousSpan.topY - span.topY) <= RUN_ADJACENCY_EPSILON &&
195
+ span.minX - previousSpan.maxX <= RUN_ADJACENCY_EPSILON;
196
+ const hasFlushCountertopRightNeighbor = !!nextSpan &&
197
+ nextSpan.hasCountertop &&
198
+ span.hasCountertop &&
199
+ Math.abs(nextSpan.topY - span.topY) <= RUN_ADJACENCY_EPSILON &&
200
+ nextSpan.minX - span.maxX <= RUN_ADJACENCY_EPSILON;
188
201
  const hasInternalLeftNeighbor = !!previousSpan &&
189
- !previousSpan.hasCountertop &&
202
+ (!previousSpan.hasCountertop || hasFlushCountertopLeftNeighbor) &&
190
203
  span.minX - previousSpan.maxX <= RUN_ADJACENCY_EPSILON;
191
- const hasInternalRightNeighbor = !!nextSpan && !nextSpan.hasCountertop && nextSpan.minX - span.maxX <= RUN_ADJACENCY_EPSILON;
204
+ const hasInternalRightNeighbor = !!nextSpan &&
205
+ (!nextSpan.hasCountertop || hasFlushCountertopRightNeighbor) &&
206
+ nextSpan.minX - span.maxX <= RUN_ADJACENCY_EPSILON;
192
207
  const hasExternalLeftNeighbor = hasAdjacentCabinetSpan({
193
208
  depth: span.depth,
194
209
  edgeX: span.minX,
@@ -270,13 +285,50 @@ export function sideInsertX({ anchorModule, modules, side, width, epsilon = RUN_
270
285
  * Re-pack the run left-to-right after one module's width changes, keeping
271
286
  * every module flush with its left neighbor. Returns per-module patches.
272
287
  */
273
- export function reflowRunModules(modules, selectedId, selectedWidth) {
288
+ export function reflowRunModules(modules, selectedId, selectedWidth, options = {}) {
274
289
  const sorted = sortRunModules(modules);
275
- if (!sorted.some((module) => module.id === selectedId))
290
+ const selectedIndex = sorted.findIndex((module) => module.id === selectedId);
291
+ if (selectedIndex < 0)
276
292
  return [];
293
+ const widths = new Map(sorted.map((module) => [module.id, module.width]));
294
+ widths.set(selectedId, selectedWidth);
295
+ const selected = sorted[selectedIndex];
296
+ let remainingGrowth = selectedWidth - selected.width;
297
+ if (options.preserveExtent && remainingGrowth > RUN_ADJACENCY_EPSILON) {
298
+ const minimumWidth = options.minimumWidth ?? 0.3;
299
+ const left = sorted.slice(0, selectedIndex).reverse();
300
+ const right = sorted.slice(selectedIndex + 1);
301
+ const capacity = (candidates) => candidates.reduce((total, module) => total + Math.max(0, module.width - minimumWidth), 0);
302
+ const candidates = capacity(left) > capacity(right) ? [...left, ...right] : [...right, ...left];
303
+ for (const module of candidates) {
304
+ if (remainingGrowth <= RUN_ADJACENCY_EPSILON)
305
+ break;
306
+ const available = Math.max(0, module.width - minimumWidth);
307
+ const reduction = Math.min(available, remainingGrowth);
308
+ widths.set(module.id, module.width - reduction);
309
+ remainingGrowth -= reduction;
310
+ }
311
+ }
312
+ let remainingFreedWidth = selected.width - selectedWidth;
313
+ if (options.preserveExtent &&
314
+ remainingFreedWidth > RUN_ADJACENCY_EPSILON &&
315
+ options.restorableWidthById) {
316
+ const left = sorted.slice(0, selectedIndex).reverse();
317
+ const right = sorted.slice(selectedIndex + 1);
318
+ const restorable = (candidates) => candidates.reduce((total, module) => total + (options.restorableWidthById?.get(module.id) ?? 0), 0);
319
+ const candidates = restorable(left) > restorable(right) ? [...left, ...right] : [...right, ...left];
320
+ for (const module of candidates) {
321
+ if (remainingFreedWidth <= RUN_ADJACENCY_EPSILON)
322
+ break;
323
+ const available = Math.max(0, options.restorableWidthById.get(module.id) ?? 0);
324
+ const restoration = Math.min(available, remainingFreedWidth);
325
+ widths.set(module.id, module.width + restoration);
326
+ remainingFreedWidth -= restoration;
327
+ }
328
+ }
277
329
  let nextLeft = runMinX(sorted);
278
330
  return sorted.map((module) => {
279
- const width = module.id === selectedId ? selectedWidth : module.width;
331
+ const width = widths.get(module.id) ?? module.width;
280
332
  const position = [
281
333
  nextLeft + width / 2,
282
334
  module.position[1],
@@ -7,8 +7,9 @@ import { type AnyNode, type AnyNodeId, type CabinetModuleNode, type CabinetNode,
7
7
  * per surface and had already drifted (gap checks, hood support, revision
8
8
  * scope).
9
9
  */
10
- export declare const CABINET_BASE_WIDTH = 0.6;
10
+ export declare const CABINET_BASE_WIDTH = 0.5;
11
11
  export declare const CABINET_WALL_DEPTH = 0.32;
12
+ export declare const CABINET_BASE_DEPTH = 0.5;
12
13
  export declare const CABINET_WALL_CARCASS_HEIGHT = 0.72;
13
14
  export declare const CABINET_TALL_DEPTH = 0.58;
14
15
  export declare const CABINET_TALL_PLINTH_HEIGHT = 0.1;
@@ -16,8 +17,18 @@ export declare const CABINET_TALL_CARCASS_HEIGHT = 2.07;
16
17
  export declare const CABINET_EDGE_EPSILON = 0.0001;
17
18
  export type CabinetEditableNode = CabinetNode | CabinetModuleNode;
18
19
  type CornerSide = 'left' | 'right';
20
+ export type WallCornerDepthIndex = ReadonlyArray<{
21
+ baseLegRunId?: AnyNodeId;
22
+ bridgeRunId?: AnyNodeId;
23
+ side: CornerSide;
24
+ sourceModuleId: AnyNodeId;
25
+ sourceRunId: AnyNodeId;
26
+ turnSide: CornerSide;
27
+ wallLegRunId: AnyNodeId;
28
+ }>;
19
29
  type CabinetRunStylePatch = Pick<Partial<CabinetNode>, 'frontStyle' | 'frontOverlay' | 'handleStyle' | 'handlePosition'>;
20
30
  export declare function cabinetMetadataRecord(metadata: CabinetEditableNode['metadata']): Record<string, unknown>;
31
+ export declare function buildWallCornerDepthIndex(nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>): WallCornerDepthIndex;
21
32
  /**
22
33
  * Deleting one member of an L-corner group removes ONLY that node (plus its
23
34
  * normal descendants) — never the other corner runs. These patches keep the
@@ -59,6 +70,16 @@ export declare function backAlignZ(baseDepth: number, wallDepth: number): number
59
70
  export declare function wallChildOf(module: CabinetModuleNode, nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>): CabinetModuleNode | null;
60
71
  export declare function resolveCabinetType(module: CabinetModuleNode, run?: CabinetNode): 'base' | 'tall';
61
72
  export declare function cabinetModulesForRun(run: CabinetNode, nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>): CabinetModuleNode[];
73
+ export declare function backAlignedRunDepthOverrides(run: CabinetNode, nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>, depth: number): ReadonlyArray<readonly [AnyNodeId, Partial<AnyNode>]>;
74
+ export declare function wallCornerWidthOverridesForDepthTargets({ clampWidths, cornerIndex, depth, nodes, targets, widthMode, }: {
75
+ clampWidths?: boolean;
76
+ cornerIndex?: WallCornerDepthIndex;
77
+ depth: number;
78
+ nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>;
79
+ targets: readonly CabinetEditableNode[];
80
+ widthMode?: 'bridge' | 'corner-pair';
81
+ }): ReadonlyArray<readonly [AnyNodeId, Partial<AnyNode>]>;
82
+ export declare function cornerSourceWidthOverridesForDerivedDepth(run: CabinetNode, nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>, depth: number): ReadonlyArray<readonly [AnyNodeId, Partial<AnyNode>]>;
62
83
  export declare function cornerSourceModulesForRun(run: CabinetNode, nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>): CabinetModuleNode[];
63
84
  export declare function cornerLinkedSourceModuleForRun(run: CabinetNode, nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>): CabinetModuleNode | null;
64
85
  export declare function cornerStyleSourceForRun(run: CabinetNode, nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>): {
@@ -79,11 +100,24 @@ export declare function previewCornerAdditionLayout({ module, run, nodes, side,
79
100
  connectedWidth: number;
80
101
  sourceWidth: number;
81
102
  } | null;
82
- export declare function syncCornerRunsFromSourceModule({ module, run, sceneApi, }: {
103
+ type CornerBaseLayout = 'full' | 'width-only' | 'preserve-connected-widths';
104
+ export declare function syncCornerRunsFromSourceModule({ baseLayout, module, run, sceneApi, }: {
105
+ baseLayout?: CornerBaseLayout;
83
106
  module: CabinetModuleNode;
84
107
  run: CabinetNode;
85
108
  sceneApi: SceneApi;
86
109
  }): void;
110
+ export declare function syncCornerRunsFromRunSources({ baseLayout, run, sceneApi, }: {
111
+ baseLayout?: CornerBaseLayout;
112
+ run: CabinetNode;
113
+ sceneApi: SceneApi;
114
+ }): void;
115
+ export declare function previewCornerRunsFromRunSources({ baseLayout, initialOverrides, run, sceneApi, }: {
116
+ baseLayout?: CornerBaseLayout;
117
+ initialOverrides?: ReadonlyArray<readonly [AnyNodeId, Partial<AnyNode>]>;
118
+ run: CabinetNode;
119
+ sceneApi: SceneApi;
120
+ }): ReadonlyArray<readonly [AnyNodeId, Partial<AnyNode>]>;
87
121
  /**
88
122
  * Insert a new base module flush against the anchor's side (or the run's
89
123
  * outer edge with no anchor). Gap-checked — returns null when a flush
@@ -113,16 +147,23 @@ export declare function addCornerRun({ module, run, sceneApi, side, }: {
113
147
  sceneApi: SceneApi;
114
148
  side: 'left' | 'right';
115
149
  }): AnyNodeId | null;
150
+ export declare function wallChildAdditionOverlaps(module: CabinetModuleNode, run: CabinetNode, nodes: Readonly<Partial<Record<AnyNodeId, AnyNode>>>, { depth, offsetX, }?: {
151
+ depth?: number;
152
+ offsetX?: number;
153
+ }): boolean;
116
154
  /**
117
155
  * Nest a wall cabinet (or chimney hood) above a base module. Returns the new
118
156
  * node id, or null when the module already carries one / isn't a base unit.
119
157
  */
120
- export declare function addWallChildAbove({ kind, module, run, sceneApi, openSide, }: {
158
+ export declare function addWallChildAbove({ kind, module, run, sceneApi, openSide, frontOverlay, offsetX, wallDepth, }: {
121
159
  kind: 'cabinet' | 'hood';
122
160
  module: CabinetModuleNode;
123
161
  run: CabinetNode;
124
162
  sceneApi: SceneApi;
125
163
  openSide?: CabinetModuleNode['openSide'];
164
+ frontOverlay?: CabinetModuleNode['frontOverlay'];
165
+ offsetX?: number;
166
+ wallDepth?: number;
126
167
  }): AnyNodeId | null;
127
168
  /** Convert a base module to a tall unit (deletes any nested wall cabinet). */
128
169
  export declare function switchCabinetToTall({ module, run, sceneApi, }: {
@@ -1 +1 @@
1
- {"version":3,"file":"run-ops.d.ts","sourceRoot":"","sources":["../../src/cabinet/run-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-ops.d.ts","sourceRoot":"","sources":["../../src/cabinet/run-ops.ts"],"names":[],"mappings":"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"}