@pascal-app/nodes 1.0.4 → 1.0.6

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 (1326) hide show
  1. package/README.md +43 -0
  2. package/dist/agent-operations/index.d.ts +12 -0
  3. package/dist/agent-operations/index.d.ts.map +1 -0
  4. package/dist/agent-operations/index.js +6 -0
  5. package/dist/agent-tools/index.d.ts +50 -0
  6. package/dist/agent-tools/index.d.ts.map +1 -0
  7. package/dist/agent-tools/index.js +21 -0
  8. package/dist/block/commands.d.ts +2 -2
  9. package/dist/block/contextual-help.js +1 -1
  10. package/dist/block/definition.d.ts +1 -1
  11. package/dist/block/definition.js +13 -13
  12. package/dist/block/edit-session.d.ts +2 -2
  13. package/dist/block/edit-session.d.ts.map +1 -1
  14. package/dist/block/edit-session.js +1 -1
  15. package/dist/block/face-host.js +1 -1
  16. package/dist/block/geometry-snap.d.ts +2 -2
  17. package/dist/block/geometry-snap.js +2 -2
  18. package/dist/block/gesture-wheel.d.ts.map +1 -1
  19. package/dist/block/hosted-edit.d.ts +1 -1
  20. package/dist/block/hosted-edit.js +3 -3
  21. package/dist/block/interaction-sfx.d.ts +1 -1
  22. package/dist/block/last-operation.d.ts +1 -1
  23. package/dist/block/last-operation.js +2 -2
  24. package/dist/block/modal-face-operation.d.ts +2 -2
  25. package/dist/block/modal-face-operation.js +1 -1
  26. package/dist/block/paint.js +2 -2
  27. package/dist/block/panel.js +8 -8
  28. package/dist/block/parametrics.d.ts +1 -1
  29. package/dist/block/parametrics.js +1 -1
  30. package/dist/block/preview.js +1 -1
  31. package/dist/block/selection-geometry.d.ts +1 -1
  32. package/dist/block/selection-geometry.js +1 -1
  33. package/dist/block/selection.d.ts.map +1 -1
  34. package/dist/block/selection.js +19 -19
  35. package/dist/block/tool.d.ts.map +1 -1
  36. package/dist/block/tool.js +3 -3
  37. package/dist/block/use-block-face-operation.d.ts +4 -4
  38. package/dist/block/use-block-face-operation.js +6 -6
  39. package/dist/box-vent/definition.d.ts +1 -1
  40. package/dist/box-vent/definition.d.ts.map +1 -1
  41. package/dist/box-vent/definition.js +9 -8
  42. package/dist/box-vent/geometry.d.ts.map +1 -1
  43. package/dist/box-vent/geometry.js +2 -2
  44. package/dist/box-vent/index.d.ts +3 -3
  45. package/dist/box-vent/index.js +3 -3
  46. package/dist/box-vent/move-tool.js +4 -4
  47. package/dist/box-vent/paint.js +2 -2
  48. package/dist/box-vent/panel.js +2 -2
  49. package/dist/box-vent/parametrics.d.ts +1 -1
  50. package/dist/box-vent/parametrics.js +1 -1
  51. package/dist/box-vent/preview.d.ts +1 -1
  52. package/dist/box-vent/preview.d.ts.map +1 -1
  53. package/dist/box-vent/preview.js +2 -2
  54. package/dist/box-vent/renderer.d.ts.map +1 -1
  55. package/dist/box-vent/renderer.js +3 -3
  56. package/dist/box-vent/tool.d.ts.map +1 -1
  57. package/dist/box-vent/tool.js +7 -7
  58. package/dist/building/definition.d.ts +1 -1
  59. package/dist/building/definition.d.ts.map +1 -1
  60. package/dist/building/definition.js +5 -4
  61. package/dist/building/index.d.ts +1 -1
  62. package/dist/building/index.js +1 -1
  63. package/dist/building/move-tool.d.ts.map +1 -1
  64. package/dist/building/move-tool.js +2 -3
  65. package/dist/building/renderer.d.ts.map +1 -1
  66. package/dist/cabinet/__bench__/geometry.d.ts +2 -0
  67. package/dist/cabinet/__bench__/geometry.d.ts.map +1 -0
  68. package/dist/cabinet/__bench__/geometry.js +21 -0
  69. package/dist/cabinet/appliance-layout.d.ts +1 -1
  70. package/dist/cabinet/appliance-layout.d.ts.map +1 -1
  71. package/dist/cabinet/compartment-card.d.ts +1 -1
  72. package/dist/cabinet/compartment-card.js +12 -12
  73. package/dist/cabinet/continuous-placement.d.ts +1 -1
  74. package/dist/cabinet/continuous-placement.js +2 -2
  75. package/dist/cabinet/countertop-layout.d.ts +65 -65
  76. package/dist/cabinet/countertop-layout.js +3 -3
  77. package/dist/cabinet/definition.d.ts +1 -1
  78. package/dist/cabinet/definition.d.ts.map +1 -1
  79. package/dist/cabinet/definition.js +33 -28
  80. package/dist/cabinet/essential-controls.d.ts +7 -0
  81. package/dist/cabinet/essential-controls.d.ts.map +1 -0
  82. package/dist/cabinet/essential-controls.js +47 -0
  83. package/dist/cabinet/finish-operation.d.ts +9 -0
  84. package/dist/cabinet/finish-operation.d.ts.map +1 -0
  85. package/dist/cabinet/finish-operation.js +86 -0
  86. package/dist/cabinet/floorplan-move.js +3 -3
  87. package/dist/cabinet/floorplan.js +5 -5
  88. package/dist/cabinet/geometry/cooktop.d.ts +2 -2
  89. package/dist/cabinet/geometry/cooktop.d.ts.map +1 -1
  90. package/dist/cabinet/geometry/cooktop.js +55 -18
  91. package/dist/cabinet/geometry/dishwasher.d.ts +1 -1
  92. package/dist/cabinet/geometry/dishwasher.d.ts.map +1 -1
  93. package/dist/cabinet/geometry/dishwasher.js +5 -6
  94. package/dist/cabinet/geometry/fridge.d.ts +2 -2
  95. package/dist/cabinet/geometry/fridge.d.ts.map +1 -1
  96. package/dist/cabinet/geometry/fridge.js +49 -8
  97. package/dist/cabinet/geometry/fronts.d.ts +1 -1
  98. package/dist/cabinet/geometry/fronts.d.ts.map +1 -1
  99. package/dist/cabinet/geometry/fronts.js +22 -8
  100. package/dist/cabinet/geometry/hood.d.ts +2 -2
  101. package/dist/cabinet/geometry/hood.d.ts.map +1 -1
  102. package/dist/cabinet/geometry/hood.js +15 -3
  103. package/dist/cabinet/geometry/oven-microwave.d.ts +1 -1
  104. package/dist/cabinet/geometry/oven-microwave.d.ts.map +1 -1
  105. package/dist/cabinet/geometry/oven-microwave.js +46 -21
  106. package/dist/cabinet/geometry/pantry.d.ts +2 -2
  107. package/dist/cabinet/geometry/pantry.d.ts.map +1 -1
  108. package/dist/cabinet/geometry/pantry.js +11 -9
  109. package/dist/cabinet/geometry/run.d.ts.map +1 -1
  110. package/dist/cabinet/geometry/run.js +18 -8
  111. package/dist/cabinet/geometry/shared.d.ts +4 -2
  112. package/dist/cabinet/geometry/shared.d.ts.map +1 -1
  113. package/dist/cabinet/geometry/shared.js +77 -17
  114. package/dist/cabinet/geometry/sink.d.ts +2 -2
  115. package/dist/cabinet/geometry/sink.d.ts.map +1 -1
  116. package/dist/cabinet/geometry/sink.js +30 -12
  117. package/dist/cabinet/geometry.d.ts +1 -1
  118. package/dist/cabinet/geometry.d.ts.map +1 -1
  119. package/dist/cabinet/geometry.js +15 -11
  120. package/dist/cabinet/hosted-resize.d.ts +2 -2
  121. package/dist/cabinet/hosted-resize.d.ts.map +1 -1
  122. package/dist/cabinet/hosted-resize.js +3 -1
  123. package/dist/cabinet/index.d.ts +9 -5
  124. package/dist/cabinet/index.d.ts.map +1 -1
  125. package/dist/cabinet/index.js +9 -5
  126. package/dist/cabinet/insertion.d.ts.map +1 -1
  127. package/dist/cabinet/insertion.js +3 -1
  128. package/dist/cabinet/interaction.js +1 -1
  129. package/dist/cabinet/kitchen-catalog.d.ts +14 -0
  130. package/dist/cabinet/kitchen-catalog.d.ts.map +1 -0
  131. package/dist/cabinet/kitchen-catalog.js +62 -0
  132. package/dist/cabinet/kitchen-collection.d.ts +11 -0
  133. package/dist/cabinet/kitchen-collection.d.ts.map +1 -0
  134. package/dist/cabinet/kitchen-collection.js +19 -0
  135. package/dist/cabinet/kitchen-module-actions.d.ts +8 -0
  136. package/dist/cabinet/kitchen-module-actions.d.ts.map +1 -0
  137. package/dist/cabinet/kitchen-module-actions.js +117 -0
  138. package/dist/cabinet/kitchen-placement.d.ts +3 -0
  139. package/dist/cabinet/kitchen-placement.d.ts.map +1 -0
  140. package/dist/cabinet/kitchen-placement.js +16 -0
  141. package/dist/cabinet/move-frame.js +4 -4
  142. package/dist/cabinet/neighbor-placement.d.ts +335 -0
  143. package/dist/cabinet/neighbor-placement.d.ts.map +1 -0
  144. package/dist/cabinet/neighbor-placement.js +48 -0
  145. package/dist/cabinet/opening-clearance.d.ts +22 -0
  146. package/dist/cabinet/opening-clearance.d.ts.map +1 -0
  147. package/dist/cabinet/opening-clearance.js +158 -0
  148. package/dist/cabinet/paint.js +1 -1
  149. package/dist/cabinet/panel-visibility.js +2 -2
  150. package/dist/cabinet/panel.d.ts.map +1 -1
  151. package/dist/cabinet/panel.js +86 -77
  152. package/dist/cabinet/parametrics.js +3 -3
  153. package/dist/cabinet/placement-dimensions.js +2 -2
  154. package/dist/cabinet/placement-notice.d.ts +6 -0
  155. package/dist/cabinet/placement-notice.d.ts.map +1 -0
  156. package/dist/cabinet/placement-notice.js +34 -0
  157. package/dist/cabinet/placement-status.d.ts +2 -0
  158. package/dist/cabinet/placement-status.d.ts.map +1 -1
  159. package/dist/cabinet/placement-status.js +3 -1
  160. package/dist/cabinet/placement-type.d.ts.map +1 -1
  161. package/dist/cabinet/preset-width-debt.js +2 -2
  162. package/dist/cabinet/presets.d.ts +3 -1
  163. package/dist/cabinet/presets.d.ts.map +1 -1
  164. package/dist/cabinet/presets.js +27 -8
  165. package/dist/cabinet/quick-action-icons.js +1 -1
  166. package/dist/cabinet/quick-actions.js +7 -7
  167. package/dist/cabinet/resize-limits.d.ts.map +1 -1
  168. package/dist/cabinet/reveals.d.ts +16 -16
  169. package/dist/cabinet/reveals.d.ts.map +1 -1
  170. package/dist/cabinet/run-finishing.d.ts +168 -0
  171. package/dist/cabinet/run-finishing.d.ts.map +1 -0
  172. package/dist/cabinet/run-finishing.js +100 -0
  173. package/dist/cabinet/run-layout.d.ts.map +1 -1
  174. package/dist/cabinet/run-layout.js +20 -3
  175. package/dist/cabinet/run-ops.d.ts +62 -62
  176. package/dist/cabinet/run-ops.js +6 -6
  177. package/dist/cabinet/run-panel.d.ts +11 -0
  178. package/dist/cabinet/run-panel.d.ts.map +1 -1
  179. package/dist/cabinet/run-panel.js +43 -17
  180. package/dist/cabinet/scene-action.js +1 -1
  181. package/dist/cabinet/stack-transitions.d.ts +1 -1
  182. package/dist/cabinet/stack-transitions.js +2 -2
  183. package/dist/cabinet/stack.d.ts +60 -60
  184. package/dist/cabinet/stack.d.ts.map +1 -1
  185. package/dist/cabinet/stack.js +1 -1
  186. package/dist/cabinet/surfaces.js +3 -3
  187. package/dist/cabinet/system.d.ts.map +1 -1
  188. package/dist/cabinet/system.js +4 -4
  189. package/dist/cabinet/tool.d.ts +1 -2
  190. package/dist/cabinet/tool.d.ts.map +1 -1
  191. package/dist/cabinet/tool.js +212 -87
  192. package/dist/cabinet/validation.js +3 -3
  193. package/dist/cabinet/wall-snap.d.ts +1 -1
  194. package/dist/cabinet/wall-snap.js +2 -2
  195. package/dist/ceiling/boundary-editor.d.ts.map +1 -1
  196. package/dist/ceiling/definition.d.ts +1 -1
  197. package/dist/ceiling/definition.d.ts.map +1 -1
  198. package/dist/ceiling/definition.js +18 -16
  199. package/dist/ceiling/floorplan-affordances.d.ts +80 -80
  200. package/dist/ceiling/floorplan-affordances.js +1 -1
  201. package/dist/ceiling/floorplan-move.js +1 -1
  202. package/dist/ceiling/hole-editor.d.ts.map +1 -1
  203. package/dist/ceiling/index.d.ts +2 -2
  204. package/dist/ceiling/index.js +2 -2
  205. package/dist/ceiling/materials.d.ts +7 -3
  206. package/dist/ceiling/materials.d.ts.map +1 -1
  207. package/dist/ceiling/materials.js +45 -18
  208. package/dist/ceiling/move-tool.d.ts.map +1 -1
  209. package/dist/ceiling/paint.d.ts.map +1 -1
  210. package/dist/ceiling/paint.js +12 -21
  211. package/dist/ceiling/panel.d.ts.map +1 -1
  212. package/dist/ceiling/panel.js +5 -5
  213. package/dist/ceiling/parametrics.d.ts +1 -1
  214. package/dist/ceiling/parametrics.js +1 -1
  215. package/dist/ceiling/renderer.d.ts.map +1 -1
  216. package/dist/ceiling/renderer.js +26 -27
  217. package/dist/ceiling/system.d.ts.map +1 -1
  218. package/dist/ceiling/tool.d.ts.map +1 -1
  219. package/dist/ceiling/tool.js +1 -1
  220. package/dist/chimney/definition.d.ts +1 -1
  221. package/dist/chimney/definition.d.ts.map +1 -1
  222. package/dist/chimney/definition.js +9 -8
  223. package/dist/chimney/floorplan.js +1 -1
  224. package/dist/chimney/holes.js +1 -1
  225. package/dist/chimney/index.d.ts +3 -3
  226. package/dist/chimney/index.js +3 -3
  227. package/dist/chimney/move-tool.d.ts.map +1 -1
  228. package/dist/chimney/move-tool.js +3 -3
  229. package/dist/chimney/paint.js +1 -1
  230. package/dist/chimney/panel.js +4 -4
  231. package/dist/chimney/parametrics.d.ts +1 -1
  232. package/dist/chimney/parametrics.js +1 -1
  233. package/dist/chimney/presets.d.ts +1 -1
  234. package/dist/chimney/preview.d.ts.map +1 -1
  235. package/dist/chimney/preview.js +2 -2
  236. package/dist/chimney/renderer.d.ts.map +1 -1
  237. package/dist/chimney/renderer.js +4 -4
  238. package/dist/chimney/roof-trim.js +2 -2
  239. package/dist/chimney/tool.d.ts.map +1 -1
  240. package/dist/chimney/tool.js +6 -6
  241. package/dist/column/definition.d.ts +1 -1
  242. package/dist/column/definition.d.ts.map +1 -1
  243. package/dist/column/definition.js +17 -15
  244. package/dist/column/floorplan-affordances.js +3 -3
  245. package/dist/column/floorplan-move.js +2 -2
  246. package/dist/column/floorplan.js +1 -1
  247. package/dist/column/hosted-resize.d.ts +119 -113
  248. package/dist/column/hosted-resize.d.ts.map +1 -1
  249. package/dist/column/hosted-resize.js +1 -1
  250. package/dist/column/index.d.ts +1 -1
  251. package/dist/column/index.js +1 -1
  252. package/dist/column/paint.js +1 -1
  253. package/dist/column/panel.d.ts.map +1 -1
  254. package/dist/column/panel.js +9 -7
  255. package/dist/column/parametrics.d.ts +1 -1
  256. package/dist/column/parametrics.js +2 -2
  257. package/dist/column/renderer.d.ts.map +1 -1
  258. package/dist/column/renderer.js +3 -3
  259. package/dist/column/surface.js +1 -1
  260. package/dist/column/tool.d.ts.map +1 -1
  261. package/dist/column/tool.js +3 -3
  262. package/dist/construction-dimension/definition.d.ts +1 -1
  263. package/dist/construction-dimension/definition.js +6 -6
  264. package/dist/construction-dimension/floorplan-affordances.js +1 -1
  265. package/dist/construction-dimension/floorplan-tool.d.ts.map +1 -1
  266. package/dist/construction-dimension/floorplan-tool.js +1 -1
  267. package/dist/construction-dimension/floorplan.js +4 -4
  268. package/dist/construction-dimension/index.d.ts +3 -3
  269. package/dist/construction-dimension/index.js +3 -3
  270. package/dist/construction-dimension/panel.js +1 -1
  271. package/dist/construction-dimension/parametrics.js +1 -1
  272. package/dist/cupola/definition.d.ts +1 -1
  273. package/dist/cupola/definition.d.ts.map +1 -1
  274. package/dist/cupola/definition.js +9 -8
  275. package/dist/cupola/geometry.d.ts.map +1 -1
  276. package/dist/cupola/geometry.js +1 -1
  277. package/dist/cupola/index.d.ts +3 -3
  278. package/dist/cupola/index.js +3 -3
  279. package/dist/cupola/move-tool.js +4 -4
  280. package/dist/cupola/paint.js +2 -2
  281. package/dist/cupola/panel.js +1 -1
  282. package/dist/cupola/parametrics.d.ts +1 -1
  283. package/dist/cupola/parametrics.js +1 -1
  284. package/dist/cupola/preview.d.ts +1 -1
  285. package/dist/cupola/preview.d.ts.map +1 -1
  286. package/dist/cupola/preview.js +2 -2
  287. package/dist/cupola/renderer.d.ts.map +1 -1
  288. package/dist/cupola/renderer.js +3 -3
  289. package/dist/cupola/tool.d.ts.map +1 -1
  290. package/dist/cupola/tool.js +7 -7
  291. package/dist/door/contextual-dimensions.js +1 -1
  292. package/dist/door/definition.d.ts +1 -1
  293. package/dist/door/definition.d.ts.map +1 -1
  294. package/dist/door/definition.js +30 -26
  295. package/dist/door/door-math.d.ts +1 -1
  296. package/dist/door/door-math.js +1 -1
  297. package/dist/door/floorplan-affordances.js +2 -2
  298. package/dist/door/floorplan-move.js +5 -5
  299. package/dist/door/floorplan.js +3 -3
  300. package/dist/door/index.d.ts +2 -2
  301. package/dist/door/index.js +2 -2
  302. package/dist/door/mechanism.js +1 -1
  303. package/dist/door/move-tool.d.ts.map +1 -1
  304. package/dist/door/move-tool.js +11 -11
  305. package/dist/door/paint.js +1 -1
  306. package/dist/door/panel.d.ts.map +1 -1
  307. package/dist/door/panel.js +12 -12
  308. package/dist/door/parametrics.d.ts +1 -1
  309. package/dist/door/parametrics.js +1 -1
  310. package/dist/door/preview.d.ts +1 -1
  311. package/dist/door/preview.d.ts.map +1 -1
  312. package/dist/door/preview.js +1 -1
  313. package/dist/door/renderer.d.ts.map +1 -1
  314. package/dist/door/renderer.js +2 -2
  315. package/dist/door/system.d.ts.map +1 -1
  316. package/dist/door/system.js +1 -1
  317. package/dist/door/tool.d.ts.map +1 -1
  318. package/dist/door/tool.js +8 -8
  319. package/dist/dormer/csg-geometry.js +1 -1
  320. package/dist/dormer/definition.d.ts +1 -1
  321. package/dist/dormer/definition.d.ts.map +1 -1
  322. package/dist/dormer/definition.js +10 -9
  323. package/dist/dormer/index.d.ts +4 -4
  324. package/dist/dormer/index.js +3 -3
  325. package/dist/dormer/move-tool.d.ts.map +1 -1
  326. package/dist/dormer/move-tool.js +3 -3
  327. package/dist/dormer/paint.js +1 -1
  328. package/dist/dormer/panel-actions-section.js +1 -1
  329. package/dist/dormer/panel-windows-section.js +1 -1
  330. package/dist/dormer/panel.js +8 -8
  331. package/dist/dormer/parametrics.d.ts +1 -1
  332. package/dist/dormer/parametrics.js +1 -1
  333. package/dist/dormer/placement-guides.js +3 -3
  334. package/dist/dormer/preview.d.ts +1 -1
  335. package/dist/dormer/preview.d.ts.map +1 -1
  336. package/dist/dormer/preview.js +2 -2
  337. package/dist/dormer/renderer.d.ts +1 -1
  338. package/dist/dormer/renderer.d.ts.map +1 -1
  339. package/dist/dormer/renderer.js +2 -2
  340. package/dist/dormer/tool.d.ts.map +1 -1
  341. package/dist/dormer/tool.js +6 -6
  342. package/dist/dormer/use-dormer-placement.js +3 -3
  343. package/dist/downspout/definition.d.ts +1 -1
  344. package/dist/downspout/definition.d.ts.map +1 -1
  345. package/dist/downspout/definition.js +9 -8
  346. package/dist/downspout/geometry.d.ts +1 -1
  347. package/dist/downspout/geometry.js +2 -2
  348. package/dist/downspout/index.d.ts +3 -3
  349. package/dist/downspout/index.js +3 -3
  350. package/dist/downspout/parametrics.d.ts +1 -1
  351. package/dist/downspout/parametrics.js +1 -1
  352. package/dist/downspout/preview.d.ts +2 -2
  353. package/dist/downspout/preview.d.ts.map +1 -1
  354. package/dist/downspout/preview.js +3 -3
  355. package/dist/downspout/renderer.d.ts.map +1 -1
  356. package/dist/downspout/renderer.js +5 -5
  357. package/dist/downspout/routing.d.ts +2 -2
  358. package/dist/downspout/routing.d.ts.map +1 -1
  359. package/dist/downspout/routing.js +5 -4
  360. package/dist/downspout/system.d.ts.map +1 -1
  361. package/dist/downspout/tool.d.ts.map +1 -1
  362. package/dist/downspout/tool.js +7 -7
  363. package/dist/duct-fitting/accessory-geometry.js +1 -1
  364. package/dist/duct-fitting/definition.d.ts +1 -1
  365. package/dist/duct-fitting/definition.js +11 -11
  366. package/dist/duct-fitting/floorplan.d.ts +1 -1
  367. package/dist/duct-fitting/floorplan.js +5 -5
  368. package/dist/duct-fitting/geometry.d.ts +1 -1
  369. package/dist/duct-fitting/geometry.js +3 -3
  370. package/dist/duct-fitting/index.d.ts +4 -4
  371. package/dist/duct-fitting/index.js +4 -4
  372. package/dist/duct-fitting/inspector-editors.d.ts +1 -1
  373. package/dist/duct-fitting/move-tool.d.ts.map +1 -1
  374. package/dist/duct-fitting/move-tool.js +4 -4
  375. package/dist/duct-fitting/parametrics.d.ts +1 -1
  376. package/dist/duct-fitting/parametrics.js +3 -3
  377. package/dist/duct-fitting/ports.d.ts +1 -1
  378. package/dist/duct-fitting/selection.d.ts.map +1 -1
  379. package/dist/duct-fitting/selection.js +8 -9
  380. package/dist/duct-fitting/tool.d.ts +1 -1
  381. package/dist/duct-fitting/tool.d.ts.map +1 -1
  382. package/dist/duct-fitting/tool.js +14 -15
  383. package/dist/duct-segment/continuation.d.ts +3 -3
  384. package/dist/duct-segment/continuation.d.ts.map +1 -1
  385. package/dist/duct-segment/continuation.js +2 -2
  386. package/dist/duct-segment/definition.d.ts +1 -1
  387. package/dist/duct-segment/definition.js +13 -13
  388. package/dist/duct-segment/floorplan.d.ts +1 -1
  389. package/dist/duct-segment/floorplan.js +3 -3
  390. package/dist/duct-segment/geometry.d.ts +1 -1
  391. package/dist/duct-segment/geometry.js +1 -1
  392. package/dist/duct-segment/index.d.ts +3 -3
  393. package/dist/duct-segment/index.js +3 -3
  394. package/dist/duct-segment/move-tool.d.ts.map +1 -1
  395. package/dist/duct-segment/move-tool.js +8 -7
  396. package/dist/duct-segment/parametrics.d.ts +1 -1
  397. package/dist/duct-segment/parametrics.js +5 -5
  398. package/dist/duct-segment/selection.d.ts.map +1 -1
  399. package/dist/duct-segment/selection.js +13 -12
  400. package/dist/duct-segment/tool.d.ts +1 -2
  401. package/dist/duct-segment/tool.d.ts.map +1 -1
  402. package/dist/duct-segment/tool.js +22 -18
  403. package/dist/duct-terminal/definition.d.ts +1 -1
  404. package/dist/duct-terminal/definition.js +6 -6
  405. package/dist/duct-terminal/floorplan.d.ts +1 -1
  406. package/dist/duct-terminal/floorplan.js +1 -1
  407. package/dist/duct-terminal/geometry.d.ts +1 -1
  408. package/dist/duct-terminal/geometry.js +2 -2
  409. package/dist/duct-terminal/index.d.ts +4 -4
  410. package/dist/duct-terminal/index.js +4 -4
  411. package/dist/duct-terminal/parametrics.d.ts +1 -1
  412. package/dist/duct-terminal/ports.d.ts +1 -1
  413. package/dist/duct-terminal/ports.js +1 -1
  414. package/dist/duct-terminal/tool.d.ts.map +1 -1
  415. package/dist/duct-terminal/tool.js +11 -12
  416. package/dist/elevator/definition.d.ts +1 -1
  417. package/dist/elevator/definition.js +7 -7
  418. package/dist/elevator/floorplan-affordances.js +1 -1
  419. package/dist/elevator/index.d.ts +1 -1
  420. package/dist/elevator/index.js +1 -1
  421. package/dist/elevator/paint.js +1 -1
  422. package/dist/elevator/panel.js +9 -9
  423. package/dist/elevator/parametrics.js +1 -1
  424. package/dist/elevator/renderer.d.ts.map +1 -1
  425. package/dist/elevator/renderer.js +1 -1
  426. package/dist/elevator/system.js +1 -1
  427. package/dist/eyebrow-vent/definition.d.ts +1 -1
  428. package/dist/eyebrow-vent/definition.d.ts.map +1 -1
  429. package/dist/eyebrow-vent/definition.js +9 -8
  430. package/dist/eyebrow-vent/geometry.d.ts.map +1 -1
  431. package/dist/eyebrow-vent/geometry.js +1 -1
  432. package/dist/eyebrow-vent/index.d.ts +3 -3
  433. package/dist/eyebrow-vent/index.js +3 -3
  434. package/dist/eyebrow-vent/move-tool.js +4 -4
  435. package/dist/eyebrow-vent/paint.js +3 -3
  436. package/dist/eyebrow-vent/panel.js +1 -1
  437. package/dist/eyebrow-vent/parametrics.d.ts +1 -1
  438. package/dist/eyebrow-vent/parametrics.js +1 -1
  439. package/dist/eyebrow-vent/preview.d.ts +1 -1
  440. package/dist/eyebrow-vent/preview.d.ts.map +1 -1
  441. package/dist/eyebrow-vent/preview.js +2 -2
  442. package/dist/eyebrow-vent/renderer.d.ts.map +1 -1
  443. package/dist/eyebrow-vent/renderer.js +3 -3
  444. package/dist/eyebrow-vent/tool.d.ts.map +1 -1
  445. package/dist/eyebrow-vent/tool.js +7 -7
  446. package/dist/fence/actions/move-endpoint.d.ts +1 -1
  447. package/dist/fence/actions/move-endpoint.js +1 -1
  448. package/dist/fence/curve-tool.d.ts.map +1 -1
  449. package/dist/fence/definition.d.ts +1 -1
  450. package/dist/fence/definition.d.ts.map +1 -1
  451. package/dist/fence/definition.js +32 -17
  452. package/dist/fence/drafting.d.ts +7 -1
  453. package/dist/fence/drafting.d.ts.map +1 -1
  454. package/dist/fence/drafting.js +63 -4
  455. package/dist/fence/feature-tool.js +1 -1
  456. package/dist/fence/floorplan-affordances.js +1 -1
  457. package/dist/fence/floorplan.js +1 -1
  458. package/dist/fence/geometry.d.ts.map +1 -1
  459. package/dist/fence/geometry.js +3 -3
  460. package/dist/fence/index.d.ts +3 -3
  461. package/dist/fence/index.js +3 -3
  462. package/dist/fence/inspector-editors.js +1 -1
  463. package/dist/fence/lift.d.ts +3 -3
  464. package/dist/fence/lift.d.ts.map +1 -1
  465. package/dist/fence/lift.js +12 -3
  466. package/dist/fence/move-control-point-tool.d.ts.map +1 -1
  467. package/dist/fence/move-endpoint-tool.d.ts.map +1 -1
  468. package/dist/fence/move-endpoint-tool.js +4 -4
  469. package/dist/fence/move-tangent-tool.d.ts.map +1 -1
  470. package/dist/fence/move-tool.d.ts.map +1 -1
  471. package/dist/fence/move-tool.js +1 -1
  472. package/dist/fence/paint.js +1 -1
  473. package/dist/fence/panel-model.js +1 -1
  474. package/dist/fence/parametrics.d.ts +1 -1
  475. package/dist/fence/parametrics.js +1 -1
  476. package/dist/fence/system.d.ts.map +1 -1
  477. package/dist/fence/system.js +1 -1
  478. package/dist/fence/tool.d.ts.map +1 -1
  479. package/dist/fence/tool.js +90 -16
  480. package/dist/fence-feature/actions.js +1 -1
  481. package/dist/fence-feature/definition.d.ts.map +1 -1
  482. package/dist/fence-feature/definition.js +14 -10
  483. package/dist/fence-feature/geometry.js +2 -2
  484. package/dist/fence-feature/handles.js +2 -2
  485. package/dist/fence-feature/inspector.js +3 -3
  486. package/dist/fence-feature/move-session.d.ts +2 -2
  487. package/dist/fence-feature/move-session.js +1 -1
  488. package/dist/fence-feature/move-tool.js +1 -1
  489. package/dist/floor-opening/definition.js +1 -1
  490. package/dist/floor-opening/floorplan.d.ts +52 -52
  491. package/dist/floor-opening/floorplan.js +1 -1
  492. package/dist/guide/definition.d.ts +1 -1
  493. package/dist/guide/definition.js +4 -4
  494. package/dist/guide/index.d.ts +1 -1
  495. package/dist/guide/index.js +1 -1
  496. package/dist/guide/renderer.d.ts.map +1 -1
  497. package/dist/guide/system.d.ts.map +1 -1
  498. package/dist/gutter/definition.d.ts +1 -1
  499. package/dist/gutter/definition.d.ts.map +1 -1
  500. package/dist/gutter/definition.js +10 -9
  501. package/dist/gutter/downspouts-panel.js +3 -3
  502. package/dist/gutter/eave-align.js +2 -2
  503. package/dist/gutter/eave-snap.d.ts.map +1 -1
  504. package/dist/gutter/eave-snap.js +2 -2
  505. package/dist/gutter/floorplan.d.ts.map +1 -1
  506. package/dist/gutter/floorplan.js +5 -4
  507. package/dist/gutter/geometry.d.ts +1 -1
  508. package/dist/gutter/geometry.js +3 -3
  509. package/dist/gutter/index.d.ts +3 -3
  510. package/dist/gutter/index.js +3 -3
  511. package/dist/gutter/move-tool.js +4 -4
  512. package/dist/gutter/outlet-lookup.d.ts +1 -1
  513. package/dist/gutter/outlet-lookup.js +1 -1
  514. package/dist/gutter/paint.js +1 -1
  515. package/dist/gutter/parametrics.d.ts +1 -1
  516. package/dist/gutter/parametrics.js +1 -1
  517. package/dist/gutter/preview.d.ts +1 -1
  518. package/dist/gutter/preview.d.ts.map +1 -1
  519. package/dist/gutter/preview.js +3 -3
  520. package/dist/gutter/renderer.d.ts.map +1 -1
  521. package/dist/gutter/renderer.js +6 -6
  522. package/dist/gutter/tool.d.ts.map +1 -1
  523. package/dist/gutter/tool.js +7 -7
  524. package/dist/hvac-equipment/definition.d.ts +1 -1
  525. package/dist/hvac-equipment/definition.js +6 -6
  526. package/dist/hvac-equipment/floorplan.d.ts +1 -1
  527. package/dist/hvac-equipment/floorplan.js +2 -2
  528. package/dist/hvac-equipment/geometry.d.ts +1 -1
  529. package/dist/hvac-equipment/geometry.js +2 -2
  530. package/dist/hvac-equipment/index.d.ts +4 -4
  531. package/dist/hvac-equipment/index.js +4 -4
  532. package/dist/hvac-equipment/parametrics.d.ts +1 -1
  533. package/dist/hvac-equipment/ports.d.ts +1 -1
  534. package/dist/hvac-equipment/ports.js +1 -1
  535. package/dist/hvac-equipment/tool.d.ts.map +1 -1
  536. package/dist/hvac-equipment/tool.js +7 -8
  537. package/dist/imported-mesh/definition.d.ts +1 -1
  538. package/dist/imported-mesh/definition.js +4 -4
  539. package/dist/imported-mesh/index.d.ts +3 -3
  540. package/dist/imported-mesh/index.js +3 -3
  541. package/dist/index.d.ts +65 -61
  542. package/dist/index.d.ts.map +1 -1
  543. package/dist/index.js +118 -114
  544. package/dist/item/authored-params.js +1 -1
  545. package/dist/item/definition.d.ts +1 -1
  546. package/dist/item/definition.d.ts.map +1 -1
  547. package/dist/item/definition.js +18 -16
  548. package/dist/item/floorplan-move.js +4 -4
  549. package/dist/item/floorplan.d.ts +1 -1
  550. package/dist/item/floorplan.js +2 -2
  551. package/dist/item/index.d.ts +3 -3
  552. package/dist/item/index.js +3 -3
  553. package/dist/item/model-loader.d.ts +5 -0
  554. package/dist/item/model-loader.d.ts.map +1 -1
  555. package/dist/item/model-loader.js +49 -0
  556. package/dist/item/move-tool.d.ts.map +1 -1
  557. package/dist/item/paint.js +1 -1
  558. package/dist/item/panel.js +7 -7
  559. package/dist/item/parametrics.d.ts +1 -1
  560. package/dist/item/parametrics.js +1 -1
  561. package/dist/item/renderer.d.ts.map +1 -1
  562. package/dist/item/renderer.js +16 -12
  563. package/dist/item/system.d.ts.map +1 -1
  564. package/dist/item/system.js +7 -2
  565. package/dist/item/tool.d.ts.map +1 -1
  566. package/dist/item/tool.js +3 -3
  567. package/dist/item/wall-object-observations.d.ts +6 -0
  568. package/dist/item/wall-object-observations.d.ts.map +1 -0
  569. package/dist/item/wall-object-observations.js +260 -0
  570. package/dist/lean-to-extension/assembly.d.ts +2 -2
  571. package/dist/lean-to-extension/assembly.js +8 -8
  572. package/dist/lean-to-extension/canopy-joint.d.ts +1 -1
  573. package/dist/lean-to-extension/canopy-joint.js +1 -1
  574. package/dist/lean-to-extension/corner-joint.js +4 -4
  575. package/dist/lean-to-extension/definition.d.ts +1 -1
  576. package/dist/lean-to-extension/definition.d.ts.map +1 -1
  577. package/dist/lean-to-extension/definition.js +17 -16
  578. package/dist/lean-to-extension/floorplan-affordances.js +4 -4
  579. package/dist/lean-to-extension/floorplan-move.js +4 -4
  580. package/dist/lean-to-extension/floorplan-tool.d.ts.map +1 -1
  581. package/dist/lean-to-extension/floorplan-tool.js +7 -7
  582. package/dist/lean-to-extension/floorplan.js +5 -5
  583. package/dist/lean-to-extension/geometry.js +4 -4
  584. package/dist/lean-to-extension/index.d.ts +7 -7
  585. package/dist/lean-to-extension/index.js +7 -7
  586. package/dist/lean-to-extension/layout.d.ts +1 -1
  587. package/dist/lean-to-extension/layout.js +4 -4
  588. package/dist/lean-to-extension/managed-preview.js +4 -4
  589. package/dist/lean-to-extension/move-tool.d.ts.map +1 -1
  590. package/dist/lean-to-extension/move-tool.js +5 -5
  591. package/dist/lean-to-extension/paint.js +1 -1
  592. package/dist/lean-to-extension/parametrics.js +1 -1
  593. package/dist/lean-to-extension/placement-validation.d.ts.map +1 -1
  594. package/dist/lean-to-extension/placement-validation.js +5 -5
  595. package/dist/lean-to-extension/placement.d.ts +1 -1
  596. package/dist/lean-to-extension/placement.js +6 -6
  597. package/dist/lean-to-extension/plan-footprint.js +2 -2
  598. package/dist/lean-to-extension/preview-geometry.js +1 -1
  599. package/dist/lean-to-extension/preview.d.ts.map +1 -1
  600. package/dist/lean-to-extension/preview.js +1 -1
  601. package/dist/lean-to-extension/renderer.d.ts.map +1 -1
  602. package/dist/lean-to-extension/renderer.js +1 -1
  603. package/dist/lean-to-extension/roof-attachment.d.ts.map +1 -1
  604. package/dist/lean-to-extension/roof-attachment.js +4 -4
  605. package/dist/lean-to-extension/system.d.ts.map +1 -1
  606. package/dist/lean-to-extension/system.js +10 -10
  607. package/dist/lean-to-extension/tool.d.ts.map +1 -1
  608. package/dist/lean-to-extension/tool.js +11 -11
  609. package/dist/level/definition.d.ts +1 -1
  610. package/dist/level/definition.d.ts.map +1 -1
  611. package/dist/level/definition.js +5 -4
  612. package/dist/level/index.d.ts +1 -1
  613. package/dist/level/index.js +1 -1
  614. package/dist/level/renderer.d.ts.map +1 -1
  615. package/dist/level/system.d.ts.map +1 -1
  616. package/dist/lineset/definition.d.ts +1 -1
  617. package/dist/lineset/definition.js +8 -8
  618. package/dist/lineset/floorplan.d.ts +1 -1
  619. package/dist/lineset/floorplan.js +1 -1
  620. package/dist/lineset/geometry.d.ts +1 -1
  621. package/dist/lineset/geometry.js +1 -1
  622. package/dist/lineset/index.d.ts +3 -3
  623. package/dist/lineset/index.js +3 -3
  624. package/dist/lineset/move-tool.d.ts.map +1 -1
  625. package/dist/lineset/move-tool.js +2 -2
  626. package/dist/lineset/parametrics.d.ts +1 -1
  627. package/dist/lineset/selection.d.ts.map +1 -1
  628. package/dist/lineset/selection.js +1 -1
  629. package/dist/lineset/tool.d.ts.map +1 -1
  630. package/dist/lineset/tool.js +7 -8
  631. package/dist/liquid-line/definition.d.ts +1 -1
  632. package/dist/liquid-line/definition.js +8 -8
  633. package/dist/liquid-line/floorplan.d.ts +1 -1
  634. package/dist/liquid-line/floorplan.js +1 -1
  635. package/dist/liquid-line/geometry.d.ts +1 -1
  636. package/dist/liquid-line/geometry.js +1 -1
  637. package/dist/liquid-line/index.d.ts +4 -4
  638. package/dist/liquid-line/index.js +4 -4
  639. package/dist/liquid-line/move-tool.d.ts.map +1 -1
  640. package/dist/liquid-line/move-tool.js +1 -1
  641. package/dist/liquid-line/parametrics.d.ts +1 -1
  642. package/dist/liquid-line/selection.d.ts.map +1 -1
  643. package/dist/liquid-line/selection.js +1 -1
  644. package/dist/liquid-line/tool.d.ts.map +1 -1
  645. package/dist/liquid-line/tool.js +9 -10
  646. package/dist/measurement/definition.d.ts +1 -1
  647. package/dist/measurement/definition.js +6 -6
  648. package/dist/measurement/edit.d.ts +1 -1
  649. package/dist/measurement/floorplan-affordance.js +2 -2
  650. package/dist/measurement/floorplan.js +2 -2
  651. package/dist/measurement/index.d.ts +2 -2
  652. package/dist/measurement/index.js +2 -2
  653. package/dist/measurement/renderer.d.ts.map +1 -1
  654. package/dist/measurement/renderer.js +2 -2
  655. package/dist/measurement/selection.d.ts.map +1 -1
  656. package/dist/measurement/selection.js +4 -4
  657. package/dist/measurement/smart-surface.d.ts +1 -1
  658. package/dist/measurement/smart-tool.d.ts.map +1 -1
  659. package/dist/measurement/smart-tool.js +2 -2
  660. package/dist/measurement/surface-query.js +1 -1
  661. package/dist/measurement/tool-router.js +2 -2
  662. package/dist/measurement/tool.d.ts +1 -1
  663. package/dist/measurement/tool.d.ts.map +1 -1
  664. package/dist/measurement/tool.js +3 -3
  665. package/dist/pipe-fitting/definition.d.ts +1 -1
  666. package/dist/pipe-fitting/definition.js +11 -11
  667. package/dist/pipe-fitting/floorplan.d.ts +1 -1
  668. package/dist/pipe-fitting/floorplan.js +4 -4
  669. package/dist/pipe-fitting/geometry.d.ts +1 -1
  670. package/dist/pipe-fitting/geometry.js +4 -4
  671. package/dist/pipe-fitting/index.d.ts +4 -4
  672. package/dist/pipe-fitting/index.js +4 -4
  673. package/dist/pipe-fitting/inline-insertion.d.ts +1 -1
  674. package/dist/pipe-fitting/inline-insertion.d.ts.map +1 -1
  675. package/dist/pipe-fitting/inline-insertion.js +1 -1
  676. package/dist/pipe-fitting/move-tool.d.ts.map +1 -1
  677. package/dist/pipe-fitting/move-tool.js +3 -3
  678. package/dist/pipe-fitting/parametrics.d.ts +1 -1
  679. package/dist/pipe-fitting/parametrics.js +1 -1
  680. package/dist/pipe-fitting/ports.d.ts +1 -1
  681. package/dist/pipe-fitting/ports.js +1 -1
  682. package/dist/pipe-fitting/selection.d.ts.map +1 -1
  683. package/dist/pipe-fitting/selection.js +6 -7
  684. package/dist/pipe-fitting/tool.d.ts +2 -2
  685. package/dist/pipe-fitting/tool.d.ts.map +1 -1
  686. package/dist/pipe-fitting/tool.js +15 -16
  687. package/dist/pipe-segment/continuation.d.ts +4 -4
  688. package/dist/pipe-segment/continuation.d.ts.map +1 -1
  689. package/dist/pipe-segment/continuation.js +1 -1
  690. package/dist/pipe-segment/definition.d.ts +1 -1
  691. package/dist/pipe-segment/definition.js +11 -11
  692. package/dist/pipe-segment/floorplan.d.ts +1 -1
  693. package/dist/pipe-segment/floorplan.js +3 -3
  694. package/dist/pipe-segment/geometry.d.ts +1 -1
  695. package/dist/pipe-segment/geometry.js +2 -2
  696. package/dist/pipe-segment/index.d.ts +3 -3
  697. package/dist/pipe-segment/index.js +3 -3
  698. package/dist/pipe-segment/move-tool.d.ts.map +1 -1
  699. package/dist/pipe-segment/move-tool.js +3 -3
  700. package/dist/pipe-segment/parametrics.d.ts +1 -1
  701. package/dist/pipe-segment/parametrics.js +3 -3
  702. package/dist/pipe-segment/selection.d.ts.map +1 -1
  703. package/dist/pipe-segment/selection.js +10 -9
  704. package/dist/pipe-segment/tool.d.ts.map +1 -1
  705. package/dist/pipe-segment/tool.js +13 -14
  706. package/dist/pipe-trap/definition.d.ts +1 -1
  707. package/dist/pipe-trap/definition.js +6 -6
  708. package/dist/pipe-trap/floorplan.d.ts +1 -1
  709. package/dist/pipe-trap/floorplan.js +1 -1
  710. package/dist/pipe-trap/geometry.d.ts +1 -1
  711. package/dist/pipe-trap/geometry.js +2 -2
  712. package/dist/pipe-trap/index.d.ts +4 -4
  713. package/dist/pipe-trap/index.js +4 -4
  714. package/dist/pipe-trap/parametrics.d.ts +1 -1
  715. package/dist/pipe-trap/ports.d.ts +1 -1
  716. package/dist/pipe-trap/ports.js +1 -1
  717. package/dist/pipe-trap/tool.d.ts.map +1 -1
  718. package/dist/pipe-trap/tool.js +7 -8
  719. package/dist/procedural-item/animation.d.ts.map +1 -1
  720. package/dist/procedural-item/definition.d.ts.map +1 -1
  721. package/dist/procedural-item/definition.js +10 -8
  722. package/dist/procedural-item/geometry.d.ts.map +1 -1
  723. package/dist/procedural-item/index.d.ts +2 -2
  724. package/dist/procedural-item/index.js +2 -2
  725. package/dist/procedural-item/move-session.d.ts +1 -1
  726. package/dist/procedural-item/move-session.js +2 -2
  727. package/dist/procedural-item/move-tool.js +3 -3
  728. package/dist/procedural-item/renderer.js +5 -5
  729. package/dist/ridge-vent/definition.d.ts +1 -1
  730. package/dist/ridge-vent/definition.d.ts.map +1 -1
  731. package/dist/ridge-vent/definition.js +9 -8
  732. package/dist/ridge-vent/geometry.js +1 -1
  733. package/dist/ridge-vent/index.d.ts +3 -3
  734. package/dist/ridge-vent/index.js +3 -3
  735. package/dist/ridge-vent/move-tool.js +5 -5
  736. package/dist/ridge-vent/panel.js +1 -1
  737. package/dist/ridge-vent/parametrics.d.ts +1 -1
  738. package/dist/ridge-vent/parametrics.js +1 -1
  739. package/dist/ridge-vent/preview.d.ts +1 -1
  740. package/dist/ridge-vent/preview.d.ts.map +1 -1
  741. package/dist/ridge-vent/preview.js +2 -2
  742. package/dist/ridge-vent/renderer.d.ts.map +1 -1
  743. package/dist/ridge-vent/renderer.js +5 -4
  744. package/dist/ridge-vent/tool.d.ts.map +1 -1
  745. package/dist/ridge-vent/tool.js +8 -8
  746. package/dist/roof/barrel-panel.d.ts +5 -0
  747. package/dist/roof/barrel-panel.d.ts.map +1 -0
  748. package/dist/roof/barrel-panel.js +17 -0
  749. package/dist/roof/conical-roof.d.ts +5 -1
  750. package/dist/roof/conical-roof.d.ts.map +1 -1
  751. package/dist/roof/conical-roof.js +19 -15
  752. package/dist/roof/definition.d.ts +1 -1
  753. package/dist/roof/definition.d.ts.map +1 -1
  754. package/dist/roof/definition.js +18 -10
  755. package/dist/roof/floorplan.d.ts.map +1 -1
  756. package/dist/roof/floorplan.js +11 -4
  757. package/dist/roof/glazed-geometry.d.ts +5 -0
  758. package/dist/roof/glazed-geometry.d.ts.map +1 -0
  759. package/dist/roof/glazed-geometry.js +27 -0
  760. package/dist/roof/glazed-materials.d.ts +14 -0
  761. package/dist/roof/glazed-materials.d.ts.map +1 -0
  762. package/dist/roof/glazed-materials.js +42 -0
  763. package/dist/roof/glazing-controls.d.ts +33 -0
  764. package/dist/roof/glazing-controls.d.ts.map +1 -0
  765. package/dist/roof/glazing-controls.js +50 -0
  766. package/dist/roof/glazing-panel-editor.d.ts +6 -0
  767. package/dist/roof/glazing-panel-editor.d.ts.map +1 -0
  768. package/dist/roof/glazing-panel-editor.js +44 -0
  769. package/dist/roof/glazing-panel.d.ts +5 -0
  770. package/dist/roof/glazing-panel.d.ts.map +1 -0
  771. package/dist/roof/glazing-panel.js +41 -0
  772. package/dist/roof/glazing-preview.d.ts +10 -0
  773. package/dist/roof/glazing-preview.d.ts.map +1 -0
  774. package/dist/roof/glazing-preview.js +48 -0
  775. package/dist/roof/index.d.ts +3 -3
  776. package/dist/roof/index.js +3 -3
  777. package/dist/roof/panel.d.ts.map +1 -1
  778. package/dist/roof/panel.js +41 -6
  779. package/dist/roof/parametrics.js +1 -1
  780. package/dist/roof/renderer.d.ts.map +1 -1
  781. package/dist/roof/renderer.js +36 -6
  782. package/dist/roof/roof-footprint-source.d.ts.map +1 -1
  783. package/dist/roof/roof-level-target.d.ts +75 -0
  784. package/dist/roof/roof-level-target.d.ts.map +1 -0
  785. package/dist/roof/roof-level-target.js +119 -0
  786. package/dist/roof/roof-placement-mode.d.ts +3 -2
  787. package/dist/roof/roof-placement-mode.d.ts.map +1 -1
  788. package/dist/roof/system.d.ts +1 -2
  789. package/dist/roof/system.d.ts.map +1 -1
  790. package/dist/roof/system.js +5 -1
  791. package/dist/roof/tool.d.ts +3 -3
  792. package/dist/roof/tool.d.ts.map +1 -1
  793. package/dist/roof/tool.js +80 -41
  794. package/dist/roof-segment/definition.d.ts +1 -1
  795. package/dist/roof-segment/definition.d.ts.map +1 -1
  796. package/dist/roof-segment/definition.js +31 -62
  797. package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
  798. package/dist/roof-segment/floorplan-affordances.js +13 -34
  799. package/dist/roof-segment/floorplan.d.ts.map +1 -1
  800. package/dist/roof-segment/floorplan.js +1 -0
  801. package/dist/roof-segment/index.d.ts +1 -1
  802. package/dist/roof-segment/index.js +1 -1
  803. package/dist/roof-segment/measurement.js +1 -1
  804. package/dist/roof-segment/paint.d.ts +4 -0
  805. package/dist/roof-segment/paint.d.ts.map +1 -0
  806. package/dist/roof-segment/paint.js +92 -0
  807. package/dist/roof-segment/panel.d.ts.map +1 -1
  808. package/dist/roof-segment/panel.js +16 -7
  809. package/dist/roof-segment/parametrics.d.ts +1 -1
  810. package/dist/roof-segment/parametrics.d.ts.map +1 -1
  811. package/dist/roof-segment/parametrics.js +12 -1
  812. package/dist/roof-segment/renderer.d.ts +1 -1
  813. package/dist/roof-segment/renderer.d.ts.map +1 -1
  814. package/dist/roof-segment/renderer.js +65 -12
  815. package/dist/scan/definition.d.ts +1 -1
  816. package/dist/scan/definition.js +4 -4
  817. package/dist/scan/index.d.ts +1 -1
  818. package/dist/scan/index.js +1 -1
  819. package/dist/scan/renderer.d.ts.map +1 -1
  820. package/dist/scan/system.d.ts.map +1 -1
  821. package/dist/separator/definition.js +1 -1
  822. package/dist/separator/renderer.js +1 -1
  823. package/dist/shared/accessory-placement.d.ts +1 -1
  824. package/dist/shared/accessory-placement.d.ts.map +1 -1
  825. package/dist/shared/accessory-placement.js +3 -3
  826. package/dist/shared/accessory-snapping.d.ts +1 -1
  827. package/dist/shared/accessory-snapping.d.ts.map +1 -1
  828. package/dist/shared/accessory-snapping.js +1 -1
  829. package/dist/shared/auto-fitting.d.ts +1 -1
  830. package/dist/shared/auto-fitting.d.ts.map +1 -1
  831. package/dist/shared/auto-fitting.js +3 -3
  832. package/dist/shared/automatic-run-end-cap.d.ts +1 -1
  833. package/dist/shared/automatic-run-end-cap.d.ts.map +1 -1
  834. package/dist/shared/automatic-run-end-cap.js +4 -4
  835. package/dist/shared/block-face-host.d.ts +1 -1
  836. package/dist/shared/connection-feedback.d.ts +1 -2
  837. package/dist/shared/connection-feedback.d.ts.map +1 -1
  838. package/dist/shared/connection-feedback.js +1 -2
  839. package/dist/shared/construction-dimension-standards.d.ts +1 -1
  840. package/dist/shared/curtain-opening-limits.js +1 -1
  841. package/dist/shared/draft-axis-guides.js +1 -1
  842. package/dist/shared/duct-adapter.d.ts +2 -2
  843. package/dist/shared/duct-adapter.d.ts.map +1 -1
  844. package/dist/shared/duct-adapter.js +3 -3
  845. package/dist/shared/duct-body-paint.js +1 -1
  846. package/dist/shared/elbow-branch-continuation.d.ts +1 -1
  847. package/dist/shared/elbow-branch-continuation.d.ts.map +1 -1
  848. package/dist/shared/elbow-branch-continuation.js +2 -2
  849. package/dist/shared/finish-script-model.d.ts +12 -0
  850. package/dist/shared/finish-script-model.d.ts.map +1 -0
  851. package/dist/shared/finish-script-model.js +32 -0
  852. package/dist/shared/fitting-deletion-cleanup.js +2 -2
  853. package/dist/shared/fitting-endpoint-reaim.js +3 -3
  854. package/dist/shared/fitting-surface-support.d.ts.map +1 -1
  855. package/dist/shared/fitting-surface-support.js +2 -2
  856. package/dist/shared/fitting-tool-options.js +1 -1
  857. package/dist/shared/floor-placement.d.ts.map +1 -1
  858. package/dist/shared/floorplan-cursor.d.ts.map +1 -1
  859. package/dist/shared/hosted-resize.d.ts +2 -1
  860. package/dist/shared/hosted-resize.d.ts.map +1 -1
  861. package/dist/shared/hosted-resize.js +11 -3
  862. package/dist/shared/item-interaction-actions.js +1 -1
  863. package/dist/shared/lean-to-post-omissions.d.ts +1 -1
  864. package/dist/shared/lean-to-post-omissions.js +1 -1
  865. package/dist/shared/mep-ghost.js +5 -5
  866. package/dist/shared/move-roof-tool.d.ts.map +1 -1
  867. package/dist/shared/move-roof-tool.js +129 -36
  868. package/dist/shared/node-batch/batchable.d.ts.map +1 -1
  869. package/dist/shared/node-batch/batchable.js +5 -3
  870. package/dist/shared/node-batch/candidates.d.ts +1 -1
  871. package/dist/shared/node-batch/candidates.js +1 -1
  872. package/dist/shared/node-batch/store.d.ts +1 -1
  873. package/dist/shared/node-batch/store.d.ts.map +1 -1
  874. package/dist/shared/node-batch/store.js +1 -1
  875. package/dist/shared/node-batch/system.d.ts.map +1 -1
  876. package/dist/shared/node-batch/system.js +22 -7
  877. package/dist/shared/opening-documentation.d.ts +1 -1
  878. package/dist/shared/opening-documentation.js +1 -1
  879. package/dist/shared/opening-guides-runtime.js +1 -1
  880. package/dist/shared/opening-move-wall-gate.d.ts.map +1 -1
  881. package/dist/shared/opening-placement-dimensions.js +2 -2
  882. package/dist/shared/opening-property-preview-host.d.ts +1 -1
  883. package/dist/shared/opening-property-preview.d.ts.map +1 -1
  884. package/dist/shared/opening-property-preview.js +1 -1
  885. package/dist/shared/panel-fields.js +2 -2
  886. package/dist/shared/path-point-affordance.js +2 -2
  887. package/dist/shared/pipe-run-translation-offset.d.ts +2 -2
  888. package/dist/shared/pipe-run-translation-offset.d.ts.map +1 -1
  889. package/dist/shared/pipe-run-translation-offset.js +2 -2
  890. package/dist/shared/pipe-vertical-offset.d.ts +2 -2
  891. package/dist/shared/pipe-vertical-offset.d.ts.map +1 -1
  892. package/dist/shared/pipe-vertical-offset.js +2 -2
  893. package/dist/shared/polygon-centroid-move.js +1 -1
  894. package/dist/shared/port-systems.d.ts +9 -0
  895. package/dist/shared/port-systems.d.ts.map +1 -0
  896. package/dist/shared/port-systems.js +10 -0
  897. package/dist/shared/refrigerant-line-selection.d.ts.map +1 -1
  898. package/dist/shared/refrigerant-line-selection.js +3 -2
  899. package/dist/shared/relative-roof-drag.d.ts +1 -1
  900. package/dist/shared/relative-roof-drag.js +2 -2
  901. package/dist/shared/roof-segment-hit.d.ts.map +1 -1
  902. package/dist/shared/roof-segment-hit.js +7 -5
  903. package/dist/shared/roof-surface-placement-guides.d.ts +1 -1
  904. package/dist/shared/roof-surface-placement-guides.js +11 -11
  905. package/dist/shared/roof-surface.d.ts.map +1 -1
  906. package/dist/shared/roof-surface.js +25 -5
  907. package/dist/shared/run-hanger-controls.d.ts +1 -1
  908. package/dist/shared/run-hanger-controls.js +1 -1
  909. package/dist/shared/run-hanger-inspector.d.ts +1 -1
  910. package/dist/shared/run-hanger-inspector.js +3 -3
  911. package/dist/shared/run-hangers.js +2 -2
  912. package/dist/shared/run-move-connectivity.d.ts.map +1 -1
  913. package/dist/shared/run-translation-offset.d.ts +3 -3
  914. package/dist/shared/run-translation-offset.d.ts.map +1 -1
  915. package/dist/shared/run-translation-offset.js +2 -2
  916. package/dist/shared/scripted-opening.d.ts +3 -3
  917. package/dist/shared/scripted-opening.d.ts.map +1 -1
  918. package/dist/shared/scripted-opening.js +1 -1
  919. package/dist/shared/slot-paint.js +1 -1
  920. package/dist/shared/surface-paint.js +2 -2
  921. package/dist/shared/swap-preview-material.d.ts +9 -7
  922. package/dist/shared/swap-preview-material.d.ts.map +1 -1
  923. package/dist/shared/swap-preview-material.js +18 -7
  924. package/dist/shared/system-check-panel.js +1 -1
  925. package/dist/shared/system-checks.js +2 -2
  926. package/dist/shared/vertical-offset.d.ts +3 -3
  927. package/dist/shared/vertical-offset.d.ts.map +1 -1
  928. package/dist/shared/vertical-offset.js +3 -3
  929. package/dist/shared/wall-run-move.d.ts +1 -1
  930. package/dist/shared/wall-run-move.d.ts.map +1 -1
  931. package/dist/shelf/definition.d.ts +1 -1
  932. package/dist/shelf/definition.d.ts.map +1 -1
  933. package/dist/shelf/definition.js +13 -11
  934. package/dist/shelf/dimensions.d.ts +1 -1
  935. package/dist/shelf/floorplan-affordances.js +1 -1
  936. package/dist/shelf/floorplan-move.js +1 -1
  937. package/dist/shelf/floorplan.d.ts +1 -1
  938. package/dist/shelf/floorplan.js +2 -2
  939. package/dist/shelf/geometry.d.ts +1 -1
  940. package/dist/shelf/geometry.js +1 -1
  941. package/dist/shelf/index.d.ts +3 -3
  942. package/dist/shelf/index.js +3 -3
  943. package/dist/shelf/parametrics.d.ts +1 -1
  944. package/dist/shelf/preview.d.ts +1 -1
  945. package/dist/shelf/preview.d.ts.map +1 -1
  946. package/dist/shelf/preview.js +1 -1
  947. package/dist/shelf/tool.d.ts.map +1 -1
  948. package/dist/shelf/tool.js +3 -3
  949. package/dist/site/definition.d.ts +1 -1
  950. package/dist/site/definition.d.ts.map +1 -1
  951. package/dist/site/definition.js +5 -4
  952. package/dist/site/generic-foundation-geometry.d.ts +16 -0
  953. package/dist/site/generic-foundation-geometry.d.ts.map +1 -0
  954. package/dist/site/generic-foundation-geometry.js +75 -0
  955. package/dist/site/generic-foundation.d.ts +4 -0
  956. package/dist/site/generic-foundation.d.ts.map +1 -0
  957. package/dist/site/generic-foundation.js +91 -0
  958. package/dist/site/ground-hole.d.ts +92 -0
  959. package/dist/site/ground-hole.d.ts.map +1 -0
  960. package/dist/site/ground-hole.js +306 -0
  961. package/dist/site/ground-pit-geometry.d.ts +39 -0
  962. package/dist/site/ground-pit-geometry.d.ts.map +1 -0
  963. package/dist/site/ground-pit-geometry.js +213 -0
  964. package/dist/site/ground-pit.d.ts +45 -0
  965. package/dist/site/ground-pit.d.ts.map +1 -0
  966. package/dist/site/ground-pit.js +175 -0
  967. package/dist/site/ground-veil.d.ts +39 -0
  968. package/dist/site/ground-veil.d.ts.map +1 -0
  969. package/dist/site/ground-veil.js +86 -0
  970. package/dist/site/ground-window-system.d.ts +9 -0
  971. package/dist/site/ground-window-system.d.ts.map +1 -0
  972. package/dist/site/ground-window-system.js +108 -0
  973. package/dist/site/hole-noise.d.ts +11 -0
  974. package/dist/site/hole-noise.d.ts.map +1 -0
  975. package/dist/site/hole-noise.js +79 -0
  976. package/dist/site/index.d.ts +1 -1
  977. package/dist/site/index.js +1 -1
  978. package/dist/site/lot-mask.d.ts +5 -3
  979. package/dist/site/lot-mask.d.ts.map +1 -1
  980. package/dist/site/lot-mask.js +9 -5
  981. package/dist/site/panel.d.ts.map +1 -1
  982. package/dist/site/panel.js +25 -1
  983. package/dist/site/parametrics.js +1 -1
  984. package/dist/site/renderer.d.ts.map +1 -1
  985. package/dist/site/renderer.js +136 -32
  986. package/dist/site/terrain-holes.d.ts +1 -1
  987. package/dist/site/terrain-mesh.d.ts +2 -2
  988. package/dist/site/terrain-mesh.js +2 -2
  989. package/dist/site/terrain-renderer.d.ts +3 -1
  990. package/dist/site/terrain-renderer.d.ts.map +1 -1
  991. package/dist/site/terrain-renderer.js +13 -6
  992. package/dist/site/underground-edge.d.ts +26 -0
  993. package/dist/site/underground-edge.d.ts.map +1 -0
  994. package/dist/site/underground-edge.js +46 -0
  995. package/dist/skylight/definition.d.ts +1 -1
  996. package/dist/skylight/definition.d.ts.map +1 -1
  997. package/dist/skylight/definition.js +11 -10
  998. package/dist/skylight/geometry.d.ts +1 -1
  999. package/dist/skylight/geometry.js +1 -1
  1000. package/dist/skylight/index.d.ts +4 -4
  1001. package/dist/skylight/index.js +4 -4
  1002. package/dist/skylight/move-tool.js +4 -4
  1003. package/dist/skylight/panel.js +3 -3
  1004. package/dist/skylight/parametrics.d.ts +1 -1
  1005. package/dist/skylight/parametrics.js +1 -1
  1006. package/dist/skylight/preview.d.ts +1 -1
  1007. package/dist/skylight/preview.d.ts.map +1 -1
  1008. package/dist/skylight/preview.js +2 -2
  1009. package/dist/skylight/renderer.d.ts.map +1 -1
  1010. package/dist/skylight/renderer.js +5 -5
  1011. package/dist/skylight/system.d.ts.map +1 -1
  1012. package/dist/skylight/tool.d.ts.map +1 -1
  1013. package/dist/skylight/tool.js +7 -7
  1014. package/dist/slab/boundary-editor.d.ts.map +1 -1
  1015. package/dist/slab/definition.d.ts +1 -1
  1016. package/dist/slab/definition.d.ts.map +1 -1
  1017. package/dist/slab/definition.js +26 -17
  1018. package/dist/slab/floorplan-affordances.d.ts +100 -100
  1019. package/dist/slab/floorplan-affordances.js +1 -1
  1020. package/dist/slab/floorplan-move.js +1 -1
  1021. package/dist/slab/geometry.js +3 -3
  1022. package/dist/slab/hole-editor.d.ts.map +1 -1
  1023. package/dist/slab/index.d.ts +2 -2
  1024. package/dist/slab/index.js +2 -2
  1025. package/dist/slab/move-tool.d.ts.map +1 -1
  1026. package/dist/slab/move-tool.js +1 -1
  1027. package/dist/slab/paint.d.ts +1 -1
  1028. package/dist/slab/paint.d.ts.map +1 -1
  1029. package/dist/slab/paint.js +6 -3
  1030. package/dist/slab/panel.d.ts.map +1 -1
  1031. package/dist/slab/panel.js +5 -5
  1032. package/dist/slab/parametrics.d.ts +1 -1
  1033. package/dist/slab/parametrics.js +1 -1
  1034. package/dist/slab/quick-measurement.js +1 -1
  1035. package/dist/slab/system.d.ts.map +1 -1
  1036. package/dist/slab/system.js +1 -1
  1037. package/dist/slab/tool.d.ts.map +1 -1
  1038. package/dist/slab/tool.js +5 -3
  1039. package/dist/solar-panel/definition.d.ts +1 -1
  1040. package/dist/solar-panel/definition.d.ts.map +1 -1
  1041. package/dist/solar-panel/definition.js +8 -7
  1042. package/dist/solar-panel/index.d.ts +4 -4
  1043. package/dist/solar-panel/index.js +4 -4
  1044. package/dist/solar-panel/move-tool.js +3 -3
  1045. package/dist/solar-panel/panel.d.ts.map +1 -1
  1046. package/dist/solar-panel/panel.js +4 -4
  1047. package/dist/solar-panel/parametrics.d.ts +1 -1
  1048. package/dist/solar-panel/parametrics.js +1 -1
  1049. package/dist/solar-panel/preview.d.ts +1 -1
  1050. package/dist/solar-panel/preview.d.ts.map +1 -1
  1051. package/dist/solar-panel/preview.js +2 -2
  1052. package/dist/solar-panel/renderer.d.ts.map +1 -1
  1053. package/dist/solar-panel/renderer.js +3 -3
  1054. package/dist/solar-panel/tool.d.ts.map +1 -1
  1055. package/dist/solar-panel/tool.js +7 -7
  1056. package/dist/spawn/definition.d.ts +1 -1
  1057. package/dist/spawn/definition.js +7 -7
  1058. package/dist/spawn/floorplan-affordances.js +1 -1
  1059. package/dist/spawn/floorplan.d.ts +1 -1
  1060. package/dist/spawn/index.d.ts +2 -2
  1061. package/dist/spawn/index.js +2 -2
  1062. package/dist/spawn/panel.js +1 -1
  1063. package/dist/spawn/parametrics.d.ts +1 -1
  1064. package/dist/spawn/parametrics.js +1 -1
  1065. package/dist/spawn/renderer.d.ts.map +1 -1
  1066. package/dist/spawn/renderer.js +1 -1
  1067. package/dist/spawn/tool.d.ts.map +1 -1
  1068. package/dist/spawn/tool.js +2 -2
  1069. package/dist/stair/baluster-geometry.d.ts +2 -2
  1070. package/dist/stair/baluster-guard.d.ts +1 -1
  1071. package/dist/stair/baluster-guard.d.ts.map +1 -1
  1072. package/dist/stair/baluster-guard.js +1 -1
  1073. package/dist/stair/boards-guard.d.ts +1 -1
  1074. package/dist/stair/boards-guard.js +1 -1
  1075. package/dist/stair/cable-guard.d.ts +1 -1
  1076. package/dist/stair/cable-guard.js +1 -1
  1077. package/dist/stair/construction-controls.js +1 -1
  1078. package/dist/stair/continuous-railings.d.ts +1 -1
  1079. package/dist/stair/continuous-railings.js +9 -9
  1080. package/dist/stair/definition.d.ts +1 -1
  1081. package/dist/stair/definition.d.ts.map +1 -1
  1082. package/dist/stair/definition.js +23 -9
  1083. package/dist/stair/documentation.d.ts +1 -1
  1084. package/dist/stair/documentation.js +1 -1
  1085. package/dist/stair/floorplan-affordances.js +1 -1
  1086. package/dist/stair/floorplan-move.d.ts.map +1 -1
  1087. package/dist/stair/floorplan-move.js +90 -10
  1088. package/dist/stair/floorplan.d.ts +1 -1
  1089. package/dist/stair/floorplan.d.ts.map +1 -1
  1090. package/dist/stair/floorplan.js +24 -5
  1091. package/dist/stair/glass-guard.d.ts +1 -1
  1092. package/dist/stair/glass-guard.js +1 -1
  1093. package/dist/stair/guard-path.d.ts.map +1 -1
  1094. package/dist/stair/index.d.ts +1 -1
  1095. package/dist/stair/index.js +1 -1
  1096. package/dist/stair/metal-guard.d.ts +1 -1
  1097. package/dist/stair/metal-guard.js +1 -1
  1098. package/dist/stair/paint.d.ts +9 -9
  1099. package/dist/stair/paint.d.ts.map +1 -1
  1100. package/dist/stair/paint.js +2 -2
  1101. package/dist/stair/panel.d.ts.map +1 -1
  1102. package/dist/stair/panel.js +23 -9
  1103. package/dist/stair/parametrics.js +3 -3
  1104. package/dist/stair/post-and-rail-guard.d.ts +1 -1
  1105. package/dist/stair/post-and-rail-guard.js +1 -1
  1106. package/dist/stair/railing-controls.js +1 -1
  1107. package/dist/stair/renderer.d.ts.map +1 -1
  1108. package/dist/stair/renderer.js +108 -15
  1109. package/dist/stair/stair-click-guard.d.ts +43 -0
  1110. package/dist/stair/stair-click-guard.d.ts.map +1 -0
  1111. package/dist/stair/stair-click-guard.js +44 -0
  1112. package/dist/stair/stair-type.d.ts.map +1 -1
  1113. package/dist/stair/stair-type.js +1 -2
  1114. package/dist/stair/surface-move-preview.d.ts +4 -0
  1115. package/dist/stair/surface-move-preview.d.ts.map +1 -0
  1116. package/dist/stair/surface-move-preview.js +53 -0
  1117. package/dist/stair/surface-transition.d.ts +9 -0
  1118. package/dist/stair/surface-transition.d.ts.map +1 -0
  1119. package/dist/stair/surface-transition.js +61 -0
  1120. package/dist/stair/system.d.ts.map +1 -1
  1121. package/dist/stair/tool.d.ts +2 -0
  1122. package/dist/stair/tool.d.ts.map +1 -0
  1123. package/dist/stair/tool.js +580 -0
  1124. package/dist/stair/use-stair-render-data.d.ts +87 -85
  1125. package/dist/stair/use-stair-render-data.d.ts.map +1 -1
  1126. package/dist/stair-segment/definition.d.ts +1 -1
  1127. package/dist/stair-segment/definition.d.ts.map +1 -1
  1128. package/dist/stair-segment/definition.js +7 -10
  1129. package/dist/stair-segment/index.d.ts +1 -1
  1130. package/dist/stair-segment/index.js +1 -1
  1131. package/dist/stair-segment/panel.js +3 -3
  1132. package/dist/stair-segment/parametrics.js +2 -2
  1133. package/dist/stair-segment/renderer.d.ts.map +1 -1
  1134. package/dist/stair-segment/renderer.js +2 -2
  1135. package/dist/structural-grid/definition.d.ts +1 -1
  1136. package/dist/structural-grid/definition.js +3 -3
  1137. package/dist/structural-grid/floorplan-tool.d.ts.map +1 -1
  1138. package/dist/structural-grid/index.d.ts +1 -1
  1139. package/dist/structural-grid/index.js +1 -1
  1140. package/dist/turbine-vent/definition.d.ts +1 -1
  1141. package/dist/turbine-vent/definition.d.ts.map +1 -1
  1142. package/dist/turbine-vent/definition.js +9 -8
  1143. package/dist/turbine-vent/geometry.js +1 -1
  1144. package/dist/turbine-vent/index.d.ts +3 -3
  1145. package/dist/turbine-vent/index.js +3 -3
  1146. package/dist/turbine-vent/move-tool.js +4 -4
  1147. package/dist/turbine-vent/paint.js +2 -2
  1148. package/dist/turbine-vent/panel.js +1 -1
  1149. package/dist/turbine-vent/parametrics.d.ts +1 -1
  1150. package/dist/turbine-vent/parametrics.js +1 -1
  1151. package/dist/turbine-vent/preview.d.ts +1 -1
  1152. package/dist/turbine-vent/preview.d.ts.map +1 -1
  1153. package/dist/turbine-vent/preview.js +2 -2
  1154. package/dist/turbine-vent/renderer.d.ts.map +1 -1
  1155. package/dist/turbine-vent/renderer.js +3 -3
  1156. package/dist/turbine-vent/tool.d.ts.map +1 -1
  1157. package/dist/turbine-vent/tool.js +7 -7
  1158. package/dist/unit/definition.d.ts +1 -1
  1159. package/dist/unit/definition.js +2 -2
  1160. package/dist/unit/index.d.ts +1 -1
  1161. package/dist/unit/index.js +1 -1
  1162. package/dist/unit/parametrics.js +1 -1
  1163. package/dist/unit/unit-panel.js +2 -2
  1164. package/dist/wall/actions.js +2 -2
  1165. package/dist/wall/construction-dimensions.d.ts +3 -3
  1166. package/dist/wall/construction-dimensions.js +6 -6
  1167. package/dist/wall/curtain-opening-frame.d.ts.map +1 -1
  1168. package/dist/wall/curtain-wall-adapter.js +2 -2
  1169. package/dist/wall/curtain-wall-floorplan.js +2 -2
  1170. package/dist/wall/curtain-wall-geometry.d.ts.map +1 -1
  1171. package/dist/wall/curtain-wall-geometry.js +4 -4
  1172. package/dist/wall/curtain-wall-layout.d.ts +1 -2
  1173. package/dist/wall/curtain-wall-layout.d.ts.map +1 -1
  1174. package/dist/wall/curtain-wall-layout.js +1 -23
  1175. package/dist/wall/curtain-wall-materials.d.ts.map +1 -1
  1176. package/dist/wall/curtain-wall-materials.js +2 -1
  1177. package/dist/wall/curtain-wall-panel.d.ts.map +1 -1
  1178. package/dist/wall/curtain-wall-panel.js +4 -4
  1179. package/dist/wall/curtain-wall-piece-geometry.d.ts +1 -1
  1180. package/dist/wall/curve-tool.d.ts.map +1 -1
  1181. package/dist/wall/definition.d.ts +1 -1
  1182. package/dist/wall/definition.d.ts.map +1 -1
  1183. package/dist/wall/definition.js +31 -26
  1184. package/dist/wall/exterior.d.ts +6 -0
  1185. package/dist/wall/exterior.d.ts.map +1 -0
  1186. package/dist/wall/exterior.js +13 -0
  1187. package/dist/wall/floorplan-move.js +1 -1
  1188. package/dist/wall/floorplan-tool.js +1 -1
  1189. package/dist/wall/floorplan.d.ts +2 -2
  1190. package/dist/wall/floorplan.d.ts.map +1 -1
  1191. package/dist/wall/floorplan.js +4 -4
  1192. package/dist/wall/index.d.ts +2 -2
  1193. package/dist/wall/index.js +2 -2
  1194. package/dist/wall/measurement.js +1 -1
  1195. package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
  1196. package/dist/wall/move-endpoint-tool.js +5 -6
  1197. package/dist/wall/move-shared.js +1 -1
  1198. package/dist/wall/move-tool.d.ts.map +1 -1
  1199. package/dist/wall/move-tool.js +3 -4
  1200. package/dist/wall/paint.d.ts +1 -1
  1201. package/dist/wall/paint.d.ts.map +1 -1
  1202. package/dist/wall/paint.js +11 -16
  1203. package/dist/wall/panel-model.d.ts.map +1 -1
  1204. package/dist/wall/panel-model.js +6 -6
  1205. package/dist/wall/panel.d.ts.map +1 -1
  1206. package/dist/wall/panel.js +50 -17
  1207. package/dist/wall/parametrics.d.ts +1 -1
  1208. package/dist/wall/parametrics.js +1 -1
  1209. package/dist/wall/pointer-transparency.d.ts +1 -1
  1210. package/dist/wall/pointer-transparency.d.ts.map +1 -1
  1211. package/dist/wall/preview.d.ts.map +1 -1
  1212. package/dist/wall/property-preview.d.ts.map +1 -1
  1213. package/dist/wall/quick-measurement.js +1 -1
  1214. package/dist/wall/rectangle-command.d.ts +235 -42
  1215. package/dist/wall/rectangle-command.d.ts.map +1 -1
  1216. package/dist/wall/rectangle-tool.js +1 -1
  1217. package/dist/wall/renderer.d.ts.map +1 -1
  1218. package/dist/wall/renderer.js +27 -8
  1219. package/dist/wall/selection-hit-owner.d.ts.map +1 -1
  1220. package/dist/wall/split-floorplan-layer.js +3 -3
  1221. package/dist/wall/split-pointer.js +2 -2
  1222. package/dist/wall/split-preview.d.ts +1 -1
  1223. package/dist/wall/split-session.js +2 -2
  1224. package/dist/wall/split-store.d.ts +1 -1
  1225. package/dist/wall/split-tool.js +3 -3
  1226. package/dist/wall/system.d.ts.map +1 -1
  1227. package/dist/wall/system.js +6 -6
  1228. package/dist/wall/tool.d.ts.map +1 -1
  1229. package/dist/wall/tool.js +9 -4
  1230. package/dist/wall/treatment-level-data.d.ts.map +1 -1
  1231. package/dist/wall/treatments.d.ts +1 -1
  1232. package/dist/wall/treatments.d.ts.map +1 -1
  1233. package/dist/wall/treatments.js +11 -4
  1234. package/dist/wall/wall-batch-system.d.ts.map +1 -1
  1235. package/dist/wall/wall-batch-system.js +47 -5
  1236. package/dist/window/contextual-dimensions.js +1 -1
  1237. package/dist/window/corner-cue.d.ts +9 -0
  1238. package/dist/window/corner-cue.d.ts.map +1 -0
  1239. package/dist/window/corner-cue.js +31 -0
  1240. package/dist/window/corner-fuse.d.ts +14 -0
  1241. package/dist/window/corner-fuse.d.ts.map +1 -0
  1242. package/dist/window/corner-fuse.js +42 -0
  1243. package/dist/window/definition.d.ts +1 -1
  1244. package/dist/window/definition.d.ts.map +1 -1
  1245. package/dist/window/definition.js +31 -26
  1246. package/dist/window/floor-projection.js +1 -1
  1247. package/dist/window/floorplan-affordances.js +2 -2
  1248. package/dist/window/floorplan-move.d.ts.map +1 -1
  1249. package/dist/window/floorplan-move.js +47 -13
  1250. package/dist/window/floorplan.d.ts.map +1 -1
  1251. package/dist/window/floorplan.js +98 -56
  1252. package/dist/window/index.d.ts +2 -2
  1253. package/dist/window/index.js +2 -2
  1254. package/dist/window/mechanism.js +1 -1
  1255. package/dist/window/move-tool.d.ts.map +1 -1
  1256. package/dist/window/move-tool.js +92 -27
  1257. package/dist/window/paint.js +1 -1
  1258. package/dist/window/panel.d.ts.map +1 -1
  1259. package/dist/window/panel.js +108 -18
  1260. package/dist/window/parametrics.d.ts +1 -1
  1261. package/dist/window/parametrics.d.ts.map +1 -1
  1262. package/dist/window/parametrics.js +7 -1
  1263. package/dist/window/placement.d.ts +6 -0
  1264. package/dist/window/placement.d.ts.map +1 -1
  1265. package/dist/window/placement.js +26 -0
  1266. package/dist/window/preview.d.ts +1 -1
  1267. package/dist/window/preview.d.ts.map +1 -1
  1268. package/dist/window/preview.js +1 -1
  1269. package/dist/window/renderer.d.ts.map +1 -1
  1270. package/dist/window/renderer.js +2 -2
  1271. package/dist/window/system.d.ts.map +1 -1
  1272. package/dist/window/system.js +1 -1
  1273. package/dist/window/tool.d.ts.map +1 -1
  1274. package/dist/window/tool.js +113 -28
  1275. package/dist/window/window-math.d.ts +1 -1
  1276. package/dist/window/window-math.js +1 -1
  1277. package/dist/zone/definition.d.ts +1 -1
  1278. package/dist/zone/definition.d.ts.map +1 -1
  1279. package/dist/zone/definition.js +14 -12
  1280. package/dist/zone/floorplan-affordances.d.ts +463 -87
  1281. package/dist/zone/floorplan-affordances.d.ts.map +1 -1
  1282. package/dist/zone/floorplan-affordances.js +1 -1
  1283. package/dist/zone/floorplan-move.js +1 -1
  1284. package/dist/zone/floorplan.js +3 -3
  1285. package/dist/zone/index.d.ts +1 -1
  1286. package/dist/zone/index.js +1 -1
  1287. package/dist/zone/parametrics.js +1 -1
  1288. package/dist/zone/quantities-panel.js +3 -3
  1289. package/dist/zone/quick-measurement.js +1 -1
  1290. package/dist/zone/renderer.d.ts.map +1 -1
  1291. package/dist/zone/renderer.js +10 -2
  1292. package/dist/zone/room-clear-dimensions.js +1 -1
  1293. package/dist/zone/room-documentation.d.ts +1 -1
  1294. package/dist/zone/room-documentation.js +1 -1
  1295. package/dist/zone/system.d.ts.map +1 -1
  1296. package/package.json +26 -13
  1297. package/dist/shared/connection-compatibility.d.ts +0 -8
  1298. package/dist/shared/connection-compatibility.d.ts.map +0 -1
  1299. package/dist/shared/connection-compatibility.js +0 -28
  1300. package/dist/shared/distribution-run-contract.d.ts +0 -49
  1301. package/dist/shared/distribution-run-contract.d.ts.map +0 -1
  1302. package/dist/shared/distribution-run-contract.js +0 -30
  1303. package/dist/shared/distribution-run-tool.d.ts +0 -117
  1304. package/dist/shared/distribution-run-tool.d.ts.map +0 -1
  1305. package/dist/shared/distribution-run-tool.js +0 -986
  1306. package/dist/shared/draw-alignment.d.ts +0 -25
  1307. package/dist/shared/draw-alignment.d.ts.map +0 -1
  1308. package/dist/shared/draw-alignment.js +0 -30
  1309. package/dist/shared/ports.d.ts +0 -92
  1310. package/dist/shared/ports.d.ts.map +0 -1
  1311. package/dist/shared/ports.js +0 -305
  1312. package/dist/shared/run-cursor.d.ts +0 -22
  1313. package/dist/shared/run-cursor.d.ts.map +0 -1
  1314. package/dist/shared/run-cursor.js +0 -19
  1315. package/dist/shared/run-direction-feedback.d.ts +0 -20
  1316. package/dist/shared/run-direction-feedback.d.ts.map +0 -1
  1317. package/dist/shared/run-direction-feedback.js +0 -139
  1318. package/dist/shared/run-port-snap.d.ts +0 -11
  1319. package/dist/shared/run-port-snap.d.ts.map +0 -1
  1320. package/dist/shared/run-port-snap.js +0 -19
  1321. package/dist/shared/run-screen-direction.d.ts +0 -5
  1322. package/dist/shared/run-screen-direction.d.ts.map +0 -1
  1323. package/dist/shared/run-screen-direction.js +0 -24
  1324. package/dist/site/setbacks.d.ts +0 -33
  1325. package/dist/site/setbacks.d.ts.map +0 -1
  1326. package/dist/site/setbacks.js +0 -204
@@ -0,0 +1,45 @@
1
+ import type { PitWalls } from './ground-pit-geometry.js';
2
+ import type { EdgeLook } from './underground-edge.js';
3
+ /**
4
+ * The pit under the hole, seen from above: over a level that lies deep, the hole in the ground
5
+ * reads as the ground cut open, not as a white plate. Its sides are a section — the topsoil's
6
+ * layer, then strata of two anthracites cut by the same noisy threshold as the rim, darkening
7
+ * with depth — standing from grade down to the shown level's floor, and at the bottom a dark
8
+ * floor under the part of the hole the level does not fill. The levels between stay hidden: the
9
+ * level display still hides them, the pit only says there is a drop.
10
+ *
11
+ * Everything that moves is a uniform (the pit's floor, how far the hole is open); the walls'
12
+ * geometry is cut once per footprint change, as the hole's own field is, and rides the same
13
+ * contour (`ground-pit-geometry.ts`). The materials exist from the moment the scene has a level
14
+ * below grade, so a floor switch compiles nothing.
15
+ */
16
+ /**
17
+ * The two looks: `true` the section walls and a dark floor under the hole's unbuilt part, `false`
18
+ * the walls alone (the level is then seen over the backdrop, as the hole always showed it).
19
+ */
20
+ export declare const PIT_FLOOR = true;
21
+ /** Sets the walls' look for an edge look (uniforms: nothing recompiles). */
22
+ export declare function setGroundPitEdge(look: EdgeLook): void;
23
+ /** The floor the pit goes down to now, world Y (the last level shown below grade). */
24
+ export declare function groundPitFloorNow(): number;
25
+ /** Where the pit draws its dark floor now, world Y: under the plate of that floor. */
26
+ export declare function groundPitDrawnFloorNow(): number;
27
+ /**
28
+ * The pit's walls and floor. `walls` is the cut contour (null: no hole), `box` the field's
29
+ * footprint the floor covers, `topY` the grade, `floorY` the shown level's floor and `drawnFloorY`
30
+ * where the dark floor is drawn (`groundPitFloorY`), all world Y.
31
+ */
32
+ export declare function GroundPit({ walls, box, topY, floorY, drawnFloorY, topsoil, inHole, }: {
33
+ walls: PitWalls | null;
34
+ box: {
35
+ originX: number;
36
+ originZ: number;
37
+ span: number;
38
+ } | null;
39
+ topY: number;
40
+ floorY: number | null;
41
+ drawnFloorY: number | null;
42
+ topsoil: string;
43
+ inHole: unknown;
44
+ }): import("react").JSX.Element;
45
+ //# sourceMappingURL=ground-pit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground-pit.d.ts","sourceRoot":"","sources":["../../src/site/ground-pit.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,OAAO,CAAA;AA0C7B,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAGrD;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAqFD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,GAAG,EACH,IAAI,EACJ,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,GACP,EAAE;IACD,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;IACtB,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB,+BAwEA"}
@@ -0,0 +1,175 @@
1
+ 'use client';
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { groundHoleOpenNode, useViewer } from '@pascal-app/viewer';
4
+ import { useEffect, useMemo } from 'react';
5
+ import { BufferAttribute, BufferGeometry, FrontSide } from 'three';
6
+ import { attribute, color, float, mix, mx_noise_float, normalize, normalLocal, positionLocal, positionWorld, smoothstep, transformNormalToView, uniform, vec3, } from 'three/tsl';
7
+ import { MeshLambertNodeMaterial } from 'three/webgpu';
8
+ import { noopRaycast } from './ground-veil.js';
9
+ /**
10
+ * The pit under the hole, seen from above: over a level that lies deep, the hole in the ground
11
+ * reads as the ground cut open, not as a white plate. Its sides are a section — the topsoil's
12
+ * layer, then strata of two anthracites cut by the same noisy threshold as the rim, darkening
13
+ * with depth — standing from grade down to the shown level's floor, and at the bottom a dark
14
+ * floor under the part of the hole the level does not fill. The levels between stay hidden: the
15
+ * level display still hides them, the pit only says there is a drop.
16
+ *
17
+ * Everything that moves is a uniform (the pit's floor, how far the hole is open); the walls'
18
+ * geometry is cut once per footprint change, as the hole's own field is, and rides the same
19
+ * contour (`ground-pit-geometry.ts`). The materials exist from the moment the scene has a level
20
+ * below grade, so a floor switch compiles nothing.
21
+ */
22
+ /**
23
+ * The two looks: `true` the section walls and a dark floor under the hole's unbuilt part, `false`
24
+ * the walls alone (the level is then seen over the backdrop, as the hole always showed it).
25
+ */
26
+ export const PIT_FLOOR = true;
27
+ const TOPSOIL_DEPTH = 0.5;
28
+ const STRATA = { light: '#6e6e6e', dark: '#5e5e5e' };
29
+ const PIT_FOOT = '#2a2a2a';
30
+ const PIT_FLOOR_COLOR = '#4a4a4a';
31
+ /** How far (m) the strata's undulation lifts and sinks the layers along the wall. */
32
+ const STRATA_WAVE = 0.6;
33
+ /** Strata noise per metre along the wall: low, so a layer runs long. */
34
+ const STRATA_RUN = 0.05;
35
+ /** Layers per metre of height. */
36
+ const STRATA_FREQUENCY = 1.6;
37
+ /** How far the walls' normals ease toward up, 0 the contour's own shading, 1 none. */
38
+ const WALL_SHADE_EASE = 0.75;
39
+ /** How far (m) the cut's roughness pushes a wall sideways, outward (into the earth) or inward. */
40
+ const CRUMBLE = 0.9;
41
+ /** The roughness's noise per metre along the wall and per metre of depth. */
42
+ const CRUMBLE_RUN = 0.55;
43
+ const CRUMBLE_DEPTH = 0.45;
44
+ /** Depth (m) below the rim where the roughness starts, and above the foot where it ends. */
45
+ const CRUMBLE_RIM = 0.25;
46
+ const CRUMBLE_FOOT = 0.9;
47
+ /** The walls' foot goes this far under the pit's floor, so no gap shows between them. */
48
+ const FOOT_TUCK = 0.03;
49
+ /**
50
+ * The section cut's face (`EdgeLook.section`): one flat tone and a darker line at grade. Without
51
+ * it (`section-earth` too) the wall is the earth's: topsoil band, strata, a low crumble that is
52
+ * zero at the rim.
53
+ */
54
+ const SECTION_TONE = '#747474';
55
+ const SECTION_LINE = '#1e1e1e';
56
+ const SECTION_LINE_DEPTH = 0.07;
57
+ const pitTopY = uniform(0);
58
+ const pitFloorY = uniform(0);
59
+ // Where the dark floor is drawn: under the plate (`groundPitFloorY` in core), clear of the
60
+ // plane the foundation stops on.
61
+ const pitDrawnFloorY = uniform(0);
62
+ const pitCrumble = uniform(CRUMBLE);
63
+ const pitSection = uniform(0);
64
+ /** Sets the walls' look for an edge look (uniforms: nothing recompiles). */
65
+ export function setGroundPitEdge(look) {
66
+ pitCrumble.value = look.crumble;
67
+ pitSection.value = look.section;
68
+ }
69
+ /** The floor the pit goes down to now, world Y (the last level shown below grade). */
70
+ export function groundPitFloorNow() {
71
+ return pitFloorY.value;
72
+ }
73
+ /** Where the pit draws its dark floor now, world Y: under the plate of that floor. */
74
+ export function groundPitDrawnFloorNow() {
75
+ return pitDrawnFloorY.value;
76
+ }
77
+ function pitEase() {
78
+ return smoothstep(float(0), float(1), groundHoleOpenNode());
79
+ }
80
+ function wallMaterial(topsoil, foot) {
81
+ const material = new MeshLambertNodeMaterial({ side: FrontSide });
82
+ const drop = attribute('drop', 'float');
83
+ const slide = drop.mul(pitEase());
84
+ const drawnY = mix(positionLocal.y, pitDrawnFloorY.sub(FOOT_TUCK), slide);
85
+ // An earth cut is rough in depth: past the rim's own cut the wall is pushed sideways by a 3D
86
+ // noise that changes with depth, so a wiggle of the rim does not run straight down as a fold.
87
+ // Nothing at the rim (the top stays on the shader's cut) nor at the foot (it stays under the
88
+ // floor's plate), both eased in over a few tenths of a metre.
89
+ const belowRim = positionLocal.y.sub(drawnY);
90
+ const aboveFoot = drawnY.sub(pitDrawnFloorY.sub(FOOT_TUCK));
91
+ const rough = smoothstep(float(CRUMBLE_RIM), float(CRUMBLE_RIM * 5), belowRim).mul(smoothstep(float(0), float(CRUMBLE_FOOT), aboveFoot));
92
+ const crumble = (scale) => mx_noise_float(vec3(positionLocal.x.mul(CRUMBLE_RUN * scale), drawnY.mul(CRUMBLE_DEPTH * scale), positionLocal.z.mul(CRUMBLE_RUN * scale)));
93
+ // A broad lump and a finer one over it.
94
+ const bulge = crumble(1).add(crumble(2.7).mul(0.4)).mul(pitCrumble).mul(rough);
95
+ material.positionNode = vec3(positionLocal.x.sub(normalLocal.x.mul(bulge)), drawnY, positionLocal.z.sub(normalLocal.z.mul(bulge)));
96
+ // `positionWorld` is the displaced vertex (the position node feeds it), so `.y` is the height the
97
+ // wall is drawn at. Layers run long and flat: a wide, slow wave lifts and sinks them along the
98
+ // wall, and the strata's own noise is stretched along it so a band reads as a band, not a patch.
99
+ const wave = mx_noise_float(positionWorld.mul(vec3(0.07, 0, 0.07))).mul(STRATA_WAVE);
100
+ const sample = vec3(positionWorld.x.mul(STRATA_RUN), positionWorld.y.add(wave).mul(STRATA_FREQUENCY), positionWorld.z.mul(STRATA_RUN));
101
+ // The contour's folds are real, but lit as a wall each fold is a light or dark column. The pit
102
+ // is in shade: the normal is eased toward up so the folds shade softly and the strata lead.
103
+ material.normalNode = transformNormalToView(normalize(mix(normalLocal, vec3(0, 1, 0), WALL_SHADE_EASE)));
104
+ const strata = smoothstep(float(-0.06), float(0.06), mx_noise_float(sample));
105
+ const layers = mix(color(STRATA.dark), color(STRATA.light), strata);
106
+ const toFoot = mix(layers, color(foot), drop.mul(0.6).mul(float(1).sub(pitSection)));
107
+ // The ground's own layer along the cut, its lower edge a noise threshold like the rim.
108
+ const depthBelowTop = drop.mul(pitTopY.sub(pitFloorY)).mul(pitEase());
109
+ const edge = float(TOPSOIL_DEPTH).add(mx_noise_float(positionWorld.mul(vec3(1.3, 0, 1.3))).mul(0.12));
110
+ const soil = float(1)
111
+ .sub(smoothstep(edge.sub(0.04), edge, depthBelowTop))
112
+ .mul(float(1).sub(pitSection));
113
+ const earth = mix(toFoot, color(topsoil), soil);
114
+ // The section cut: a flat face and a thin dark line where it meets grade.
115
+ const gradeLine = float(1).sub(smoothstep(float(SECTION_LINE_DEPTH), float(SECTION_LINE_DEPTH * 1.6), depthBelowTop));
116
+ const section = mix(color(SECTION_TONE), color(SECTION_LINE), gradeLine);
117
+ material.colorNode = mix(earth, section, pitSection);
118
+ return material;
119
+ }
120
+ function floorMaterial(inHole) {
121
+ const material = new MeshLambertNodeMaterial({ side: FrontSide });
122
+ material.positionNode = vec3(positionLocal.x, mix(pitTopY, pitDrawnFloorY, pitEase()), positionLocal.z);
123
+ const grain = mx_noise_float(positionWorld.mul(vec3(0.8, 0, 0.8)))
124
+ .mul(0.5)
125
+ .add(0.5);
126
+ material.colorNode = mix(color(PIT_FLOOR_COLOR), color(PIT_FOOT), grain.mul(0.5));
127
+ material.maskNode = inHole;
128
+ return material;
129
+ }
130
+ /**
131
+ * The pit's walls and floor. `walls` is the cut contour (null: no hole), `box` the field's
132
+ * footprint the floor covers, `topY` the grade, `floorY` the shown level's floor and `drawnFloorY`
133
+ * where the dark floor is drawn (`groundPitFloorY`), all world Y.
134
+ */
135
+ export function GroundPit({ walls, box, topY, floorY, drawnFloorY, topsoil, inHole, }) {
136
+ const wall = useMemo(() => wallMaterial(topsoil, PIT_FOOT), [topsoil]);
137
+ const floor = useMemo(() => (PIT_FLOOR ? floorMaterial(inHole) : null), [inHole]);
138
+ useEffect(() => () => {
139
+ wall.dispose();
140
+ floor?.dispose();
141
+ }, [wall, floor]);
142
+ const wallGeometry = useMemo(() => {
143
+ if (!walls)
144
+ return null;
145
+ const geometry = new BufferGeometry();
146
+ geometry.setAttribute('position', new BufferAttribute(walls.positions, 3));
147
+ geometry.setAttribute('normal', new BufferAttribute(walls.normals, 3));
148
+ geometry.setAttribute('drop', new BufferAttribute(walls.drops, 1));
149
+ geometry.setIndex(new BufferAttribute(walls.indices, 1));
150
+ return geometry;
151
+ }, [walls]);
152
+ const floorGeometry = useMemo(() => {
153
+ if (!box)
154
+ return null;
155
+ const { originX: x0, originZ: z0, span } = box;
156
+ const geometry = new BufferGeometry();
157
+ geometry.setAttribute('position', new BufferAttribute(new Float32Array([x0, 0, z0, x0, 0, z0 + span, x0 + span, 0, z0 + span, x0 + span, 0, z0]), 3));
158
+ geometry.setAttribute('normal', new BufferAttribute(new Float32Array([0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0]), 3));
159
+ geometry.setIndex([0, 1, 2, 0, 2, 3]);
160
+ return geometry;
161
+ }, [box]);
162
+ useEffect(() => () => wallGeometry?.dispose(), [wallGeometry]);
163
+ useEffect(() => () => floorGeometry?.dispose(), [floorGeometry]);
164
+ // Under the ground the hole stays open but its pit does not: the eye there sees the earth's
165
+ // dark mode, not the cut walls hanging in it. A flag, not a uniform: nothing recompiles.
166
+ const eyeAbove = useViewer((state) => !state.eyeUnderGround);
167
+ useEffect(() => {
168
+ pitTopY.value = topY;
169
+ if (floorY !== null)
170
+ pitFloorY.value = floorY;
171
+ if (drawnFloorY !== null)
172
+ pitDrawnFloorY.value = drawnFloorY;
173
+ }, [topY, floorY, drawnFloorY]);
174
+ return (_jsxs(_Fragment, { children: [wallGeometry && (_jsx("mesh", { frustumCulled: false, geometry: wallGeometry, material: wall, raycast: noopRaycast, userData: { groundPit: 'walls', pascalExport: 'strip' }, visible: eyeAbove })), floorGeometry && floor && (_jsx("mesh", { frustumCulled: false, geometry: floorGeometry, material: floor, raycast: noopRaycast, userData: { groundPit: 'floor', pascalExport: 'strip' }, visible: eyeAbove }))] }));
175
+ }
@@ -0,0 +1,39 @@
1
+ import type { TerrainField } from '@pascal-app/core';
2
+ import { type BufferGeometry, type Material } from 'three';
3
+ import { MeshBasicNodeMaterial } from 'three/webgpu';
4
+ /** Presentation-only meshes are never picked: clicks fall through to what lies under them. */
5
+ export declare const noopRaycast: () => void;
6
+ type Point = readonly [number, number];
7
+ /** The veil of the lot's own ground: its fill, or its sculpted terrain. */
8
+ export declare function groundVeilMaterial(groundColor: string): MeshBasicNodeMaterial;
9
+ /**
10
+ * The veil of the horizon disc: the ground past the lot only (under the lot's own veil a second
11
+ * one would read as a step at the property line), dissolving into the backdrop by twice the lot's
12
+ * radius.
13
+ */
14
+ export declare function horizonVeilMaterial(groundColor: string, lot: ReadonlyArray<Point>, bounds: {
15
+ cx: number;
16
+ cz: number;
17
+ radius: number;
18
+ }): MeshBasicNodeMaterial;
19
+ /** The grade ring's ribbon along one outline where the ground meets a level below grade. */
20
+ export declare function gradeRingGeometry(outline: ReadonlyArray<Point>, field: TerrainField | null): BufferGeometry;
21
+ export declare function gradeRingMaterial(): MeshBasicNodeMaterial;
22
+ /**
23
+ * Drawn only while the ground is veiled: the veil of one solid ground surface (the same geometry
24
+ * in the same place), or the grade ring. A direct child of the site, as the surfaces are, so the
25
+ * captures find it (`siteGround`) and hide it with the site's other surfaces.
26
+ *
27
+ * `shows` says when a live view draws it: `'window'` (a sheet: only where the ground window veils
28
+ * a hillside in the eye's way; wholesale the ground is a hole, not a sheet) or `'veiled'` (the
29
+ * ring: wherever any ground is veiled). A capture shows both by setting `visible` itself.
30
+ */
31
+ export declare function GroundVeil({ geometry, material, position, rotation, shows, }: {
32
+ geometry: BufferGeometry;
33
+ material: Material;
34
+ position?: [number, number, number];
35
+ rotation?: [number, number, number];
36
+ shows?: 'window' | 'veiled';
37
+ }): import("react").JSX.Element;
38
+ export {};
39
+ //# sourceMappingURL=ground-veil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground-veil.d.ts","sourceRoot":"","sources":["../../src/site/ground-veil.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAUpD,OAAO,EAAE,KAAK,cAAc,EAAc,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAatE,OAAO,EAAE,qBAAqB,EAAa,MAAM,cAAc,CAAA;AAW/D,8FAA8F;AAC9F,eAAO,MAAM,WAAW,YAAW,CAAA;AAKnC,KAAK,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AA6BtC,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,yBAErD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EACzB,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,yBAMnD;AASD,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAC7B,KAAK,EAAE,YAAY,GAAG,IAAI,GACzB,cAAc,CAGhB;AAED,wBAAgB,iBAAiB,0BAShC;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAgB,GACjB,EAAE;IACD,QAAQ,EAAE,cAAc,CAAA;IACxB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC5B,+BAiBA"}
@@ -0,0 +1,86 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { anyGroundVeiled, groundWindowEnabledNode, inGroundWindowNode, SITE_GROUND, UNDERGROUND_RING, undergroundAmbianceNode, useViewer, } from '@pascal-app/viewer';
3
+ import { DoubleSide } from 'three';
4
+ import { color, float, mix, mrt, output, positionWorld, select, smoothstep, vec2, vec4, } from 'three/tsl';
5
+ import { MeshBasicNodeMaterial } from 'three/webgpu';
6
+ import { buildPatternedRibbon } from './line-ribbon.js';
7
+ import { insideLotNode } from './lot-mask.js';
8
+ import { buildDrapedPolyline } from './terrain-drape.js';
9
+ // The ground over a level below grade. Wholesale (a level fully below grade, the ground on Auto)
10
+ // the solid ground stays and a hole opens in it (`ground-hole.ts`); the veil sheets here are the
11
+ // faint see-through ground of the ground window (a hillside in the eye's way) and of a capture
12
+ // (which sets the solid ground aside and shows them), and the grade ring is drawn where the ground
13
+ // meets the level below grade, in either.
14
+ /** Presentation-only meshes are never picked: clicks fall through to what lies under them. */
15
+ export const noopRaycast = () => { };
16
+ /** How much of the ground shows as a veil: enough to read where grade is, and no more. */
17
+ const VEIL_OPACITY = 0.1;
18
+ /**
19
+ * Unlit and seen from both sides (an eye under grade sees it overhead), drawn over what lies under
20
+ * it without hiding it: no depth, and nothing written to the scene pass's normals and diffuse
21
+ * colour, or the screen-space ink would outline the whole sheet. `coverage` (0 to 1) is how much
22
+ * of the ground this sheet draws.
23
+ */
24
+ function veilMaterial(groundColor, coverage) {
25
+ const material = new MeshBasicNodeMaterial({
26
+ transparent: true,
27
+ depthWrite: false,
28
+ side: DoubleSide,
29
+ });
30
+ material.colorNode = color(groundColor);
31
+ // Wholesale, the veil is the whole ground at `VEIL_OPACITY`. While the ground window is open
32
+ // (the hillside in the way, not a floor under it), only the ground in the window veils —
33
+ // at the same faintness — and the rest of this sheet draws nothing over the solid ground.
34
+ material.opacityNode = select(groundWindowEnabledNode(), select(inGroundWindowNode(), float(VEIL_OPACITY), float(0)), coverage.mul(VEIL_OPACITY));
35
+ // The plain field too: Follow's sight reads it, not the node, to tell what it sees through.
36
+ material.opacity = VEIL_OPACITY;
37
+ material.mrtNode = mrt({ output, diffuseColor: vec4(0), normal: vec4(0) });
38
+ return material;
39
+ }
40
+ /** The veil of the lot's own ground: its fill, or its sculpted terrain. */
41
+ export function groundVeilMaterial(groundColor) {
42
+ return veilMaterial(groundColor, float(1));
43
+ }
44
+ /**
45
+ * The veil of the horizon disc: the ground past the lot only (under the lot's own veil a second
46
+ * one would read as a step at the property line), dissolving into the backdrop by twice the lot's
47
+ * radius.
48
+ */
49
+ export function horizonVeilMaterial(groundColor, lot, bounds) {
50
+ const distance = positionWorld.xz.sub(vec2(bounds.cx, bounds.cz)).length();
51
+ const fade = float(1).sub(smoothstep(float(bounds.radius), float(bounds.radius * 2), distance));
52
+ const outsideLot = insideLotNode(lot, positionWorld.xz).not();
53
+ return veilMaterial(groundColor, select(outsideLot, fade, float(0)));
54
+ }
55
+ /** The grade ring: dark as the lot line, a little narrower, just over the ground. */
56
+ const GRADE_RING_COLOR = '#1c1917';
57
+ const GRADE_RING_WIDTH = 0.16;
58
+ const GRADE_RING_LIFT = 0.015;
59
+ /** One run, never broken: a ribbon pattern with no gap. */
60
+ const UNBROKEN = [Number.POSITIVE_INFINITY, 0];
61
+ /** The grade ring's ribbon along one outline where the ground meets a level below grade. */
62
+ export function gradeRingGeometry(outline, field) {
63
+ const drape = buildDrapedPolyline({ points: outline, field, lift: GRADE_RING_LIFT, closed: true });
64
+ return buildPatternedRibbon(drape.positions, UNBROKEN, GRADE_RING_WIDTH);
65
+ }
66
+ export function gradeRingMaterial() {
67
+ const material = new MeshBasicNodeMaterial({ color: GRADE_RING_COLOR, side: DoubleSide });
68
+ // Under the ground's ambiance the ring is a light rim: a dark ring would vanish in the dark mode.
69
+ material.colorNode = mix(color(GRADE_RING_COLOR), color(UNDERGROUND_RING), undergroundAmbianceNode());
70
+ return material;
71
+ }
72
+ /**
73
+ * Drawn only while the ground is veiled: the veil of one solid ground surface (the same geometry
74
+ * in the same place), or the grade ring. A direct child of the site, as the surfaces are, so the
75
+ * captures find it (`siteGround`) and hide it with the site's other surfaces.
76
+ *
77
+ * `shows` says when a live view draws it: `'window'` (a sheet: only where the ground window veils
78
+ * a hillside in the eye's way; wholesale the ground is a hole, not a sheet) or `'veiled'` (the
79
+ * ring: wherever any ground is veiled). A capture shows both by setting `visible` itself.
80
+ */
81
+ export function GroundVeil({ geometry, material, position, rotation, shows = 'window', }) {
82
+ const veiled = useViewer((state) => shows === 'veiled'
83
+ ? anyGroundVeiled(state)
84
+ : state.groundMode === 'auto' && state.groundWindowVeiled);
85
+ return (_jsx("mesh", { geometry: geometry, material: material, position: position, raycast: noopRaycast, rotation: rotation, userData: { [SITE_GROUND]: 'veil', pascalExport: 'strip' }, visible: veiled }));
86
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Keeps the ground window (viewer `lib/ground-window`) matched to the eye: a few throttled
3
+ * CPU sight lines decide whether sculpted ground stands between the camera and the shown
4
+ * box at all — that word opens the window (`Ground: Auto` permitting) and is what the view
5
+ * bar reports — while the window's shape is drawn per fragment in TSL. Re-asked when the
6
+ * eye moves, the scene or the box changes, or the person flips the ground mode.
7
+ */
8
+ export declare function GroundWindowSystem(): null;
9
+ //# sourceMappingURL=ground-window-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground-window-system.d.ts","sourceRoot":"","sources":["../../src/site/ground-window-system.tsx"],"names":[],"mappings":"AAqBA;;;;;;GAMG;AACH,wBAAgB,kBAAkB,SA0DjC"}
@@ -0,0 +1,108 @@
1
+ 'use client';
2
+ import { terrainBetweenEyeAndBox, useScene } from '@pascal-app/core';
3
+ import { groundVeiled, groundWindowBoxNow, groundWindowContains, setGroundWindow, siteGround, useViewer, } from '@pascal-app/viewer';
4
+ import { useFrame } from '@react-three/fiber';
5
+ import { useEffect, useRef } from 'react';
6
+ import { Vector3 } from 'three';
7
+ import { groundHoleContains } from './ground-hole.js';
8
+ /** How often the CPU word is re-asked, and how far the eye must move to ask it sooner. */
9
+ const CHECK_INTERVAL_S = 0.2;
10
+ const EYE_MOVE_M = 0.25;
11
+ /**
12
+ * Keeps the ground window (viewer `lib/ground-window`) matched to the eye: a few throttled
13
+ * CPU sight lines decide whether sculpted ground stands between the camera and the shown
14
+ * box at all — that word opens the window (`Ground: Auto` permitting) and is what the view
15
+ * bar reports — while the window's shape is drawn per fragment in TSL. Re-asked when the
16
+ * eye moves, the scene or the box changes, or the person flips the ground mode.
17
+ */
18
+ export function GroundWindowSystem() {
19
+ const last = useRef({
20
+ at: Number.NEGATIVE_INFINITY,
21
+ eye: new Vector3(Number.POSITIVE_INFINITY, 0, 0),
22
+ box: null,
23
+ mode: '',
24
+ walking: false,
25
+ veiled: false,
26
+ nodes: null,
27
+ });
28
+ const picks = useRef(new Map());
29
+ useFrame(({ camera, clock }) => {
30
+ const viewer = useViewer.getState();
31
+ const nodes = useScene.getState().nodes;
32
+ const box = viewer.groundWindowBox;
33
+ const check = last.current;
34
+ const due = clock.elapsedTime - check.at > CHECK_INTERVAL_S ||
35
+ camera.position.distanceTo(check.eye) > EYE_MOVE_M ||
36
+ box !== check.box ||
37
+ nodes !== check.nodes ||
38
+ viewer.groundMode !== check.mode ||
39
+ viewer.walkthroughMode !== check.walking ||
40
+ groundVeiled(viewer) !== check.veiled;
41
+ if (!due)
42
+ return;
43
+ check.at = clock.elapsedTime;
44
+ check.eye.copy(camera.position);
45
+ check.box = box;
46
+ check.mode = viewer.groundMode;
47
+ check.walking = viewer.walkthroughMode;
48
+ check.veiled = groundVeiled(viewer);
49
+ check.nodes = nodes;
50
+ const eye = [camera.position.x, camera.position.y, camera.position.z];
51
+ // The walkthrough walks on solid ground: no window, whatever the hillside. A level shown fully
52
+ // below grade is seen through the hole in the ground (`groundVeiled`), solid round it: no
53
+ // window opens over it, which would cut the solid ground in the box's silhouette and show the
54
+ // level through a translucent sheet in front of the opening. Any terrain field asks for one (a
55
+ // custom terrain, a pad, a retaining break), not only a hillside.
56
+ const inTheWay = !groundVeiled(viewer) &&
57
+ box !== null &&
58
+ !viewer.walkthroughMode &&
59
+ terrainBetweenEyeAndBox(nodes, eye, box);
60
+ if (viewer.groundWindowVeiled !== inTheWay)
61
+ useViewer.setState({ groundWindowVeiled: inTheWay });
62
+ const open = inTheWay && viewer.groundMode === 'auto' ? box : null;
63
+ if (groundWindowBoxNow() !== open)
64
+ setGroundWindow(open);
65
+ // Picks follow the window, and the hole over a level below grade seen as a whole.
66
+ keepPicksHonest(picks.current, open !== null || check.veiled);
67
+ });
68
+ useEffect(() => () => {
69
+ keepPicksHonest(picks.current, false);
70
+ setGroundWindow(null);
71
+ if (useViewer.getState().groundWindowVeiled)
72
+ useViewer.setState({ groundWindowVeiled: false });
73
+ }, []);
74
+ return null;
75
+ }
76
+ /**
77
+ * Picks agree with the window and the hole: while either is open, a hit on solid ground that
78
+ * is cut away is dropped, so the click (or Follow's sight) reaches what lies under it. The wrap
79
+ * reads the window's own CPU word (`groundWindowContains`) against the picking ray, and the
80
+ * hole's (`groundHoleContains`, its guaranteed core) at the hit, and every original raycast is
81
+ * given back when both close.
82
+ */
83
+ function keepPicksHonest(wrapped, open) {
84
+ if (!open) {
85
+ for (const [mesh, raycast] of wrapped)
86
+ mesh.raycast = raycast;
87
+ wrapped.clear();
88
+ return;
89
+ }
90
+ for (const surface of siteGround().solid) {
91
+ const mesh = surface;
92
+ if (!mesh.isMesh || wrapped.has(mesh))
93
+ continue;
94
+ const original = mesh.raycast;
95
+ wrapped.set(mesh, original);
96
+ mesh.raycast = (raycaster, intersects) => {
97
+ const before = intersects.length;
98
+ original.call(mesh, raycaster, intersects);
99
+ for (let index = intersects.length - 1; index >= before; index -= 1) {
100
+ const hit = intersects[index];
101
+ if (hit &&
102
+ (groundWindowContains(raycaster.ray.origin, hit.point) ||
103
+ groundHoleContains(hit.point.x, hit.point.z)))
104
+ intersects.splice(index, 1);
105
+ }
106
+ };
107
+ }
108
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The hole's edge noise on the CPU: the same fractal perlin the ground's shader reads
3
+ * (`mx_fractal_noise_float` of three's MaterialX lib, 3 octaves, 3D, the third axis constant), so
4
+ * the pit's walls can be laid along the very contour the ground's mask cuts. Integer hash and
5
+ * gradients as in `MaterialXNoise.js`, in unsigned 32-bit arithmetic.
6
+ */
7
+ /** Three's `mx_perlin_noise_float` at a 3D point. */
8
+ export declare function perlin3(px: number, py: number, pz: number): number;
9
+ /** Three's `mx_fractal_noise_float` (octaves summed, each `diminish` weaker and `lacunarity` finer). */
10
+ export declare function fractalNoise3(px: number, py: number, pz: number, octaves: number, lacunarity: number, diminish: number): number;
11
+ //# sourceMappingURL=hole-noise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hole-noise.d.ts","sourceRoot":"","sources":["../../src/site/hole-noise.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsCH,qDAAqD;AACrD,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CA6BlE;AAED,wGAAwG;AACxG,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CAWR"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * The hole's edge noise on the CPU: the same fractal perlin the ground's shader reads
3
+ * (`mx_fractal_noise_float` of three's MaterialX lib, 3 octaves, 3D, the third axis constant), so
4
+ * the pit's walls can be laid along the very contour the ground's mask cuts. Integer hash and
5
+ * gradients as in `MaterialXNoise.js`, in unsigned 32-bit arithmetic.
6
+ */
7
+ const SEED = (0xdeadbeef + (3 << 2) + 13) >>> 0;
8
+ function rotl(x, k) {
9
+ return ((x << k) | (x >>> (32 - k))) >>> 0;
10
+ }
11
+ function hash(x, y, z) {
12
+ let a = (SEED + x) >>> 0;
13
+ let b = (SEED + y) >>> 0;
14
+ let c = (SEED + z) >>> 0;
15
+ c = (c ^ b) >>> 0;
16
+ c = (c - rotl(b, 14)) >>> 0;
17
+ a = (a ^ c) >>> 0;
18
+ a = (a - rotl(c, 11)) >>> 0;
19
+ b = (b ^ a) >>> 0;
20
+ b = (b - rotl(a, 25)) >>> 0;
21
+ c = (c ^ b) >>> 0;
22
+ c = (c - rotl(b, 16)) >>> 0;
23
+ a = (a ^ c) >>> 0;
24
+ a = (a - rotl(c, 4)) >>> 0;
25
+ b = (b ^ a) >>> 0;
26
+ b = (b - rotl(a, 14)) >>> 0;
27
+ c = (c ^ b) >>> 0;
28
+ c = (c - rotl(b, 24)) >>> 0;
29
+ return c;
30
+ }
31
+ function gradient(h, x, y, z) {
32
+ const g = h & 15;
33
+ const u = g < 8 ? x : y;
34
+ const v = g < 4 ? y : g === 12 || g === 14 ? x : z;
35
+ return (g & 1 ? -u : u) + (g & 2 ? -v : v);
36
+ }
37
+ const fade = (t) => t * t * t * (t * (t * 6 - 15) + 10);
38
+ /** Three's `mx_perlin_noise_float` at a 3D point. */
39
+ export function perlin3(px, py, pz) {
40
+ const X = Math.floor(px);
41
+ const Y = Math.floor(py);
42
+ const Z = Math.floor(pz);
43
+ const fx = px - X;
44
+ const fy = py - Y;
45
+ const fz = pz - Z;
46
+ const gx = fx - 1;
47
+ const gy = fy - 1;
48
+ const gz = fz - 1;
49
+ const u = fade(fx);
50
+ const v = fade(fy);
51
+ const w = fade(fz);
52
+ const s1 = 1 - u;
53
+ const t1 = 1 - v;
54
+ const r1 = 1 - w;
55
+ const lowZ = t1 * (gradient(hash(X, Y, Z), fx, fy, fz) * s1 + gradient(hash(X + 1, Y, Z), gx, fy, fz) * u) +
56
+ v *
57
+ (gradient(hash(X, Y + 1, Z), fx, gy, fz) * s1 +
58
+ gradient(hash(X + 1, Y + 1, Z), gx, gy, fz) * u);
59
+ const highZ = t1 *
60
+ (gradient(hash(X, Y, Z + 1), fx, fy, gz) * s1 +
61
+ gradient(hash(X + 1, Y, Z + 1), gx, fy, gz) * u) +
62
+ v *
63
+ (gradient(hash(X, Y + 1, Z + 1), fx, gy, gz) * s1 +
64
+ gradient(hash(X + 1, Y + 1, Z + 1), gx, gy, gz) * u);
65
+ return 0.982 * (r1 * lowZ + w * highZ);
66
+ }
67
+ /** Three's `mx_fractal_noise_float` (octaves summed, each `diminish` weaker and `lacunarity` finer). */
68
+ export function fractalNoise3(px, py, pz, octaves, lacunarity, diminish) {
69
+ let sum = 0;
70
+ let amplitude = 1;
71
+ for (let i = 0; i < octaves; i += 1) {
72
+ sum += amplitude * perlin3(px, py, pz);
73
+ amplitude *= diminish;
74
+ px *= lacunarity;
75
+ py *= lacunarity;
76
+ pz *= lacunarity;
77
+ }
78
+ return sum;
79
+ }
@@ -1,2 +1,2 @@
1
- export { siteDefinition } from './definition';
1
+ export { siteDefinition } from './definition.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- export { siteDefinition } from './definition';
1
+ export { siteDefinition } from './definition.js';
@@ -3,10 +3,12 @@ import type { Node } from 'three/webgpu';
3
3
  type Point = readonly [number, number];
4
4
  /**
5
5
  * True for a fragment inside the lot polygon (even-odd crossing count on its
6
- * local x, z). Unrolled edge by edge into the graph: a parcel has tens of
7
- * corners, so a loop and a uniform array would buy nothing.
6
+ * x, z: local, where the geometry is laid out in the site's plan as the
7
+ * terrain is; world for a mesh placed and turned there). Unrolled edge by edge
8
+ * into the graph: a parcel has tens of corners, so a loop and a uniform array
9
+ * would buy nothing.
8
10
  */
9
- export declare function insideLotNode(polygon: ReadonlyArray<Point>): Node<"bool">;
11
+ export declare function insideLotNode(polygon: ReadonlyArray<Point>, at?: Node<'vec2'>): Node<"bool">;
10
12
  /**
11
13
  * The ground material cut to the lot: the terrain field is the padded,
12
14
  * north-up box around the parcel, and only the parcel itself is ground the
@@ -1 +1 @@
1
- {"version":3,"file":"lot-mask.d.ts","sourceRoot":"","sources":["../../src/site/lot-mask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,cAAc,CAAA;AAEtD,KAAK,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEtC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,gBAgB1D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,QAAQ,CAI7F"}
1
+ {"version":3,"file":"lot-mask.d.ts","sourceRoot":"","sources":["../../src/site/lot-mask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,cAAc,CAAA;AAEtD,KAAK,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEtC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,GAAE,IAAI,CAAC,MAAM,CAAoB,gBAe/F;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,QAAQ,CAO7F"}
@@ -1,11 +1,12 @@
1
1
  import { float, mod, positionLocal, select } from 'three/tsl';
2
2
  /**
3
3
  * True for a fragment inside the lot polygon (even-odd crossing count on its
4
- * local x, z). Unrolled edge by edge into the graph: a parcel has tens of
5
- * corners, so a loop and a uniform array would buy nothing.
4
+ * x, z: local, where the geometry is laid out in the site's plan as the
5
+ * terrain is; world for a mesh placed and turned there). Unrolled edge by edge
6
+ * into the graph: a parcel has tens of corners, so a loop and a uniform array
7
+ * would buy nothing.
6
8
  */
7
- export function insideLotNode(polygon) {
8
- const at = positionLocal.xz;
9
+ export function insideLotNode(polygon, at = positionLocal.xz) {
9
10
  let crossings = float(0);
10
11
  for (let i = 0; i < polygon.length; i++) {
11
12
  const [ax, az] = polygon[i];
@@ -30,6 +31,9 @@ export function insideLotNode(polygon) {
30
31
  */
31
32
  export function lotMaskedMaterial(material, polygon) {
32
33
  const masked = material.clone();
33
- masked.maskNode = insideLotNode(polygon);
34
+ // Keep a mask the material already carries (the ground window's): the ground is cut to
35
+ // the lot AND out of the window, not one instead of the other.
36
+ const inside = insideLotNode(polygon);
37
+ masked.maskNode = masked.maskNode ? masked.maskNode.and(inside) : inside;
34
38
  return masked;
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/site/panel.tsx"],"names":[],"mappings":"AA6BA;;;;;;GAMG;AACH,wBAAgB,aAAa,uCA8T5B;AAWD,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/site/panel.tsx"],"names":[],"mappings":"AA6BA;;;;;;GAMG;AACH,wBAAgB,aAAa,uCA+W5B;eAWc,aAAa"}