@pascal-app/nodes 1.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (915) hide show
  1. package/README.md +42 -8
  2. package/dist/agent-operations/index.d.ts +5 -0
  3. package/dist/agent-operations/index.d.ts.map +1 -1
  4. package/dist/agent-operations/index.js +10 -0
  5. package/dist/agent-tools/index.d.ts +195 -0
  6. package/dist/agent-tools/index.d.ts.map +1 -1
  7. package/dist/agent-tools/index.js +82 -2
  8. package/dist/beam/definition.d.ts +64 -13
  9. package/dist/beam/definition.d.ts.map +1 -1
  10. package/dist/beam/definition.edit.d.ts +4 -0
  11. package/dist/beam/definition.edit.d.ts.map +1 -0
  12. package/dist/beam/definition.edit.js +133 -0
  13. package/dist/beam/definition.js +4 -173
  14. package/dist/beam/definition.render.d.ts +6 -0
  15. package/dist/beam/definition.render.d.ts.map +1 -0
  16. package/dist/beam/definition.render.js +32 -0
  17. package/dist/beam/floorplan.d.ts.map +1 -1
  18. package/dist/beam/floorplan.js +2 -2
  19. package/dist/beam/panel.d.ts.map +1 -1
  20. package/dist/beam/panel.js +2 -2
  21. package/dist/beam/tool.d.ts.map +1 -1
  22. package/dist/beam/tool.js +2 -2
  23. package/dist/block/definition.d.ts +67 -7
  24. package/dist/block/definition.d.ts.map +1 -1
  25. package/dist/block/definition.edit.d.ts +4 -0
  26. package/dist/block/definition.edit.d.ts.map +1 -0
  27. package/dist/block/definition.edit.js +28 -0
  28. package/dist/block/definition.js +5 -144
  29. package/dist/block/definition.render.d.ts +11 -0
  30. package/dist/block/definition.render.d.ts.map +1 -0
  31. package/dist/block/definition.render.js +120 -0
  32. package/dist/box-vent/definition.d.ts +103 -29
  33. package/dist/box-vent/definition.d.ts.map +1 -1
  34. package/dist/box-vent/definition.edit.d.ts +4 -0
  35. package/dist/box-vent/definition.edit.d.ts.map +1 -0
  36. package/dist/box-vent/definition.edit.js +151 -0
  37. package/dist/box-vent/definition.js +4 -212
  38. package/dist/box-vent/definition.render.d.ts +6 -0
  39. package/dist/box-vent/definition.render.d.ts.map +1 -0
  40. package/dist/box-vent/definition.render.js +40 -0
  41. package/dist/box-vent/move-tool.d.ts.map +1 -1
  42. package/dist/box-vent/move-tool.js +6 -5
  43. package/dist/building/definition.d.ts +49 -11
  44. package/dist/building/definition.d.ts.map +1 -1
  45. package/dist/building/definition.edit.d.ts +4 -0
  46. package/dist/building/definition.edit.d.ts.map +1 -0
  47. package/dist/building/definition.edit.js +10 -0
  48. package/dist/building/definition.js +4 -54
  49. package/dist/building/definition.render.d.ts +6 -0
  50. package/dist/building/definition.render.d.ts.map +1 -0
  51. package/dist/building/definition.render.js +38 -0
  52. package/dist/builtin-definitions.d.ts +9784 -0
  53. package/dist/builtin-definitions.d.ts.map +1 -0
  54. package/dist/builtin-definitions.js +113 -0
  55. package/dist/builtin-edit-contributions.d.ts +9608 -0
  56. package/dist/builtin-edit-contributions.d.ts.map +1 -0
  57. package/dist/builtin-edit-contributions.js +112 -0
  58. package/dist/builtin-plugin-metadata.d.ts +5 -0
  59. package/dist/builtin-plugin-metadata.d.ts.map +1 -0
  60. package/dist/builtin-plugin-metadata.js +1 -0
  61. package/dist/cabinet/definition.d.ts +497 -25
  62. package/dist/cabinet/definition.d.ts.map +1 -1
  63. package/dist/cabinet/definition.edit.d.ts +5 -0
  64. package/dist/cabinet/definition.edit.d.ts.map +1 -0
  65. package/dist/cabinet/definition.edit.js +1375 -0
  66. package/dist/cabinet/definition.js +6 -2115
  67. package/dist/cabinet/definition.render.d.ts +66 -0
  68. package/dist/cabinet/definition.render.d.ts.map +1 -0
  69. package/dist/cabinet/definition.render.js +751 -0
  70. package/dist/cabinet/kitchen-module-actions.d.ts.map +1 -1
  71. package/dist/cabinet/kitchen-module-actions.js +2 -2
  72. package/dist/cabinet/placement-dimensions.d.ts +36 -2
  73. package/dist/cabinet/placement-dimensions.d.ts.map +1 -1
  74. package/dist/cabinet/placement-dimensions.js +68 -2
  75. package/dist/cabinet/system.js +1 -1
  76. package/dist/cabinet/tool.d.ts.map +1 -1
  77. package/dist/cabinet/tool.js +268 -15
  78. package/dist/cabinet/wall-snap.d.ts +5 -1
  79. package/dist/cabinet/wall-snap.d.ts.map +1 -1
  80. package/dist/cabinet/wall-snap.js +2 -2
  81. package/dist/ceiling/definition.d.ts +152 -19
  82. package/dist/ceiling/definition.d.ts.map +1 -1
  83. package/dist/ceiling/definition.edit.d.ts +4 -0
  84. package/dist/ceiling/definition.edit.d.ts.map +1 -0
  85. package/dist/ceiling/definition.edit.js +125 -0
  86. package/dist/ceiling/definition.js +4 -207
  87. package/dist/ceiling/definition.render.d.ts +6 -0
  88. package/dist/ceiling/definition.render.d.ts.map +1 -0
  89. package/dist/ceiling/definition.render.js +71 -0
  90. package/dist/ceiling/panel.js +2 -2
  91. package/dist/chimney/definition.d.ts +186 -17
  92. package/dist/chimney/definition.d.ts.map +1 -1
  93. package/dist/chimney/definition.edit.d.ts +4 -0
  94. package/dist/chimney/definition.edit.d.ts.map +1 -0
  95. package/dist/chimney/definition.edit.js +219 -0
  96. package/dist/chimney/definition.js +4 -390
  97. package/dist/chimney/definition.render.d.ts +6 -0
  98. package/dist/chimney/definition.render.d.ts.map +1 -0
  99. package/dist/chimney/definition.render.js +59 -0
  100. package/dist/chimney/move-tool.d.ts.map +1 -1
  101. package/dist/chimney/move-tool.js +6 -4
  102. package/dist/column/__bench__/geometry.d.ts +2 -0
  103. package/dist/column/__bench__/geometry.d.ts.map +1 -0
  104. package/dist/column/__bench__/geometry.js +36 -0
  105. package/dist/column/bounds.d.ts +7 -0
  106. package/dist/column/bounds.d.ts.map +1 -0
  107. package/dist/column/bounds.js +127 -0
  108. package/dist/column/definition.d.ts +372 -20
  109. package/dist/column/definition.d.ts.map +1 -1
  110. package/dist/column/definition.edit.d.ts +4 -0
  111. package/dist/column/definition.edit.d.ts.map +1 -0
  112. package/dist/column/definition.edit.js +323 -0
  113. package/dist/column/definition.js +4 -439
  114. package/dist/column/definition.render.d.ts +6 -0
  115. package/dist/column/definition.render.d.ts.map +1 -0
  116. package/dist/column/definition.render.js +81 -0
  117. package/dist/column/edit-policy.d.ts +5 -0
  118. package/dist/column/edit-policy.d.ts.map +1 -0
  119. package/dist/column/edit-policy.js +43 -0
  120. package/dist/column/floorplan-affordances.d.ts.map +1 -1
  121. package/dist/column/floorplan-affordances.js +2 -0
  122. package/dist/column/floorplan-move.d.ts.map +1 -1
  123. package/dist/column/floorplan-move.js +5 -1
  124. package/dist/column/floorplan.d.ts.map +1 -1
  125. package/dist/column/floorplan.js +33 -91
  126. package/dist/column/geometry.d.ts +13 -0
  127. package/dist/column/geometry.d.ts.map +1 -0
  128. package/dist/column/geometry.js +294 -0
  129. package/dist/column/hosted-resize.d.ts +3 -2
  130. package/dist/column/hosted-resize.d.ts.map +1 -1
  131. package/dist/column/hosted-resize.js +7 -1
  132. package/dist/column/inspector-highlight.d.ts +29 -0
  133. package/dist/column/inspector-highlight.d.ts.map +1 -0
  134. package/dist/column/inspector-highlight.js +166 -0
  135. package/dist/column/paint.d.ts.map +1 -1
  136. package/dist/column/paint.js +12 -2
  137. package/dist/column/panel.d.ts.map +1 -1
  138. package/dist/column/panel.js +451 -363
  139. package/dist/column/parametrics.js +1 -1
  140. package/dist/column/post-section.d.ts.map +1 -1
  141. package/dist/column/post-section.js +2 -2
  142. package/dist/column/preset-gallery.d.ts +8 -0
  143. package/dist/column/preset-gallery.d.ts.map +1 -0
  144. package/dist/column/preset-gallery.js +98 -0
  145. package/dist/column/presets.d.ts +16 -0
  146. package/dist/column/presets.d.ts.map +1 -0
  147. package/dist/column/presets.js +96 -0
  148. package/dist/column/property-preview.d.ts +8 -0
  149. package/dist/column/property-preview.d.ts.map +1 -0
  150. package/dist/column/property-preview.js +50 -0
  151. package/dist/column/renderer.d.ts +13 -1
  152. package/dist/column/renderer.d.ts.map +1 -1
  153. package/dist/column/renderer.js +174 -198
  154. package/dist/column/shape.d.ts +4 -4
  155. package/dist/column/shape.d.ts.map +1 -1
  156. package/dist/column/shape.js +1 -1
  157. package/dist/column/surface.d.ts.map +1 -1
  158. package/dist/column/surface.js +15 -8
  159. package/dist/column/tool.d.ts.map +1 -1
  160. package/dist/column/tool.js +21 -10
  161. package/dist/construction-dimension/definition.d.ts +129 -3
  162. package/dist/construction-dimension/definition.d.ts.map +1 -1
  163. package/dist/construction-dimension/definition.edit.d.ts +4 -0
  164. package/dist/construction-dimension/definition.edit.d.ts.map +1 -0
  165. package/dist/construction-dimension/definition.edit.js +32 -0
  166. package/dist/construction-dimension/definition.js +4 -83
  167. package/dist/construction-dimension/definition.render.d.ts +6 -0
  168. package/dist/construction-dimension/definition.render.d.ts.map +1 -0
  169. package/dist/construction-dimension/definition.render.js +53 -0
  170. package/dist/construction-dimension/floorplan-tool.d.ts.map +1 -1
  171. package/dist/construction-dimension/floorplan-tool.js +2 -2
  172. package/dist/cupola/definition.d.ts +95 -10
  173. package/dist/cupola/definition.d.ts.map +1 -1
  174. package/dist/cupola/definition.edit.d.ts +4 -0
  175. package/dist/cupola/definition.edit.d.ts.map +1 -0
  176. package/dist/cupola/definition.edit.js +103 -0
  177. package/dist/cupola/definition.js +4 -148
  178. package/dist/cupola/definition.render.d.ts +6 -0
  179. package/dist/cupola/definition.render.d.ts.map +1 -0
  180. package/dist/cupola/definition.render.js +43 -0
  181. package/dist/cupola/move-tool.d.ts.map +1 -1
  182. package/dist/cupola/move-tool.js +6 -5
  183. package/dist/definition-contributions.d.ts +14 -0
  184. package/dist/definition-contributions.d.ts.map +1 -0
  185. package/dist/definition-contributions.js +8 -0
  186. package/dist/door/definition.d.ts +350 -22
  187. package/dist/door/definition.d.ts.map +1 -1
  188. package/dist/door/definition.edit.d.ts +4 -0
  189. package/dist/door/definition.edit.d.ts.map +1 -0
  190. package/dist/door/definition.edit.js +246 -0
  191. package/dist/door/definition.js +4 -341
  192. package/dist/door/definition.render.d.ts +6 -0
  193. package/dist/door/definition.render.d.ts.map +1 -0
  194. package/dist/door/definition.render.js +88 -0
  195. package/dist/door/floorplan-move.d.ts.map +1 -1
  196. package/dist/door/floorplan-move.js +11 -8
  197. package/dist/door/mechanism.d.ts.map +1 -1
  198. package/dist/door/mechanism.js +1 -2
  199. package/dist/door/move-tool.d.ts.map +1 -1
  200. package/dist/door/move-tool.js +25 -23
  201. package/dist/door/tool.d.ts.map +1 -1
  202. package/dist/door/tool.js +2 -1
  203. package/dist/dormer/definition.d.ts +240 -11
  204. package/dist/dormer/definition.d.ts.map +1 -1
  205. package/dist/dormer/definition.edit.d.ts +4 -0
  206. package/dist/dormer/definition.edit.d.ts.map +1 -0
  207. package/dist/dormer/definition.edit.js +214 -0
  208. package/dist/dormer/definition.js +4 -319
  209. package/dist/dormer/definition.render.d.ts +6 -0
  210. package/dist/dormer/definition.render.d.ts.map +1 -0
  211. package/dist/dormer/definition.render.js +52 -0
  212. package/dist/downspout/definition.d.ts +108 -16
  213. package/dist/downspout/definition.d.ts.map +1 -1
  214. package/dist/downspout/definition.edit.d.ts +4 -0
  215. package/dist/downspout/definition.edit.d.ts.map +1 -0
  216. package/dist/downspout/definition.edit.js +134 -0
  217. package/dist/downspout/definition.js +4 -188
  218. package/dist/downspout/definition.render.d.ts +6 -0
  219. package/dist/downspout/definition.render.d.ts.map +1 -0
  220. package/dist/downspout/definition.render.js +46 -0
  221. package/dist/duct-fitting/definition.d.ts +99 -11
  222. package/dist/duct-fitting/definition.d.ts.map +1 -1
  223. package/dist/duct-fitting/definition.edit.d.ts +4 -0
  224. package/dist/duct-fitting/definition.edit.d.ts.map +1 -0
  225. package/dist/duct-fitting/definition.edit.js +49 -0
  226. package/dist/duct-fitting/definition.js +4 -135
  227. package/dist/duct-fitting/definition.render.d.ts +6 -0
  228. package/dist/duct-fitting/definition.render.d.ts.map +1 -0
  229. package/dist/duct-fitting/definition.render.js +82 -0
  230. package/dist/duct-fitting/floorplan.js +1 -1
  231. package/dist/duct-fitting/geometry.js +2 -1
  232. package/dist/duct-fitting/move-tool.d.ts.map +1 -1
  233. package/dist/duct-fitting/move-tool.js +19 -13
  234. package/dist/duct-fitting/selection.d.ts.map +1 -1
  235. package/dist/duct-fitting/selection.js +92 -80
  236. package/dist/duct-segment/continuation.d.ts +2 -2
  237. package/dist/duct-segment/continuation.d.ts.map +1 -1
  238. package/dist/duct-segment/continuation.js +53 -2
  239. package/dist/duct-segment/definition.d.ts +91 -3
  240. package/dist/duct-segment/definition.d.ts.map +1 -1
  241. package/dist/duct-segment/definition.edit.d.ts +4 -0
  242. package/dist/duct-segment/definition.edit.d.ts.map +1 -0
  243. package/dist/duct-segment/definition.edit.js +100 -0
  244. package/dist/duct-segment/definition.js +4 -181
  245. package/dist/duct-segment/definition.render.d.ts +6 -0
  246. package/dist/duct-segment/definition.render.d.ts.map +1 -0
  247. package/dist/duct-segment/definition.render.js +89 -0
  248. package/dist/duct-segment/edit-inspector.d.ts +5 -0
  249. package/dist/duct-segment/edit-inspector.d.ts.map +1 -0
  250. package/dist/duct-segment/edit-inspector.js +163 -0
  251. package/dist/duct-segment/edit-operation.d.ts +17 -0
  252. package/dist/duct-segment/edit-operation.d.ts.map +1 -0
  253. package/dist/duct-segment/edit-operation.js +283 -0
  254. package/dist/duct-segment/floorplan.js +1 -1
  255. package/dist/duct-segment/geometry.d.ts +0 -40
  256. package/dist/duct-segment/geometry.d.ts.map +1 -1
  257. package/dist/duct-segment/geometry.js +2 -77
  258. package/dist/duct-segment/move-tool.d.ts.map +1 -1
  259. package/dist/duct-segment/move-tool.js +34 -35
  260. package/dist/duct-segment/parametrics.d.ts.map +1 -1
  261. package/dist/duct-segment/parametrics.js +2 -35
  262. package/dist/duct-segment/profile.d.ts +42 -0
  263. package/dist/duct-segment/profile.d.ts.map +1 -0
  264. package/dist/duct-segment/profile.js +78 -0
  265. package/dist/duct-segment/selection.d.ts.map +1 -1
  266. package/dist/duct-segment/selection.js +112 -53
  267. package/dist/duct-segment/tool.d.ts.map +1 -1
  268. package/dist/duct-segment/tool.js +103 -27
  269. package/dist/duct-terminal/definition.d.ts +68 -12
  270. package/dist/duct-terminal/definition.d.ts.map +1 -1
  271. package/dist/duct-terminal/definition.edit.d.ts +4 -0
  272. package/dist/duct-terminal/definition.edit.d.ts.map +1 -0
  273. package/dist/duct-terminal/definition.edit.js +14 -0
  274. package/dist/duct-terminal/definition.js +4 -87
  275. package/dist/duct-terminal/definition.render.d.ts +6 -0
  276. package/dist/duct-terminal/definition.render.d.ts.map +1 -0
  277. package/dist/duct-terminal/definition.render.js +66 -0
  278. package/dist/duct-terminal/geometry.d.ts.map +1 -1
  279. package/dist/duct-terminal/geometry.js +2 -1
  280. package/dist/duct-terminal/parametrics.d.ts.map +1 -1
  281. package/dist/duct-terminal/parametrics.js +1 -0
  282. package/dist/duct-terminal/ports.js +1 -1
  283. package/dist/elevator/__bench__/runtime.d.ts +2 -0
  284. package/dist/elevator/__bench__/runtime.d.ts.map +1 -0
  285. package/dist/elevator/__bench__/runtime.js +38 -0
  286. package/dist/elevator/definition.d.ts +117 -10
  287. package/dist/elevator/definition.d.ts.map +1 -1
  288. package/dist/elevator/definition.edit.d.ts +4 -0
  289. package/dist/elevator/definition.edit.d.ts.map +1 -0
  290. package/dist/elevator/definition.edit.js +177 -0
  291. package/dist/elevator/definition.js +4 -258
  292. package/dist/elevator/definition.render.d.ts +11 -0
  293. package/dist/elevator/definition.render.d.ts.map +1 -0
  294. package/dist/elevator/definition.render.js +96 -0
  295. package/dist/elevator/floorplan-affordances.d.ts.map +1 -1
  296. package/dist/elevator/floorplan-affordances.js +11 -9
  297. package/dist/elevator/floorplan.d.ts +19 -0
  298. package/dist/elevator/floorplan.d.ts.map +1 -1
  299. package/dist/elevator/floorplan.js +3 -9
  300. package/dist/elevator/inspection.d.ts +17 -0
  301. package/dist/elevator/inspection.d.ts.map +1 -0
  302. package/dist/elevator/inspection.js +78 -0
  303. package/dist/elevator/panel.d.ts.map +1 -1
  304. package/dist/elevator/panel.js +152 -100
  305. package/dist/elevator/parametrics.d.ts +1 -1
  306. package/dist/elevator/parametrics.d.ts.map +1 -1
  307. package/dist/elevator/parametrics.js +7 -10
  308. package/dist/elevator/presets.d.ts +17 -0
  309. package/dist/elevator/presets.d.ts.map +1 -0
  310. package/dist/elevator/presets.js +52 -0
  311. package/dist/elevator/renderer.d.ts +2 -1
  312. package/dist/elevator/renderer.d.ts.map +1 -1
  313. package/dist/elevator/renderer.edit.d.ts +5 -0
  314. package/dist/elevator/renderer.edit.d.ts.map +1 -0
  315. package/dist/elevator/renderer.edit.js +8 -0
  316. package/dist/elevator/renderer.js +159 -60
  317. package/dist/elevator/tool.d.ts +2 -0
  318. package/dist/elevator/tool.d.ts.map +1 -0
  319. package/dist/elevator/tool.js +250 -0
  320. package/dist/eyebrow-vent/definition.d.ts +97 -11
  321. package/dist/eyebrow-vent/definition.d.ts.map +1 -1
  322. package/dist/eyebrow-vent/definition.edit.d.ts +4 -0
  323. package/dist/eyebrow-vent/definition.edit.d.ts.map +1 -0
  324. package/dist/eyebrow-vent/definition.edit.js +106 -0
  325. package/dist/eyebrow-vent/definition.js +4 -152
  326. package/dist/eyebrow-vent/definition.render.d.ts +6 -0
  327. package/dist/eyebrow-vent/definition.render.d.ts.map +1 -0
  328. package/dist/eyebrow-vent/definition.render.js +43 -0
  329. package/dist/eyebrow-vent/move-tool.d.ts.map +1 -1
  330. package/dist/eyebrow-vent/move-tool.js +6 -5
  331. package/dist/fence/definition.d.ts +186 -17
  332. package/dist/fence/definition.d.ts.map +1 -1
  333. package/dist/fence/definition.edit.d.ts +4 -0
  334. package/dist/fence/definition.edit.d.ts.map +1 -0
  335. package/dist/fence/definition.edit.js +282 -0
  336. package/dist/fence/definition.js +5 -413
  337. package/dist/fence/definition.render.d.ts +8 -0
  338. package/dist/fence/definition.render.d.ts.map +1 -0
  339. package/dist/fence/definition.render.js +124 -0
  340. package/dist/fence/move-endpoint-tool.d.ts.map +1 -1
  341. package/dist/fence/move-endpoint-tool.js +2 -2
  342. package/dist/fence/tool.js +2 -2
  343. package/dist/fence-feature/definition.d.ts +270 -3
  344. package/dist/fence-feature/definition.d.ts.map +1 -1
  345. package/dist/fence-feature/definition.edit.d.ts +5 -0
  346. package/dist/fence-feature/definition.edit.d.ts.map +1 -0
  347. package/dist/fence-feature/definition.edit.js +69 -0
  348. package/dist/fence-feature/definition.js +5 -116
  349. package/dist/fence-feature/definition.render.d.ts +9 -0
  350. package/dist/fence-feature/definition.render.d.ts.map +1 -0
  351. package/dist/fence-feature/definition.render.js +69 -0
  352. package/dist/floor-opening/definition.d.ts +58 -2
  353. package/dist/floor-opening/definition.d.ts.map +1 -1
  354. package/dist/floor-opening/definition.edit.d.ts +4 -0
  355. package/dist/floor-opening/definition.edit.d.ts.map +1 -0
  356. package/dist/floor-opening/definition.edit.js +11 -0
  357. package/dist/floor-opening/definition.js +4 -41
  358. package/dist/floor-opening/definition.render.d.ts +6 -0
  359. package/dist/floor-opening/definition.render.d.ts.map +1 -0
  360. package/dist/floor-opening/definition.render.js +32 -0
  361. package/dist/guide/definition.d.ts +65 -9
  362. package/dist/guide/definition.d.ts.map +1 -1
  363. package/dist/guide/definition.edit.d.ts +4 -0
  364. package/dist/guide/definition.edit.d.ts.map +1 -0
  365. package/dist/guide/definition.edit.js +4 -0
  366. package/dist/guide/definition.js +4 -53
  367. package/dist/guide/definition.render.d.ts +6 -0
  368. package/dist/guide/definition.render.d.ts.map +1 -0
  369. package/dist/guide/definition.render.js +45 -0
  370. package/dist/gutter/definition.d.ts +113 -18
  371. package/dist/gutter/definition.d.ts.map +1 -1
  372. package/dist/gutter/definition.edit.d.ts +4 -0
  373. package/dist/gutter/definition.edit.d.ts.map +1 -0
  374. package/dist/gutter/definition.edit.js +121 -0
  375. package/dist/gutter/definition.js +4 -176
  376. package/dist/gutter/definition.render.d.ts +6 -0
  377. package/dist/gutter/definition.render.d.ts.map +1 -0
  378. package/dist/gutter/definition.render.js +44 -0
  379. package/dist/gutter/move-tool.d.ts.map +1 -1
  380. package/dist/gutter/move-tool.js +5 -4
  381. package/dist/hvac-equipment/definition.d.ts +72 -12
  382. package/dist/hvac-equipment/definition.d.ts.map +1 -1
  383. package/dist/hvac-equipment/definition.edit.d.ts +4 -0
  384. package/dist/hvac-equipment/definition.edit.d.ts.map +1 -0
  385. package/dist/hvac-equipment/definition.edit.js +13 -0
  386. package/dist/hvac-equipment/definition.js +4 -92
  387. package/dist/hvac-equipment/definition.render.d.ts +6 -0
  388. package/dist/hvac-equipment/definition.render.d.ts.map +1 -0
  389. package/dist/hvac-equipment/definition.render.js +72 -0
  390. package/dist/hvac-equipment/floorplan.js +1 -1
  391. package/dist/hvac-equipment/geometry.d.ts.map +1 -1
  392. package/dist/hvac-equipment/geometry.js +2 -1
  393. package/dist/hvac-equipment/parametrics.d.ts.map +1 -1
  394. package/dist/hvac-equipment/parametrics.js +1 -0
  395. package/dist/hvac-equipment/ports.js +1 -1
  396. package/dist/i18n/definition-messages.js +1 -1
  397. package/dist/imported-mesh/definition.d.ts +54 -4
  398. package/dist/imported-mesh/definition.d.ts.map +1 -1
  399. package/dist/imported-mesh/definition.edit.d.ts +4 -0
  400. package/dist/imported-mesh/definition.edit.d.ts.map +1 -0
  401. package/dist/imported-mesh/definition.edit.js +5 -0
  402. package/dist/imported-mesh/definition.js +4 -40
  403. package/dist/imported-mesh/definition.render.d.ts +6 -0
  404. package/dist/imported-mesh/definition.render.d.ts.map +1 -0
  405. package/dist/imported-mesh/definition.render.js +36 -0
  406. package/dist/index.d.ts +3 -16
  407. package/dist/index.d.ts.map +1 -1
  408. package/dist/index.js +9 -136
  409. package/dist/item/definition.d.ts +280 -31
  410. package/dist/item/definition.d.ts.map +1 -1
  411. package/dist/item/definition.edit.d.ts +4 -0
  412. package/dist/item/definition.edit.d.ts.map +1 -0
  413. package/dist/item/definition.edit.js +206 -0
  414. package/dist/item/definition.js +4 -356
  415. package/dist/item/definition.render.d.ts +6 -0
  416. package/dist/item/definition.render.d.ts.map +1 -0
  417. package/dist/item/definition.render.js +128 -0
  418. package/dist/item/floorplan.d.ts.map +1 -1
  419. package/dist/item/floorplan.js +2 -2
  420. package/dist/item/renderer.d.ts.map +1 -1
  421. package/dist/item/renderer.js +2 -2
  422. package/dist/lean-to-extension/definition.d.ts +177 -3
  423. package/dist/lean-to-extension/definition.d.ts.map +1 -1
  424. package/dist/lean-to-extension/definition.edit.d.ts +4 -0
  425. package/dist/lean-to-extension/definition.edit.d.ts.map +1 -0
  426. package/dist/lean-to-extension/definition.edit.js +392 -0
  427. package/dist/lean-to-extension/definition.js +4 -433
  428. package/dist/lean-to-extension/definition.render.d.ts +6 -0
  429. package/dist/lean-to-extension/definition.render.d.ts.map +1 -0
  430. package/dist/lean-to-extension/definition.render.js +46 -0
  431. package/dist/level/definition.d.ts +49 -8
  432. package/dist/level/definition.d.ts.map +1 -1
  433. package/dist/level/definition.edit.d.ts +4 -0
  434. package/dist/level/definition.edit.d.ts.map +1 -0
  435. package/dist/level/definition.edit.js +4 -0
  436. package/dist/level/definition.js +4 -60
  437. package/dist/level/definition.render.d.ts +6 -0
  438. package/dist/level/definition.render.d.ts.map +1 -0
  439. package/dist/level/definition.render.js +53 -0
  440. package/dist/lineset/definition.d.ts +49 -14
  441. package/dist/lineset/definition.d.ts.map +1 -1
  442. package/dist/lineset/definition.edit.d.ts +4 -0
  443. package/dist/lineset/definition.edit.d.ts.map +1 -0
  444. package/dist/lineset/definition.edit.js +38 -0
  445. package/dist/lineset/definition.js +4 -119
  446. package/dist/lineset/definition.render.d.ts +6 -0
  447. package/dist/lineset/definition.render.d.ts.map +1 -0
  448. package/dist/lineset/definition.render.js +72 -0
  449. package/dist/lineset/floorplan.js +1 -1
  450. package/dist/lineset/geometry.js +1 -1
  451. package/dist/lineset/move-tool.d.ts.map +1 -1
  452. package/dist/lineset/move-tool.js +14 -7
  453. package/dist/liquid-line/definition.d.ts +47 -15
  454. package/dist/liquid-line/definition.d.ts.map +1 -1
  455. package/dist/liquid-line/definition.edit.d.ts +4 -0
  456. package/dist/liquid-line/definition.edit.d.ts.map +1 -0
  457. package/dist/liquid-line/definition.edit.js +31 -0
  458. package/dist/liquid-line/definition.js +4 -111
  459. package/dist/liquid-line/definition.render.d.ts +6 -0
  460. package/dist/liquid-line/definition.render.d.ts.map +1 -0
  461. package/dist/liquid-line/definition.render.js +70 -0
  462. package/dist/liquid-line/floorplan.js +1 -1
  463. package/dist/liquid-line/geometry.js +1 -1
  464. package/dist/measurement/definition.d.ts +126 -3
  465. package/dist/measurement/definition.d.ts.map +1 -1
  466. package/dist/measurement/definition.edit.d.ts +4 -0
  467. package/dist/measurement/definition.edit.d.ts.map +1 -0
  468. package/dist/measurement/definition.edit.js +26 -0
  469. package/dist/measurement/definition.js +4 -67
  470. package/dist/measurement/definition.render.d.ts +6 -0
  471. package/dist/measurement/definition.render.d.ts.map +1 -0
  472. package/dist/measurement/definition.render.js +43 -0
  473. package/dist/measurement/floorplan.d.ts.map +1 -1
  474. package/dist/measurement/floorplan.js +3 -2
  475. package/dist/measurement/renderer.d.ts.map +1 -1
  476. package/dist/measurement/renderer.js +2 -3
  477. package/dist/measurement/selection.d.ts.map +1 -1
  478. package/dist/measurement/selection.js +2 -2
  479. package/dist/measurement/tool.d.ts +2 -2
  480. package/dist/measurement/tool.d.ts.map +1 -1
  481. package/dist/measurement/tool.js +3 -3
  482. package/dist/pipe-fitting/definition.d.ts +73 -9
  483. package/dist/pipe-fitting/definition.d.ts.map +1 -1
  484. package/dist/pipe-fitting/definition.edit.d.ts +4 -0
  485. package/dist/pipe-fitting/definition.edit.d.ts.map +1 -0
  486. package/dist/pipe-fitting/definition.edit.js +47 -0
  487. package/dist/pipe-fitting/definition.js +4 -105
  488. package/dist/pipe-fitting/definition.render.d.ts +6 -0
  489. package/dist/pipe-fitting/definition.render.d.ts.map +1 -0
  490. package/dist/pipe-fitting/definition.render.js +54 -0
  491. package/dist/pipe-fitting/floorplan.js +1 -1
  492. package/dist/pipe-fitting/geometry.js +1 -1
  493. package/dist/pipe-fitting/move-tool.d.ts +1 -1
  494. package/dist/pipe-fitting/move-tool.d.ts.map +1 -1
  495. package/dist/pipe-fitting/move-tool.js +28 -22
  496. package/dist/pipe-fitting/parametrics.d.ts.map +1 -1
  497. package/dist/pipe-fitting/parametrics.js +1 -0
  498. package/dist/pipe-fitting/ports.js +1 -1
  499. package/dist/pipe-fitting/selection.d.ts.map +1 -1
  500. package/dist/pipe-fitting/selection.js +73 -29
  501. package/dist/pipe-segment/collar-connection.d.ts +12 -0
  502. package/dist/pipe-segment/collar-connection.d.ts.map +1 -0
  503. package/dist/pipe-segment/collar-connection.js +58 -0
  504. package/dist/pipe-segment/connect-operation.d.ts +9 -0
  505. package/dist/pipe-segment/connect-operation.d.ts.map +1 -0
  506. package/dist/pipe-segment/connect-operation.js +44 -0
  507. package/dist/pipe-segment/continuation.d.ts +3 -2
  508. package/dist/pipe-segment/continuation.d.ts.map +1 -1
  509. package/dist/pipe-segment/continuation.js +60 -1
  510. package/dist/pipe-segment/definition.d.ts +78 -13
  511. package/dist/pipe-segment/definition.d.ts.map +1 -1
  512. package/dist/pipe-segment/definition.edit.d.ts +4 -0
  513. package/dist/pipe-segment/definition.edit.d.ts.map +1 -0
  514. package/dist/pipe-segment/definition.edit.js +48 -0
  515. package/dist/pipe-segment/definition.js +4 -132
  516. package/dist/pipe-segment/definition.render.d.ts +6 -0
  517. package/dist/pipe-segment/definition.render.d.ts.map +1 -0
  518. package/dist/pipe-segment/definition.render.js +78 -0
  519. package/dist/pipe-segment/floorplan.d.ts +1 -1
  520. package/dist/pipe-segment/floorplan.d.ts.map +1 -1
  521. package/dist/pipe-segment/floorplan.js +34 -1
  522. package/dist/pipe-segment/geometry.d.ts.map +1 -1
  523. package/dist/pipe-segment/geometry.js +2 -1
  524. package/dist/pipe-segment/grade-affordance.d.ts +8 -0
  525. package/dist/pipe-segment/grade-affordance.d.ts.map +1 -0
  526. package/dist/pipe-segment/grade-affordance.js +116 -0
  527. package/dist/pipe-segment/grade-inspector.d.ts +5 -0
  528. package/dist/pipe-segment/grade-inspector.d.ts.map +1 -0
  529. package/dist/pipe-segment/grade-inspector.js +91 -0
  530. package/dist/pipe-segment/grade-label.d.ts +7 -0
  531. package/dist/pipe-segment/grade-label.d.ts.map +1 -0
  532. package/dist/pipe-segment/grade-label.js +32 -0
  533. package/dist/pipe-segment/grade-operation.d.ts +22 -0
  534. package/dist/pipe-segment/grade-operation.d.ts.map +1 -0
  535. package/dist/pipe-segment/grade-operation.js +114 -0
  536. package/dist/pipe-segment/move-tool.d.ts.map +1 -1
  537. package/dist/pipe-segment/move-tool.js +38 -15
  538. package/dist/pipe-segment/offset-inspector.d.ts +5 -0
  539. package/dist/pipe-segment/offset-inspector.d.ts.map +1 -0
  540. package/dist/pipe-segment/offset-inspector.js +112 -0
  541. package/dist/pipe-segment/offset-operation.d.ts +9 -0
  542. package/dist/pipe-segment/offset-operation.d.ts.map +1 -0
  543. package/dist/pipe-segment/offset-operation.js +104 -0
  544. package/dist/pipe-segment/parametrics.d.ts.map +1 -1
  545. package/dist/pipe-segment/parametrics.js +1 -9
  546. package/dist/pipe-segment/resize-inspector.d.ts +5 -0
  547. package/dist/pipe-segment/resize-inspector.d.ts.map +1 -0
  548. package/dist/pipe-segment/resize-inspector.js +75 -0
  549. package/dist/pipe-segment/resize-operation.d.ts +8 -0
  550. package/dist/pipe-segment/resize-operation.d.ts.map +1 -0
  551. package/dist/pipe-segment/resize-operation.js +143 -0
  552. package/dist/pipe-segment/run-move.d.ts +65 -0
  553. package/dist/pipe-segment/run-move.d.ts.map +1 -0
  554. package/dist/pipe-segment/run-move.js +110 -0
  555. package/dist/pipe-segment/selection.d.ts.map +1 -1
  556. package/dist/pipe-segment/selection.js +122 -178
  557. package/dist/pipe-segment/slope.d.ts +3 -0
  558. package/dist/pipe-segment/slope.d.ts.map +1 -1
  559. package/dist/pipe-segment/slope.js +47 -0
  560. package/dist/pipe-segment/tool.d.ts.map +1 -1
  561. package/dist/pipe-segment/tool.js +123 -28
  562. package/dist/pipe-trap/definition.d.ts +54 -9
  563. package/dist/pipe-trap/definition.d.ts.map +1 -1
  564. package/dist/pipe-trap/definition.edit.d.ts +4 -0
  565. package/dist/pipe-trap/definition.edit.d.ts.map +1 -0
  566. package/dist/pipe-trap/definition.edit.js +13 -0
  567. package/dist/pipe-trap/definition.js +4 -59
  568. package/dist/pipe-trap/definition.render.d.ts +6 -0
  569. package/dist/pipe-trap/definition.render.d.ts.map +1 -0
  570. package/dist/pipe-trap/definition.render.js +43 -0
  571. package/dist/pipe-trap/geometry.d.ts.map +1 -1
  572. package/dist/pipe-trap/geometry.js +2 -1
  573. package/dist/pipe-trap/parametrics.d.ts.map +1 -1
  574. package/dist/pipe-trap/parametrics.js +1 -0
  575. package/dist/procedural-item/definition.d.ts +734 -3
  576. package/dist/procedural-item/definition.d.ts.map +1 -1
  577. package/dist/procedural-item/definition.edit.d.ts +4 -0
  578. package/dist/procedural-item/definition.edit.d.ts.map +1 -0
  579. package/dist/procedural-item/definition.edit.js +255 -0
  580. package/dist/procedural-item/definition.js +4 -325
  581. package/dist/procedural-item/definition.render.d.ts +6 -0
  582. package/dist/procedural-item/definition.render.d.ts.map +1 -0
  583. package/dist/procedural-item/definition.render.js +84 -0
  584. package/dist/procedural-item/renderer.d.ts.map +1 -1
  585. package/dist/procedural-item/renderer.edit.d.ts +5 -0
  586. package/dist/procedural-item/renderer.edit.d.ts.map +1 -0
  587. package/dist/procedural-item/renderer.edit.js +49 -0
  588. package/dist/procedural-item/renderer.js +4 -21
  589. package/dist/render.d.ts +4 -0
  590. package/dist/render.d.ts.map +1 -0
  591. package/dist/render.js +4 -0
  592. package/dist/ridge-vent/definition.d.ts +95 -15
  593. package/dist/ridge-vent/definition.d.ts.map +1 -1
  594. package/dist/ridge-vent/definition.edit.d.ts +4 -0
  595. package/dist/ridge-vent/definition.edit.d.ts.map +1 -0
  596. package/dist/ridge-vent/definition.edit.js +148 -0
  597. package/dist/ridge-vent/definition.js +4 -197
  598. package/dist/ridge-vent/definition.render.d.ts +6 -0
  599. package/dist/ridge-vent/definition.render.d.ts.map +1 -0
  600. package/dist/ridge-vent/definition.render.js +42 -0
  601. package/dist/ridge-vent/move-tool.d.ts.map +1 -1
  602. package/dist/ridge-vent/move-tool.js +5 -4
  603. package/dist/roof/barrel-panel.d.ts.map +1 -1
  604. package/dist/roof/barrel-panel.js +2 -2
  605. package/dist/roof/definition.d.ts +325 -8
  606. package/dist/roof/definition.d.ts.map +1 -1
  607. package/dist/roof/definition.edit.d.ts +4 -0
  608. package/dist/roof/definition.edit.d.ts.map +1 -0
  609. package/dist/roof/definition.edit.js +183 -0
  610. package/dist/roof/definition.js +4 -284
  611. package/dist/roof/definition.render.d.ts +7 -0
  612. package/dist/roof/definition.render.d.ts.map +1 -0
  613. package/dist/roof/definition.render.js +101 -0
  614. package/dist/roof/geometry-notice.d.ts +5 -0
  615. package/dist/roof/geometry-notice.d.ts.map +1 -0
  616. package/dist/roof/geometry-notice.js +27 -0
  617. package/dist/roof/glazing-controls.d.ts.map +1 -1
  618. package/dist/roof/glazing-controls.js +2 -2
  619. package/dist/roof/panel.d.ts.map +1 -1
  620. package/dist/roof/panel.js +4 -3
  621. package/dist/roof/tool.d.ts +3 -0
  622. package/dist/roof/tool.d.ts.map +1 -1
  623. package/dist/roof/tool.js +56 -170
  624. package/dist/roof/type-thumbnail-assets.d.ts +3 -0
  625. package/dist/roof/type-thumbnail-assets.d.ts.map +1 -0
  626. package/dist/roof/type-thumbnail-assets.js +12 -0
  627. package/dist/roof/type-thumbnail.d.ts +5 -0
  628. package/dist/roof/type-thumbnail.d.ts.map +1 -0
  629. package/dist/roof/type-thumbnail.js +5 -0
  630. package/dist/roof-segment/definition.d.ts +564 -9
  631. package/dist/roof-segment/definition.d.ts.map +1 -1
  632. package/dist/roof-segment/definition.edit.d.ts +4 -0
  633. package/dist/roof-segment/definition.edit.d.ts.map +1 -0
  634. package/dist/roof-segment/definition.edit.js +305 -0
  635. package/dist/roof-segment/definition.js +4 -364
  636. package/dist/roof-segment/definition.render.d.ts +6 -0
  637. package/dist/roof-segment/definition.render.d.ts.map +1 -0
  638. package/dist/roof-segment/definition.render.js +59 -0
  639. package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
  640. package/dist/roof-segment/floorplan-affordances.js +2 -2
  641. package/dist/roof-segment/paint.d.ts +0 -1
  642. package/dist/roof-segment/paint.d.ts.map +1 -1
  643. package/dist/roof-segment/paint.js +0 -1
  644. package/dist/roof-segment/panel.d.ts.map +1 -1
  645. package/dist/roof-segment/panel.js +32 -34
  646. package/dist/roof-segment/parametrics.d.ts.map +1 -1
  647. package/dist/roof-segment/parametrics.js +13 -11
  648. package/dist/roof-segment/slots.d.ts +2 -0
  649. package/dist/roof-segment/slots.d.ts.map +1 -0
  650. package/dist/roof-segment/slots.js +1 -0
  651. package/dist/scan/definition.d.ts +57 -7
  652. package/dist/scan/definition.d.ts.map +1 -1
  653. package/dist/scan/definition.edit.d.ts +4 -0
  654. package/dist/scan/definition.edit.d.ts.map +1 -0
  655. package/dist/scan/definition.edit.js +4 -0
  656. package/dist/scan/definition.js +4 -52
  657. package/dist/scan/definition.render.d.ts +6 -0
  658. package/dist/scan/definition.render.d.ts.map +1 -0
  659. package/dist/scan/definition.render.js +46 -0
  660. package/dist/separator/definition.d.ts +47 -2
  661. package/dist/separator/definition.d.ts.map +1 -1
  662. package/dist/separator/definition.edit.d.ts +4 -0
  663. package/dist/separator/definition.edit.d.ts.map +1 -0
  664. package/dist/separator/definition.edit.js +13 -0
  665. package/dist/separator/definition.js +4 -37
  666. package/dist/separator/definition.render.d.ts +6 -0
  667. package/dist/separator/definition.render.d.ts.map +1 -0
  668. package/dist/separator/definition.render.js +27 -0
  669. package/dist/separator/renderer.d.ts +2 -1
  670. package/dist/separator/renderer.d.ts.map +1 -1
  671. package/dist/separator/renderer.edit.d.ts +5 -0
  672. package/dist/separator/renderer.edit.d.ts.map +1 -0
  673. package/dist/separator/renderer.edit.js +8 -0
  674. package/dist/separator/renderer.js +3 -5
  675. package/dist/separator/selection.d.ts.map +1 -1
  676. package/dist/separator/selection.js +2 -2
  677. package/dist/shared/accessory-placement.js +1 -1
  678. package/dist/shared/auto-fitting.js +1 -1
  679. package/dist/shared/auto-offset-tag.d.ts +1 -1
  680. package/dist/shared/auto-offset-tag.d.ts.map +1 -1
  681. package/dist/shared/auto-offset-tag.js +3 -1
  682. package/dist/shared/automatic-run-end-cap.d.ts +5 -0
  683. package/dist/shared/automatic-run-end-cap.d.ts.map +1 -1
  684. package/dist/shared/automatic-run-end-cap.js +17 -9
  685. package/dist/shared/connection-feedback.d.ts +6 -3
  686. package/dist/shared/connection-feedback.d.ts.map +1 -1
  687. package/dist/shared/connection-feedback.js +29 -6
  688. package/dist/shared/curtain-opening-limits.d.ts.map +1 -1
  689. package/dist/shared/curtain-opening-limits.js +2 -3
  690. package/dist/shared/draft-axis-guides.d.ts.map +1 -1
  691. package/dist/shared/draft-axis-guides.js +2 -1
  692. package/dist/shared/duct-adapter.js +1 -1
  693. package/dist/shared/duct-collar-inspector.d.ts +5 -0
  694. package/dist/shared/duct-collar-inspector.d.ts.map +1 -0
  695. package/dist/shared/duct-collar-inspector.js +36 -0
  696. package/dist/shared/follower-frames.d.ts +15 -0
  697. package/dist/shared/follower-frames.d.ts.map +1 -0
  698. package/dist/shared/follower-frames.js +36 -0
  699. package/dist/shared/handle-drag-scope.d.ts +14 -0
  700. package/dist/shared/handle-drag-scope.d.ts.map +1 -0
  701. package/dist/shared/handle-drag-scope.js +36 -0
  702. package/dist/shared/hosted-resize.d.ts +3 -1
  703. package/dist/shared/hosted-resize.d.ts.map +1 -1
  704. package/dist/shared/hosted-resize.js +10 -8
  705. package/dist/shared/live-preview.d.ts +16 -0
  706. package/dist/shared/live-preview.d.ts.map +1 -0
  707. package/dist/shared/live-preview.js +36 -0
  708. package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
  709. package/dist/shared/opening-guides-runtime.js +2 -2
  710. package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
  711. package/dist/shared/opening-placement-dimensions.js +1 -1
  712. package/dist/shared/path-point-affordance.d.ts.map +1 -1
  713. package/dist/shared/path-point-affordance.js +19 -24
  714. package/dist/shared/path-segment-affordance.d.ts +2 -1
  715. package/dist/shared/path-segment-affordance.d.ts.map +1 -1
  716. package/dist/shared/path-segment-affordance.js +11 -8
  717. package/dist/shared/pipe-collar-inspector.d.ts +5 -0
  718. package/dist/shared/pipe-collar-inspector.d.ts.map +1 -0
  719. package/dist/shared/pipe-collar-inspector.js +27 -0
  720. package/dist/shared/refrigerant-line-selection.d.ts.map +1 -1
  721. package/dist/shared/refrigerant-line-selection.js +46 -29
  722. package/dist/shared/relative-roof-drag.d.ts.map +1 -1
  723. package/dist/shared/relative-roof-drag.js +5 -4
  724. package/dist/shared/roof-surface.d.ts.map +1 -1
  725. package/dist/shared/roof-surface.js +2 -0
  726. package/dist/shared/run-hangers.d.ts.map +1 -1
  727. package/dist/shared/run-hangers.js +2 -2
  728. package/dist/shared/run-move-connectivity.d.ts +15 -6
  729. package/dist/shared/run-move-connectivity.d.ts.map +1 -1
  730. package/dist/shared/run-move-connectivity.js +14 -5
  731. package/dist/shared/run-tool-options.d.ts +8 -0
  732. package/dist/shared/run-tool-options.d.ts.map +1 -0
  733. package/dist/shared/run-tool-options.js +166 -0
  734. package/dist/shared/system-checks.d.ts.map +1 -1
  735. package/dist/shared/system-checks.js +2 -1
  736. package/dist/shared/vertical-offset.js +1 -1
  737. package/dist/shared/wall-opening-ceiling.d.ts +6 -0
  738. package/dist/shared/wall-opening-ceiling.d.ts.map +1 -1
  739. package/dist/shared/wall-opening-ceiling.js +36 -7
  740. package/dist/shelf/definition.d.ts +108 -3
  741. package/dist/shelf/definition.d.ts.map +1 -1
  742. package/dist/shelf/definition.edit.d.ts +4 -0
  743. package/dist/shelf/definition.edit.d.ts.map +1 -0
  744. package/dist/shelf/definition.edit.js +155 -0
  745. package/dist/shelf/definition.js +4 -272
  746. package/dist/shelf/definition.render.d.ts +6 -0
  747. package/dist/shelf/definition.render.d.ts.map +1 -0
  748. package/dist/shelf/definition.render.js +122 -0
  749. package/dist/site/definition.d.ts +312 -9
  750. package/dist/site/definition.d.ts.map +1 -1
  751. package/dist/site/definition.edit.d.ts +4 -0
  752. package/dist/site/definition.edit.d.ts.map +1 -0
  753. package/dist/site/definition.edit.js +4 -0
  754. package/dist/site/definition.js +4 -55
  755. package/dist/site/definition.render.d.ts +6 -0
  756. package/dist/site/definition.render.d.ts.map +1 -0
  757. package/dist/site/definition.render.js +47 -0
  758. package/dist/skylight/definition.d.ts +158 -9
  759. package/dist/skylight/definition.d.ts.map +1 -1
  760. package/dist/skylight/definition.edit.d.ts +4 -0
  761. package/dist/skylight/definition.edit.d.ts.map +1 -0
  762. package/dist/skylight/definition.edit.js +218 -0
  763. package/dist/skylight/definition.js +4 -271
  764. package/dist/skylight/definition.render.d.ts +6 -0
  765. package/dist/skylight/definition.render.d.ts.map +1 -0
  766. package/dist/skylight/definition.render.js +50 -0
  767. package/dist/skylight/move-tool.d.ts.map +1 -1
  768. package/dist/skylight/move-tool.js +7 -5
  769. package/dist/slab/definition.d.ts +289 -20
  770. package/dist/slab/definition.d.ts.map +1 -1
  771. package/dist/slab/definition.edit.d.ts +4 -0
  772. package/dist/slab/definition.edit.d.ts.map +1 -0
  773. package/dist/slab/definition.edit.js +230 -0
  774. package/dist/slab/definition.js +4 -334
  775. package/dist/slab/definition.render.d.ts +6 -0
  776. package/dist/slab/definition.render.d.ts.map +1 -0
  777. package/dist/slab/definition.render.js +92 -0
  778. package/dist/slab/panel.js +2 -2
  779. package/dist/solar-panel/definition.d.ts +145 -14
  780. package/dist/solar-panel/definition.d.ts.map +1 -1
  781. package/dist/solar-panel/definition.edit.d.ts +4 -0
  782. package/dist/solar-panel/definition.edit.d.ts.map +1 -0
  783. package/dist/solar-panel/definition.edit.js +213 -0
  784. package/dist/solar-panel/definition.js +4 -263
  785. package/dist/solar-panel/definition.render.d.ts +6 -0
  786. package/dist/solar-panel/definition.render.d.ts.map +1 -0
  787. package/dist/solar-panel/definition.render.js +42 -0
  788. package/dist/solar-panel/move-tool.d.ts.map +1 -1
  789. package/dist/solar-panel/move-tool.js +7 -5
  790. package/dist/spawn/definition.d.ts +48 -3
  791. package/dist/spawn/definition.d.ts.map +1 -1
  792. package/dist/spawn/definition.edit.d.ts +4 -0
  793. package/dist/spawn/definition.edit.d.ts.map +1 -0
  794. package/dist/spawn/definition.edit.js +64 -0
  795. package/dist/spawn/definition.js +4 -109
  796. package/dist/spawn/definition.render.d.ts +6 -0
  797. package/dist/spawn/definition.render.d.ts.map +1 -0
  798. package/dist/spawn/definition.render.js +48 -0
  799. package/dist/stair/definition.d.ts +334 -8
  800. package/dist/stair/definition.d.ts.map +1 -1
  801. package/dist/stair/definition.edit.d.ts +4 -0
  802. package/dist/stair/definition.edit.d.ts.map +1 -0
  803. package/dist/stair/definition.edit.js +377 -0
  804. package/dist/stair/definition.js +4 -443
  805. package/dist/stair/definition.render.d.ts +6 -0
  806. package/dist/stair/definition.render.d.ts.map +1 -0
  807. package/dist/stair/definition.render.js +65 -0
  808. package/dist/stair/panel.js +2 -2
  809. package/dist/stair/structure-controls.d.ts.map +1 -1
  810. package/dist/stair/structure-controls.js +2 -2
  811. package/dist/stair-segment/definition.d.ts +130 -7
  812. package/dist/stair-segment/definition.d.ts.map +1 -1
  813. package/dist/stair-segment/definition.edit.d.ts +4 -0
  814. package/dist/stair-segment/definition.edit.d.ts.map +1 -0
  815. package/dist/stair-segment/definition.edit.js +135 -0
  816. package/dist/stair-segment/definition.js +4 -172
  817. package/dist/stair-segment/definition.render.d.ts +6 -0
  818. package/dist/stair-segment/definition.render.d.ts.map +1 -0
  819. package/dist/stair-segment/definition.render.js +38 -0
  820. package/dist/structural-grid/definition.d.ts +50 -3
  821. package/dist/structural-grid/definition.d.ts.map +1 -1
  822. package/dist/structural-grid/definition.edit.d.ts +4 -0
  823. package/dist/structural-grid/definition.edit.d.ts.map +1 -0
  824. package/dist/structural-grid/definition.edit.js +18 -0
  825. package/dist/structural-grid/definition.js +4 -51
  826. package/dist/structural-grid/definition.render.d.ts +6 -0
  827. package/dist/structural-grid/definition.render.d.ts.map +1 -0
  828. package/dist/structural-grid/definition.render.js +35 -0
  829. package/dist/turbine-vent/definition.d.ts +97 -23
  830. package/dist/turbine-vent/definition.d.ts.map +1 -1
  831. package/dist/turbine-vent/definition.edit.d.ts +4 -0
  832. package/dist/turbine-vent/definition.edit.d.ts.map +1 -0
  833. package/dist/turbine-vent/definition.edit.js +66 -0
  834. package/dist/turbine-vent/definition.js +4 -121
  835. package/dist/turbine-vent/definition.render.d.ts +6 -0
  836. package/dist/turbine-vent/definition.render.d.ts.map +1 -0
  837. package/dist/turbine-vent/definition.render.js +40 -0
  838. package/dist/turbine-vent/move-tool.d.ts.map +1 -1
  839. package/dist/turbine-vent/move-tool.js +6 -5
  840. package/dist/unit/definition.d.ts +53 -9
  841. package/dist/unit/definition.d.ts.map +1 -1
  842. package/dist/unit/definition.edit.d.ts +4 -0
  843. package/dist/unit/definition.edit.d.ts.map +1 -0
  844. package/dist/unit/definition.edit.js +4 -0
  845. package/dist/unit/definition.js +4 -38
  846. package/dist/unit/definition.render.d.ts +6 -0
  847. package/dist/unit/definition.render.d.ts.map +1 -0
  848. package/dist/unit/definition.render.js +30 -0
  849. package/dist/unit/unit-panel.d.ts.map +1 -1
  850. package/dist/unit/unit-panel.js +2 -2
  851. package/dist/wall/contextual-dimensions.d.ts.map +1 -1
  852. package/dist/wall/contextual-dimensions.js +2 -2
  853. package/dist/wall/curtain-wall-panel.d.ts.map +1 -1
  854. package/dist/wall/curtain-wall-panel.js +2 -2
  855. package/dist/wall/definition.d.ts +809 -3
  856. package/dist/wall/definition.d.ts.map +1 -1
  857. package/dist/wall/definition.edit.d.ts +4 -0
  858. package/dist/wall/definition.edit.d.ts.map +1 -0
  859. package/dist/wall/definition.edit.js +184 -0
  860. package/dist/wall/definition.js +4 -279
  861. package/dist/wall/definition.render.d.ts +6 -0
  862. package/dist/wall/definition.render.d.ts.map +1 -0
  863. package/dist/wall/definition.render.js +100 -0
  864. package/dist/wall/floorplan.js +1 -1
  865. package/dist/wall/measurement.d.ts.map +1 -1
  866. package/dist/wall/measurement.js +22 -5
  867. package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
  868. package/dist/wall/move-endpoint-tool.js +3 -3
  869. package/dist/wall/move-shared.js +1 -1
  870. package/dist/wall/panel-model.d.ts.map +1 -1
  871. package/dist/wall/panel-model.js +4 -3
  872. package/dist/wall/panel.d.ts.map +1 -1
  873. package/dist/wall/panel.js +15 -6
  874. package/dist/wall/quick-measurement.js +1 -1
  875. package/dist/wall/rectangle-command.d.ts +1 -0
  876. package/dist/wall/rectangle-command.d.ts.map +1 -1
  877. package/dist/wall/rectangle-tool.js +2 -2
  878. package/dist/wall/split-floorplan-layer.d.ts.map +1 -1
  879. package/dist/wall/split-floorplan-layer.js +2 -2
  880. package/dist/wall/split-tool.d.ts.map +1 -1
  881. package/dist/wall/split-tool.js +2 -2
  882. package/dist/wall/tool.d.ts.map +1 -1
  883. package/dist/wall/tool.js +138 -36
  884. package/dist/wall/treatments.d.ts.map +1 -1
  885. package/dist/wall/treatments.js +36 -16
  886. package/dist/window/definition.d.ts +356 -15
  887. package/dist/window/definition.d.ts.map +1 -1
  888. package/dist/window/definition.edit.d.ts +4 -0
  889. package/dist/window/definition.edit.d.ts.map +1 -0
  890. package/dist/window/definition.edit.js +255 -0
  891. package/dist/window/definition.js +5 -338
  892. package/dist/window/definition.render.d.ts +8 -0
  893. package/dist/window/definition.render.d.ts.map +1 -0
  894. package/dist/window/definition.render.js +83 -0
  895. package/dist/window/floorplan-move.d.ts.map +1 -1
  896. package/dist/window/floorplan-move.js +7 -4
  897. package/dist/window/mechanism.js +1 -1
  898. package/dist/window/move-tool.d.ts.map +1 -1
  899. package/dist/window/move-tool.js +7 -11
  900. package/dist/window/tool.d.ts.map +1 -1
  901. package/dist/window/tool.js +5 -2
  902. package/dist/zone/contextual-dimensions.d.ts.map +1 -1
  903. package/dist/zone/contextual-dimensions.js +1 -2
  904. package/dist/zone/definition.d.ts +264 -9
  905. package/dist/zone/definition.d.ts.map +1 -1
  906. package/dist/zone/definition.edit.d.ts +4 -0
  907. package/dist/zone/definition.edit.d.ts.map +1 -0
  908. package/dist/zone/definition.edit.js +38 -0
  909. package/dist/zone/definition.js +4 -97
  910. package/dist/zone/definition.render.d.ts +6 -0
  911. package/dist/zone/definition.render.d.ts.map +1 -0
  912. package/dist/zone/definition.render.js +55 -0
  913. package/dist/zone/quantities-panel.d.ts.map +1 -1
  914. package/dist/zone/quantities-panel.js +2 -2
  915. package/package.json +21 -10
@@ -1 +1 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/skylight/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAIpB,MAAM,kBAAkB,CAAA;AASzB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAoMvC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,OAAO,YAAY,CAmFlE,CAAA"}
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/skylight/definition.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAG9B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { NodeEditContribution } from '../definition-contributions.js';
2
+ import type { SkylightNode } from './schema.js';
3
+ export declare const skylightEditContribution: NodeEditContribution<typeof SkylightNode>;
4
+ //# sourceMappingURL=definition.edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.edit.d.ts","sourceRoot":"","sources":["../../src/skylight/definition.edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AA2M5C,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,OAAO,YAAY,CA6B9E,CAAA"}
@@ -0,0 +1,218 @@
1
+ import { buildSkylightFloorplan } from './floorplan.js';
2
+ import { closeSkylightOpenState, isOperableSkylightNode, toggleSkylightOpenState, } from './interaction.js';
3
+ import { skylightParametrics } from './parametrics.js';
4
+ // In-world handle constants. Offsets are measured from the skylight's
5
+ // edge to the arrow's CENTER, so they need to clear half the chevron's
6
+ // own length (~13 cm at default scale) plus the frame's outward depth
7
+ // before there's any visible gap. 0.35 m leaves ~15 cm of clear space
8
+ // between the chevron's tail and the skylight frame for a typical
9
+ // flat / opening skylight; rotate gizmo gets a matching cushion.
10
+ const SIDE_HANDLE_OFFSET = 0.35;
11
+ const ROTATE_CORNER_OFFSET = 0.35;
12
+ // Small +X bump so the rotate gizmo reads as sitting *beside* the corner
13
+ // instead of perched on its edge — visually separates it from the
14
+ // width chevron that shares the +X side.
15
+ const ROTATE_CORNER_X_OFFSET = 0.2;
16
+ // Lift the rotate gizmo a little off the surface so it floats above the
17
+ // frame instead of sinking into the curb / shingles around the corner.
18
+ const ROTATE_CORNER_Y_OFFSET = 0.18;
19
+ const ROTATE_RING_OFFSET = 0.06;
20
+ // Curb arrow sits a small distance above the current curb top so it stays
21
+ // grabbable when the curb collapses to zero (flat / walk-on look) and
22
+ // doesn't sink into the frame for tall lantern curbs.
23
+ const CURB_HANDLE_OFFSET = 0.18;
24
+ const MIN_SKYLIGHT_DIM = 0.2;
25
+ const MIN_FRAME_THICKNESS = 0.005;
26
+ // Width arrows live on ±X (left / right edges of the skylight footprint).
27
+ // Asymmetric resize: each arrow only moves its own edge, the opposite
28
+ // edge stays put — same pattern as the door and the roof-segment width
29
+ // handles. `position` is in segment-surface-tangent coords, so after
30
+ // changing width we recenter `position` by half the delta along the
31
+ // skylight's own +X axis (rotated by `node.rotation` since the inner
32
+ // rotation-y group puts skylight-local X at an angle relative to
33
+ // segment-local X).
34
+ function skylightWidthHandle(side) {
35
+ const sign = side === 'right' ? 1 : -1;
36
+ return {
37
+ kind: 'linear-resize',
38
+ axis: 'x',
39
+ anchor: side === 'right' ? 'min' : 'max',
40
+ min: MIN_SKYLIGHT_DIM,
41
+ currentValue: (n) => n.width,
42
+ apply: (initial, newWidth) => {
43
+ const rotY = initial.rotation ?? 0;
44
+ const armX = Math.cos(rotY);
45
+ const armZ = -Math.sin(rotY);
46
+ const anchorX = initial.position[0] - sign * (initial.width / 2) * armX;
47
+ const anchorZ = initial.position[2] - sign * (initial.width / 2) * armZ;
48
+ const newCenterX = anchorX + sign * (newWidth / 2) * armX;
49
+ const newCenterZ = anchorZ + sign * (newWidth / 2) * armZ;
50
+ return {
51
+ width: newWidth,
52
+ position: [newCenterX, initial.position[1], newCenterZ],
53
+ };
54
+ },
55
+ placement: {
56
+ position: (n) => [sign * (n.width / 2 + SIDE_HANDLE_OFFSET), 0, 0],
57
+ rotationY: () => (side === 'right' ? 0 : Math.PI),
58
+ },
59
+ // Grandparent so handles render inside the roof (visible) instead of
60
+ // the segment mesh, which lives inside the roof renderer's
61
+ // `<group visible={false}>` segments wrapper. See skylight/renderer
62
+ // for the matching composed-transform group that backs this.
63
+ portal: 'grandparent',
64
+ };
65
+ }
66
+ // Height arrows on ±Z. Skylight `height` is the dimension along the
67
+ // roof's slope direction (X is across-slope). Same asymmetric pattern as
68
+ // width — anchored edge stays world-fixed, position recenters by half
69
+ // delta along the skylight's own +Z axis (rotated by `node.rotation`).
70
+ function skylightHeightHandle(side) {
71
+ const sign = side === 'top' ? 1 : -1;
72
+ return {
73
+ kind: 'linear-resize',
74
+ axis: 'z',
75
+ anchor: side === 'top' ? 'min' : 'max',
76
+ min: MIN_SKYLIGHT_DIM,
77
+ currentValue: (n) => n.height,
78
+ apply: (initial, newHeight) => {
79
+ const rotY = initial.rotation ?? 0;
80
+ // Skylight-local +Z projects onto segment-surface +X / +Z as
81
+ // (sin r, cos r) — orthogonal to the (cos r, -sin r) basis used
82
+ // for the +X axis above.
83
+ const armX = Math.sin(rotY);
84
+ const armZ = Math.cos(rotY);
85
+ const anchorX = initial.position[0] - sign * (initial.height / 2) * armX;
86
+ const anchorZ = initial.position[2] - sign * (initial.height / 2) * armZ;
87
+ const newCenterX = anchorX + sign * (newHeight / 2) * armX;
88
+ const newCenterZ = anchorZ + sign * (newHeight / 2) * armZ;
89
+ return {
90
+ height: newHeight,
91
+ position: [newCenterX, initial.position[1], newCenterZ],
92
+ };
93
+ },
94
+ placement: {
95
+ position: (n) => [0, 0, sign * (n.height / 2 + SIDE_HANDLE_OFFSET)],
96
+ // The +Z chevron points along +Z by default (axis 'z' auto-rotates
97
+ // -π/2 in LinearArrow). For the -Z handle, add +π so it flips.
98
+ rotationY: () => (side === 'top' ? 0 : Math.PI),
99
+ },
100
+ portal: 'grandparent',
101
+ };
102
+ }
103
+ // Rotate gizmo at the +X+Z corner of the footprint, with a ring guide
104
+ // traced around the corner-diagonal radius — same idiom as the roof-
105
+ // segment / column / elevator rotate gizmos. Negate the cursor delta to
106
+ // match three.js Y-rotation handedness.
107
+ function skylightRotateHandle() {
108
+ return {
109
+ kind: 'arc-resize',
110
+ axis: 'angular',
111
+ shape: 'rotate',
112
+ apply: (initial, delta) => ({ rotation: (initial.rotation ?? 0) - delta }),
113
+ placement: {
114
+ position: (n) => {
115
+ const halfX = n.width / 2;
116
+ const halfZ = n.height / 2;
117
+ return [
118
+ halfX + ROTATE_CORNER_X_OFFSET,
119
+ ROTATE_CORNER_Y_OFFSET,
120
+ halfZ + ROTATE_CORNER_OFFSET,
121
+ ];
122
+ },
123
+ rotationY: () => -Math.PI / 4,
124
+ },
125
+ decoration: {
126
+ kind: 'ring',
127
+ radius: (n) => Math.hypot(n.width / 2, n.height / 2) + ROTATE_RING_OFFSET,
128
+ y: () => 0,
129
+ },
130
+ portal: 'grandparent',
131
+ };
132
+ }
133
+ // Curb-height arrow — vertical chevron above the skylight, dragged up
134
+ // to raise the curb. Auto-enables `curb: true` when the user grows from
135
+ // zero so the geometry actually has a curb to show; preserves `curb`
136
+ // flag once it's been set. Placement floats just above the curb top so
137
+ // it tracks the value as the user drags and stays above the frame for
138
+ // tall lantern curbs.
139
+ function skylightCurbHeightHandle() {
140
+ return {
141
+ kind: 'linear-resize',
142
+ axis: 'y',
143
+ anchor: 'min',
144
+ min: 0,
145
+ currentValue: (n) => n.curbHeight ?? 0,
146
+ apply: (initial, newValue) => ({
147
+ curbHeight: newValue,
148
+ // Without this, dragging the arrow on a walk-on (curb: false)
149
+ // skylight would change `curbHeight` invisibly because the
150
+ // geometry path ignores it when `curb` is false.
151
+ curb: initial.curb || newValue > 0,
152
+ }),
153
+ placement: {
154
+ position: (n) => [0, (n.curbHeight ?? 0) + CURB_HANDLE_OFFSET, 0],
155
+ },
156
+ portal: 'grandparent',
157
+ };
158
+ }
159
+ // Frame-thickness arrow — diagonal chevron at the -X+Z (top-left) corner,
160
+ // pointing outward along the corner bisector. Lives on the opposite
161
+ // corner from the rotate gizmo so they don't compete. axis='z' (instead
162
+ // of 'x') so dragging outward toward +Z grows the value 1:1; LinearArrow
163
+ // auto-rotates a 'z'-axis chevron by -π/2 (so it points +Z), and the
164
+ // extra -π/4 here swings the chevron to -X+Z. The X+Z offsets match
165
+ // SIDE_HANDLE_OFFSET on each axis, so the arrow sits the same visual
166
+ // distance from the corner that the side chevrons sit from their edges.
167
+ function skylightFrameThicknessHandle() {
168
+ return {
169
+ kind: 'linear-resize',
170
+ axis: 'z',
171
+ anchor: 'min',
172
+ min: MIN_FRAME_THICKNESS,
173
+ currentValue: (n) => n.frameThickness ?? 0.05,
174
+ apply: (_n, newValue) => ({ frameThickness: newValue }),
175
+ placement: {
176
+ position: (n) => [-(n.width / 2) - SIDE_HANDLE_OFFSET, 0, n.height / 2 + SIDE_HANDLE_OFFSET],
177
+ rotationY: () => -Math.PI / 4,
178
+ },
179
+ portal: 'grandparent',
180
+ };
181
+ }
182
+ const skylightHandles = [
183
+ skylightWidthHandle('right'),
184
+ skylightWidthHandle('left'),
185
+ skylightHeightHandle('top'),
186
+ skylightHeightHandle('bottom'),
187
+ skylightCurbHeightHandle(),
188
+ skylightFrameThicknessHandle(),
189
+ skylightRotateHandle(),
190
+ ];
191
+ export const skylightEditContribution = {
192
+ snapProfile: 'item',
193
+ parametrics: skylightParametrics,
194
+ handles: skylightHandles,
195
+ floorplan: buildSkylightFloorplan,
196
+ preview: () => import('./preview.js'),
197
+ tool: () => import('./tool.js'),
198
+ affordanceTools: {
199
+ move: () => import('./move-tool.js'),
200
+ },
201
+ toolHints: [
202
+ { key: 'Left click', label: 'Place skylight on roof' },
203
+ { key: 'Esc', label: 'Cancel' },
204
+ ],
205
+ // R toggles open ↔ closed on operable types (opening / sliding); T
206
+ // forces close. The animation runs through `useInteractive` and the
207
+ // skylight system; see `./interaction.ts`.
208
+ keyboardActions: {
209
+ r: {
210
+ appliesTo: (node) => node.type === 'skylight' && isOperableSkylightNode(node),
211
+ run: (node) => toggleSkylightOpenState(node.id),
212
+ },
213
+ t: {
214
+ appliesTo: (node) => node.type === 'skylight' && isOperableSkylightNode(node),
215
+ run: (node) => closeSkylightOpenState(node.id),
216
+ },
217
+ },
218
+ };
@@ -1,271 +1,4 @@
1
- import { SkylightNode as SkylightNodeSchema, } from '@pascal-app/core';
2
- import { buildSkylightFloorplan } from './floorplan.js';
3
- import { closeSkylightOpenState, isOperableSkylightNode, toggleSkylightOpenState, } from './interaction.js';
4
- import { skylightParametrics } from './parametrics.js';
5
- import { buildSkylightRoofCut } from './roof-cut.js';
6
- import { SkylightNode } from './schema.js';
7
- // In-world handle constants. Offsets are measured from the skylight's
8
- // edge to the arrow's CENTER, so they need to clear half the chevron's
9
- // own length (~13 cm at default scale) plus the frame's outward depth
10
- // before there's any visible gap. 0.35 m leaves ~15 cm of clear space
11
- // between the chevron's tail and the skylight frame for a typical
12
- // flat / opening skylight; rotate gizmo gets a matching cushion.
13
- const SIDE_HANDLE_OFFSET = 0.35;
14
- const ROTATE_CORNER_OFFSET = 0.35;
15
- // Small +X bump so the rotate gizmo reads as sitting *beside* the corner
16
- // instead of perched on its edge — visually separates it from the
17
- // width chevron that shares the +X side.
18
- const ROTATE_CORNER_X_OFFSET = 0.2;
19
- // Lift the rotate gizmo a little off the surface so it floats above the
20
- // frame instead of sinking into the curb / shingles around the corner.
21
- const ROTATE_CORNER_Y_OFFSET = 0.18;
22
- const ROTATE_RING_OFFSET = 0.06;
23
- // Curb arrow sits a small distance above the current curb top so it stays
24
- // grabbable when the curb collapses to zero (flat / walk-on look) and
25
- // doesn't sink into the frame for tall lantern curbs.
26
- const CURB_HANDLE_OFFSET = 0.18;
27
- const MIN_SKYLIGHT_DIM = 0.2;
28
- const MIN_FRAME_THICKNESS = 0.005;
29
- // Width arrows live on ±X (left / right edges of the skylight footprint).
30
- // Asymmetric resize: each arrow only moves its own edge, the opposite
31
- // edge stays put — same pattern as the door and the roof-segment width
32
- // handles. `position` is in segment-surface-tangent coords, so after
33
- // changing width we recenter `position` by half the delta along the
34
- // skylight's own +X axis (rotated by `node.rotation` since the inner
35
- // rotation-y group puts skylight-local X at an angle relative to
36
- // segment-local X).
37
- function skylightWidthHandle(side) {
38
- const sign = side === 'right' ? 1 : -1;
39
- return {
40
- kind: 'linear-resize',
41
- axis: 'x',
42
- anchor: side === 'right' ? 'min' : 'max',
43
- min: MIN_SKYLIGHT_DIM,
44
- currentValue: (n) => n.width,
45
- apply: (initial, newWidth) => {
46
- const rotY = initial.rotation ?? 0;
47
- const armX = Math.cos(rotY);
48
- const armZ = -Math.sin(rotY);
49
- const anchorX = initial.position[0] - sign * (initial.width / 2) * armX;
50
- const anchorZ = initial.position[2] - sign * (initial.width / 2) * armZ;
51
- const newCenterX = anchorX + sign * (newWidth / 2) * armX;
52
- const newCenterZ = anchorZ + sign * (newWidth / 2) * armZ;
53
- return {
54
- width: newWidth,
55
- position: [newCenterX, initial.position[1], newCenterZ],
56
- };
57
- },
58
- placement: {
59
- position: (n) => [sign * (n.width / 2 + SIDE_HANDLE_OFFSET), 0, 0],
60
- rotationY: () => (side === 'right' ? 0 : Math.PI),
61
- },
62
- // Grandparent so handles render inside the roof (visible) instead of
63
- // the segment mesh, which lives inside the roof renderer's
64
- // `<group visible={false}>` segments wrapper. See skylight/renderer
65
- // for the matching composed-transform group that backs this.
66
- portal: 'grandparent',
67
- };
68
- }
69
- // Height arrows on ±Z. Skylight `height` is the dimension along the
70
- // roof's slope direction (X is across-slope). Same asymmetric pattern as
71
- // width — anchored edge stays world-fixed, position recenters by half
72
- // delta along the skylight's own +Z axis (rotated by `node.rotation`).
73
- function skylightHeightHandle(side) {
74
- const sign = side === 'top' ? 1 : -1;
75
- return {
76
- kind: 'linear-resize',
77
- axis: 'z',
78
- anchor: side === 'top' ? 'min' : 'max',
79
- min: MIN_SKYLIGHT_DIM,
80
- currentValue: (n) => n.height,
81
- apply: (initial, newHeight) => {
82
- const rotY = initial.rotation ?? 0;
83
- // Skylight-local +Z projects onto segment-surface +X / +Z as
84
- // (sin r, cos r) — orthogonal to the (cos r, -sin r) basis used
85
- // for the +X axis above.
86
- const armX = Math.sin(rotY);
87
- const armZ = Math.cos(rotY);
88
- const anchorX = initial.position[0] - sign * (initial.height / 2) * armX;
89
- const anchorZ = initial.position[2] - sign * (initial.height / 2) * armZ;
90
- const newCenterX = anchorX + sign * (newHeight / 2) * armX;
91
- const newCenterZ = anchorZ + sign * (newHeight / 2) * armZ;
92
- return {
93
- height: newHeight,
94
- position: [newCenterX, initial.position[1], newCenterZ],
95
- };
96
- },
97
- placement: {
98
- position: (n) => [0, 0, sign * (n.height / 2 + SIDE_HANDLE_OFFSET)],
99
- // The +Z chevron points along +Z by default (axis 'z' auto-rotates
100
- // -π/2 in LinearArrow). For the -Z handle, add +π so it flips.
101
- rotationY: () => (side === 'top' ? 0 : Math.PI),
102
- },
103
- portal: 'grandparent',
104
- };
105
- }
106
- // Rotate gizmo at the +X+Z corner of the footprint, with a ring guide
107
- // traced around the corner-diagonal radius — same idiom as the roof-
108
- // segment / column / elevator rotate gizmos. Negate the cursor delta to
109
- // match three.js Y-rotation handedness.
110
- function skylightRotateHandle() {
111
- return {
112
- kind: 'arc-resize',
113
- axis: 'angular',
114
- shape: 'rotate',
115
- apply: (initial, delta) => ({ rotation: (initial.rotation ?? 0) - delta }),
116
- placement: {
117
- position: (n) => {
118
- const halfX = n.width / 2;
119
- const halfZ = n.height / 2;
120
- return [
121
- halfX + ROTATE_CORNER_X_OFFSET,
122
- ROTATE_CORNER_Y_OFFSET,
123
- halfZ + ROTATE_CORNER_OFFSET,
124
- ];
125
- },
126
- rotationY: () => -Math.PI / 4,
127
- },
128
- decoration: {
129
- kind: 'ring',
130
- radius: (n) => Math.hypot(n.width / 2, n.height / 2) + ROTATE_RING_OFFSET,
131
- y: () => 0,
132
- },
133
- portal: 'grandparent',
134
- };
135
- }
136
- // Curb-height arrow — vertical chevron above the skylight, dragged up
137
- // to raise the curb. Auto-enables `curb: true` when the user grows from
138
- // zero so the geometry actually has a curb to show; preserves `curb`
139
- // flag once it's been set. Placement floats just above the curb top so
140
- // it tracks the value as the user drags and stays above the frame for
141
- // tall lantern curbs.
142
- function skylightCurbHeightHandle() {
143
- return {
144
- kind: 'linear-resize',
145
- axis: 'y',
146
- anchor: 'min',
147
- min: 0,
148
- currentValue: (n) => n.curbHeight ?? 0,
149
- apply: (initial, newValue) => ({
150
- curbHeight: newValue,
151
- // Without this, dragging the arrow on a walk-on (curb: false)
152
- // skylight would change `curbHeight` invisibly because the
153
- // geometry path ignores it when `curb` is false.
154
- curb: initial.curb || newValue > 0,
155
- }),
156
- placement: {
157
- position: (n) => [0, (n.curbHeight ?? 0) + CURB_HANDLE_OFFSET, 0],
158
- },
159
- portal: 'grandparent',
160
- };
161
- }
162
- // Frame-thickness arrow — diagonal chevron at the -X+Z (top-left) corner,
163
- // pointing outward along the corner bisector. Lives on the opposite
164
- // corner from the rotate gizmo so they don't compete. axis='z' (instead
165
- // of 'x') so dragging outward toward +Z grows the value 1:1; LinearArrow
166
- // auto-rotates a 'z'-axis chevron by -π/2 (so it points +Z), and the
167
- // extra -π/4 here swings the chevron to -X+Z. The X+Z offsets match
168
- // SIDE_HANDLE_OFFSET on each axis, so the arrow sits the same visual
169
- // distance from the corner that the side chevrons sit from their edges.
170
- function skylightFrameThicknessHandle() {
171
- return {
172
- kind: 'linear-resize',
173
- axis: 'z',
174
- anchor: 'min',
175
- min: MIN_FRAME_THICKNESS,
176
- currentValue: (n) => n.frameThickness ?? 0.05,
177
- apply: (_n, newValue) => ({ frameThickness: newValue }),
178
- placement: {
179
- position: (n) => [-(n.width / 2) - SIDE_HANDLE_OFFSET, 0, n.height / 2 + SIDE_HANDLE_OFFSET],
180
- rotationY: () => -Math.PI / 4,
181
- },
182
- portal: 'grandparent',
183
- };
184
- }
185
- const skylightHandles = [
186
- skylightWidthHandle('right'),
187
- skylightWidthHandle('left'),
188
- skylightHeightHandle('top'),
189
- skylightHeightHandle('bottom'),
190
- skylightCurbHeightHandle(),
191
- skylightFrameThicknessHandle(),
192
- skylightRotateHandle(),
193
- ];
194
- /**
195
- * Skylight — a framed glass opening hosted on a roof segment. All five
196
- * type variants (flat / walk-on / lantern / opening / sliding) render
197
- * with the archive's full geometry; the animation system advances
198
- * `operationState` via `useInteractive.skylightAnimations`.
199
- */
200
- export const skylightDefinition = {
201
- kind: 'skylight',
202
- schemaVersion: 1,
203
- schema: SkylightNode,
204
- category: 'structure',
205
- surfaceRole: 'glazing',
206
- defaults: () => {
207
- const stub = SkylightNodeSchema.parse({
208
- id: 'skylight_default',
209
- type: 'skylight',
210
- });
211
- const { id: _id, type: _type, ...rest } = stub;
212
- return rest;
213
- },
214
- capabilities: {
215
- exterior: true,
216
- selectable: { hitVolume: 'bbox' },
217
- duplicable: true,
218
- deletable: true,
219
- // Mounts on a roof segment via `roofSegmentId`. Dirty marks
220
- // cascade to the host segment's parent roof so its merged shell
221
- // re-CSGs with the new cut. `buildCut` returns the segment-local
222
- // box that's subtracted from shin / deck / wall.
223
- roofAccessory: {
224
- buildCut: (node, hostSegment) => buildSkylightRoofCut(node, hostSegment),
225
- },
226
- },
227
- parametrics: skylightParametrics,
228
- handles: skylightHandles,
229
- floorplan: buildSkylightFloorplan,
230
- rendersChildren: false,
231
- renderer: {
232
- kind: 'parametric',
233
- module: () => import('./renderer.js'),
234
- },
235
- preview: () => import('./preview.js'),
236
- system: {
237
- module: () => import('./system.js'),
238
- priority: 3,
239
- },
240
- tool: () => import('./tool.js'),
241
- affordanceTools: {
242
- move: () => import('./move-tool.js'),
243
- },
244
- toolHints: [
245
- { key: 'Left click', label: 'Place skylight on roof' },
246
- { key: 'Esc', label: 'Cancel' },
247
- ],
248
- presentation: {
249
- label: 'Skylight',
250
- description: 'Framed glass opening on a roof segment.',
251
- icon: { kind: 'url', src: '/icons/skylight.webp' },
252
- paletteSection: 'structure',
253
- paletteOrder: 124,
254
- },
255
- mcp: {
256
- description: 'A skylight on a roof segment. Five type variants (flat / walk-on / lantern / opening / sliding) — geometry beyond box stub coming later.',
257
- },
258
- // R toggles open ↔ closed on operable types (opening / sliding); T
259
- // forces close. The animation runs through `useInteractive` and the
260
- // skylight system; see `./interaction.ts`.
261
- keyboardActions: {
262
- r: {
263
- appliesTo: (node) => node.type === 'skylight' && isOperableSkylightNode(node),
264
- run: (node) => toggleSkylightOpenState(node.id),
265
- },
266
- t: {
267
- appliesTo: (node) => node.type === 'skylight' && isOperableSkylightNode(node),
268
- run: (node) => closeSkylightOpenState(node.id),
269
- },
270
- },
271
- };
1
+ import { composeNodeDefinition } from '../definition-contributions.js';
2
+ import { skylightEditContribution } from './definition.edit.js';
3
+ import { skylightRenderDefinition } from './definition.render.js';
4
+ export const skylightDefinition = composeNodeDefinition(skylightRenderDefinition, skylightEditContribution);
@@ -0,0 +1,6 @@
1
+ import type { NodeRenderDefinition } from '../definition-contributions.js';
2
+ import { SkylightNode } from './schema.js';
3
+ export declare const skylightRenderDefinition: NodeRenderDefinition<typeof SkylightNode> & {
4
+ kind: 'skylight';
5
+ };
6
+ //# sourceMappingURL=definition.render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.render.d.ts","sourceRoot":"","sources":["../../src/skylight/definition.render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,OAAO,YAAY,CAAC,GAAG;IACjF,IAAI,EAAE,UAAU,CAAA;CAiDjB,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { SkylightNode as SkylightNodeSchema, } from '@pascal-app/core';
2
+ import { buildSkylightRoofCut } from './roof-cut.js';
3
+ import { SkylightNode } from './schema.js';
4
+ export const skylightRenderDefinition = {
5
+ kind: 'skylight',
6
+ schemaVersion: 1,
7
+ schema: SkylightNode,
8
+ category: 'structure',
9
+ surfaceRole: 'glazing',
10
+ defaults: () => {
11
+ const stub = SkylightNodeSchema.parse({
12
+ id: 'skylight_default',
13
+ type: 'skylight',
14
+ });
15
+ const { id: _id, type: _type, ...rest } = stub;
16
+ return rest;
17
+ },
18
+ capabilities: {
19
+ exterior: true,
20
+ selectable: { hitVolume: 'bbox' },
21
+ duplicable: true,
22
+ deletable: true,
23
+ // Mounts on a roof segment via `roofSegmentId`. Dirty marks
24
+ // cascade to the host segment's parent roof so its merged shell
25
+ // re-CSGs with the new cut. `buildCut` returns the segment-local
26
+ // box that's subtracted from shin / deck / wall.
27
+ roofAccessory: {
28
+ buildCut: (node, hostSegment) => buildSkylightRoofCut(node, hostSegment),
29
+ },
30
+ },
31
+ rendersChildren: false,
32
+ renderer: {
33
+ kind: 'parametric',
34
+ module: () => import('./renderer.js'),
35
+ },
36
+ system: {
37
+ module: () => import('./system.js'),
38
+ priority: 3,
39
+ },
40
+ presentation: {
41
+ label: 'Skylight',
42
+ description: 'Framed glass opening on a roof segment.',
43
+ icon: { kind: 'url', src: '/icons/skylight.webp' },
44
+ paletteSection: 'structure',
45
+ paletteOrder: 124,
46
+ },
47
+ mcp: {
48
+ description: 'A skylight on a roof segment. Five type variants (flat / walk-on / lantern / opening / sliding) — geometry beyond box stub coming later.',
49
+ },
50
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/skylight/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAA;AAuBzB,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,sCAiQxE"}
1
+ {"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/skylight/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAA;AA0BzB,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,sCAqQxE"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { emitter, sceneRegistry, useScene, } from '@pascal-app/core';
4
- import { consumePlacementDragRelease, markToolCancelConsumed, triggerSFX, useEditor, } from '@pascal-app/editor';
4
+ import { consumePlacementDragRelease, isGridSnapActive, isMagneticSnapActive, markToolCancelConsumed, stripPlacementMetadataFlags, triggerSFX, useEditor, } from '@pascal-app/editor';
5
5
  import { useCallback, useEffect, useRef, useState } from 'react';
6
6
  import * as THREE from 'three';
7
7
  import { createRelativeRoofDrag, roofSegmentLocalToBuildingLocal, snapRelativeRoofDragTarget, } from '../shared/relative-roof-drag.js';
@@ -58,9 +58,9 @@ export default function MoveSkylightTool({ node }) {
58
58
  if (!rawTarget)
59
59
  return null;
60
60
  return snapRoofSurfaceNodeTarget({
61
- target: snapRelativeRoofDragTarget(rawTarget, event.nativeEvent?.shiftKey === true),
61
+ target: snapRelativeRoofDragTarget(rawTarget, event.nativeEvent?.altKey === true),
62
62
  node,
63
- bypass: event.nativeEvent?.shiftKey === true,
63
+ bypass: !isMagneticSnapActive() || event.nativeEvent?.altKey === true,
64
64
  });
65
65
  };
66
66
  // Resolve which segment the cursor is over, then derive the same
@@ -97,7 +97,9 @@ export default function MoveSkylightTool({ node }) {
97
97
  const onRoofMove = (event) => {
98
98
  const sx = Math.round(event.position[0] * 20) / 20;
99
99
  const sz = Math.round(event.position[2] * 20) / 20;
100
- if (event.nativeEvent?.shiftKey !== true && (sx !== lastSnapX || sz !== lastSnapZ)) {
100
+ if (isGridSnapActive() &&
101
+ event.nativeEvent?.altKey !== true &&
102
+ (sx !== lastSnapX || sz !== lastSnapZ)) {
101
103
  triggerSFX('sfx:grid-snap');
102
104
  lastSnapX = sx;
103
105
  lastSnapZ = sz;
@@ -133,7 +135,7 @@ export default function MoveSkylightTool({ node }) {
133
135
  position: [target.localX, target.localY, target.localZ],
134
136
  rotation: finalRotation,
135
137
  visible: true,
136
- metadata: {},
138
+ metadata: stripPlacementMetadataFlags(original.metadata),
137
139
  });
138
140
  if (original.roofSegmentId && original.roofSegmentId !== targetSegmentId) {
139
141
  const oldSeg = st.nodes[original.roofSegmentId];