@pascal-app/nodes 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/README.md +1 -0
  2. package/dist/beam/actions/move-endpoint.d.ts +24 -0
  3. package/dist/beam/actions/move-endpoint.d.ts.map +1 -0
  4. package/dist/beam/actions/move-endpoint.js +54 -0
  5. package/dist/beam/definition.d.ts +14 -0
  6. package/dist/beam/definition.d.ts.map +1 -0
  7. package/dist/beam/definition.js +173 -0
  8. package/dist/beam/draft-settings.d.ts +17 -0
  9. package/dist/beam/draft-settings.d.ts.map +1 -0
  10. package/dist/beam/draft-settings.js +81 -0
  11. package/dist/beam/drafting.d.ts +35 -0
  12. package/dist/beam/drafting.d.ts.map +1 -0
  13. package/dist/beam/drafting.js +103 -0
  14. package/dist/beam/floorplan-affordances.d.ts +8 -0
  15. package/dist/beam/floorplan-affordances.d.ts.map +1 -0
  16. package/dist/beam/floorplan-affordances.js +40 -0
  17. package/dist/beam/floorplan-move.d.ts +11 -0
  18. package/dist/beam/floorplan-move.d.ts.map +1 -0
  19. package/dist/beam/floorplan-move.js +54 -0
  20. package/dist/beam/floorplan.d.ts +11 -0
  21. package/dist/beam/floorplan.d.ts.map +1 -0
  22. package/dist/beam/floorplan.js +91 -0
  23. package/dist/beam/geometry.d.ts +19 -0
  24. package/dist/beam/geometry.d.ts.map +1 -0
  25. package/dist/beam/geometry.js +63 -0
  26. package/dist/beam/index.d.ts +3 -0
  27. package/dist/beam/index.d.ts.map +1 -0
  28. package/dist/beam/index.js +2 -0
  29. package/dist/beam/move-endpoint-tool.d.ts +21 -0
  30. package/dist/beam/move-endpoint-tool.d.ts.map +1 -0
  31. package/dist/beam/move-endpoint-tool.js +49 -0
  32. package/dist/beam/move-tool.d.ts +12 -0
  33. package/dist/beam/move-tool.d.ts.map +1 -0
  34. package/dist/beam/move-tool.js +114 -0
  35. package/dist/beam/panel-model.d.ts +28 -0
  36. package/dist/beam/panel-model.d.ts.map +1 -0
  37. package/dist/beam/panel-model.js +123 -0
  38. package/dist/beam/panel.d.ts +13 -0
  39. package/dist/beam/panel.d.ts.map +1 -0
  40. package/dist/beam/panel.js +107 -0
  41. package/dist/beam/parametrics.d.ts +3 -0
  42. package/dist/beam/parametrics.d.ts.map +1 -0
  43. package/dist/beam/parametrics.js +4 -0
  44. package/dist/beam/renderer.d.ts +13 -0
  45. package/dist/beam/renderer.d.ts.map +1 -0
  46. package/dist/beam/renderer.js +36 -0
  47. package/dist/beam/schema.d.ts +2 -0
  48. package/dist/beam/schema.d.ts.map +1 -0
  49. package/dist/beam/schema.js +1 -0
  50. package/dist/beam/tool.d.ts +13 -0
  51. package/dist/beam/tool.d.ts.map +1 -0
  52. package/dist/beam/tool.js +152 -0
  53. package/dist/box-vent/panel.d.ts.map +1 -1
  54. package/dist/box-vent/panel.js +8 -7
  55. package/dist/cabinet/batchable.d.ts +10 -0
  56. package/dist/cabinet/batchable.d.ts.map +1 -0
  57. package/dist/cabinet/batchable.js +12 -0
  58. package/dist/cabinet/compartment-card.d.ts.map +1 -1
  59. package/dist/cabinet/compartment-card.js +142 -46
  60. package/dist/cabinet/countertop-layout.d.ts +5 -0
  61. package/dist/cabinet/countertop-layout.d.ts.map +1 -1
  62. package/dist/cabinet/definition.d.ts.map +1 -1
  63. package/dist/cabinet/definition.js +3 -0
  64. package/dist/cabinet/dimension-input.d.ts +6 -0
  65. package/dist/cabinet/dimension-input.d.ts.map +1 -0
  66. package/dist/cabinet/dimension-input.js +8 -0
  67. package/dist/cabinet/essential-controls.d.ts.map +1 -1
  68. package/dist/cabinet/essential-controls.js +82 -17
  69. package/dist/cabinet/index.d.ts +1 -1
  70. package/dist/cabinet/index.d.ts.map +1 -1
  71. package/dist/cabinet/index.js +1 -1
  72. package/dist/cabinet/kitchen-catalog.d.ts +17 -4
  73. package/dist/cabinet/kitchen-catalog.d.ts.map +1 -1
  74. package/dist/cabinet/kitchen-catalog.js +45 -7
  75. package/dist/cabinet/kitchen-collection.d.ts.map +1 -1
  76. package/dist/cabinet/kitchen-collection.js +21 -5
  77. package/dist/cabinet/kitchen-module-actions.d.ts.map +1 -1
  78. package/dist/cabinet/kitchen-module-actions.js +107 -14
  79. package/dist/cabinet/neighbor-placement.d.ts +10 -0
  80. package/dist/cabinet/neighbor-placement.d.ts.map +1 -1
  81. package/dist/cabinet/panel.d.ts.map +1 -1
  82. package/dist/cabinet/panel.js +127 -50
  83. package/dist/cabinet/run-finishing.d.ts +5 -0
  84. package/dist/cabinet/run-finishing.d.ts.map +1 -1
  85. package/dist/cabinet/run-ops.d.ts +5 -0
  86. package/dist/cabinet/run-ops.d.ts.map +1 -1
  87. package/dist/cabinet/run-panel.d.ts.map +1 -1
  88. package/dist/cabinet/run-panel.js +203 -52
  89. package/dist/cabinet/tool.d.ts.map +1 -1
  90. package/dist/cabinet/tool.js +8 -5
  91. package/dist/ceiling/build-up-section.d.ts +7 -0
  92. package/dist/ceiling/build-up-section.d.ts.map +1 -0
  93. package/dist/ceiling/build-up-section.js +57 -0
  94. package/dist/ceiling/definition.d.ts.map +1 -1
  95. package/dist/ceiling/definition.js +3 -1
  96. package/dist/ceiling/floorplan-affordances.d.ts +112 -0
  97. package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
  98. package/dist/ceiling/materials.d.ts +5 -0
  99. package/dist/ceiling/materials.d.ts.map +1 -1
  100. package/dist/ceiling/materials.js +17 -0
  101. package/dist/ceiling/panel-model.d.ts +13 -0
  102. package/dist/ceiling/panel-model.d.ts.map +1 -0
  103. package/dist/ceiling/panel-model.js +49 -0
  104. package/dist/ceiling/panel.d.ts.map +1 -1
  105. package/dist/ceiling/panel.js +82 -18
  106. package/dist/ceiling/renderer.d.ts.map +1 -1
  107. package/dist/ceiling/renderer.js +10 -4
  108. package/dist/ceiling/tool.d.ts.map +1 -1
  109. package/dist/ceiling/tool.js +24 -4
  110. package/dist/chimney/panel.d.ts.map +1 -1
  111. package/dist/chimney/panel.js +113 -41
  112. package/dist/column/definition.d.ts.map +1 -1
  113. package/dist/column/definition.js +3 -0
  114. package/dist/column/floorplan.d.ts.map +1 -1
  115. package/dist/column/floorplan.js +17 -0
  116. package/dist/column/hosted-resize.d.ts +28 -1
  117. package/dist/column/hosted-resize.d.ts.map +1 -1
  118. package/dist/column/panel.d.ts.map +1 -1
  119. package/dist/column/panel.js +125 -37
  120. package/dist/column/post-options.d.ts +10 -0
  121. package/dist/column/post-options.d.ts.map +1 -0
  122. package/dist/column/post-options.js +71 -0
  123. package/dist/column/post-placement.d.ts +78 -0
  124. package/dist/column/post-placement.d.ts.map +1 -0
  125. package/dist/column/post-placement.js +157 -0
  126. package/dist/column/post-section.d.ts +17 -0
  127. package/dist/column/post-section.d.ts.map +1 -0
  128. package/dist/column/post-section.js +95 -0
  129. package/dist/column/post-tool.d.ts +11 -0
  130. package/dist/column/post-tool.d.ts.map +1 -0
  131. package/dist/column/post-tool.js +94 -0
  132. package/dist/column/tool.d.ts +3 -10
  133. package/dist/column/tool.d.ts.map +1 -1
  134. package/dist/column/tool.js +13 -1
  135. package/dist/cupola/panel.d.ts.map +1 -1
  136. package/dist/cupola/panel.js +14 -7
  137. package/dist/door/actions.d.ts +7 -0
  138. package/dist/door/actions.d.ts.map +1 -0
  139. package/dist/door/actions.js +32 -0
  140. package/dist/door/contextual-dimensions.d.ts.map +1 -1
  141. package/dist/door/contextual-dimensions.js +11 -1
  142. package/dist/door/definition.d.ts.map +1 -1
  143. package/dist/door/definition.js +34 -7
  144. package/dist/door/floorplan-affordances.d.ts.map +1 -1
  145. package/dist/door/floorplan-affordances.js +5 -2
  146. package/dist/door/floorplan-move.d.ts.map +1 -1
  147. package/dist/door/floorplan-move.js +28 -6
  148. package/dist/door/floorplan.d.ts +2 -0
  149. package/dist/door/floorplan.d.ts.map +1 -1
  150. package/dist/door/floorplan.js +89 -16
  151. package/dist/door/move-tool.d.ts.map +1 -1
  152. package/dist/door/move-tool.js +60 -16
  153. package/dist/door/paint.d.ts +2 -7
  154. package/dist/door/paint.d.ts.map +1 -1
  155. package/dist/door/paint.js +26 -2
  156. package/dist/door/panel.d.ts.map +1 -1
  157. package/dist/door/panel.js +242 -90
  158. package/dist/door/parametrics.js +1 -1
  159. package/dist/door/placement.d.ts.map +1 -1
  160. package/dist/door/placement.js +9 -2
  161. package/dist/door/swing.d.ts +22 -0
  162. package/dist/door/swing.d.ts.map +1 -0
  163. package/dist/door/swing.js +36 -0
  164. package/dist/door/tool.d.ts.map +1 -1
  165. package/dist/door/tool.js +76 -29
  166. package/dist/dormer/panel-actions-section.d.ts.map +1 -1
  167. package/dist/dormer/panel-actions-section.js +3 -1
  168. package/dist/dormer/panel-position-section.d.ts.map +1 -1
  169. package/dist/dormer/panel-position-section.js +4 -3
  170. package/dist/dormer/panel-windows-section.d.ts.map +1 -1
  171. package/dist/dormer/panel-windows-section.js +38 -1
  172. package/dist/dormer/panel.d.ts.map +1 -1
  173. package/dist/dormer/panel.js +24 -18
  174. package/dist/downspout/inspector-editors.d.ts.map +1 -1
  175. package/dist/downspout/inspector-editors.js +3 -2
  176. package/dist/duct-fitting/inspector-editors.d.ts.map +1 -1
  177. package/dist/duct-fitting/inspector-editors.js +6 -1
  178. package/dist/duct-fitting/tool.d.ts.map +1 -1
  179. package/dist/duct-fitting/tool.js +11 -2
  180. package/dist/duct-terminal/tool.d.ts.map +1 -1
  181. package/dist/duct-terminal/tool.js +11 -2
  182. package/dist/elevator/panel.d.ts.map +1 -1
  183. package/dist/elevator/panel.js +41 -18
  184. package/dist/eyebrow-vent/panel.d.ts.map +1 -1
  185. package/dist/eyebrow-vent/panel.js +16 -6
  186. package/dist/fence/drafting.d.ts +2 -3
  187. package/dist/fence/drafting.d.ts.map +1 -1
  188. package/dist/fence/drafting.js +2 -3
  189. package/dist/fence/inspector-editors.d.ts.map +1 -1
  190. package/dist/fence/inspector-editors.js +64 -21
  191. package/dist/fence/move-endpoint-tool.d.ts.map +1 -1
  192. package/dist/fence/move-endpoint-tool.js +11 -2
  193. package/dist/fence/system.d.ts.map +1 -1
  194. package/dist/fence/system.js +13 -0
  195. package/dist/fence-feature/actions.d.ts.map +1 -1
  196. package/dist/fence-feature/actions.js +5 -2
  197. package/dist/fence-feature/inspector.d.ts.map +1 -1
  198. package/dist/fence-feature/inspector.js +150 -34
  199. package/dist/fence-feature/move-session.d.ts +1 -1
  200. package/dist/floor-opening/floorplan.d.ts +29 -6
  201. package/dist/floor-opening/floorplan.d.ts.map +1 -1
  202. package/dist/floor-opening/floorplan.js +172 -14
  203. package/dist/gutter/downspouts-panel.d.ts.map +1 -1
  204. package/dist/gutter/downspouts-panel.js +14 -2
  205. package/dist/hvac-equipment/tool.d.ts.map +1 -1
  206. package/dist/hvac-equipment/tool.js +3 -2
  207. package/dist/i18n/definition-messages.d.ts +5 -0
  208. package/dist/i18n/definition-messages.d.ts.map +1 -0
  209. package/dist/i18n/definition-messages.js +771 -0
  210. package/dist/index.d.ts +4 -1
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +6 -1
  213. package/dist/item/authored-params.d.ts.map +1 -1
  214. package/dist/item/authored-params.js +19 -4
  215. package/dist/item/floorplan.d.ts +1 -1
  216. package/dist/item/floorplan.d.ts.map +1 -1
  217. package/dist/item/panel.d.ts.map +1 -1
  218. package/dist/item/panel.js +9 -7
  219. package/dist/liquid-line/tool.d.ts.map +1 -1
  220. package/dist/liquid-line/tool.js +10 -3
  221. package/dist/measurement/tool.d.ts +1 -1
  222. package/dist/measurement/tool.d.ts.map +1 -1
  223. package/dist/measurement/tool.js +8 -8
  224. package/dist/pipe-fitting/tool.d.ts.map +1 -1
  225. package/dist/pipe-fitting/tool.js +3 -2
  226. package/dist/pipe-trap/tool.d.ts.map +1 -1
  227. package/dist/pipe-trap/tool.js +7 -2
  228. package/dist/procedural-item/renderer.d.ts.map +1 -1
  229. package/dist/procedural-item/renderer.js +8 -1
  230. package/dist/ridge-vent/panel.d.ts.map +1 -1
  231. package/dist/ridge-vent/panel.js +22 -9
  232. package/dist/roof/barrel-panel.d.ts.map +1 -1
  233. package/dist/roof/barrel-panel.js +7 -3
  234. package/dist/roof/definition.d.ts.map +1 -1
  235. package/dist/roof/definition.js +33 -3
  236. package/dist/roof/floorplan-overrides.d.ts +22 -0
  237. package/dist/roof/floorplan-overrides.d.ts.map +1 -0
  238. package/dist/roof/floorplan-overrides.js +46 -0
  239. package/dist/roof/floorplan-tool.d.ts +9 -0
  240. package/dist/roof/floorplan-tool.d.ts.map +1 -0
  241. package/dist/roof/floorplan-tool.js +168 -0
  242. package/dist/roof/floorplan.d.ts.map +1 -1
  243. package/dist/roof/floorplan.js +131 -41
  244. package/dist/roof/glazing-controls.d.ts +2 -1
  245. package/dist/roof/glazing-controls.d.ts.map +1 -1
  246. package/dist/roof/glazing-controls.js +51 -13
  247. package/dist/roof/glazing-panel-editor.d.ts.map +1 -1
  248. package/dist/roof/glazing-panel-editor.js +40 -13
  249. package/dist/roof/glazing-panel.d.ts.map +1 -1
  250. package/dist/roof/glazing-panel.js +73 -9
  251. package/dist/roof/paint.d.ts +19 -0
  252. package/dist/roof/paint.d.ts.map +1 -0
  253. package/dist/roof/paint.js +158 -0
  254. package/dist/roof/panel.d.ts.map +1 -1
  255. package/dist/roof/panel.js +90 -22
  256. package/dist/roof/renderer.d.ts.map +1 -1
  257. package/dist/roof/renderer.js +13 -2
  258. package/dist/roof/roof-footprint-source.d.ts +17 -0
  259. package/dist/roof/roof-footprint-source.d.ts.map +1 -1
  260. package/dist/roof/roof-footprint-source.js +14 -0
  261. package/dist/roof/roof-footprint.d.ts +36 -2
  262. package/dist/roof/roof-footprint.d.ts.map +1 -1
  263. package/dist/roof/roof-footprint.js +124 -2
  264. package/dist/roof/roof-materials.d.ts.map +1 -1
  265. package/dist/roof/roof-materials.js +10 -1
  266. package/dist/roof/roof-placement-mode.d.ts +0 -2
  267. package/dist/roof/roof-placement-mode.d.ts.map +1 -1
  268. package/dist/roof/roof-placement-mode.js +8 -6
  269. package/dist/roof/roof-plan-creases.d.ts +50 -0
  270. package/dist/roof/roof-plan-creases.d.ts.map +1 -0
  271. package/dist/roof/roof-plan-creases.js +194 -0
  272. package/dist/roof/roof-ridge-mode.d.ts +20 -0
  273. package/dist/roof/roof-ridge-mode.d.ts.map +1 -0
  274. package/dist/roof/roof-ridge-mode.js +16 -0
  275. package/dist/roof/tool.d.ts +17 -4
  276. package/dist/roof/tool.d.ts.map +1 -1
  277. package/dist/roof/tool.js +211 -113
  278. package/dist/roof/wall-catch.d.ts +106 -0
  279. package/dist/roof/wall-catch.d.ts.map +1 -0
  280. package/dist/roof/wall-catch.js +267 -0
  281. package/dist/roof-segment/build-up-section.d.ts +9 -0
  282. package/dist/roof-segment/build-up-section.d.ts.map +1 -0
  283. package/dist/roof-segment/build-up-section.js +191 -0
  284. package/dist/roof-segment/definition.d.ts.map +1 -1
  285. package/dist/roof-segment/definition.js +50 -5
  286. package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
  287. package/dist/roof-segment/floorplan-affordances.js +68 -19
  288. package/dist/roof-segment/floorplan.d.ts.map +1 -1
  289. package/dist/roof-segment/floorplan.js +16 -12
  290. package/dist/roof-segment/paint.d.ts +3 -1
  291. package/dist/roof-segment/paint.d.ts.map +1 -1
  292. package/dist/roof-segment/paint.js +43 -2
  293. package/dist/roof-segment/panel-model.d.ts +23 -0
  294. package/dist/roof-segment/panel-model.d.ts.map +1 -0
  295. package/dist/roof-segment/panel-model.js +64 -0
  296. package/dist/roof-segment/panel.d.ts.map +1 -1
  297. package/dist/roof-segment/panel.js +96 -14
  298. package/dist/roof-segment/parametrics.d.ts.map +1 -1
  299. package/dist/roof-segment/parametrics.js +4 -0
  300. package/dist/roof-segment/renderer.d.ts.map +1 -1
  301. package/dist/roof-segment/renderer.js +26 -5
  302. package/dist/separator/definition.d.ts.map +1 -1
  303. package/dist/separator/definition.js +10 -12
  304. package/dist/separator/floorplan-affordances.d.ts +9 -0
  305. package/dist/separator/floorplan-affordances.d.ts.map +1 -0
  306. package/dist/separator/floorplan-affordances.js +23 -0
  307. package/dist/separator/floorplan.d.ts +9 -0
  308. package/dist/separator/floorplan.d.ts.map +1 -0
  309. package/dist/separator/floorplan.js +54 -0
  310. package/dist/separator/renderer.d.ts +4 -0
  311. package/dist/separator/renderer.d.ts.map +1 -1
  312. package/dist/separator/renderer.js +21 -6
  313. package/dist/separator/selection.d.ts +10 -0
  314. package/dist/separator/selection.d.ts.map +1 -0
  315. package/dist/separator/selection.js +35 -0
  316. package/dist/shared/build-up-controls.d.ts +88 -0
  317. package/dist/shared/build-up-controls.d.ts.map +1 -0
  318. package/dist/shared/build-up-controls.js +139 -0
  319. package/dist/shared/curtain-opening-limits.d.ts.map +1 -1
  320. package/dist/shared/curtain-opening-limits.js +44 -14
  321. package/dist/shared/item-interaction-actions.d.ts.map +1 -1
  322. package/dist/shared/item-interaction-actions.js +11 -2
  323. package/dist/shared/layer-thickness.d.ts +2 -0
  324. package/dist/shared/layer-thickness.d.ts.map +1 -0
  325. package/dist/shared/layer-thickness.js +3 -0
  326. package/dist/shared/move-roof-tool.d.ts.map +1 -1
  327. package/dist/shared/move-roof-tool.js +100 -5
  328. package/dist/shared/node-batch/batchable.d.ts +2 -0
  329. package/dist/shared/node-batch/batchable.d.ts.map +1 -1
  330. package/dist/shared/node-batch/batchable.js +4 -0
  331. package/dist/shared/node-batch/candidates.d.ts +21 -5
  332. package/dist/shared/node-batch/candidates.d.ts.map +1 -1
  333. package/dist/shared/node-batch/candidates.js +85 -50
  334. package/dist/shared/node-batch/system.d.ts.map +1 -1
  335. package/dist/shared/node-batch/system.js +24 -15
  336. package/dist/shared/opening-casing-move.d.ts +16 -0
  337. package/dist/shared/opening-casing-move.d.ts.map +1 -0
  338. package/dist/shared/opening-casing-move.js +33 -0
  339. package/dist/shared/opening-casing-section.d.ts +15 -0
  340. package/dist/shared/opening-casing-section.d.ts.map +1 -0
  341. package/dist/shared/opening-casing-section.js +38 -0
  342. package/dist/shared/opening-casing.d.ts +26 -0
  343. package/dist/shared/opening-casing.d.ts.map +1 -0
  344. package/dist/shared/opening-casing.js +80 -0
  345. package/dist/shared/opening-depth-position.d.ts +13 -0
  346. package/dist/shared/opening-depth-position.d.ts.map +1 -0
  347. package/dist/shared/opening-depth-position.js +34 -0
  348. package/dist/shared/opening-documentation.d.ts.map +1 -1
  349. package/dist/shared/opening-documentation.js +17 -8
  350. package/dist/shared/opening-guides-runtime.d.ts +2 -1
  351. package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
  352. package/dist/shared/opening-guides-runtime.js +11 -7
  353. package/dist/shared/opening-labels.d.ts +11 -0
  354. package/dist/shared/opening-labels.d.ts.map +1 -0
  355. package/dist/shared/opening-labels.js +46 -0
  356. package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
  357. package/dist/shared/opening-placement-dimensions.js +11 -9
  358. package/dist/shared/opening-plane-offset.d.ts +4 -3
  359. package/dist/shared/opening-plane-offset.d.ts.map +1 -1
  360. package/dist/shared/opening-plane-offset.js +7 -4
  361. package/dist/shared/opening-swap.d.ts +8 -0
  362. package/dist/shared/opening-swap.d.ts.map +1 -0
  363. package/dist/shared/opening-swap.js +18 -0
  364. package/dist/shared/polygon-vertex-affordance.d.ts +19 -0
  365. package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
  366. package/dist/shared/polygon-vertex-affordance.js +65 -6
  367. package/dist/shared/roof-opening-host.d.ts +2 -1
  368. package/dist/shared/roof-opening-host.d.ts.map +1 -1
  369. package/dist/shared/roof-opening-host.js +14 -5
  370. package/dist/shared/roof-wall-opening-cut.d.ts.map +1 -1
  371. package/dist/shared/roof-wall-opening-cut.js +14 -6
  372. package/dist/shared/roof-wall-opening-placement.d.ts +2 -1
  373. package/dist/shared/roof-wall-opening-placement.d.ts.map +1 -1
  374. package/dist/shared/roof-wall-opening-placement.js +6 -4
  375. package/dist/shared/run-hanger-inspector.d.ts.map +1 -1
  376. package/dist/shared/run-hanger-inspector.js +39 -5
  377. package/dist/shared/system-check-panel.d.ts.map +1 -1
  378. package/dist/shared/system-check-panel.js +94 -15
  379. package/dist/shared/wall-attach-target.d.ts.map +1 -1
  380. package/dist/shared/wall-attach-target.js +6 -3
  381. package/dist/shelf/definition.d.ts.map +1 -1
  382. package/dist/shelf/definition.js +2 -0
  383. package/dist/site/ground-hole.d.ts +3 -3
  384. package/dist/site/ground-hole.js +3 -3
  385. package/dist/site/ground-veil.d.ts +5 -12
  386. package/dist/site/ground-veil.d.ts.map +1 -1
  387. package/dist/site/ground-veil.js +9 -33
  388. package/dist/site/panel.d.ts.map +1 -1
  389. package/dist/site/panel.js +52 -12
  390. package/dist/site/renderer.d.ts.map +1 -1
  391. package/dist/site/renderer.js +52 -23
  392. package/dist/skylight/panel.d.ts.map +1 -1
  393. package/dist/skylight/panel.js +49 -19
  394. package/dist/slab/deck-geometry.d.ts +28 -0
  395. package/dist/slab/deck-geometry.d.ts.map +1 -0
  396. package/dist/slab/deck-geometry.js +320 -0
  397. package/dist/slab/definition.d.ts +2 -1
  398. package/dist/slab/definition.d.ts.map +1 -1
  399. package/dist/slab/definition.js +6 -1
  400. package/dist/slab/dependency-tracker.d.ts.map +1 -1
  401. package/dist/slab/dependency-tracker.js +3 -0
  402. package/dist/slab/floorplan-affordances.d.ts +500 -0
  403. package/dist/slab/floorplan-affordances.d.ts.map +1 -1
  404. package/dist/slab/geometry.d.ts.map +1 -1
  405. package/dist/slab/geometry.js +46 -9
  406. package/dist/slab/panel.d.ts.map +1 -1
  407. package/dist/slab/panel.js +97 -21
  408. package/dist/slab/renderer.d.ts +11 -0
  409. package/dist/slab/renderer.d.ts.map +1 -0
  410. package/dist/slab/renderer.js +19 -0
  411. package/dist/slab/system.d.ts.map +1 -1
  412. package/dist/slab/system.js +12 -1
  413. package/dist/solar-panel/panel.d.ts.map +1 -1
  414. package/dist/solar-panel/panel.js +49 -14
  415. package/dist/stair/construction-controls.d.ts +3 -1
  416. package/dist/stair/construction-controls.d.ts.map +1 -1
  417. package/dist/stair/construction-controls.js +75 -12
  418. package/dist/stair/paint.d.ts +6 -0
  419. package/dist/stair/paint.d.ts.map +1 -1
  420. package/dist/stair/panel.d.ts.map +1 -1
  421. package/dist/stair/panel.js +243 -51
  422. package/dist/stair/parametrics.d.ts.map +1 -1
  423. package/dist/stair/parametrics.js +7 -0
  424. package/dist/stair/placement-defaults.d.ts +18 -0
  425. package/dist/stair/placement-defaults.d.ts.map +1 -0
  426. package/dist/stair/placement-defaults.js +27 -0
  427. package/dist/stair/railing-controls.d.ts.map +1 -1
  428. package/dist/stair/railing-controls.js +78 -18
  429. package/dist/stair/renderer.d.ts.map +1 -1
  430. package/dist/stair/renderer.js +16 -10
  431. package/dist/stair/structure-controls.d.ts +18 -0
  432. package/dist/stair/structure-controls.d.ts.map +1 -0
  433. package/dist/stair/structure-controls.js +275 -0
  434. package/dist/stair/tool.d.ts.map +1 -1
  435. package/dist/stair/tool.js +13 -9
  436. package/dist/stair/use-stair-render-data.d.ts +41 -0
  437. package/dist/stair/use-stair-render-data.d.ts.map +1 -1
  438. package/dist/stair-segment/panel.d.ts.map +1 -1
  439. package/dist/stair-segment/panel.js +65 -18
  440. package/dist/turbine-vent/panel.d.ts.map +1 -1
  441. package/dist/turbine-vent/panel.js +14 -5
  442. package/dist/unit/unit-panel.d.ts.map +1 -1
  443. package/dist/unit/unit-panel.js +28 -12
  444. package/dist/wall/actions.d.ts +1 -1
  445. package/dist/wall/actions.d.ts.map +1 -1
  446. package/dist/wall/actions.js +17 -13
  447. package/dist/wall/construction-dimensions.d.ts +6 -0
  448. package/dist/wall/construction-dimensions.d.ts.map +1 -1
  449. package/dist/wall/construction-dimensions.js +8 -0
  450. package/dist/wall/contextual-dimensions.d.ts +6 -0
  451. package/dist/wall/contextual-dimensions.d.ts.map +1 -1
  452. package/dist/wall/contextual-dimensions.js +104 -17
  453. package/dist/wall/curtain-opening-frame.d.ts.map +1 -1
  454. package/dist/wall/curtain-opening-frame.js +6 -4
  455. package/dist/wall/curtain-wall-layout.d.ts +1 -1
  456. package/dist/wall/curtain-wall-layout.d.ts.map +1 -1
  457. package/dist/wall/curtain-wall-layout.js +6 -4
  458. package/dist/wall/curtain-wall-materials.d.ts.map +1 -1
  459. package/dist/wall/curtain-wall-materials.js +8 -3
  460. package/dist/wall/curtain-wall-panel.d.ts.map +1 -1
  461. package/dist/wall/curtain-wall-panel.js +241 -37
  462. package/dist/wall/curve-tool.d.ts.map +1 -1
  463. package/dist/wall/curve-tool.js +2 -3
  464. package/dist/wall/definition.d.ts.map +1 -1
  465. package/dist/wall/definition.js +20 -5
  466. package/dist/wall/floorplan-affordances.d.ts.map +1 -1
  467. package/dist/wall/floorplan-affordances.js +9 -6
  468. package/dist/wall/floorplan-move.d.ts.map +1 -1
  469. package/dist/wall/floorplan-move.js +66 -16
  470. package/dist/wall/floorplan.d.ts +4 -5
  471. package/dist/wall/floorplan.d.ts.map +1 -1
  472. package/dist/wall/floorplan.js +62 -46
  473. package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
  474. package/dist/wall/move-endpoint-tool.js +1 -0
  475. package/dist/wall/move-tool.d.ts.map +1 -1
  476. package/dist/wall/move-tool.js +77 -12
  477. package/dist/wall/paint.d.ts +2 -2
  478. package/dist/wall/paint.d.ts.map +1 -1
  479. package/dist/wall/paint.js +11 -4
  480. package/dist/wall/panel-model.d.ts +17 -2
  481. package/dist/wall/panel-model.d.ts.map +1 -1
  482. package/dist/wall/panel-model.js +158 -18
  483. package/dist/wall/panel.d.ts +8 -0
  484. package/dist/wall/panel.d.ts.map +1 -1
  485. package/dist/wall/panel.js +228 -156
  486. package/dist/wall/parametrics.d.ts +1 -1
  487. package/dist/wall/parametrics.d.ts.map +1 -1
  488. package/dist/wall/parametrics.js +14 -1
  489. package/dist/wall/railing-wall-adapter.d.ts +7 -0
  490. package/dist/wall/railing-wall-adapter.d.ts.map +1 -0
  491. package/dist/wall/railing-wall-adapter.js +38 -0
  492. package/dist/wall/railing-wall-floorplan.d.ts +8 -0
  493. package/dist/wall/railing-wall-floorplan.d.ts.map +1 -0
  494. package/dist/wall/railing-wall-floorplan.js +27 -0
  495. package/dist/wall/railing-wall-geometry.d.ts +12 -0
  496. package/dist/wall/railing-wall-geometry.d.ts.map +1 -0
  497. package/dist/wall/railing-wall-geometry.js +51 -0
  498. package/dist/wall/railing-wall-guard.d.ts +81 -0
  499. package/dist/wall/railing-wall-guard.d.ts.map +1 -0
  500. package/dist/wall/railing-wall-guard.js +435 -0
  501. package/dist/wall/railing-wall-materials.d.ts +11 -0
  502. package/dist/wall/railing-wall-materials.d.ts.map +1 -0
  503. package/dist/wall/railing-wall-materials.js +31 -0
  504. package/dist/wall/railing-wall-panel-model.d.ts +30 -0
  505. package/dist/wall/railing-wall-panel-model.d.ts.map +1 -0
  506. package/dist/wall/railing-wall-panel-model.js +117 -0
  507. package/dist/wall/railing-wall-panel.d.ts +17 -0
  508. package/dist/wall/railing-wall-panel.d.ts.map +1 -0
  509. package/dist/wall/railing-wall-panel.js +42 -0
  510. package/dist/wall/rectangle-command.d.ts +79 -1
  511. package/dist/wall/rectangle-command.d.ts.map +1 -1
  512. package/dist/wall/rectangle-tool.d.ts.map +1 -1
  513. package/dist/wall/rectangle-tool.js +2 -0
  514. package/dist/wall/renderer.d.ts.map +1 -1
  515. package/dist/wall/renderer.js +3 -1
  516. package/dist/wall/skirting-floor-gaps.d.ts +8 -0
  517. package/dist/wall/skirting-floor-gaps.d.ts.map +1 -0
  518. package/dist/wall/skirting-floor-gaps.js +36 -0
  519. package/dist/wall/system.d.ts +0 -14
  520. package/dist/wall/system.d.ts.map +1 -1
  521. package/dist/wall/system.js +6 -1
  522. package/dist/wall/tool.d.ts +16 -0
  523. package/dist/wall/tool.d.ts.map +1 -1
  524. package/dist/wall/tool.js +160 -47
  525. package/dist/wall/treatments.d.ts +3 -0
  526. package/dist/wall/treatments.d.ts.map +1 -1
  527. package/dist/wall/treatments.js +30 -7
  528. package/dist/window/actions.d.ts +7 -0
  529. package/dist/window/actions.d.ts.map +1 -0
  530. package/dist/window/actions.js +29 -0
  531. package/dist/window/definition.d.ts.map +1 -1
  532. package/dist/window/definition.js +11 -2
  533. package/dist/window/floorplan-move.d.ts.map +1 -1
  534. package/dist/window/floorplan-move.js +5 -0
  535. package/dist/window/floorplan.d.ts +2 -0
  536. package/dist/window/floorplan.d.ts.map +1 -1
  537. package/dist/window/floorplan.js +58 -1
  538. package/dist/window/mechanism.d.ts.map +1 -1
  539. package/dist/window/mechanism.js +21 -1
  540. package/dist/window/move-tool.d.ts.map +1 -1
  541. package/dist/window/move-tool.js +10 -3
  542. package/dist/window/paint.d.ts +2 -7
  543. package/dist/window/paint.d.ts.map +1 -1
  544. package/dist/window/paint.js +31 -3
  545. package/dist/window/panel.d.ts.map +1 -1
  546. package/dist/window/panel.js +311 -69
  547. package/dist/window/placement.d.ts.map +1 -1
  548. package/dist/window/placement.js +5 -1
  549. package/dist/window/swing.d.ts +13 -0
  550. package/dist/window/swing.d.ts.map +1 -0
  551. package/dist/window/swing.js +16 -0
  552. package/dist/window/tool.d.ts.map +1 -1
  553. package/dist/window/tool.js +19 -14
  554. package/dist/zone/floorplan-affordances.d.ts +136 -0
  555. package/dist/zone/floorplan-affordances.d.ts.map +1 -1
  556. package/dist/zone/quantities-panel.d.ts.map +1 -1
  557. package/dist/zone/quantities-panel.js +34 -9
  558. package/dist/zone/renderer.d.ts.map +1 -1
  559. package/dist/zone/renderer.js +9 -5
  560. package/package.json +14 -14
  561. package/dist/site/generic-foundation-geometry.d.ts +0 -16
  562. package/dist/site/generic-foundation-geometry.d.ts.map +0 -1
  563. package/dist/site/generic-foundation-geometry.js +0 -75
  564. package/dist/site/generic-foundation.d.ts +0 -4
  565. package/dist/site/generic-foundation.d.ts.map +0 -1
  566. package/dist/site/generic-foundation.js +0 -91
@@ -1,47 +1,107 @@
1
1
  'use client';
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useScene } from '@pascal-app/core';
3
+ import { usePascalI18n, useScene } from '@pascal-app/core';
4
4
  import { MetricControl, SegmentedControl, ToggleControl } from '@pascal-app/editor';
5
5
  const MODES = [
6
- { label: 'None', value: 'none' },
7
- { label: 'Left', value: 'left' },
8
- { label: 'Right', value: 'right' },
9
- { label: 'Both', value: 'both' },
6
+ { label: /* i18n */ { id: 'node.stair.railingControls.none', message: 'None' }, value: 'none' },
7
+ { label: /* i18n */ { id: 'node.stair.railingControls.left', message: 'Left' }, value: 'left' },
8
+ {
9
+ label: /* i18n */ { id: 'node.stair.railingControls.right', message: 'Right' },
10
+ value: 'right',
11
+ },
12
+ { label: /* i18n */ { id: 'node.stair.railingControls.both', message: 'Both' }, value: 'both' },
10
13
  ];
11
14
  export function StairRailingControls({ node, onChange, }) {
15
+ const i18n = usePascalI18n();
12
16
  const config = node.handrail;
13
17
  return (_jsxs("div", { className: "space-y-3", children: [_jsx(SegmentedControl, { value: node.railingStyle === 'glass' || node.railingStyle === 'metal'
14
18
  ? 'continuous'
15
19
  : (node.railingPath ?? 'original'), options: [
16
- { label: 'Original layout', value: 'original' },
17
- { label: 'Continuous', value: 'continuous' },
20
+ {
21
+ label: i18n._({
22
+ id: 'node.stair.railingControls.originalLayout',
23
+ message: 'Original layout',
24
+ }),
25
+ value: 'original',
26
+ },
27
+ {
28
+ label: i18n._({ id: 'node.stair.railingControls.continuous', message: 'Continuous' }),
29
+ value: 'continuous',
30
+ },
18
31
  ], onChange: (value) => onChange({
19
32
  railingPath: value,
20
33
  ...(value === 'original' &&
21
34
  (node.railingStyle === 'glass' || node.railingStyle === 'metal')
22
35
  ? { railingStyle: 'balusters' }
23
36
  : {}),
24
- }) }), _jsx(ToggleControl, { label: "Separate handrail", checked: !!config, onChange: (checked) => onChange({
37
+ }) }), _jsx(ToggleControl, { label: i18n._({
38
+ id: 'node.stair.railingControls.separateHandrail',
39
+ message: 'Separate handrail',
40
+ }), checked: !!config, onChange: (checked) => onChange({
25
41
  handrail: checked
26
42
  ? { mode: 'both', height: 0.9, diameter: 0.045, offset: 0.06 }
27
43
  : undefined,
28
- }) }), config ? (_jsxs(_Fragment, { children: [_jsx(SegmentedControl, { value: config.mode, options: [...MODES], onChange: (value) => onChange({ handrail: { ...config, mode: value } }) }), ['height', 'diameter', 'offset'].map((key) => (_jsx(MetricControl, { label: key === 'height'
29
- ? 'Handrail height'
44
+ }) }), config ? (_jsxs(_Fragment, { children: [_jsx(SegmentedControl, { value: config.mode, options: MODES.map((option) => ({ ...option, label: i18n._(option.label) })), onChange: (value) => onChange({ handrail: { ...config, mode: value } }) }), ['height', 'diameter', 'offset'].map((key) => (_jsx(MetricControl, { label: key === 'height'
45
+ ? i18n._({
46
+ id: 'node.stair.railingControls.handrailHeight',
47
+ message: 'Handrail height',
48
+ })
30
49
  : key === 'diameter'
31
- ? 'Handrail diameter'
32
- : 'Handrail inset', value: config[key], min: key === 'offset' ? 0 : 0.001, step: 0.005, precision: 3, unit: "m", onChange: (value) => onChange({ handrail: { ...config, [key]: value } }) }, key))), ['bottom', 'top'].map((end) => {
50
+ ? i18n._({
51
+ id: 'node.stair.railingControls.handrailDiameter',
52
+ message: 'Handrail diameter',
53
+ })
54
+ : i18n._({
55
+ id: 'node.stair.railingControls.handrailInset',
56
+ message: 'Handrail inset',
57
+ }), value: config[key], min: key === 'offset' ? 0 : 0.001, step: 0.005, precision: 3, unit: "m", onChange: (value) => onChange({ handrail: { ...config, [key]: value } }) }, key))), ['bottom', 'top'].map((end) => {
33
58
  const detail = config[end] ?? {
34
59
  extension: 0,
35
60
  return: 'none',
36
61
  returnLength: 0.1,
37
62
  };
38
63
  const update = (patch) => onChange({ handrail: { ...config, [end]: { ...detail, ...patch } } });
39
- return (_jsxs("div", { className: "space-y-2", children: [_jsx(MetricControl, { label: `${end === 'bottom' ? 'Bottom sloped' : 'Top horizontal'} extension`, value: detail.extension, min: 0, step: 0.05, precision: 3, unit: "m", onChange: (extension) => update({ extension }) }), _jsx(SegmentedControl, { value: detail.return, options: [
40
- { label: 'No return', value: 'none' },
41
- { label: 'Wall-facing', value: 'wall' },
42
- { label: 'Post-facing', value: 'post' },
43
- { label: 'Floor', value: 'floor' },
44
- ], onChange: (value) => update({ return: value }) }), detail.return === 'wall' || detail.return === 'post' ? (_jsxs(_Fragment, { children: [_jsx(MetricControl, { label: "Return length", value: detail.returnLength, min: 0, step: 0.01, precision: 3, unit: "m", onChange: (returnLength) => update({ returnLength }) }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Set the length to reach the wall or post." })] })) : null] }, end));
64
+ return (_jsxs("div", { className: "space-y-2", children: [_jsx(MetricControl, { label: end === 'bottom'
65
+ ? i18n._({
66
+ id: 'node.stair.railingControls.bottomExtension',
67
+ message: 'Bottom sloped extension',
68
+ })
69
+ : i18n._({
70
+ id: 'node.stair.railingControls.topExtension',
71
+ message: 'Top horizontal extension',
72
+ }), value: detail.extension, min: 0, step: 0.05, precision: 3, unit: "m", onChange: (extension) => update({ extension }) }), _jsx(SegmentedControl, { value: detail.return, options: [
73
+ {
74
+ label: i18n._({
75
+ id: 'node.stair.railingControls.noReturn',
76
+ message: 'No return',
77
+ }),
78
+ value: 'none',
79
+ },
80
+ {
81
+ label: i18n._({
82
+ id: 'node.stair.railingControls.wallFacing',
83
+ message: 'Wall-facing',
84
+ }),
85
+ value: 'wall',
86
+ },
87
+ {
88
+ label: i18n._({
89
+ id: 'node.stair.railingControls.postFacing',
90
+ message: 'Post-facing',
91
+ }),
92
+ value: 'post',
93
+ },
94
+ {
95
+ label: i18n._({ id: 'node.stair.railingControls.floor', message: 'Floor' }),
96
+ value: 'floor',
97
+ },
98
+ ], onChange: (value) => update({ return: value }) }), detail.return === 'wall' || detail.return === 'post' ? (_jsxs(_Fragment, { children: [_jsx(MetricControl, { label: i18n._({
99
+ id: 'node.stair.railingControls.returnLength',
100
+ message: 'Return length',
101
+ }), value: detail.returnLength, min: 0, step: 0.01, precision: 3, unit: "m", onChange: (returnLength) => update({ returnLength }) }), _jsx("p", { className: "text-xs text-muted-foreground", children: i18n._({
102
+ id: 'node.stair.railingControls.setTheLengthToReachThe',
103
+ message: 'Set the length to reach the wall or post.',
104
+ }) })] })) : null] }, end));
45
105
  })] })) : null] }));
46
106
  }
47
107
  export function StairRailingField({ node }) {
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/stair/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAUL,KAAK,SAAS,EAOf,MAAM,kBAAkB,CAAA;AA2DzB,eAAO,MAAM,aAAa,sBAAuB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,gCA+JnE,CAAA;eAivCc,aAAa"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/stair/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAUL,KAAK,SAAS,EAQf,MAAM,kBAAkB,CAAA;AA2DzB,eAAO,MAAM,aAAa,sBAAuB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,gCA+JnE,CAAA;eAqvCc,aAAa"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { computeSegmentTransforms, measureStairDetail, resolveArcStairConstruction, resolveStairArcLayout, resolveStairRailPaths, resolveStairWalkingPaths, rotateXZ, STAIR_RAILING_SLOT_DEFAULT, stairArcSliceCount, useLiveNodeOverrides, useRegistry, useScene, } from '@pascal-app/core';
3
+ import { computeSegmentTransforms, measureStairDetail, resolveArcStairConstruction, resolveStairArcLayout, resolveStairRailPaths, resolveStairWalkingPaths, rotateXZ, STAIR_RAILING_SLOT_DEFAULT, stairArcSliceCount, stairStructureConstructionOf, useLiveNodeOverrides, useRegistry, useScene, } from '@pascal-app/core';
4
4
  import { getStairBodyMaterials, getStairRailingMaterial, NodeRenderer, OVERLAY_LAYER, useNodeEvents, useViewer, } from '@pascal-app/viewer';
5
5
  import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
6
6
  import * as THREE from 'three';
@@ -41,7 +41,7 @@ export const StairRenderer = ({ node: rawNode }) => {
41
41
  useLayoutEffect(() => {
42
42
  for (const id of node.children)
43
43
  useScene.getState().markDirty(id);
44
- }, [node.children, node.construction]);
44
+ }, [node.children, node.construction, node.structure]);
45
45
  const detail = useMemo(() => measureStairDetail(node, segments), [node, segments]);
46
46
  const mergedMaterials = useMemo(() => segments.length
47
47
  ? segments.flatMap((segment) => resolveStairSegmentMaterials(segment, node, bodyMaterials, sceneMaterials, shading, textures, colorPreset))
@@ -80,14 +80,20 @@ function StairSurfaceTransition({ stair, materials, }) {
80
80
  flight?.length ??
81
81
  0;
82
82
  const segment = flight;
83
- const fillToFloor = flightOverride?.fillToFloor ??
84
- segment?.fillToFloor ??
85
- stair.fillToFloor ??
86
- true;
87
- const thickness = flightOverride?.thickness ??
88
- segment?.thickness ??
89
- stair.thickness ??
90
- 0.25;
83
+ // a structure fills to the floor when it is poured, and is a tread thick when it is framed
84
+ const structureBody = stair.construction ? null : stairStructureConstructionOf(stair);
85
+ const fillToFloor = structureBody
86
+ ? structureBody.mode === 'solid'
87
+ : (flightOverride?.fillToFloor ??
88
+ segment?.fillToFloor ??
89
+ stair.fillToFloor ??
90
+ true);
91
+ const thickness = structureBody
92
+ ? structureBody.treadThickness + structureBody.finishThickness
93
+ : (flightOverride?.thickness ??
94
+ segment?.thickness ??
95
+ stair.thickness ??
96
+ 0.25);
91
97
  const segmentHeight = flightOverride?.height ?? segment?.height ?? 0;
92
98
  const profile = useMemo(() => surface
93
99
  ? surfaceTransitionProfile(stair, surface, length)
@@ -0,0 +1,18 @@
1
+ import { type StairNode, type StairSegmentNode } from '@pascal-app/core';
2
+ /**
3
+ * How the stair is built (its stringers, with the code's numbers behind them):
4
+ * wood stringers — stock, cut or housed, a maximum spacing that sets the count (or a count by
5
+ * hand), treads, risers and treated lumber — a poured concrete flight, or steel channels. The
6
+ * count it lands on shows under the controls.
7
+ */
8
+ export declare function StairStructureControls({ node, segments, onUpdate, }: {
9
+ node: StairNode;
10
+ segments: readonly StairSegmentNode[];
11
+ onUpdate: (patch: Partial<StairNode>) => void;
12
+ }): import("react").JSX.Element;
13
+ /** The structure controls in the parametric inspector, over the stair's own flights. */
14
+ export declare function StairStructureField({ node, onUpdate, }: {
15
+ node: StairNode;
16
+ onUpdate: (patch: Partial<StairNode>) => void;
17
+ }): import("react").JSX.Element;
18
+ //# sourceMappingURL=structure-controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-controls.d.ts","sourceRoot":"","sources":["../../src/stair/structure-controls.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAMtB,MAAM,kBAAkB,CAAA;AA4GzB;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC9C,+BA+QA;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC9C,+BASA"}
@@ -0,0 +1,275 @@
1
+ 'use client';
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { resolveStairStringerLayout, resolveStairStructure, STAIR_STRINGER_SPACINGS_IN, StairStructure, usePascalI18n, useScene, } from '@pascal-app/core';
4
+ import { formatLinearMeasurement, MetricControl, SelectControl } from '@pascal-app/editor';
5
+ import { useViewer } from '@pascal-app/viewer';
6
+ import { useShallow } from 'zustand/react/shallow';
7
+ const IN = 0.0254;
8
+ /** The concrete a poured flight is painted when it carries no paint of its own. */
9
+ const CONCRETE_PRESET = 'library:concrete-raw';
10
+ const STRUCTURE_OPTIONS = [
11
+ {
12
+ label: /* i18n */ { id: 'node.stair.structureControls.originalBody', message: 'Original body' },
13
+ value: 'none',
14
+ },
15
+ {
16
+ label: /* i18n */ {
17
+ id: 'node.stair.structureControls.woodStringers',
18
+ message: 'Wood stringers',
19
+ },
20
+ value: 'wood-stringers',
21
+ },
22
+ {
23
+ label: /* i18n */ { id: 'node.stair.structureControls.concrete', message: 'Concrete' },
24
+ value: 'concrete',
25
+ },
26
+ {
27
+ label: /* i18n */ {
28
+ id: 'node.stair.structureControls.steelStringers',
29
+ message: 'Steel stringers',
30
+ },
31
+ value: 'steel-stringers',
32
+ },
33
+ ];
34
+ /** The lumber a tread is cut from; the trade size is a value, not copy. */
35
+ const TREAD_LABELS = {
36
+ '2x6-pair': /* i18n */ {
37
+ id: 'node.stair.structureControls.twoStock',
38
+ message: 'Two {stock}',
39
+ values: { stock: '2x6' },
40
+ },
41
+ '5/4x6-pair': /* i18n */ {
42
+ id: 'node.stair.structureControls.twoStock',
43
+ message: 'Two {stock}',
44
+ values: { stock: '5/4x6' },
45
+ },
46
+ '2x12': /* i18n */ {
47
+ id: 'node.stair.structureControls.oneStock',
48
+ message: 'One {stock}',
49
+ values: { stock: '2x12' },
50
+ },
51
+ 'plywood-finish': /* i18n */ {
52
+ id: 'node.stair.structureControls.plywoodFinish',
53
+ message: 'Plywood + finish',
54
+ },
55
+ };
56
+ const choiceOf = (value) => value === undefined ? 'auto' : value ? 'yes' : 'no';
57
+ const choiceValue = (choice) => choice === 'auto' ? undefined : choice === 'yes';
58
+ /** A flight's stringers as the status line reads them: `3 stringers at 1' 4" o.c. (auto)`. */
59
+ function stringerLayoutLine(layout, spacing, i18n) {
60
+ const values = { count: layout.count, spacing };
61
+ let line;
62
+ if (layout.steel)
63
+ line =
64
+ layout.count > 1
65
+ ? i18n._({
66
+ id: 'node.stair.structureControls.countSteelChannelsAtSpacing',
67
+ message: '{count, plural, one {# steel channel at {spacing} o.c.} other {# steel channels at {spacing} o.c.}}',
68
+ values,
69
+ })
70
+ : i18n._({
71
+ id: 'node.stair.structureControls.countSteelChannels',
72
+ message: '{count, plural, one {# steel channel} other {# steel channels}}',
73
+ values,
74
+ });
75
+ else
76
+ line =
77
+ layout.count > 1
78
+ ? i18n._({
79
+ id: 'node.stair.structureControls.countStringersAtSpacing',
80
+ message: '{count, plural, one {# stringer at {spacing} o.c.} other {# stringers at {spacing} o.c.}}',
81
+ values,
82
+ })
83
+ : i18n._({
84
+ id: 'node.stair.structureControls.countStringers',
85
+ message: '{count, plural, one {# stringer} other {# stringers}}',
86
+ values,
87
+ });
88
+ if (!layout.auto)
89
+ return line;
90
+ return i18n._({
91
+ id: 'node.stair.structureControls.layoutAuto',
92
+ message: '{layout} (auto)',
93
+ comment: 'The stringer count was chosen automatically, not set by hand.',
94
+ values: { layout: line },
95
+ });
96
+ }
97
+ /**
98
+ * How the stair is built (its stringers, with the code's numbers behind them):
99
+ * wood stringers — stock, cut or housed, a maximum spacing that sets the count (or a count by
100
+ * hand), treads, risers and treated lumber — a poured concrete flight, or steel channels. The
101
+ * count it lands on shows under the controls.
102
+ */
103
+ export function StairStructureControls({ node, segments, onUpdate, }) {
104
+ const i18n = usePascalI18n();
105
+ const unit = useViewer((state) => state.unit);
106
+ const metricNotation = useViewer((state) => state.metricNotation);
107
+ const resolved = resolveStairStructure(node);
108
+ const stored = node.structure ? StairStructure.safeParse(node.structure) : null;
109
+ const structure = stored?.success ? stored.data : null;
110
+ const update = (patch) => onUpdate({ structure: StairStructure.parse({ ...structure, ...patch }) });
111
+ const setType = (value) => {
112
+ if (value === 'none') {
113
+ onUpdate({
114
+ structure: undefined,
115
+ ...(node.materialPreset === CONCRETE_PRESET ? { materialPreset: undefined } : {}),
116
+ });
117
+ return;
118
+ }
119
+ const painted = node.material !== undefined || typeof node.materialPreset === 'string';
120
+ onUpdate({
121
+ structure: StairStructure.parse({ ...structure, type: value }),
122
+ // a poured flight reads as concrete until it is painted otherwise; leaving concrete takes
123
+ // that paint back off
124
+ ...(value === 'concrete' && !painted ? { materialPreset: CONCRETE_PRESET } : {}),
125
+ ...(value !== 'concrete' && node.materialPreset === CONCRETE_PRESET
126
+ ? { materialPreset: undefined }
127
+ : {}),
128
+ });
129
+ };
130
+ const flights = segments.filter((segment) => segment.segmentType === 'stair');
131
+ const widths = flights.length ? flights.map((flight) => flight.width) : [node.width];
132
+ const layouts = resolved && resolved.type !== 'concrete'
133
+ ? widths.map((width) => ({ width, layout: resolveStairStringerLayout(width, resolved) }))
134
+ : [];
135
+ const first = layouts[0]?.layout;
136
+ const autoCount = resolved && first
137
+ ? resolveStairStringerLayout(widths[0], { ...resolved, stringerCount: undefined }).count
138
+ : 0;
139
+ const wood = resolved?.type === 'wood-stringers';
140
+ const spacingIn = structure ? Math.round((structure.stringerSpacing / IN) * 100) / 100 : 16;
141
+ const spacings = STAIR_STRINGER_SPACINGS_IN.includes(spacingIn)
142
+ ? [...STAIR_STRINGER_SPACINGS_IN]
143
+ : [...STAIR_STRINGER_SPACINGS_IN, spacingIn].sort((a, b) => a - b);
144
+ return (_jsxs("div", { className: "space-y-3", children: [_jsx(SelectControl, { label: i18n._({ id: 'node.stair.structureControls.structure', message: 'Structure' }), value: resolved?.type ?? 'none', options: STRUCTURE_OPTIONS.map((option) => ({ ...option, label: i18n._(option.label) })), onChange: setType }), resolved && structure ? (_jsxs(_Fragment, { children: [wood ? (_jsxs(_Fragment, { children: [_jsx(SelectControl, { label: i18n._({
145
+ id: 'node.stair.structureControls.stringers',
146
+ message: 'Stringers',
147
+ }), value: structure.stringerStock, options: [
148
+ { label: '2x12', value: '2x12' },
149
+ { label: '2x10', value: '2x10' },
150
+ ], onChange: (stringerStock) => update({ stringerStock }) }), _jsx(SelectControl, { label: i18n._({
151
+ id: 'node.stair.structureControls.stringerType',
152
+ message: 'Stringer type',
153
+ }), value: structure.stringerType, options: [
154
+ {
155
+ label: i18n._({ id: 'node.stair.structureControls.cut', message: 'Cut' }),
156
+ value: 'cut',
157
+ },
158
+ {
159
+ label: i18n._({
160
+ id: 'node.stair.structureControls.housedSides',
161
+ message: 'Housed sides',
162
+ }),
163
+ value: 'housed',
164
+ },
165
+ ], onChange: (stringerType) => update({ stringerType }) }), _jsx(SelectControl, { label: i18n._({
166
+ id: 'node.stair.structureControls.maxSpacing',
167
+ message: 'Max spacing',
168
+ }), value: String(spacingIn), options: spacings.map((inches) => ({
169
+ label: i18n._({
170
+ id: 'node.stair.structureControls.inchesInOC',
171
+ message: '{inches} in o.c.',
172
+ values: { inches },
173
+ }),
174
+ value: String(inches),
175
+ })), onChange: (value) => update({ stringerSpacing: Number(value) * IN }) })] })) : null, resolved.type !== 'concrete' && first ? (_jsxs(_Fragment, { children: [_jsx(SelectControl, { label: i18n._({
176
+ id: 'node.stair.structureControls.stringerCount',
177
+ message: 'Stringer count',
178
+ }), value: structure.stringerCount === undefined ? 'auto' : String(structure.stringerCount), options: [
179
+ {
180
+ label: i18n._({
181
+ id: 'node.stair.structureControls.autoAutocount',
182
+ message: 'Auto ({autoCount})',
183
+ values: { autoCount },
184
+ }),
185
+ value: 'auto',
186
+ },
187
+ ...[2, 3, 4, 5, 6, 7, 8].map((count) => ({
188
+ label: String(count),
189
+ value: String(count),
190
+ })),
191
+ ], onChange: (value) => update({ stringerCount: value === 'auto' ? undefined : Number(value) }) }), _jsx(SelectControl, { label: i18n._({ id: 'node.stair.structureControls.treads', message: 'Treads' }), value: structure.treadStock ?? 'auto', options: [
192
+ {
193
+ label: i18n._({
194
+ id: 'node.stair.structureControls.autoTreads',
195
+ message: 'Auto ({treads})',
196
+ values: { treads: i18n._(TREAD_LABELS[resolved.treadStock]) },
197
+ }),
198
+ value: 'auto',
199
+ },
200
+ ...Object.keys(TREAD_LABELS).map((stock) => ({
201
+ label: i18n._(TREAD_LABELS[stock]),
202
+ value: stock,
203
+ })),
204
+ ], onChange: (value) => update({ treadStock: value === 'auto' ? undefined : value }) }), _jsx(SelectControl, { label: i18n._({ id: 'node.stair.structureControls.risers', message: 'Risers' }), value: choiceOf(structure.closedRisers), options: [
205
+ {
206
+ label: resolved.closedRisers
207
+ ? i18n._({
208
+ id: 'node.stair.structureControls.autoClosed',
209
+ message: 'Auto (closed)',
210
+ })
211
+ : i18n._({
212
+ id: 'node.stair.structureControls.autoOpen',
213
+ message: 'Auto (open)',
214
+ }),
215
+ value: 'auto',
216
+ },
217
+ {
218
+ label: i18n._({
219
+ id: 'node.stair.structureControls.closed1x8Boards',
220
+ message: 'Closed (1x8 boards)',
221
+ }),
222
+ value: 'yes',
223
+ },
224
+ {
225
+ label: i18n._({ id: 'node.stair.structureControls.open', message: 'Open' }),
226
+ value: 'no',
227
+ },
228
+ ], onChange: (value) => update({ closedRisers: choiceValue(value) }) }), wood ? (_jsx(SelectControl, { label: i18n._({ id: 'node.stair.structureControls.lumber', message: 'Lumber' }), value: choiceOf(structure.treated), options: [
229
+ {
230
+ label: resolved.treated
231
+ ? i18n._({
232
+ id: 'node.stair.structureControls.autoPressureTreated',
233
+ message: 'Auto (pressure-treated)',
234
+ })
235
+ : i18n._({
236
+ id: 'node.stair.structureControls.autoUntreated',
237
+ message: 'Auto (untreated)',
238
+ }),
239
+ value: 'auto',
240
+ },
241
+ {
242
+ label: i18n._({
243
+ id: 'node.stair.structureControls.pressureTreated',
244
+ message: 'Pressure-treated',
245
+ }),
246
+ value: 'yes',
247
+ },
248
+ {
249
+ label: i18n._({
250
+ id: 'node.stair.structureControls.untreated',
251
+ message: 'Untreated',
252
+ }),
253
+ value: 'no',
254
+ },
255
+ ], onChange: (value) => update({ treated: choiceValue(value) }) })) : null] })) : null, _jsx(MetricControl, { label: i18n._({ id: 'node.stair.structureControls.nosing', message: 'Nosing' }), min: 0, max: 0.1, value: resolved.nosing, onChange: (nosing) => update({ nosing }), unit: "m", step: 0.005, precision: 3 }), _jsx("div", { role: "status", className: "space-y-1 px-1 text-[11px] text-muted-foreground", children: resolved.type === 'concrete' ? (_jsx("div", { children: i18n._({
256
+ id: 'node.stair.structureControls.aSolidPouredFlightOnA',
257
+ message: 'A solid poured flight on a footing; risers closed, no stringers.',
258
+ }) })) : (layouts.map(({ width, layout }, index) => {
259
+ const line = stringerLayoutLine(layout, formatLinearMeasurement(layout.spacing, unit, metricNotation), i18n);
260
+ return (_jsx("div", { children: layouts.length > 1
261
+ ? i18n._({
262
+ id: 'node.stair.structureControls.flightLayout',
263
+ message: 'Flight {number}: {layout}',
264
+ values: { number: index + 1, layout: line },
265
+ })
266
+ : line }, `${index}-${width}`));
267
+ })) })] })) : null] }));
268
+ }
269
+ /** The structure controls in the parametric inspector, over the stair's own flights. */
270
+ export function StairStructureField({ node, onUpdate, }) {
271
+ const segments = useScene(useShallow((state) => (node.children ?? [])
272
+ .map((id) => state.nodes[id])
273
+ .filter((child) => child?.type === 'stair-segment')));
274
+ return _jsx(StairStructureControls, { node: node, segments: segments, onUpdate: onUpdate });
275
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/stair/tool.tsx"],"names":[],"mappings":"AA+TA,MAAM,CAAC,OAAO,UAAU,SAAS,gCA8dhC"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/stair/tool.tsx"],"names":[],"mappings":"AAwUA,MAAM,CAAC,OAAO,UAAU,SAAS,gCA8dhC"}
@@ -6,6 +6,7 @@ import { useViewer } from '@pascal-app/viewer';
6
6
  import { useThree } from '@react-three/fiber';
7
7
  import { useEffect, useMemo, useRef } from 'react';
8
8
  import * as THREE from 'three';
9
+ import { newStairStructure, pickedStairRailingMode, surfaceFlightRailingMode, } from './placement-defaults.js';
9
10
  import { createStairCommitGate, swallowFollowUpBrowserClick } from './stair-click-guard.js';
10
11
  const GRID_OFFSET = 0.02;
11
12
  /** Figma-style alignment-snap threshold (meters), matching the move tools. */
@@ -66,8 +67,15 @@ function createSeedStairSegment(rise) {
66
67
  thickness: DEFAULT_STAIR_THICKNESS,
67
68
  });
68
69
  }
70
+ /** The railing mode picked for the stair tool, when one is. */
71
+ function pickedRailingMode() {
72
+ return pickedStairRailingMode(useEditor.getState().toolDefaults.stair?.railingMode);
73
+ }
74
+ /** A deck, porch or patio flight's railing (`surfaceFlightRailingMode`), the tool's pick first. */
75
+ function surfaceSnapRailingMode(snap) {
76
+ return surfaceFlightRailingMode(snap, pickedRailingMode());
77
+ }
69
78
  function createDefaultStairNode({ name, levelId, nextLevelId, position, rotation, segmentId, }) {
70
- const railingMode = useEditor.getState().toolDefaults.stair?.railingMode;
71
79
  return StairNode.parse({
72
80
  name,
73
81
  parentId: levelId,
@@ -89,12 +97,8 @@ function createDefaultStairNode({ name, levelId, nextLevelId, position, rotation
89
97
  showCenterColumn: DEFAULT_SPIRAL_SHOW_CENTER_COLUMN,
90
98
  showStepSupports: DEFAULT_SPIRAL_SHOW_STEP_SUPPORTS,
91
99
  railingHeight: DEFAULT_STAIR_RAILING_HEIGHT,
92
- railingMode: railingMode === 'none' ||
93
- railingMode === 'left' ||
94
- railingMode === 'right' ||
95
- railingMode === 'both'
96
- ? railingMode
97
- : DEFAULT_STAIR_RAILING_MODE,
100
+ railingMode: pickedRailingMode() ?? DEFAULT_STAIR_RAILING_MODE,
101
+ structure: newStairStructure(useEditor.getState().toolDefaults.stair?.structure),
98
102
  children: [segmentId],
99
103
  });
100
104
  }
@@ -136,7 +140,7 @@ function commitStairPlacement(levelId, position, rotation, supportSurface, surfa
136
140
  stepCount: surfaceSnap.stepCount,
137
141
  slabOpeningMode: 'none',
138
142
  destinationSurfaceId: surfaceSnap.surfaceId,
139
- railingMode: 'none',
143
+ railingMode: surfaceSnapRailingMode(surfaceSnap),
140
144
  }
141
145
  : {}),
142
146
  });
@@ -289,7 +293,7 @@ export default function StairTool() {
289
293
  stair.totalRise = surfaceSnap.totalRise;
290
294
  stair.destinationSurfaceId = surfaceSnap.surfaceId;
291
295
  stair.slabOpeningMode = 'none';
292
- stair.railingMode = 'none';
296
+ stair.railingMode = surfaceSnapRailingMode(surfaceSnap);
293
297
  segment = {
294
298
  ...segment,
295
299
  height: surfaceSnap.totalRise,
@@ -42,6 +42,11 @@ export declare function useStairRenderData(stair: StairNode): {
42
42
  url: string;
43
43
  repeat?: [number, number] | undefined;
44
44
  scale?: number | undefined;
45
+ offset?: [number, number] | undefined;
46
+ normalMap?: string | undefined;
47
+ normalScale?: number | undefined;
48
+ bumpMap?: string | undefined;
49
+ bumpScale?: number | undefined;
45
50
  } | undefined;
46
51
  } | undefined;
47
52
  materialPreset?: string | undefined;
@@ -60,6 +65,11 @@ export declare function useStairRenderData(stair: StairNode): {
60
65
  url: string;
61
66
  repeat?: [number, number] | undefined;
62
67
  scale?: number | undefined;
68
+ offset?: [number, number] | undefined;
69
+ normalMap?: string | undefined;
70
+ normalScale?: number | undefined;
71
+ bumpMap?: string | undefined;
72
+ bumpScale?: number | undefined;
63
73
  } | undefined;
64
74
  } | undefined;
65
75
  railingMaterialPreset?: string | undefined;
@@ -78,6 +88,11 @@ export declare function useStairRenderData(stair: StairNode): {
78
88
  url: string;
79
89
  repeat?: [number, number] | undefined;
80
90
  scale?: number | undefined;
91
+ offset?: [number, number] | undefined;
92
+ normalMap?: string | undefined;
93
+ normalScale?: number | undefined;
94
+ bumpMap?: string | undefined;
95
+ bumpScale?: number | undefined;
81
96
  } | undefined;
82
97
  } | undefined;
83
98
  treadMaterialPreset?: string | undefined;
@@ -96,6 +111,11 @@ export declare function useStairRenderData(stair: StairNode): {
96
111
  url: string;
97
112
  repeat?: [number, number] | undefined;
98
113
  scale?: number | undefined;
114
+ offset?: [number, number] | undefined;
115
+ normalMap?: string | undefined;
116
+ normalScale?: number | undefined;
117
+ bumpMap?: string | undefined;
118
+ bumpScale?: number | undefined;
99
119
  } | undefined;
100
120
  } | undefined;
101
121
  sideMaterialPreset?: string | undefined;
@@ -134,6 +154,17 @@ export declare function useStairRenderData(stair: StairNode): {
134
154
  stringerWidth: number;
135
155
  stringerDepth: number;
136
156
  } | undefined;
157
+ structure?: {
158
+ type: "concrete" | "steel-stringers" | "wood-stringers";
159
+ stringerStock: "2x10" | "2x12";
160
+ stringerType: "cut" | "housed";
161
+ stringerSpacing: number;
162
+ stringerCount?: number | undefined;
163
+ treadStock?: "2x12" | "2x6-pair" | "5/4x6-pair" | "plywood-finish" | undefined;
164
+ closedRisers?: boolean | undefined;
165
+ treated?: boolean | undefined;
166
+ nosing?: number | undefined;
167
+ } | undefined;
137
168
  innerRadius: number;
138
169
  sweepAngle: number;
139
170
  topLandingMode: "integrated" | "none";
@@ -206,6 +237,11 @@ export declare function useStairRenderData(stair: StairNode): {
206
237
  url: string;
207
238
  repeat?: [number, number] | undefined;
208
239
  scale?: number | undefined;
240
+ offset?: [number, number] | undefined;
241
+ normalMap?: string | undefined;
242
+ normalScale?: number | undefined;
243
+ bumpMap?: string | undefined;
244
+ bumpScale?: number | undefined;
209
245
  } | undefined;
210
246
  } | undefined;
211
247
  materialPreset?: string | undefined;
@@ -280,6 +316,11 @@ export declare function useStairRenderData(stair: StairNode): {
280
316
  url: string;
281
317
  repeat?: [number, number] | undefined;
282
318
  scale?: number | undefined;
319
+ offset?: [number, number] | undefined;
320
+ normalMap?: string | undefined;
321
+ normalScale?: number | undefined;
322
+ bumpMap?: string | undefined;
323
+ bumpScale?: number | undefined;
283
324
  } | undefined;
284
325
  } | undefined;
285
326
  materialPreset?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"use-stair-render-data.d.ts","sourceRoot":"","sources":["../../src/stair/use-stair-render-data.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,kBAAkB,CAAA;AA0BzB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,UAkCjD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBlD;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"use-stair-render-data.d.ts","sourceRoot":"","sources":["../../src/stair/use-stair-render-data.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,kBAAkB,CAAA;AA0BzB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,UAkCjD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBlD;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/stair-segment/panel.tsx"],"names":[],"mappings":"AA2CA,MAAM,CAAC,OAAO,UAAU,iBAAiB,uCAqXxC"}
1
+ {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/stair-segment/panel.tsx"],"names":[],"mappings":"AAgDA,MAAM,CAAC,OAAO,UAAU,iBAAiB,uCA+axC"}