@pascal-app/nodes 1.0.3 → 1.0.4

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 (708) hide show
  1. package/dist/block/definition.d.ts.map +1 -1
  2. package/dist/block/definition.js +18 -3
  3. package/dist/block/floorplan.d.ts +11 -1
  4. package/dist/block/floorplan.d.ts.map +1 -1
  5. package/dist/block/floorplan.js +81 -13
  6. package/dist/block/geometry.d.ts +2 -2
  7. package/dist/block/geometry.d.ts.map +1 -1
  8. package/dist/block/geometry.js +39 -24
  9. package/dist/block/hosted-edit.d.ts.map +1 -1
  10. package/dist/block/hosted-edit.js +25 -0
  11. package/dist/block/material-slots.d.ts +1 -3
  12. package/dist/block/material-slots.d.ts.map +1 -1
  13. package/dist/block/material-slots.js +1 -11
  14. package/dist/block/paint.d.ts.map +1 -1
  15. package/dist/block/paint.js +4 -10
  16. package/dist/block/panel.d.ts.map +1 -1
  17. package/dist/block/panel.js +8 -3
  18. package/dist/block/selection.d.ts.map +1 -1
  19. package/dist/block/selection.js +2 -2
  20. package/dist/box-vent/definition.d.ts.map +1 -1
  21. package/dist/box-vent/definition.js +2 -5
  22. package/dist/box-vent/panel.d.ts.map +1 -1
  23. package/dist/box-vent/panel.js +5 -28
  24. package/dist/cabinet/countertop-layout.d.ts +13 -2
  25. package/dist/cabinet/countertop-layout.d.ts.map +1 -1
  26. package/dist/cabinet/definition.d.ts.map +1 -1
  27. package/dist/cabinet/definition.js +1 -2
  28. package/dist/cabinet/floorplan.d.ts.map +1 -1
  29. package/dist/cabinet/floorplan.js +125 -28
  30. package/dist/cabinet/geometry/shared.d.ts +1 -2
  31. package/dist/cabinet/geometry/shared.d.ts.map +1 -1
  32. package/dist/cabinet/geometry/shared.js +1 -2
  33. package/dist/cabinet/run-layout.d.ts.map +1 -1
  34. package/dist/cabinet/run-layout.js +8 -5
  35. package/dist/cabinet/run-ops.d.ts +13 -2
  36. package/dist/cabinet/run-ops.d.ts.map +1 -1
  37. package/dist/cabinet/tool.d.ts.map +1 -1
  38. package/dist/cabinet/tool.js +22 -24
  39. package/dist/cabinet/wall-snap.d.ts.map +1 -1
  40. package/dist/cabinet/wall-snap.js +8 -8
  41. package/dist/ceiling/boundary-editor.d.ts.map +1 -1
  42. package/dist/ceiling/boundary-editor.js +5 -3
  43. package/dist/ceiling/definition.d.ts +4 -4
  44. package/dist/ceiling/definition.d.ts.map +1 -1
  45. package/dist/ceiling/definition.js +15 -15
  46. package/dist/ceiling/floorplan-affordances.d.ts +84 -4
  47. package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
  48. package/dist/ceiling/floorplan-affordances.js +0 -1
  49. package/dist/ceiling/floorplan-move.d.ts.map +1 -1
  50. package/dist/ceiling/floorplan-move.js +0 -1
  51. package/dist/ceiling/floorplan.d.ts +1 -1
  52. package/dist/ceiling/floorplan.d.ts.map +1 -1
  53. package/dist/ceiling/floorplan.js +2 -1
  54. package/dist/ceiling/height-bounds.d.ts +19 -0
  55. package/dist/ceiling/height-bounds.d.ts.map +1 -0
  56. package/dist/ceiling/height-bounds.js +24 -0
  57. package/dist/ceiling/hole-editor.d.ts.map +1 -1
  58. package/dist/ceiling/hole-editor.js +3 -4
  59. package/dist/ceiling/materials.d.ts +1 -1
  60. package/dist/ceiling/materials.d.ts.map +1 -1
  61. package/dist/ceiling/materials.js +10 -3
  62. package/dist/ceiling/paint.d.ts +2 -8
  63. package/dist/ceiling/paint.d.ts.map +1 -1
  64. package/dist/ceiling/paint.js +121 -24
  65. package/dist/ceiling/panel.d.ts.map +1 -1
  66. package/dist/ceiling/panel.js +40 -23
  67. package/dist/ceiling/renderer.d.ts.map +1 -1
  68. package/dist/ceiling/renderer.js +41 -5
  69. package/dist/chimney/move-tool.d.ts.map +1 -1
  70. package/dist/chimney/move-tool.js +8 -2
  71. package/dist/chimney/paint.d.ts.map +1 -1
  72. package/dist/chimney/paint.js +3 -10
  73. package/dist/column/definition.d.ts.map +1 -1
  74. package/dist/column/definition.js +24 -2
  75. package/dist/column/floorplan-affordances.d.ts.map +1 -1
  76. package/dist/column/floorplan-affordances.js +5 -0
  77. package/dist/column/floorplan.d.ts +1 -1
  78. package/dist/column/floorplan.d.ts.map +1 -1
  79. package/dist/column/floorplan.js +47 -2
  80. package/dist/column/hosted-resize.d.ts +101 -2
  81. package/dist/column/hosted-resize.d.ts.map +1 -1
  82. package/dist/column/panel.d.ts.map +1 -1
  83. package/dist/column/panel.js +147 -146
  84. package/dist/column/renderer.d.ts.map +1 -1
  85. package/dist/column/renderer.js +6 -4
  86. package/dist/column/surface.d.ts.map +1 -1
  87. package/dist/column/surface.js +7 -0
  88. package/dist/construction-dimension/floorplan.js +7 -3
  89. package/dist/cupola/definition.d.ts.map +1 -1
  90. package/dist/cupola/definition.js +2 -8
  91. package/dist/cupola/panel.d.ts.map +1 -1
  92. package/dist/cupola/panel.js +5 -23
  93. package/dist/door/definition.d.ts.map +1 -1
  94. package/dist/door/definition.js +12 -3
  95. package/dist/door/door-math.d.ts +5 -10
  96. package/dist/door/door-math.d.ts.map +1 -1
  97. package/dist/door/door-math.js +14 -15
  98. package/dist/door/floorplan-move.d.ts.map +1 -1
  99. package/dist/door/floorplan-move.js +3 -1
  100. package/dist/door/floorplan.d.ts.map +1 -1
  101. package/dist/door/floorplan.js +55 -21
  102. package/dist/door/mechanism.d.ts +4 -0
  103. package/dist/door/mechanism.d.ts.map +1 -0
  104. package/dist/door/mechanism.js +24 -0
  105. package/dist/door/move-tool.d.ts.map +1 -1
  106. package/dist/door/move-tool.js +72 -48
  107. package/dist/door/paint.d.ts.map +1 -1
  108. package/dist/door/paint.js +3 -0
  109. package/dist/door/panel.d.ts.map +1 -1
  110. package/dist/door/panel.js +34 -259
  111. package/dist/door/placement.d.ts +45 -0
  112. package/dist/door/placement.d.ts.map +1 -0
  113. package/dist/door/placement.js +51 -0
  114. package/dist/door/preview.d.ts.map +1 -1
  115. package/dist/door/preview.js +2 -0
  116. package/dist/door/renderer.d.ts.map +1 -1
  117. package/dist/door/renderer.js +3 -2
  118. package/dist/door/tool.d.ts.map +1 -1
  119. package/dist/door/tool.js +92 -21
  120. package/dist/dormer/csg-geometry.d.ts.map +1 -1
  121. package/dist/dormer/csg-geometry.js +2 -0
  122. package/dist/dormer/paint.d.ts.map +1 -1
  123. package/dist/dormer/paint.js +2 -5
  124. package/dist/dormer/panel.d.ts.map +1 -1
  125. package/dist/dormer/panel.js +4 -14
  126. package/dist/downspout/definition.d.ts.map +1 -1
  127. package/dist/downspout/definition.js +2 -2
  128. package/dist/duct-fitting/definition.d.ts.map +1 -1
  129. package/dist/duct-fitting/definition.js +2 -1
  130. package/dist/duct-fitting/geometry.d.ts.map +1 -1
  131. package/dist/duct-fitting/geometry.js +1 -1
  132. package/dist/duct-fitting/move-tool.d.ts.map +1 -1
  133. package/dist/duct-fitting/move-tool.js +8 -2
  134. package/dist/duct-segment/definition.d.ts.map +1 -1
  135. package/dist/duct-segment/definition.js +2 -2
  136. package/dist/duct-segment/geometry.d.ts.map +1 -1
  137. package/dist/duct-segment/geometry.js +1 -1
  138. package/dist/duct-segment/move-tool.d.ts.map +1 -1
  139. package/dist/duct-segment/move-tool.js +8 -2
  140. package/dist/elevator/definition.d.ts.map +1 -1
  141. package/dist/elevator/definition.js +1 -2
  142. package/dist/elevator/panel.d.ts.map +1 -1
  143. package/dist/elevator/panel.js +5 -27
  144. package/dist/elevator/parametrics.js +1 -1
  145. package/dist/elevator/renderer.d.ts.map +1 -1
  146. package/dist/elevator/renderer.js +3 -4
  147. package/dist/eyebrow-vent/definition.d.ts.map +1 -1
  148. package/dist/eyebrow-vent/definition.js +2 -5
  149. package/dist/eyebrow-vent/paint.d.ts.map +1 -1
  150. package/dist/eyebrow-vent/paint.js +3 -6
  151. package/dist/eyebrow-vent/panel.d.ts.map +1 -1
  152. package/dist/eyebrow-vent/panel.js +5 -23
  153. package/dist/fence/actions/move-endpoint.d.ts +1 -1
  154. package/dist/fence/actions/move-endpoint.d.ts.map +1 -1
  155. package/dist/fence/actions/move-endpoint.js +2 -1
  156. package/dist/fence/definition.d.ts +2 -1
  157. package/dist/fence/definition.d.ts.map +1 -1
  158. package/dist/fence/definition.js +83 -28
  159. package/dist/fence/drafting.d.ts +36 -0
  160. package/dist/fence/drafting.d.ts.map +1 -0
  161. package/dist/fence/drafting.js +210 -0
  162. package/dist/fence/feature-tool.d.ts +4 -0
  163. package/dist/fence/feature-tool.d.ts.map +1 -0
  164. package/dist/fence/feature-tool.js +140 -0
  165. package/dist/fence/features.d.ts +2 -0
  166. package/dist/fence/features.d.ts.map +1 -0
  167. package/dist/fence/features.js +12 -0
  168. package/dist/fence/floorplan-affordances.d.ts.map +1 -1
  169. package/dist/fence/floorplan-affordances.js +2 -1
  170. package/dist/fence/floorplan.d.ts +2 -3
  171. package/dist/fence/floorplan.d.ts.map +1 -1
  172. package/dist/fence/floorplan.js +131 -71
  173. package/dist/fence/geometry-parts.d.ts +50 -0
  174. package/dist/fence/geometry-parts.d.ts.map +1 -0
  175. package/dist/fence/geometry-parts.js +1144 -0
  176. package/dist/fence/geometry.d.ts +2 -3
  177. package/dist/fence/geometry.d.ts.map +1 -1
  178. package/dist/fence/geometry.js +84 -7
  179. package/dist/fence/index.d.ts +1 -0
  180. package/dist/fence/index.d.ts.map +1 -1
  181. package/dist/fence/index.js +1 -0
  182. package/dist/fence/inspector-editors.d.ts +15 -0
  183. package/dist/fence/inspector-editors.d.ts.map +1 -1
  184. package/dist/fence/inspector-editors.js +128 -3
  185. package/dist/fence/lift.d.ts.map +1 -1
  186. package/dist/fence/lift.js +5 -2
  187. package/dist/fence/move-tool.js +2 -1
  188. package/dist/fence/panel-model.d.ts +4 -0
  189. package/dist/fence/panel-model.d.ts.map +1 -0
  190. package/dist/fence/panel-model.js +12 -0
  191. package/dist/fence/parametrics.d.ts +0 -12
  192. package/dist/fence/parametrics.d.ts.map +1 -1
  193. package/dist/fence/parametrics.js +185 -18
  194. package/dist/fence/system.d.ts.map +1 -1
  195. package/dist/fence/system.js +141 -31
  196. package/dist/fence/tool.d.ts.map +1 -1
  197. package/dist/fence/tool.js +256 -47
  198. package/dist/fence-feature/actions.d.ts +7 -0
  199. package/dist/fence-feature/actions.d.ts.map +1 -0
  200. package/dist/fence-feature/actions.js +26 -0
  201. package/dist/fence-feature/definition.d.ts +4 -0
  202. package/dist/fence-feature/definition.d.ts.map +1 -0
  203. package/dist/fence-feature/definition.js +112 -0
  204. package/dist/fence-feature/floorplan-affordances.d.ts +3 -0
  205. package/dist/fence-feature/floorplan-affordances.d.ts.map +1 -0
  206. package/dist/fence-feature/floorplan-affordances.js +37 -0
  207. package/dist/fence-feature/floorplan.d.ts +4 -0
  208. package/dist/fence-feature/floorplan.d.ts.map +1 -0
  209. package/dist/fence-feature/floorplan.js +120 -0
  210. package/dist/fence-feature/geometry.d.ts +5 -0
  211. package/dist/fence-feature/geometry.d.ts.map +1 -0
  212. package/dist/fence-feature/geometry.js +43 -0
  213. package/dist/fence-feature/handles.d.ts +5 -0
  214. package/dist/fence-feature/handles.d.ts.map +1 -0
  215. package/dist/fence-feature/handles.js +84 -0
  216. package/dist/fence-feature/inspector.d.ts +6 -0
  217. package/dist/fence-feature/inspector.d.ts.map +1 -0
  218. package/dist/fence-feature/inspector.js +214 -0
  219. package/dist/fence-feature/interaction.d.ts +3 -0
  220. package/dist/fence-feature/interaction.d.ts.map +1 -0
  221. package/dist/fence-feature/interaction.js +41 -0
  222. package/dist/fence-feature/move-session.d.ts +9 -0
  223. package/dist/fence-feature/move-session.d.ts.map +1 -0
  224. package/dist/fence-feature/move-session.js +48 -0
  225. package/dist/fence-feature/move-tool.d.ts +5 -0
  226. package/dist/fence-feature/move-tool.d.ts.map +1 -0
  227. package/dist/fence-feature/move-tool.js +58 -0
  228. package/dist/fence-feature/pick-target.d.ts +7 -0
  229. package/dist/fence-feature/pick-target.d.ts.map +1 -0
  230. package/dist/fence-feature/pick-target.js +52 -0
  231. package/dist/floor-opening/definition.d.ts +3 -0
  232. package/dist/floor-opening/definition.d.ts.map +1 -0
  233. package/dist/floor-opening/definition.js +41 -0
  234. package/dist/floor-opening/floorplan.d.ts +156 -0
  235. package/dist/floor-opening/floorplan.d.ts.map +1 -0
  236. package/dist/floor-opening/floorplan.js +63 -0
  237. package/dist/gutter/definition.d.ts.map +1 -1
  238. package/dist/gutter/definition.js +2 -2
  239. package/dist/imported-mesh/definition.d.ts.map +1 -1
  240. package/dist/imported-mesh/definition.js +2 -0
  241. package/dist/imported-mesh/geometry.d.ts +1 -1
  242. package/dist/imported-mesh/geometry.d.ts.map +1 -1
  243. package/dist/imported-mesh/geometry.js +40 -12
  244. package/dist/index.d.ts +13 -2
  245. package/dist/index.d.ts.map +1 -1
  246. package/dist/index.js +20 -2
  247. package/dist/item/authored-face-host.d.ts +10 -0
  248. package/dist/item/authored-face-host.d.ts.map +1 -0
  249. package/dist/item/authored-face-host.js +87 -0
  250. package/dist/item/authored-params.d.ts +15 -0
  251. package/dist/item/authored-params.d.ts.map +1 -0
  252. package/dist/item/authored-params.js +72 -0
  253. package/dist/item/definition.d.ts +2 -2
  254. package/dist/item/definition.d.ts.map +1 -1
  255. package/dist/item/definition.js +33 -4
  256. package/dist/item/floorplan.d.ts +1 -1
  257. package/dist/item/floorplan.d.ts.map +1 -1
  258. package/dist/item/floorplan.js +35 -5
  259. package/dist/item/index.d.ts +1 -0
  260. package/dist/item/index.d.ts.map +1 -1
  261. package/dist/item/index.js +1 -0
  262. package/dist/item/model-loader.d.ts +2 -0
  263. package/dist/item/model-loader.d.ts.map +1 -1
  264. package/dist/item/model-loader.js +55 -23
  265. package/dist/item/move-tool.js +4 -4
  266. package/dist/item/paint.d.ts.map +1 -1
  267. package/dist/item/paint.js +5 -24
  268. package/dist/item/panel.d.ts +1 -3
  269. package/dist/item/panel.d.ts.map +1 -1
  270. package/dist/item/panel.js +20 -24
  271. package/dist/item/placement-notice.d.ts +14 -0
  272. package/dist/item/placement-notice.d.ts.map +1 -0
  273. package/dist/item/placement-notice.js +38 -0
  274. package/dist/item/plan-symbols.d.ts +67 -0
  275. package/dist/item/plan-symbols.d.ts.map +1 -0
  276. package/dist/item/plan-symbols.js +407 -0
  277. package/dist/item/renderer.d.ts +10 -0
  278. package/dist/item/renderer.d.ts.map +1 -1
  279. package/dist/item/renderer.js +64 -38
  280. package/dist/item/script-param-defaults.d.ts +12 -0
  281. package/dist/item/script-param-defaults.d.ts.map +1 -0
  282. package/dist/item/script-param-defaults.js +34 -0
  283. package/dist/lean-to-extension/definition.d.ts.map +1 -1
  284. package/dist/lean-to-extension/definition.js +1 -2
  285. package/dist/lean-to-extension/geometry.d.ts.map +1 -1
  286. package/dist/lean-to-extension/geometry.js +1 -1
  287. package/dist/lean-to-extension/layout.d.ts.map +1 -1
  288. package/dist/lean-to-extension/layout.js +2 -3
  289. package/dist/lean-to-extension/placement-validation.d.ts.map +1 -1
  290. package/dist/lean-to-extension/placement-validation.js +5 -5
  291. package/dist/lean-to-extension/tool.d.ts.map +1 -1
  292. package/dist/lean-to-extension/tool.js +5 -5
  293. package/dist/lineset/move-tool.d.ts.map +1 -1
  294. package/dist/lineset/move-tool.js +8 -2
  295. package/dist/liquid-line/move-tool.d.ts.map +1 -1
  296. package/dist/liquid-line/move-tool.js +8 -2
  297. package/dist/measurement/definition.js +1 -1
  298. package/dist/pipe-fitting/move-tool.d.ts.map +1 -1
  299. package/dist/pipe-fitting/move-tool.js +8 -2
  300. package/dist/pipe-segment/move-tool.d.ts.map +1 -1
  301. package/dist/pipe-segment/move-tool.js +8 -2
  302. package/dist/procedural-item/animation.d.ts +8 -0
  303. package/dist/procedural-item/animation.d.ts.map +1 -0
  304. package/dist/procedural-item/animation.js +116 -0
  305. package/dist/procedural-item/definition.d.ts.map +1 -1
  306. package/dist/procedural-item/definition.js +74 -8
  307. package/dist/procedural-item/geometry.d.ts +5 -1
  308. package/dist/procedural-item/geometry.d.ts.map +1 -1
  309. package/dist/procedural-item/geometry.js +239 -15
  310. package/dist/procedural-item/renderer.d.ts.map +1 -1
  311. package/dist/procedural-item/renderer.js +272 -23
  312. package/dist/ridge-vent/panel.d.ts.map +1 -1
  313. package/dist/ridge-vent/panel.js +5 -23
  314. package/dist/ridge-vent/renderer.d.ts.map +1 -1
  315. package/dist/ridge-vent/renderer.js +9 -8
  316. package/dist/roof/definition.d.ts.map +1 -1
  317. package/dist/roof/definition.js +4 -1
  318. package/dist/roof/floorplan.d.ts +8 -0
  319. package/dist/roof/floorplan.d.ts.map +1 -1
  320. package/dist/roof/floorplan.js +194 -18
  321. package/dist/roof/panel-model.d.ts.map +1 -1
  322. package/dist/roof/panel-model.js +10 -6
  323. package/dist/roof/panel.d.ts.map +1 -1
  324. package/dist/roof/panel.js +3 -10
  325. package/dist/roof/renderer.d.ts.map +1 -1
  326. package/dist/roof/renderer.js +5 -2
  327. package/dist/roof-segment/panel.d.ts.map +1 -1
  328. package/dist/roof-segment/panel.js +5 -24
  329. package/dist/roof-segment/renderer.d.ts.map +1 -1
  330. package/dist/roof-segment/renderer.js +17 -8
  331. package/dist/separator/definition.d.ts +3 -0
  332. package/dist/separator/definition.d.ts.map +1 -0
  333. package/dist/separator/definition.js +39 -0
  334. package/dist/separator/renderer.d.ts +5 -0
  335. package/dist/separator/renderer.d.ts.map +1 -0
  336. package/dist/separator/renderer.js +36 -0
  337. package/dist/shared/duct-body-paint.d.ts +0 -4
  338. package/dist/shared/duct-body-paint.d.ts.map +1 -1
  339. package/dist/shared/duct-body-paint.js +1 -5
  340. package/dist/shared/item-interaction-actions.d.ts +6 -0
  341. package/dist/shared/item-interaction-actions.d.ts.map +1 -0
  342. package/dist/shared/item-interaction-actions.js +27 -0
  343. package/dist/shared/item-interactions.d.ts +9 -0
  344. package/dist/shared/item-interactions.d.ts.map +1 -0
  345. package/dist/shared/item-interactions.js +74 -0
  346. package/dist/shared/item-light-placement.d.ts +2 -0
  347. package/dist/shared/item-light-placement.d.ts.map +1 -0
  348. package/dist/shared/item-light-placement.js +3 -0
  349. package/dist/shared/move-roof-tool.js +2 -1
  350. package/dist/shared/node-batch/batchable.d.ts +12 -0
  351. package/dist/shared/node-batch/batchable.d.ts.map +1 -0
  352. package/dist/shared/node-batch/batchable.js +41 -0
  353. package/dist/shared/node-batch/candidates.d.ts +7 -5
  354. package/dist/shared/node-batch/candidates.d.ts.map +1 -1
  355. package/dist/shared/node-batch/candidates.js +43 -59
  356. package/dist/shared/node-batch/release.d.ts +8 -0
  357. package/dist/shared/node-batch/release.d.ts.map +1 -0
  358. package/dist/shared/node-batch/release.js +16 -0
  359. package/dist/shared/node-batch/system.d.ts.map +1 -1
  360. package/dist/shared/node-batch/system.js +17 -12
  361. package/dist/shared/node-batch/types.d.ts +4 -1
  362. package/dist/shared/node-batch/types.d.ts.map +1 -1
  363. package/dist/shared/opening-documentation.d.ts +13 -1
  364. package/dist/shared/opening-documentation.d.ts.map +1 -1
  365. package/dist/shared/opening-documentation.js +245 -59
  366. package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
  367. package/dist/shared/opening-guides-runtime.js +17 -14
  368. package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
  369. package/dist/shared/opening-placement-dimensions.js +3 -3
  370. package/dist/shared/opening-plane-offset.d.ts +23 -0
  371. package/dist/shared/opening-plane-offset.d.ts.map +1 -0
  372. package/dist/shared/opening-plane-offset.js +24 -0
  373. package/dist/shared/polygon-centroid-move.d.ts.map +1 -1
  374. package/dist/shared/polygon-centroid-move.js +4 -1
  375. package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
  376. package/dist/shared/polygon-vertex-affordance.js +19 -15
  377. package/dist/shared/run-hangers.d.ts.map +1 -1
  378. package/dist/shared/run-hangers.js +5 -4
  379. package/dist/shared/scripted-opening-handles.d.ts +18 -0
  380. package/dist/shared/scripted-opening-handles.d.ts.map +1 -0
  381. package/dist/shared/scripted-opening-handles.js +53 -0
  382. package/dist/shared/scripted-opening.d.ts +25 -0
  383. package/dist/shared/scripted-opening.d.ts.map +1 -0
  384. package/dist/shared/scripted-opening.js +72 -0
  385. package/dist/shared/slot-paint.d.ts +14 -2
  386. package/dist/shared/slot-paint.d.ts.map +1 -1
  387. package/dist/shared/slot-paint.js +29 -29
  388. package/dist/shared/surface-paint.d.ts.map +1 -1
  389. package/dist/shared/surface-paint.js +2 -5
  390. package/dist/shared/swap-preview-material.d.ts +11 -0
  391. package/dist/shared/swap-preview-material.d.ts.map +1 -0
  392. package/dist/shared/swap-preview-material.js +16 -0
  393. package/dist/shared/system-checks.d.ts.map +1 -1
  394. package/dist/shared/system-checks.js +5 -3
  395. package/dist/shared/wall-attach-target.d.ts +3 -10
  396. package/dist/shared/wall-attach-target.d.ts.map +1 -1
  397. package/dist/shared/wall-attach-target.js +3 -63
  398. package/dist/shared/wall-opening-ceiling.d.ts +5 -15
  399. package/dist/shared/wall-opening-ceiling.d.ts.map +1 -1
  400. package/dist/shared/wall-opening-ceiling.js +10 -18
  401. package/dist/shelf/definition.d.ts.map +1 -1
  402. package/dist/shelf/definition.js +1 -1
  403. package/dist/shelf/geometry.d.ts.map +1 -1
  404. package/dist/shelf/geometry.js +1 -2
  405. package/dist/shelf/paint.d.ts.map +1 -1
  406. package/dist/shelf/paint.js +4 -10
  407. package/dist/site/line-ribbon.d.ts +31 -0
  408. package/dist/site/line-ribbon.d.ts.map +1 -0
  409. package/dist/site/line-ribbon.js +117 -0
  410. package/dist/site/lot-mask.d.ts +18 -0
  411. package/dist/site/lot-mask.d.ts.map +1 -0
  412. package/dist/site/lot-mask.js +35 -0
  413. package/dist/site/panel.d.ts +10 -0
  414. package/dist/site/panel.d.ts.map +1 -0
  415. package/dist/site/panel.js +155 -0
  416. package/dist/site/parametrics.d.ts +7 -0
  417. package/dist/site/parametrics.d.ts.map +1 -1
  418. package/dist/site/parametrics.js +8 -0
  419. package/dist/site/recessed-slab-ground-holes.d.ts.map +1 -1
  420. package/dist/site/recessed-slab-ground-holes.js +5 -2
  421. package/dist/site/renderer.d.ts.map +1 -1
  422. package/dist/site/renderer.js +150 -19
  423. package/dist/site/setbacks.d.ts +33 -0
  424. package/dist/site/setbacks.d.ts.map +1 -0
  425. package/dist/site/setbacks.js +204 -0
  426. package/dist/site/terrain-geometry.d.ts +28 -1
  427. package/dist/site/terrain-geometry.d.ts.map +1 -1
  428. package/dist/site/terrain-geometry.js +78 -4
  429. package/dist/site/terrain-holes.d.ts +15 -0
  430. package/dist/site/terrain-holes.d.ts.map +1 -0
  431. package/dist/site/terrain-holes.js +74 -0
  432. package/dist/site/terrain-mesh.d.ts +9 -2
  433. package/dist/site/terrain-mesh.d.ts.map +1 -1
  434. package/dist/site/terrain-mesh.js +36 -9
  435. package/dist/site/terrain-renderer.d.ts +9 -2
  436. package/dist/site/terrain-renderer.d.ts.map +1 -1
  437. package/dist/site/terrain-renderer.js +14 -4
  438. package/dist/slab/boundary-editor.d.ts +1 -1
  439. package/dist/slab/boundary-editor.d.ts.map +1 -1
  440. package/dist/slab/boundary-editor.js +13 -13
  441. package/dist/slab/definition.d.ts.map +1 -1
  442. package/dist/slab/definition.js +19 -3
  443. package/dist/slab/dependency-tracker.d.ts.map +1 -1
  444. package/dist/slab/dependency-tracker.js +67 -7
  445. package/dist/slab/elevation-limit.d.ts.map +1 -1
  446. package/dist/slab/elevation-limit.js +2 -2
  447. package/dist/slab/floorplan-affordances.d.ts +176 -4
  448. package/dist/slab/floorplan-affordances.d.ts.map +1 -1
  449. package/dist/slab/floorplan-affordances.js +0 -1
  450. package/dist/slab/floorplan-move.d.ts.map +1 -1
  451. package/dist/slab/floorplan-move.js +3 -4
  452. package/dist/slab/floorplan.d.ts +7 -0
  453. package/dist/slab/floorplan.d.ts.map +1 -1
  454. package/dist/slab/floorplan.js +22 -5
  455. package/dist/slab/geometry.d.ts.map +1 -1
  456. package/dist/slab/geometry.js +186 -76
  457. package/dist/slab/move-tool.js +7 -6
  458. package/dist/slab/paint.d.ts +18 -5
  459. package/dist/slab/paint.d.ts.map +1 -1
  460. package/dist/slab/paint.js +458 -9
  461. package/dist/slab/panel.d.ts.map +1 -1
  462. package/dist/slab/panel.js +28 -9
  463. package/dist/slab/placement-ownership.d.ts +2 -1
  464. package/dist/slab/placement-ownership.d.ts.map +1 -1
  465. package/dist/slab/placement-ownership.js +2 -2
  466. package/dist/slab/surface-split.d.ts +24 -0
  467. package/dist/slab/surface-split.d.ts.map +1 -0
  468. package/dist/slab/surface-split.js +389 -0
  469. package/dist/slab/tool.d.ts.map +1 -1
  470. package/dist/slab/tool.js +3 -3
  471. package/dist/stair/baluster-geometry.d.ts +21 -0
  472. package/dist/stair/baluster-geometry.d.ts.map +1 -0
  473. package/dist/stair/baluster-geometry.js +74 -0
  474. package/dist/stair/baluster-guard.d.ts +50 -0
  475. package/dist/stair/baluster-guard.d.ts.map +1 -0
  476. package/dist/stair/baluster-guard.js +71 -0
  477. package/dist/stair/boards-guard.d.ts +37 -0
  478. package/dist/stair/boards-guard.d.ts.map +1 -0
  479. package/dist/stair/boards-guard.js +61 -0
  480. package/dist/stair/cable-guard.d.ts +39 -0
  481. package/dist/stair/cable-guard.d.ts.map +1 -0
  482. package/dist/stair/cable-guard.js +105 -0
  483. package/dist/stair/construction-controls.d.ts +15 -0
  484. package/dist/stair/construction-controls.d.ts.map +1 -0
  485. package/dist/stair/construction-controls.js +29 -0
  486. package/dist/stair/continuous-railings.d.ts +10 -0
  487. package/dist/stair/continuous-railings.d.ts.map +1 -0
  488. package/dist/stair/continuous-railings.js +159 -0
  489. package/dist/stair/definition.d.ts.map +1 -1
  490. package/dist/stair/definition.js +16 -37
  491. package/dist/stair/documentation.d.ts +1 -1
  492. package/dist/stair/documentation.d.ts.map +1 -1
  493. package/dist/stair/documentation.js +10 -17
  494. package/dist/stair/floorplan-affordances.d.ts.map +1 -1
  495. package/dist/stair/floorplan-affordances.js +9 -25
  496. package/dist/stair/floorplan.d.ts +1 -23
  497. package/dist/stair/floorplan.d.ts.map +1 -1
  498. package/dist/stair/floorplan.js +102 -86
  499. package/dist/stair/glass-guard.d.ts +72 -0
  500. package/dist/stair/glass-guard.d.ts.map +1 -0
  501. package/dist/stair/glass-guard.js +167 -0
  502. package/dist/stair/guard-path.d.ts +119 -0
  503. package/dist/stair/guard-path.d.ts.map +1 -0
  504. package/dist/stair/guard-path.js +208 -0
  505. package/dist/stair/materials.d.ts +11 -0
  506. package/dist/stair/materials.d.ts.map +1 -0
  507. package/dist/stair/materials.js +51 -0
  508. package/dist/stair/metal-guard.d.ts +38 -0
  509. package/dist/stair/metal-guard.d.ts.map +1 -0
  510. package/dist/stair/metal-guard.js +79 -0
  511. package/dist/stair/paint.d.ts +32 -0
  512. package/dist/stair/paint.d.ts.map +1 -1
  513. package/dist/stair/paint.js +75 -36
  514. package/dist/stair/panel.d.ts.map +1 -1
  515. package/dist/stair/panel.js +154 -17
  516. package/dist/stair/parametrics.d.ts +1 -1
  517. package/dist/stair/parametrics.d.ts.map +1 -1
  518. package/dist/stair/parametrics.js +32 -15
  519. package/dist/stair/plan-entry.d.ts +31 -0
  520. package/dist/stair/plan-entry.d.ts.map +1 -0
  521. package/dist/stair/plan-entry.js +325 -0
  522. package/dist/stair/post-and-rail-guard.d.ts +31 -0
  523. package/dist/stair/post-and-rail-guard.d.ts.map +1 -0
  524. package/dist/stair/post-and-rail-guard.js +63 -0
  525. package/dist/stair/railing-controls.d.ts +9 -0
  526. package/dist/stair/railing-controls.d.ts.map +1 -0
  527. package/dist/stair/railing-controls.js +49 -0
  528. package/dist/stair/renderer.d.ts.map +1 -1
  529. package/dist/stair/renderer.js +259 -259
  530. package/dist/stair/use-stair-render-data.d.ts +317 -0
  531. package/dist/stair/use-stair-render-data.d.ts.map +1 -0
  532. package/dist/stair/use-stair-render-data.js +73 -0
  533. package/dist/stair-segment/definition.d.ts.map +1 -1
  534. package/dist/stair-segment/definition.js +51 -10
  535. package/dist/stair-segment/panel.d.ts.map +1 -1
  536. package/dist/stair-segment/panel.js +36 -42
  537. package/dist/stair-segment/parametrics.d.ts +1 -1
  538. package/dist/stair-segment/parametrics.d.ts.map +1 -1
  539. package/dist/stair-segment/parametrics.js +21 -8
  540. package/dist/stair-segment/renderer.d.ts.map +1 -1
  541. package/dist/stair-segment/renderer.js +16 -28
  542. package/dist/turbine-vent/definition.d.ts.map +1 -1
  543. package/dist/turbine-vent/definition.js +2 -5
  544. package/dist/turbine-vent/paint.d.ts.map +1 -1
  545. package/dist/turbine-vent/paint.js +2 -5
  546. package/dist/turbine-vent/panel.d.ts.map +1 -1
  547. package/dist/turbine-vent/panel.js +5 -23
  548. package/dist/unit/unit-panel.d.ts.map +1 -1
  549. package/dist/unit/unit-panel.js +6 -1
  550. package/dist/wall/actions.d.ts.map +1 -1
  551. package/dist/wall/actions.js +7 -2
  552. package/dist/wall/construction-dimensions.js +8 -5
  553. package/dist/wall/contextual-dimensions.js +4 -4
  554. package/dist/wall/curtain-wall-materials.d.ts +1 -1
  555. package/dist/wall/curtain-wall-materials.d.ts.map +1 -1
  556. package/dist/wall/curtain-wall-materials.js +2 -2
  557. package/dist/wall/curve-tool.d.ts.map +1 -1
  558. package/dist/wall/curve-tool.js +4 -0
  559. package/dist/wall/definition.d.ts.map +1 -1
  560. package/dist/wall/definition.js +41 -17
  561. package/dist/wall/floorplan-move.d.ts +1 -1
  562. package/dist/wall/floorplan-move.d.ts.map +1 -1
  563. package/dist/wall/floorplan-move.js +20 -83
  564. package/dist/wall/floorplan-tool.d.ts.map +1 -1
  565. package/dist/wall/floorplan-tool.js +10 -11
  566. package/dist/wall/floorplan.d.ts +3 -1
  567. package/dist/wall/floorplan.d.ts.map +1 -1
  568. package/dist/wall/floorplan.js +184 -21
  569. package/dist/wall/measurement.d.ts.map +1 -1
  570. package/dist/wall/measurement.js +5 -5
  571. package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
  572. package/dist/wall/move-endpoint-tool.js +20 -7
  573. package/dist/wall/move-shared.d.ts.map +1 -1
  574. package/dist/wall/move-shared.js +11 -7
  575. package/dist/wall/move-tool.d.ts.map +1 -1
  576. package/dist/wall/move-tool.js +118 -148
  577. package/dist/wall/paint.d.ts +26 -15
  578. package/dist/wall/paint.d.ts.map +1 -1
  579. package/dist/wall/paint.js +306 -117
  580. package/dist/wall/panel-model.d.ts +18 -0
  581. package/dist/wall/panel-model.d.ts.map +1 -1
  582. package/dist/wall/panel-model.js +77 -19
  583. package/dist/wall/panel.d.ts.map +1 -1
  584. package/dist/wall/panel.js +217 -41
  585. package/dist/wall/parametrics.d.ts.map +1 -1
  586. package/dist/wall/parametrics.js +3 -0
  587. package/dist/wall/rectangle-command.d.ts +111 -12
  588. package/dist/wall/rectangle-command.d.ts.map +1 -1
  589. package/dist/wall/rectangle-tool.d.ts.map +1 -1
  590. package/dist/wall/rectangle-tool.js +26 -8
  591. package/dist/wall/renderer.d.ts.map +1 -1
  592. package/dist/wall/renderer.js +4 -2
  593. package/dist/wall/split-floorplan-layer.d.ts.map +1 -1
  594. package/dist/wall/split-floorplan-layer.js +7 -7
  595. package/dist/wall/split-session.d.ts.map +1 -1
  596. package/dist/wall/split-session.js +7 -1
  597. package/dist/wall/system.d.ts.map +1 -1
  598. package/dist/wall/system.js +36 -4
  599. package/dist/wall/tool.d.ts.map +1 -1
  600. package/dist/wall/tool.js +105 -49
  601. package/dist/wall/treatment-level-data.d.ts +3 -2
  602. package/dist/wall/treatment-level-data.d.ts.map +1 -1
  603. package/dist/wall/treatment-level-data.js +17 -13
  604. package/dist/wall/treatments.d.ts +10 -10
  605. package/dist/wall/treatments.d.ts.map +1 -1
  606. package/dist/wall/treatments.js +67 -54
  607. package/dist/wall/wall-batch-system.d.ts +7 -0
  608. package/dist/wall/wall-batch-system.d.ts.map +1 -1
  609. package/dist/wall/wall-batch-system.js +35 -3
  610. package/dist/wall/wall-batch.d.ts +6 -0
  611. package/dist/wall/wall-batch.d.ts.map +1 -1
  612. package/dist/wall/wall-batch.js +7 -1
  613. package/dist/window/definition.d.ts.map +1 -1
  614. package/dist/window/definition.js +12 -4
  615. package/dist/window/floorplan-move.d.ts.map +1 -1
  616. package/dist/window/floorplan-move.js +3 -1
  617. package/dist/window/floorplan.d.ts.map +1 -1
  618. package/dist/window/floorplan.js +145 -60
  619. package/dist/window/mechanism.d.ts +4 -0
  620. package/dist/window/mechanism.d.ts.map +1 -0
  621. package/dist/window/mechanism.js +20 -0
  622. package/dist/window/move-tool.d.ts.map +1 -1
  623. package/dist/window/move-tool.js +79 -48
  624. package/dist/window/paint.d.ts.map +1 -1
  625. package/dist/window/paint.js +3 -0
  626. package/dist/window/panel.d.ts.map +1 -1
  627. package/dist/window/panel.js +32 -88
  628. package/dist/window/placement.d.ts +23 -0
  629. package/dist/window/placement.d.ts.map +1 -0
  630. package/dist/window/placement.js +66 -0
  631. package/dist/window/preview.d.ts.map +1 -1
  632. package/dist/window/preview.js +2 -0
  633. package/dist/window/renderer.d.ts.map +1 -1
  634. package/dist/window/renderer.js +3 -2
  635. package/dist/window/tool.d.ts.map +1 -1
  636. package/dist/window/tool.js +96 -24
  637. package/dist/window/window-math.d.ts +6 -14
  638. package/dist/window/window-math.d.ts.map +1 -1
  639. package/dist/window/window-math.js +14 -20
  640. package/dist/zone/contextual-dimensions.d.ts.map +1 -1
  641. package/dist/zone/contextual-dimensions.js +6 -28
  642. package/dist/zone/definition.d.ts.map +1 -1
  643. package/dist/zone/definition.js +3 -3
  644. package/dist/zone/floorplan-affordances.d.ts +200 -0
  645. package/dist/zone/floorplan-affordances.d.ts.map +1 -1
  646. package/dist/zone/floorplan.d.ts +1 -1
  647. package/dist/zone/floorplan.d.ts.map +1 -1
  648. package/dist/zone/floorplan.js +93 -53
  649. package/dist/zone/quantities-panel.d.ts.map +1 -1
  650. package/dist/zone/quantities-panel.js +3 -14
  651. package/dist/zone/quick-measurement.d.ts +2 -2
  652. package/dist/zone/quick-measurement.d.ts.map +1 -1
  653. package/dist/zone/quick-measurement.js +6 -5
  654. package/dist/zone/renderer.d.ts +1 -1
  655. package/dist/zone/renderer.d.ts.map +1 -1
  656. package/dist/zone/renderer.js +58 -146
  657. package/dist/zone/room-clear-dimensions.js +3 -3
  658. package/dist/zone/room-documentation.d.ts.map +1 -1
  659. package/dist/zone/room-documentation.js +2 -6
  660. package/package.json +11 -11
  661. package/dist/block/slots.d.ts +0 -4
  662. package/dist/block/slots.d.ts.map +0 -1
  663. package/dist/block/slots.js +0 -17
  664. package/dist/cabinet/slots.d.ts +0 -4
  665. package/dist/cabinet/slots.d.ts.map +0 -1
  666. package/dist/cabinet/slots.js +0 -24
  667. package/dist/ceiling/slots.d.ts +0 -6
  668. package/dist/ceiling/slots.d.ts.map +0 -1
  669. package/dist/ceiling/slots.js +0 -7
  670. package/dist/column/slots.d.ts +0 -9
  671. package/dist/column/slots.d.ts.map +0 -1
  672. package/dist/column/slots.js +0 -19
  673. package/dist/door/slots.d.ts +0 -9
  674. package/dist/door/slots.d.ts.map +0 -1
  675. package/dist/door/slots.js +0 -20
  676. package/dist/elevator/slots.d.ts +0 -8
  677. package/dist/elevator/slots.d.ts.map +0 -1
  678. package/dist/elevator/slots.js +0 -17
  679. package/dist/fence/slots.d.ts +0 -10
  680. package/dist/fence/slots.d.ts.map +0 -1
  681. package/dist/fence/slots.js +0 -23
  682. package/dist/item/__fixtures__/main-floorplan.d.ts +0 -26
  683. package/dist/item/__fixtures__/main-floorplan.d.ts.map +0 -1
  684. package/dist/item/__fixtures__/main-floorplan.js +0 -297
  685. package/dist/lean-to-extension/slots.d.ts +0 -5
  686. package/dist/lean-to-extension/slots.d.ts.map +0 -1
  687. package/dist/lean-to-extension/slots.js +0 -15
  688. package/dist/shelf/slots.d.ts +0 -9
  689. package/dist/shelf/slots.d.ts.map +0 -1
  690. package/dist/shelf/slots.js +0 -30
  691. package/dist/slab/slots.d.ts +0 -10
  692. package/dist/slab/slots.d.ts.map +0 -1
  693. package/dist/slab/slots.js +0 -20
  694. package/dist/stair/floor-stack.d.ts +0 -10
  695. package/dist/stair/floor-stack.d.ts.map +0 -1
  696. package/dist/stair/floor-stack.js +0 -115
  697. package/dist/stair/slots.d.ts +0 -7
  698. package/dist/stair/slots.d.ts.map +0 -1
  699. package/dist/stair/slots.js +0 -13
  700. package/dist/wall/drawing-mode.d.ts +0 -12
  701. package/dist/wall/drawing-mode.d.ts.map +0 -1
  702. package/dist/wall/drawing-mode.js +0 -38
  703. package/dist/wall/slots.d.ts +0 -10
  704. package/dist/wall/slots.d.ts.map +0 -1
  705. package/dist/wall/slots.js +0 -92
  706. package/dist/window/slots.d.ts +0 -5
  707. package/dist/window/slots.d.ts.map +0 -1
  708. package/dist/window/slots.js +0 -11
@@ -6,8 +6,10 @@ export declare const zoneMoveVertexAffordance: import("@pascal-app/core").Floorp
6
6
  type: "zone";
7
7
  name: string;
8
8
  polygon: [number, number][];
9
+ holes: [number, number][][];
9
10
  autoFromWalls: boolean;
10
11
  boundaryWallIds: `wall_${string}`[];
12
+ boundarySeparatorIds: string[];
11
13
  spaceRole: "room" | "generic";
12
14
  roomNumber: string;
13
15
  enclosureStatus: "auto" | "open" | "enclosed";
@@ -26,6 +28,54 @@ export declare const zoneMoveVertexAffordance: import("@pascal-app/core").Floorp
26
28
  fov?: number | undefined;
27
29
  zoom?: number | undefined;
28
30
  } | undefined;
31
+ provenance?: {
32
+ refs: {
33
+ id: string;
34
+ ns?: string | undefined;
35
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
36
+ }[];
37
+ lineage?: {
38
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
39
+ fromIds: string[];
40
+ } | undefined;
41
+ } | undefined;
42
+ hostZoneId?: string | undefined;
43
+ seed?: [number, number] | undefined;
44
+ floor?: {
45
+ elevation?: number | undefined;
46
+ support?: "open" | undefined;
47
+ footprint?: string | undefined;
48
+ thickness?: number | undefined;
49
+ sourceSlabId?: `slab_${string}` | undefined;
50
+ finish?: string | Record<string, unknown> | undefined;
51
+ regions?: {
52
+ id: string;
53
+ polygon: [number, number][];
54
+ finish: string | Record<string, unknown>;
55
+ }[] | undefined;
56
+ } | undefined;
57
+ ceiling?: {
58
+ regions?: {
59
+ id: string;
60
+ polygon: [number, number][];
61
+ finish: string | Record<string, unknown>;
62
+ }[] | undefined;
63
+ } | undefined;
64
+ floorStepFinish?: string | undefined;
65
+ floorStepOverrides?: {
66
+ key: string;
67
+ finish: string;
68
+ step?: number | undefined;
69
+ }[] | undefined;
70
+ floorEdgeFinish?: string | undefined;
71
+ wallMaterial?: string | undefined;
72
+ wallOverrides?: {
73
+ wallId: string;
74
+ face: "a" | "b";
75
+ finish: string;
76
+ }[] | undefined;
77
+ hasFloor?: false | undefined;
78
+ hasCeiling?: false | undefined;
29
79
  }>;
30
80
  export declare const zoneAddVertexAffordance: import("@pascal-app/core").FloorplanAffordance<{
31
81
  object: "node";
@@ -35,8 +85,10 @@ export declare const zoneAddVertexAffordance: import("@pascal-app/core").Floorpl
35
85
  type: "zone";
36
86
  name: string;
37
87
  polygon: [number, number][];
88
+ holes: [number, number][][];
38
89
  autoFromWalls: boolean;
39
90
  boundaryWallIds: `wall_${string}`[];
91
+ boundarySeparatorIds: string[];
40
92
  spaceRole: "room" | "generic";
41
93
  roomNumber: string;
42
94
  enclosureStatus: "auto" | "open" | "enclosed";
@@ -55,6 +107,54 @@ export declare const zoneAddVertexAffordance: import("@pascal-app/core").Floorpl
55
107
  fov?: number | undefined;
56
108
  zoom?: number | undefined;
57
109
  } | undefined;
110
+ provenance?: {
111
+ refs: {
112
+ id: string;
113
+ ns?: string | undefined;
114
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
115
+ }[];
116
+ lineage?: {
117
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
118
+ fromIds: string[];
119
+ } | undefined;
120
+ } | undefined;
121
+ hostZoneId?: string | undefined;
122
+ seed?: [number, number] | undefined;
123
+ floor?: {
124
+ elevation?: number | undefined;
125
+ support?: "open" | undefined;
126
+ footprint?: string | undefined;
127
+ thickness?: number | undefined;
128
+ sourceSlabId?: `slab_${string}` | undefined;
129
+ finish?: string | Record<string, unknown> | undefined;
130
+ regions?: {
131
+ id: string;
132
+ polygon: [number, number][];
133
+ finish: string | Record<string, unknown>;
134
+ }[] | undefined;
135
+ } | undefined;
136
+ ceiling?: {
137
+ regions?: {
138
+ id: string;
139
+ polygon: [number, number][];
140
+ finish: string | Record<string, unknown>;
141
+ }[] | undefined;
142
+ } | undefined;
143
+ floorStepFinish?: string | undefined;
144
+ floorStepOverrides?: {
145
+ key: string;
146
+ finish: string;
147
+ step?: number | undefined;
148
+ }[] | undefined;
149
+ floorEdgeFinish?: string | undefined;
150
+ wallMaterial?: string | undefined;
151
+ wallOverrides?: {
152
+ wallId: string;
153
+ face: "a" | "b";
154
+ finish: string;
155
+ }[] | undefined;
156
+ hasFloor?: false | undefined;
157
+ hasCeiling?: false | undefined;
58
158
  }>;
59
159
  export declare const zoneMoveEdgeAffordance: import("@pascal-app/core").FloorplanAffordance<{
60
160
  object: "node";
@@ -64,8 +164,10 @@ export declare const zoneMoveEdgeAffordance: import("@pascal-app/core").Floorpla
64
164
  type: "zone";
65
165
  name: string;
66
166
  polygon: [number, number][];
167
+ holes: [number, number][][];
67
168
  autoFromWalls: boolean;
68
169
  boundaryWallIds: `wall_${string}`[];
170
+ boundarySeparatorIds: string[];
69
171
  spaceRole: "room" | "generic";
70
172
  roomNumber: string;
71
173
  enclosureStatus: "auto" | "open" | "enclosed";
@@ -84,6 +186,54 @@ export declare const zoneMoveEdgeAffordance: import("@pascal-app/core").Floorpla
84
186
  fov?: number | undefined;
85
187
  zoom?: number | undefined;
86
188
  } | undefined;
189
+ provenance?: {
190
+ refs: {
191
+ id: string;
192
+ ns?: string | undefined;
193
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
194
+ }[];
195
+ lineage?: {
196
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
197
+ fromIds: string[];
198
+ } | undefined;
199
+ } | undefined;
200
+ hostZoneId?: string | undefined;
201
+ seed?: [number, number] | undefined;
202
+ floor?: {
203
+ elevation?: number | undefined;
204
+ support?: "open" | undefined;
205
+ footprint?: string | undefined;
206
+ thickness?: number | undefined;
207
+ sourceSlabId?: `slab_${string}` | undefined;
208
+ finish?: string | Record<string, unknown> | undefined;
209
+ regions?: {
210
+ id: string;
211
+ polygon: [number, number][];
212
+ finish: string | Record<string, unknown>;
213
+ }[] | undefined;
214
+ } | undefined;
215
+ ceiling?: {
216
+ regions?: {
217
+ id: string;
218
+ polygon: [number, number][];
219
+ finish: string | Record<string, unknown>;
220
+ }[] | undefined;
221
+ } | undefined;
222
+ floorStepFinish?: string | undefined;
223
+ floorStepOverrides?: {
224
+ key: string;
225
+ finish: string;
226
+ step?: number | undefined;
227
+ }[] | undefined;
228
+ floorEdgeFinish?: string | undefined;
229
+ wallMaterial?: string | undefined;
230
+ wallOverrides?: {
231
+ wallId: string;
232
+ face: "a" | "b";
233
+ finish: string;
234
+ }[] | undefined;
235
+ hasFloor?: false | undefined;
236
+ hasCeiling?: false | undefined;
87
237
  }>;
88
238
  export declare const zoneDeleteVertexAffordance: import("@pascal-app/core").FloorplanAffordance<{
89
239
  object: "node";
@@ -93,8 +243,10 @@ export declare const zoneDeleteVertexAffordance: import("@pascal-app/core").Floo
93
243
  type: "zone";
94
244
  name: string;
95
245
  polygon: [number, number][];
246
+ holes: [number, number][][];
96
247
  autoFromWalls: boolean;
97
248
  boundaryWallIds: `wall_${string}`[];
249
+ boundarySeparatorIds: string[];
98
250
  spaceRole: "room" | "generic";
99
251
  roomNumber: string;
100
252
  enclosureStatus: "auto" | "open" | "enclosed";
@@ -113,5 +265,53 @@ export declare const zoneDeleteVertexAffordance: import("@pascal-app/core").Floo
113
265
  fov?: number | undefined;
114
266
  zoom?: number | undefined;
115
267
  } | undefined;
268
+ provenance?: {
269
+ refs: {
270
+ id: string;
271
+ ns?: string | undefined;
272
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
273
+ }[];
274
+ lineage?: {
275
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
276
+ fromIds: string[];
277
+ } | undefined;
278
+ } | undefined;
279
+ hostZoneId?: string | undefined;
280
+ seed?: [number, number] | undefined;
281
+ floor?: {
282
+ elevation?: number | undefined;
283
+ support?: "open" | undefined;
284
+ footprint?: string | undefined;
285
+ thickness?: number | undefined;
286
+ sourceSlabId?: `slab_${string}` | undefined;
287
+ finish?: string | Record<string, unknown> | undefined;
288
+ regions?: {
289
+ id: string;
290
+ polygon: [number, number][];
291
+ finish: string | Record<string, unknown>;
292
+ }[] | undefined;
293
+ } | undefined;
294
+ ceiling?: {
295
+ regions?: {
296
+ id: string;
297
+ polygon: [number, number][];
298
+ finish: string | Record<string, unknown>;
299
+ }[] | undefined;
300
+ } | undefined;
301
+ floorStepFinish?: string | undefined;
302
+ floorStepOverrides?: {
303
+ key: string;
304
+ finish: string;
305
+ step?: number | undefined;
306
+ }[] | undefined;
307
+ floorEdgeFinish?: string | undefined;
308
+ wallMaterial?: string | undefined;
309
+ wallOverrides?: {
310
+ wallId: string;
311
+ face: "a" | "b";
312
+ finish: string;
313
+ }[] | undefined;
314
+ hasFloor?: false | undefined;
315
+ hasCeiling?: false | undefined;
116
316
  }>;
117
317
  //# sourceMappingURL=floorplan-affordances.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"floorplan-affordances.d.ts","sourceRoot":"","sources":["../../src/zone/floorplan-affordances.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAA;AACD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGnC,CAAA;AACD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAA;AACD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtC,CAAA"}
1
+ {"version":3,"file":"floorplan-affordances.d.ts","sourceRoot":"","sources":["../../src/zone/floorplan-affordances.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAA;AACD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGnC,CAAA;AACD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAA;AACD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtC,CAAA"}
@@ -3,7 +3,7 @@ import { type FloorplanGeometry, type GeometryContext, type ZoneNode } from '@pa
3
3
  * Stage C floor-plan builder for zone. Zones are colored polygons.
4
4
  *
5
5
  * The zone's `name` renders as a centered text label at the polygon's
6
- * geometric centroid. The registry layer sorts zones before every
6
+ * interior label point. The registry layer sorts zones before every
7
7
  * other kind so the label + polygon sit *under* walls / slabs /
8
8
  * furniture in the SVG document order (= z-order).
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/zone/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAEpB,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AASzB;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,iBAAiB,GAAG,IAAI,CAmIjG"}
1
+ {"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/zone/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAGpB,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AASzB;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,iBAAiB,GAAG,IAAI,CAiKjG"}
@@ -1,4 +1,4 @@
1
- import { resolveAutoZonePolygon, } from '@pascal-app/core';
1
+ import { polygonInteriorPoint, } from '@pascal-app/core';
2
2
  import { floorplanGeometryMetadata, readFloorplanContext } from '@pascal-app/editor';
3
3
  import { formatConstructionLength, } from '../shared/construction-length';
4
4
  import { buildRoomClearDimensions } from './room-clear-dimensions';
@@ -7,12 +7,12 @@ import { owningUnitForZone } from './unit-membership';
7
7
  * Stage C floor-plan builder for zone. Zones are colored polygons.
8
8
  *
9
9
  * The zone's `name` renders as a centered text label at the polygon's
10
- * geometric centroid. The registry layer sorts zones before every
10
+ * interior label point. The registry layer sorts zones before every
11
11
  * other kind so the label + polygon sit *under* walls / slabs /
12
12
  * furniture in the SVG document order (= z-order).
13
13
  */
14
14
  export function buildZoneFloorplan(node, ctx) {
15
- const ring = resolveAutoZonePolygon(node, ctx.resolve);
15
+ const { polygon: ring, holes } = node;
16
16
  if (!ring || ring.length < 3)
17
17
  return null;
18
18
  const view = ctx.viewState;
@@ -21,16 +21,42 @@ export function buildZoneFloorplan(node, ctx) {
21
21
  const isHighlighted = view?.highlighted ?? false;
22
22
  const showSelectedChrome = isSelected || isHighlighted;
23
23
  const points = ring.map(([x, z]) => [x, z]);
24
+ // A sheet drafts every zone's tag itself — name, number, area, placed
25
+ // clear of everything else — so on a sheet the zone prints nothing of its
26
+ // own: no wash, no outline, no zone-coloured name, whatever its role or
27
+ // wherever it came from. The invisible outline keeps the zone in the
28
+ // collection the sheet reads its rooms from.
29
+ if (floorplanContext.drafting) {
30
+ return { kind: 'group', children: [{ kind: 'polygon', points, fill: 'none', stroke: 'none' }] };
31
+ }
24
32
  const unit = owningUnitForZone(node, ctx.resolve);
25
33
  const tintColor = unit?.color ?? node.color;
26
34
  const stroke = node.color;
27
35
  const focusOpacity = view?.focusedUnitId && !view.focusedUnitMemberIds?.includes(node.id) ? 0.35 : 1;
28
36
  const isRoom = node.spaceRole === 'room';
29
- const fillOpacity = isRoom ? (isSelected ? 0.12 : 0.04) : isSelected ? 0.28 : 0.16;
37
+ // On the editor canvas a pill labels every zone; the wash and drawn tags
38
+ // come back only while a unit's membership is being painted.
39
+ const drawnTags = !floorplanContext.roomLabelOverlay || !!view?.focusedUnitId;
40
+ const fillOpacity = !drawnTags
41
+ ? 0
42
+ : isRoom
43
+ ? isSelected
44
+ ? 0.12
45
+ : 0.04
46
+ : isSelected
47
+ ? 0.28
48
+ : 0.16;
30
49
  const children = [
31
50
  {
32
- kind: 'polygon',
33
- points,
51
+ ...(holes.length
52
+ ? {
53
+ kind: 'path',
54
+ d: [ring, ...holes]
55
+ .map((points) => `${points.map(([x, y], i) => `${i ? 'L' : 'M'} ${x} ${y}`).join(' ')} Z`)
56
+ .join(' '),
57
+ fillRule: 'evenodd',
58
+ }
59
+ : { kind: 'polygon', points }),
34
60
  fill: tintColor,
35
61
  fillOpacity: fillOpacity * focusOpacity,
36
62
  stroke,
@@ -84,17 +110,16 @@ export function buildZoneFloorplan(node, ctx) {
84
110
  // Name label — white fill inside a zone-colored stroke (`paintOrder:
85
111
  // 'stroke'` paints the stroke first so the fill reads cleanly through
86
112
  // it). Mirrors the legacy `FloorplanZoneLabel` so the look is
87
- // consistent. Centered on the polygon's area-weighted centroid; the
88
- // bbox-center fallback handles degenerate rings without throwing.
89
- const [cx, cy] = polygonCentroid(ring);
113
+ // consistent. The anchor stays in the usable room area, outside holes.
114
+ const [cx, cy] = polygonInteriorPoint({ polygon: ring, holes });
90
115
  const name = node.name?.trim();
91
- if (isRoom) {
92
- children.push(...buildRoomLabels(node, cx, cy, view?.unit ?? 'metric', floorplanContext.purpose === 'document' ? 'document' : 'editor', floorplanContext.metricNotation, stroke, unit?.name));
93
- if (floorplanContext.automaticDimensions) {
94
- children.push(...buildRoomClearDimensions(node, ctx));
95
- }
116
+ if (isRoom && drawnTags) {
117
+ children.push(...buildRoomLabels(node, cx, cy, view?.unit ?? 'metric', floorplanContext.purpose === 'document' ? 'document' : 'editor', floorplanContext.metricNotation, stroke, unit?.name, roomFloorLift(node, ctx)));
118
+ }
119
+ if (isRoom && floorplanContext.automaticDimensions) {
120
+ children.push(...buildRoomClearDimensions(node, ctx));
96
121
  }
97
- else if (name) {
122
+ if (!isRoom && drawnTags && name) {
98
123
  const unitName = unit?.name.trim();
99
124
  const lines = unitName
100
125
  ? [
@@ -113,7 +138,7 @@ export function buildZoneFloorplan(node, ctx) {
113
138
  // (0.2 plan metres ≈ readable at typical building zooms).
114
139
  fontSize: line.fontSize,
115
140
  fill: '#ffffff',
116
- stroke: node.color,
141
+ stroke,
117
142
  strokeWidth: line.fontSize * 0.35,
118
143
  paintOrder: 'stroke',
119
144
  fontFamily: 'system-ui, -apple-system, sans-serif',
@@ -133,7 +158,7 @@ const ROOM_NAME_FONT_SIZE = 0.2;
133
158
  const ROOM_NUMBER_FONT_SIZE = 0.16;
134
159
  const ROOM_DETAIL_FONT_SIZE = 0.11;
135
160
  const ROOM_LABEL_LINE_SPACING = 0.18;
136
- function buildRoomLabels(node, x, y, unit, profile, metricNotation, color, unitName) {
161
+ function buildRoomLabels(node, x, y, unit, profile, metricNotation, color, unitName, lift = 0) {
137
162
  const lines = [];
138
163
  const name = node.name.trim();
139
164
  if (name)
@@ -159,7 +184,28 @@ function buildRoomLabels(node, x, y, unit, profile, metricNotation, color, unitN
159
184
  roomDetails.push(node.occupancy);
160
185
  lines.push({ text: roomDetails.join(' · '), fontSize: ROOM_DETAIL_FONT_SIZE, fontWeight: 500 });
161
186
  const startY = y - ((lines.length - 1) * ROOM_LABEL_LINE_SPACING) / 2;
162
- return lines.map((line, index) => ({
187
+ const chip = Math.abs(lift) < 0.005
188
+ ? []
189
+ : [
190
+ {
191
+ kind: 'text',
192
+ x,
193
+ y: startY - ROOM_LABEL_LINE_SPACING,
194
+ text: `${lift > 0 ? '+' : '−'}${formatConstructionLength(Math.abs(lift), unit, profile, { metricNotation })}`,
195
+ fontSize: ROOM_DETAIL_FONT_SIZE,
196
+ fill: ROOM_LIFT_COLOR,
197
+ stroke: '#ffffff',
198
+ strokeWidth: ROOM_DETAIL_FONT_SIZE * 0.18,
199
+ paintOrder: 'stroke',
200
+ fontFamily: 'system-ui, -apple-system, sans-serif',
201
+ fontWeight: 700,
202
+ textAnchor: 'middle',
203
+ dominantBaseline: 'central',
204
+ upright: true,
205
+ metadata: floorplanGeometryMetadata({ annotationRole: 'room-label' }),
206
+ },
207
+ ];
208
+ return chip.concat(lines.map((line, index) => ({
163
209
  kind: 'text',
164
210
  x,
165
211
  y: startY + index * ROOM_LABEL_LINE_SPACING,
@@ -175,44 +221,38 @@ function buildRoomLabels(node, x, y, unit, profile, metricNotation, color, unitN
175
221
  dominantBaseline: 'central',
176
222
  upright: true,
177
223
  metadata: floorplanGeometryMetadata({ annotationRole: 'room-label' }),
178
- }));
224
+ })));
179
225
  }
226
+ // The room arrows' indigo: a raised or sunken room reads as the lift it carries.
227
+ const ROOM_LIFT_COLOR = '#6366f1';
180
228
  /**
181
- * Area-weighted centroid of a simple polygon (Shoelace formula). Falls
182
- * back to the bounding-box center when the signed area is degenerate
183
- * (collinear vertices, zero-area polygon) so the label still has a
184
- * sensible anchor.
229
+ * How far the room's floor sits above the floor it is measured from — its
230
+ * footprint's base plate, or a mezzanine's host room — for the `+0.15` label
231
+ * chip; 0 when the room carries no floor intent of its own.
185
232
  */
186
- function polygonCentroid(ring) {
187
- let area = 0;
188
- let cx = 0;
189
- let cy = 0;
190
- for (let i = 0; i < ring.length; i++) {
191
- const [x0, y0] = ring[i];
192
- const [x1, y1] = ring[(i + 1) % ring.length];
193
- const cross = x0 * y1 - x1 * y0;
194
- area += cross;
195
- cx += (x0 + x1) * cross;
196
- cy += (y0 + y1) * cross;
197
- }
198
- area *= 0.5;
199
- if (Math.abs(area) < 1e-9) {
200
- // Degenerate — fall back to bbox center.
201
- let minX = Infinity;
202
- let maxX = -Infinity;
203
- let minY = Infinity;
204
- let maxY = -Infinity;
205
- for (const [x, y] of ring) {
206
- if (x < minX)
207
- minX = x;
208
- if (x > maxX)
209
- maxX = x;
210
- if (y < minY)
211
- minY = y;
212
- if (y > maxY)
213
- maxY = y;
233
+ function roomFloorLift(node, ctx) {
234
+ const elevation = node.floor?.elevation;
235
+ if (elevation === undefined)
236
+ return 0;
237
+ const baseOf = (zone) => {
238
+ if (!zone?.parentId)
239
+ return undefined;
240
+ const level = ctx.resolve(zone.parentId);
241
+ if (!level || !('children' in level))
242
+ return undefined;
243
+ for (const id of level.children) {
244
+ const plate = ctx.resolve(id);
245
+ if (plate?.type === 'slab' && plate.plateRole === 'base' && plate.zoneIds?.includes(zone.id))
246
+ return plate.floorHeight ?? plate.elevation;
214
247
  }
215
- return [(minX + maxX) / 2, (minY + maxY) / 2];
248
+ return undefined;
249
+ };
250
+ let base;
251
+ if (node.floor?.support === 'open' && node.hostZoneId) {
252
+ const host = ctx.resolve(node.hostZoneId);
253
+ base = host?.floor?.elevation ?? baseOf(host);
216
254
  }
217
- return [cx / (6 * area), cy / (6 * area)];
255
+ else
256
+ base = baseOf(node);
257
+ return base === undefined ? 0 : Math.round((elevation - base) * 1000) / 1000;
218
258
  }
@@ -1 +1 @@
1
- {"version":3,"file":"quantities-panel.d.ts","sourceRoot":"","sources":["../../src/zone/quantities-panel.tsx"],"names":[],"mappings":"AAsMA,MAAM,CAAC,OAAO,UAAU,mBAAmB,uCA6F1C"}
1
+ {"version":3,"file":"quantities-panel.d.ts","sourceRoot":"","sources":["../../src/zone/quantities-panel.tsx"],"names":[],"mappings":"AAqMA,MAAM,CAAC,OAAO,UAAU,mBAAmB,uCAkF1C"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { deriveZoneQuantityReport, resolveAutoZonePolygon, useLiveNodeOverrides, useScene, } from '@pascal-app/core';
3
+ import { deriveZoneQuantityReport, useLiveNodeOverrides, useScene, } from '@pascal-app/core';
4
4
  import { formatAreaLabel, formatLinearMeasurement, formatVolumeLabel, PanelSection, } from '@pascal-app/editor';
5
5
  import { useViewer } from '@pascal-app/viewer';
6
6
  import { useMemo } from 'react';
@@ -82,21 +82,10 @@ export default function ZoneQuantitiesPanel() {
82
82
  const metricNotation = useViewer((state) => state.metricNotation);
83
83
  const nodes = useScene((state) => state.nodes);
84
84
  const zone = selectedZoneId ? nodes[selectedZoneId] : undefined;
85
- const livePolygon = useLiveNodeOverrides((state) => selectedZoneId ? state.overrides.get(selectedZoneId)?.polygon : undefined);
85
+ const liveZone = useLiveNodeOverrides((state) => selectedZoneId ? state.overrides.get(selectedZoneId) : undefined);
86
86
  const boundaryWallIds = zone?.autoFromWalls ? zone.boundaryWallIds : [];
87
87
  const boundaryOverrides = useLiveNodeOverrides(useShallow((state) => boundaryWallIds.map((id) => state.overrides.get(id))));
88
- const proceduralPolygon = zone
89
- ? resolveAutoZonePolygon(zone, (id) => {
90
- const dependency = nodes[id];
91
- if (!dependency)
92
- return undefined;
93
- const override = boundaryOverrides[boundaryWallIds.indexOf(id)];
94
- return override ? { ...dependency, ...override } : dependency;
95
- })
96
- : undefined;
97
- const effectiveZone = zone
98
- ? { ...zone, polygon: livePolygon ?? proceduralPolygon ?? zone.polygon }
99
- : undefined;
88
+ const effectiveZone = zone ? { ...zone, ...liveZone } : undefined;
100
89
  const effectiveNodes = useMemo(() => {
101
90
  if (boundaryOverrides.every((override) => !override))
102
91
  return nodes;
@@ -1,3 +1,3 @@
1
- import { type GeometryContext, type QuickMeasurementReport, type ZoneNode } from '@pascal-app/core';
2
- export declare function zoneQuickMeasurement(node: ZoneNode, context?: GeometryContext): QuickMeasurementReport | null;
1
+ import type { QuickMeasurementReport, ZoneNode } from '@pascal-app/core';
2
+ export declare function zoneQuickMeasurement(node: ZoneNode): QuickMeasurementReport | null;
3
3
  //# sourceMappingURL=quick-measurement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quick-measurement.d.ts","sourceRoot":"","sources":["../../src/zone/quick-measurement.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAE3B,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AAOzB,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE,eAAe,GACxB,sBAAsB,GAAG,IAAI,CA0B/B"}
1
+ {"version":3,"file":"quick-measurement.d.ts","sourceRoot":"","sources":["../../src/zone/quick-measurement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAOxE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,sBAAsB,GAAG,IAAI,CA2BlF"}
@@ -1,12 +1,13 @@
1
- import { resolveAutoZonePolygon, } from '@pascal-app/core';
2
1
  import { polygonBoundaryLength, polygonReportAnchor, polygonSurfaceArea, } from '../shared/quick-measurement';
3
- export function zoneQuickMeasurement(node, context) {
4
- const polygon = context ? resolveAutoZonePolygon(node, context.resolve) : node.polygon;
2
+ export function zoneQuickMeasurement(node) {
3
+ if (node.autoFromWalls && node.enclosureStatus === 'open')
4
+ return null;
5
+ const polygon = node.polygon;
5
6
  if (polygon.length < 3)
6
7
  return null;
7
8
  return {
8
9
  title: node.name,
9
- kindLabel: 'Zone',
10
+ kindLabel: node.spaceRole === 'room' ? 'Room' : 'Zone',
10
11
  anchor: polygonReportAnchor(polygon, 0.08),
11
12
  metrics: [
12
13
  {
@@ -14,7 +15,7 @@ export function zoneQuickMeasurement(node, context) {
14
15
  label: 'Footprint',
15
16
  abbreviation: 'A',
16
17
  quantity: 'area',
17
- value: polygonSurfaceArea(polygon),
18
+ value: polygonSurfaceArea(polygon, node.holes),
18
19
  },
19
20
  {
20
21
  key: 'perimeter',
@@ -1,6 +1,6 @@
1
1
  import { type ZoneNode } from '@pascal-app/core';
2
2
  export declare const ZoneRenderer: ({ node }: {
3
3
  node: ZoneNode;
4
- }) => import("react").JSX.Element | null;
4
+ }) => import("react").JSX.Element;
5
5
  export default ZoneRenderer;
6
6
  //# sourceMappingURL=renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/zone/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AA0GzB,eAAO,MAAM,YAAY,GAAI,UAAU;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,uCAoNxD,CAAA;AAED,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/zone/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AA6DzB,eAAO,MAAM,YAAY,GAAI,UAAU;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,gCASxD,CAAA;AA4ID,eAAe,YAAY,CAAA"}