@pascal-app/editor 1.0.3 → 1.0.5

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 (624) hide show
  1. package/README.md +106 -0
  2. package/package.json +42 -38
  3. package/src/components/editor/__bench__/room-label-placement.bench.ts +108 -0
  4. package/src/components/editor/action-menu-button.tsx +83 -0
  5. package/src/components/editor/bake-thumbnail.tsx +307 -5
  6. package/src/components/editor/capture-level-picker.tsx +72 -0
  7. package/src/components/editor/construction-reveal-audio.test.tsx +150 -0
  8. package/src/components/editor/construction-reveal-audio.tsx +40 -0
  9. package/src/components/editor/custom-camera-controls.tsx +275 -57
  10. package/src/components/editor/delete-confirmation-dialog.tsx +297 -7
  11. package/src/components/editor/duplicate-node.ts +244 -0
  12. package/src/components/editor/editor-layout-mobile.tsx +37 -26
  13. package/src/components/editor/editor-layout-v2.tsx +132 -59
  14. package/src/components/editor/export-manager.tsx +47 -26
  15. package/src/components/editor/first-person/build-collider-world.test.ts +320 -0
  16. package/src/components/editor/first-person/build-collider-world.ts +28 -7
  17. package/src/components/editor/first-person/ground-holes.test.ts +128 -0
  18. package/src/components/editor/first-person/ground-holes.ts +130 -0
  19. package/src/components/editor/first-person/mechanism-targets.test.ts +162 -0
  20. package/src/components/editor/first-person/mechanism-targets.ts +88 -0
  21. package/src/components/editor/first-person-controls.tsx +220 -9
  22. package/src/components/editor/floating-action-menu.tsx +63 -207
  23. package/src/components/editor/floor-aware-camera-controls.test.ts +466 -0
  24. package/src/components/editor/floor-aware-camera-controls.ts +324 -0
  25. package/src/components/editor/floor-openings-overlay.tsx +243 -0
  26. package/src/components/editor/floor-region-controls.tsx +846 -0
  27. package/src/components/editor/floor-region-webgpu-materials.test.ts +12 -0
  28. package/src/components/editor/floor-surface.test.ts +165 -0
  29. package/src/components/editor/floor-surface.ts +182 -0
  30. package/src/components/editor/floorplan-background-selection.test.ts +11 -2
  31. package/src/components/editor/floorplan-background-selection.ts +1 -3
  32. package/src/components/editor/floorplan-mode-coordinator.tsx +2 -2
  33. package/src/components/editor/floorplan-panel.tsx +414 -363
  34. package/src/components/editor/follow-pascal.test.tsx +912 -0
  35. package/src/components/editor/follow-pascal.tsx +354 -0
  36. package/src/components/editor/footprint-height-handle.tsx +204 -0
  37. package/src/components/editor/group-actions.ts +56 -2
  38. package/src/components/editor/group-move-3d.ts +2 -0
  39. package/src/components/editor/group-rotate-handle.tsx +2 -0
  40. package/src/components/editor/group-transform-shared.test.ts +460 -0
  41. package/src/components/editor/handles/handle-hit-priority.test.tsx +63 -0
  42. package/src/components/editor/handles/handle-hit-priority.tsx +37 -0
  43. package/src/components/editor/handles/swallow-next-click.test.ts +28 -0
  44. package/src/components/editor/handles/use-handle-drag.ts +269 -197
  45. package/src/components/editor/index.tsx +409 -197
  46. package/src/components/editor/join-walls-pill.tsx +44 -0
  47. package/src/components/editor/node-action-menu.tsx +68 -70
  48. package/src/components/editor/node-arrow-handles.tsx +25 -6
  49. package/src/components/editor/open-wall-ends-3d-layer.tsx +273 -0
  50. package/src/components/editor/open-wall-ends-hint.tsx +89 -0
  51. package/src/components/editor/quick-measurement-hud.tsx +3 -2
  52. package/src/components/editor/registry-action-contributions.test.tsx +63 -0
  53. package/src/components/editor/registry-action-contributions.tsx +80 -1
  54. package/src/components/editor/riser-diagram-panel.tsx +14 -7
  55. package/src/components/editor/room-controls.tsx +847 -0
  56. package/src/components/editor/room-floor-highlight.tsx +128 -0
  57. package/src/components/editor/room-handles-2d.tsx +354 -0
  58. package/src/components/editor/room-handles.tsx +675 -0
  59. package/src/components/editor/room-highlight.tsx +233 -0
  60. package/src/components/editor/room-labels.test.ts +850 -0
  61. package/src/components/editor/room-labels.tsx +1890 -0
  62. package/src/components/editor/room-transform-ghost.tsx +256 -0
  63. package/src/components/editor/room-webgpu-materials.test.ts +27 -0
  64. package/src/components/editor/selection-manager.tsx +474 -419
  65. package/src/components/editor/slab-hole-highlights.tsx +5 -2
  66. package/src/components/editor/snapshot-capture-overlay.tsx +7 -2
  67. package/src/components/editor/snapshot-capture.test.ts +119 -60
  68. package/src/components/editor/snapshot-capture.ts +36 -5
  69. package/src/components/editor/thumbnail-generator.test.ts +654 -0
  70. package/src/components/editor/thumbnail-generator.tsx +1103 -223
  71. package/src/components/editor/use-floorplan-background-placement.ts +34 -12
  72. package/src/components/editor/vector-edge-extractor.tsx +121 -0
  73. package/src/components/editor/views/host-view.tsx +61 -0
  74. package/src/components/editor/views/plugins-view.tsx +663 -0
  75. package/src/components/editor/views/scene-region.tsx +59 -0
  76. package/src/components/editor/views/use-editor-views.ts +57 -0
  77. package/src/components/editor/views/view-bar.test.tsx +54 -0
  78. package/src/components/editor/views/view-bar.tsx +343 -0
  79. package/src/components/editor/wall-justification.test.ts +140 -0
  80. package/src/components/editor/wall-move-side-handles.tsx +43 -142
  81. package/src/components/editor/wall-push-arrow.tsx +92 -0
  82. package/src/components/editor/wall-region-handles.tsx +509 -0
  83. package/src/components/editor/wall-snap-beacon-layer.tsx +8 -4
  84. package/src/components/editor-2d/floorplan-cursor-indicator-overlay.tsx +8 -4
  85. package/src/components/editor-2d/floorplan-group-move.tsx +3 -0
  86. package/src/components/editor-2d/floorplan-open-wall-ends-layer.test.tsx +86 -0
  87. package/src/components/editor-2d/floorplan-open-wall-ends-layer.tsx +290 -0
  88. package/src/components/editor-2d/floorplan-registered-tool-layer.tsx +2 -2
  89. package/src/components/editor-2d/floorplan-registry-action-menu.tsx +11 -1
  90. package/src/components/editor-2d/floorplan-registry-move-overlay.tsx +116 -106
  91. package/src/components/editor-2d/renderers/floorplan-dimension-edit-overlay.test.ts +156 -0
  92. package/src/components/editor-2d/renderers/floorplan-dimension-edit-overlay.tsx +278 -0
  93. package/src/components/editor-2d/renderers/floorplan-dimension-renderer.tsx +77 -0
  94. package/src/components/editor-2d/renderers/{floorplan-draft-wall-measurement.tsx → floorplan-draft-measurement.tsx} +8 -8
  95. package/src/components/editor-2d/renderers/floorplan-geometry-renderer.tsx +4 -1
  96. package/src/components/editor-2d/renderers/floorplan-registry-layer.test.ts +38 -8
  97. package/src/components/editor-2d/renderers/floorplan-registry-layer.tsx +319 -233
  98. package/src/components/editor-2d/renderers/floorplan-reveal.test.tsx +254 -0
  99. package/src/components/editor-2d/renderers/floorplan-reveal.ts +141 -0
  100. package/src/components/editor-2d/svg-paths.ts +12 -15
  101. package/src/components/point-ask/bubble.tsx +538 -0
  102. package/src/components/point-ask/hover-chip.tsx +91 -0
  103. package/src/components/point-ask/mode-pill.tsx +92 -0
  104. package/src/components/point-ask/optional-motion.ts +22 -0
  105. package/src/components/point-ask/outline-corners.tsx +93 -0
  106. package/src/components/point-ask/pins.tsx +711 -0
  107. package/src/components/point-ask/point-ask-layer.tsx +83 -0
  108. package/src/components/point-ask/point-ask-styles.ts +105 -0
  109. package/src/components/point-ask/region-marquee-styles.ts +15 -0
  110. package/src/components/point-ask/region-marquee.tsx +64 -0
  111. package/src/components/procedural-items/inspector.tsx +40 -15
  112. package/src/components/systems/ceiling/ceiling-bracket-batch.test.ts +12 -2
  113. package/src/components/systems/ceiling/ceiling-selection-affordance-system.test.ts +97 -14
  114. package/src/components/systems/ceiling/ceiling-selection-affordance-system.tsx +18 -18
  115. package/src/components/systems/roof/roof-edit-system.tsx +1 -0
  116. package/src/components/systems/zone/zone-system.test.ts +47 -0
  117. package/src/components/systems/zone/zone-system.tsx +29 -68
  118. package/src/components/tools/distribution/connection-compatibility.test.ts +34 -0
  119. package/src/components/tools/distribution/connection-compatibility.ts +43 -0
  120. package/src/components/tools/distribution/distribution-public.ts +9 -0
  121. package/src/components/tools/distribution/distribution-run-contract.test.ts +26 -0
  122. package/src/components/tools/distribution/distribution-run-contract.ts +94 -0
  123. package/src/components/tools/distribution/distribution-run-tool.test.ts +241 -0
  124. package/src/components/tools/distribution/distribution-run-tool.test.tsx +125 -0
  125. package/src/components/tools/distribution/distribution-run-tool.tsx +1323 -0
  126. package/src/components/tools/distribution/draw-alignment.ts +35 -0
  127. package/src/components/tools/distribution/ports.test.ts +56 -0
  128. package/src/components/tools/distribution/ports.ts +378 -0
  129. package/src/components/tools/distribution/run-cursor.test.ts +135 -0
  130. package/src/components/tools/distribution/run-cursor.ts +36 -0
  131. package/src/components/tools/distribution/run-direction-feedback.test.ts +60 -0
  132. package/src/components/tools/distribution/run-direction-feedback.tsx +251 -0
  133. package/src/components/tools/distribution/run-port-snap.test.ts +79 -0
  134. package/src/components/tools/distribution/run-port-snap.ts +25 -0
  135. package/src/components/tools/distribution/run-screen-direction.test.ts +23 -0
  136. package/src/components/tools/distribution/run-screen-direction.ts +30 -0
  137. package/src/components/tools/elevator/elevator-tool.tsx +3 -6
  138. package/src/components/tools/elevator/move-elevator-tool.tsx +2 -3
  139. package/src/components/tools/item/item-surface-strategy-resolver.test.ts +67 -68
  140. package/src/components/tools/item/placement-history.test.tsx +512 -0
  141. package/src/components/tools/item/placement-strategies.test.ts +46 -1
  142. package/src/components/tools/item/placement-strategies.ts +11 -10
  143. package/src/components/tools/item/shelf-surface-strategy-resolver.test.ts +56 -56
  144. package/src/components/tools/item/use-draft-node.test.tsx +432 -1
  145. package/src/components/tools/item/use-draft-node.ts +166 -95
  146. package/src/components/tools/item/use-placement-coordinator.tsx +148 -95
  147. package/src/components/tools/paint-region/use-paint-tint.ts +37 -0
  148. package/src/components/tools/paint-region/wall-paint-region-tool.tsx +466 -0
  149. package/src/components/tools/registry/item-surface-move.test.ts +62 -63
  150. package/src/components/tools/registry/item-surface-move.ts +2 -0
  151. package/src/components/tools/registry/item-surface-resolver.test.ts +26 -26
  152. package/src/components/tools/registry/move-registry-node-tool.test.ts +268 -1
  153. package/src/components/tools/registry/move-registry-node-tool.tsx +66 -30
  154. package/src/components/tools/select/box-select-tool.tsx +2 -12
  155. package/src/components/tools/select/plane-box-select-tool.test.tsx +79 -0
  156. package/src/components/tools/select/plane-box-select-tool.tsx +35 -22
  157. package/src/components/tools/select/select-candidates.test.ts +37 -4
  158. package/src/components/tools/select/select-candidates.ts +15 -11
  159. package/src/components/tools/shared/cursor-sphere.tsx +36 -12
  160. package/src/components/tools/site/site-boundary-editor.tsx +1 -2
  161. package/src/components/tools/tool-manager.tsx +59 -24
  162. package/src/components/tools/wall/wall-drafting.test.ts +175 -47
  163. package/src/components/tools/zone/zone-tool.tsx +4 -12
  164. package/src/components/ui/action-menu/action-button.tsx +9 -1
  165. package/src/components/ui/action-menu/camera-actions.tsx +9 -4
  166. package/src/components/ui/action-menu/control-modes.tsx +15 -42
  167. package/src/components/ui/action-menu/follow-pascal-pill.tsx +32 -0
  168. package/src/components/ui/action-menu/follow-pascal-toggle.tsx +36 -0
  169. package/src/components/ui/action-menu/index.tsx +56 -33
  170. package/src/components/ui/action-menu/measurement-control.tsx +14 -19
  171. package/src/components/ui/action-menu/placement.ts +20 -0
  172. package/src/components/ui/action-menu/point-ask-button.tsx +52 -0
  173. package/src/components/ui/action-menu/view-toggles.tsx +47 -42
  174. package/src/components/ui/build-panel/build-panel.tsx +242 -0
  175. package/src/components/ui/command-palette/editor-commands.tsx +7 -42
  176. package/src/components/ui/command-palette/index.tsx +50 -39
  177. package/src/components/ui/command-palette/ranked-groups.test.ts +31 -0
  178. package/src/components/ui/controls/action-button.tsx +5 -2
  179. package/src/components/ui/controls/finish-swatch.tsx +110 -0
  180. package/src/components/ui/controls/material-paint-panel.tsx +97 -26
  181. package/src/components/ui/controls/material-picker.tsx +4 -1
  182. package/src/components/ui/controls/metric-control.tsx +1 -1
  183. package/src/components/ui/controls/scene-material-list.tsx +4 -32
  184. package/src/components/ui/controls/segmented-control.tsx +21 -8
  185. package/src/components/ui/controls/select-control.tsx +65 -0
  186. package/src/components/ui/controls/slider-control.tsx +1 -1
  187. package/src/components/ui/controls/toggle-control.tsx +3 -3
  188. package/src/components/ui/controls/tool-options-panel.tsx +1 -1
  189. package/src/components/ui/floating-level-selector.tsx +159 -59
  190. package/src/components/ui/helpers/building-helper.tsx +4 -1
  191. package/src/components/ui/helpers/contextual-helper-panel.tsx +181 -72
  192. package/src/components/ui/helpers/helper-manager.test.tsx +121 -0
  193. package/src/components/ui/helpers/helper-manager.tsx +331 -14
  194. package/src/components/ui/helpers/item-helper.tsx +17 -1
  195. package/src/components/ui/helpers/registered-tool-helper.tsx +8 -1
  196. package/src/components/ui/icon-ref.tsx +45 -1
  197. package/src/components/ui/level-duplicate-dialog.tsx +1 -1
  198. package/src/components/ui/node-icon-image.tsx +16 -0
  199. package/src/components/ui/panels/collections/collections-popover.tsx +28 -22
  200. package/src/components/ui/panels/floor-foundation-panel.tsx +551 -0
  201. package/src/components/ui/panels/floor-opening-panel.tsx +143 -0
  202. package/src/components/ui/panels/mobile-panel-sheet.tsx +4 -4
  203. package/src/components/ui/panels/mobile-selection-bar.tsx +8 -5
  204. package/src/components/ui/panels/multi-field-value.test.ts +26 -3
  205. package/src/components/ui/panels/multi-field-value.ts +6 -3
  206. package/src/components/ui/panels/multi-parametric-inspector.tsx +52 -2
  207. package/src/components/ui/panels/multi-selection-panel.tsx +161 -5
  208. package/src/components/ui/panels/node-display.ts +8 -3
  209. package/src/components/ui/panels/panel-manager.tsx +103 -68
  210. package/src/components/ui/panels/panel-wrapper.tsx +130 -62
  211. package/src/components/ui/panels/parametric-field-control.tsx +3 -3
  212. package/src/components/ui/panels/parametric-inspector.tsx +7 -7
  213. package/src/components/ui/panels/reference-panel.tsx +2 -3
  214. package/src/components/ui/panels/room-construction-rows.tsx +774 -0
  215. package/src/components/ui/panels/room-name-options.test.ts +55 -0
  216. package/src/components/ui/panels/room-name-options.ts +47 -0
  217. package/src/components/ui/panels/room-openings-field.tsx +110 -0
  218. package/src/components/ui/panels/room-panel.tsx +790 -0
  219. package/src/components/ui/panels/shape-choice.tsx +58 -0
  220. package/src/components/ui/panels/wall-region-list.tsx +109 -0
  221. package/src/components/ui/primitives/badge.tsx +8 -0
  222. package/src/components/ui/primitives/color-dot.tsx +36 -24
  223. package/src/components/ui/primitives/sidebar.tsx +3 -1
  224. package/src/components/ui/right-stack.test.ts +29 -0
  225. package/src/components/ui/right-stack.tsx +164 -0
  226. package/src/components/ui/sidebar/app-sidebar.tsx +1 -1
  227. package/src/components/ui/sidebar/icon-rail.tsx +8 -3
  228. package/src/components/ui/sidebar/panels/items-panel/function-tree-panel.tsx +1 -1
  229. package/src/components/ui/sidebar/panels/items-panel/index.tsx +6 -6
  230. package/src/components/ui/sidebar/panels/settings-panel/animation-speed-setting.tsx +40 -0
  231. package/src/components/ui/sidebar/panels/settings-panel/audio-settings-dialog.tsx +7 -8
  232. package/src/components/ui/sidebar/panels/settings-panel/construction-animation-setting.test.tsx +170 -0
  233. package/src/components/ui/sidebar/panels/settings-panel/construction-animation-setting.tsx +92 -0
  234. package/src/components/ui/sidebar/panels/settings-panel/index.tsx +138 -27
  235. package/src/components/ui/sidebar/panels/settings-panel/interface-theme.test.tsx +20 -0
  236. package/src/components/ui/sidebar/panels/settings-panel/keyboard-shortcuts-dialog.tsx +5 -5
  237. package/src/components/ui/sidebar/panels/settings-panel/print-export-button.tsx +4 -10
  238. package/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +3 -11
  239. package/src/components/ui/sidebar/panels/site-panel/ceiling-tree-node.tsx +4 -4
  240. package/src/components/ui/sidebar/panels/site-panel/chimney-tree-node.tsx +1 -5
  241. package/src/components/ui/sidebar/panels/site-panel/collection-tree-node.tsx +197 -0
  242. package/src/components/ui/sidebar/panels/site-panel/column-tree-node.tsx +1 -5
  243. package/src/components/ui/sidebar/panels/site-panel/door-tree-node.tsx +1 -5
  244. package/src/components/ui/sidebar/panels/site-panel/dormer-tree-node.tsx +1 -5
  245. package/src/components/ui/sidebar/panels/site-panel/elevator-tree-node.tsx +1 -5
  246. package/src/components/ui/sidebar/panels/site-panel/fence-tree-node.tsx +24 -11
  247. package/src/components/ui/sidebar/panels/site-panel/gutter-tree-node.tsx +1 -5
  248. package/src/components/ui/sidebar/panels/site-panel/index.tsx +181 -223
  249. package/src/components/ui/sidebar/panels/site-panel/inline-rename-input.tsx +30 -8
  250. package/src/components/ui/sidebar/panels/site-panel/item-tree-node.tsx +1 -3
  251. package/src/components/ui/sidebar/panels/site-panel/level-tree-node.tsx +4 -1
  252. package/src/components/ui/sidebar/panels/site-panel/registry-tree-node.tsx +1 -3
  253. package/src/components/ui/sidebar/panels/site-panel/roof-tree-node.tsx +1 -4
  254. package/src/components/ui/sidebar/panels/site-panel/shelf-tree-node.tsx +1 -3
  255. package/src/components/ui/sidebar/panels/site-panel/slab-tree-node.tsx +21 -13
  256. package/src/components/ui/sidebar/panels/site-panel/solar-panel-tree-node.tsx +1 -5
  257. package/src/components/ui/sidebar/panels/site-panel/spawn-tree-node.tsx +1 -5
  258. package/src/components/ui/sidebar/panels/site-panel/stair-tree-node.tsx +1 -5
  259. package/src/components/ui/sidebar/panels/site-panel/tree-node.tsx +13 -37
  260. package/src/components/ui/sidebar/panels/site-panel/unit-tree-node.tsx +2 -3
  261. package/src/components/ui/sidebar/panels/site-panel/wall-tree-node.tsx +1 -5
  262. package/src/components/ui/sidebar/panels/site-panel/window-tree-node.tsx +1 -5
  263. package/src/components/ui/sidebar/panels/site-panel/zone-tree-node.tsx +9 -4
  264. package/src/components/ui/sidebar/panels/zone-panel/index.tsx +2 -4
  265. package/src/components/ui/sidebar/tab-bar.tsx +14 -4
  266. package/src/components/ui/sidebar/use-plugin-panels.tsx +15 -5
  267. package/src/components/viewer/floorplan-compass-button.tsx +9 -1
  268. package/src/components/viewer/floorplan-preview.tsx +5 -6
  269. package/src/components/viewer/viewer-controls-bar.tsx +18 -6
  270. package/src/components/viewer/viewer-hover-label.tsx +34 -0
  271. package/src/components/viewer/viewer-rooms.tsx +191 -0
  272. package/src/components/viewer/viewer-scene-header.tsx +181 -145
  273. package/src/components/viewer/viewer-selection-manager.tsx +124 -0
  274. package/src/components/viewer/viewer-stage.tsx +2 -2
  275. package/src/components/viewer-zone-system.tsx +3 -8
  276. package/src/hooks/use-auto-save.integration.test.tsx +215 -43
  277. package/src/hooks/use-auto-save.ts +60 -9
  278. package/src/hooks/use-ceiling-events.test.ts +123 -118
  279. package/src/hooks/use-grid-events.test.ts +105 -105
  280. package/src/hooks/use-keyboard.test.ts +243 -19
  281. package/src/hooks/use-keyboard.ts +118 -83
  282. package/src/hooks/use-open-wall-ends.test.ts +99 -0
  283. package/src/hooks/use-open-wall-ends.ts +238 -0
  284. package/src/hooks/use-placement-notice.test.ts +71 -0
  285. package/src/hooks/use-placement-notice.ts +73 -0
  286. package/src/hooks/use-selected-room.ts +143 -0
  287. package/src/index.tsx +312 -58
  288. package/src/lib/__fixtures__/owner-victor-seattle-parking.json +1 -0
  289. package/src/lib/__fixtures__/owner-villa-aurelia-basement.json +1 -0
  290. package/src/lib/add-storey.test.ts +177 -0
  291. package/src/lib/add-storey.ts +59 -0
  292. package/src/lib/below-grade.test.tsx +171 -0
  293. package/src/lib/below-grade.ts +133 -0
  294. package/src/lib/camera-facing.test.ts +24 -0
  295. package/src/lib/camera-facing.ts +24 -0
  296. package/src/lib/ceiling-edit-session.test.ts +321 -0
  297. package/src/lib/ceiling-edit-session.ts +206 -0
  298. package/src/lib/ceiling-region-session.test.ts +179 -0
  299. package/src/lib/continuation.test.ts +19 -1
  300. package/src/lib/continuation.ts +25 -4
  301. package/src/lib/direct-manipulation.ts +2 -0
  302. package/src/lib/door-interaction.ts +14 -0
  303. package/src/lib/download-project-file.ts +17 -0
  304. package/src/lib/editor-level-display.test.ts +96 -0
  305. package/src/lib/editor-level-display.ts +55 -0
  306. package/src/lib/editor-views.ts +178 -0
  307. package/src/lib/export-geometry-wait.test.ts +90 -0
  308. package/src/lib/export-texture-utils.ts +2 -4
  309. package/src/lib/floor-edit-session.ts +153 -0
  310. package/src/lib/floor-footprints.test.ts +563 -0
  311. package/src/lib/floor-footprints.ts +395 -0
  312. package/src/lib/floor-foundation-support.test.ts +284 -0
  313. package/src/lib/floor-opening-draft.ts +218 -0
  314. package/src/lib/floor-openings.test.ts +216 -0
  315. package/src/lib/floor-region-geometry.ts +191 -0
  316. package/src/lib/floor-region-session.test.ts +485 -0
  317. package/src/lib/floor-region-session.ts +589 -0
  318. package/src/lib/floor-region-snap.ts +101 -0
  319. package/src/lib/floor-step-hover.test.ts +32 -0
  320. package/src/lib/floorplan/annotation-visibility.ts +17 -0
  321. package/src/lib/floorplan/dimension-drive.test.ts +360 -0
  322. package/src/lib/floorplan/dimension-drive.ts +479 -0
  323. package/src/lib/floorplan/floorplan-export.test.ts +12 -8
  324. package/src/lib/floorplan/floorplan-export.tsx +32 -8
  325. package/src/lib/floorplan/floorplan-extension.ts +32 -0
  326. package/src/lib/floorplan/floorplan-mode.test.ts +4 -0
  327. package/src/lib/floorplan/floorplan-mode.ts +2 -0
  328. package/src/lib/floorplan/floorplan-pdfkit-document.ts +363 -27
  329. package/src/lib/floorplan/floorplan-pdfkit-renderer.test.ts +177 -8
  330. package/src/lib/floorplan/floorplan-pdfkit-renderer.ts +60 -25
  331. package/src/lib/floorplan/floorplan-plugin-install.test.tsx +138 -0
  332. package/src/lib/floorplan/floorplan-readonly.ts +6 -0
  333. package/src/lib/floorplan/geometry.ts +13 -6
  334. package/src/lib/floorplan/index.ts +0 -9
  335. package/src/lib/floorplan/items.ts +5 -2
  336. package/src/lib/floorplan/marks.test.ts +213 -0
  337. package/src/lib/floorplan/marks.ts +238 -0
  338. package/src/lib/floorplan/open-wall-ends.test.ts +268 -0
  339. package/src/lib/floorplan/open-wall-ends.ts +162 -0
  340. package/src/lib/floorplan/pdf-fonts/GeistMono-Bold.ttf +0 -0
  341. package/src/lib/floorplan/pdf-fonts/GeistMono-Regular.ttf +0 -0
  342. package/src/lib/floorplan/pdf-fonts/LICENSE-GeistMono.txt +92 -0
  343. package/src/lib/floorplan/pdf-fonts/LICENSE-LiberationSans.txt +102 -0
  344. package/src/lib/floorplan/pdf-fonts/LiberationSans-Bold.ttf +0 -0
  345. package/src/lib/floorplan/pdf-fonts/LiberationSans-Regular.ttf +0 -0
  346. package/src/lib/floorplan/pdfkit-standard-fonts.d.ts +5 -0
  347. package/src/lib/floorplan/schedules.test.ts +189 -0
  348. package/src/lib/floorplan/schedules.ts +339 -0
  349. package/src/lib/floorplan/sheet-export.test.ts +124 -0
  350. package/src/lib/floorplan/sheet-export.ts +318 -0
  351. package/src/lib/floorplan/site-plan/build-site-plan-drawing.ts +768 -0
  352. package/src/lib/floorplan/site-plan/contours.test.ts +43 -0
  353. package/src/lib/floorplan/site-plan/contributors.ts +97 -0
  354. package/src/lib/floorplan/site-plan/coverage.ts +230 -0
  355. package/src/lib/floorplan/site-plan/drawing-type-switch.test.ts +15 -0
  356. package/src/lib/floorplan/site-plan/drawing-type-switch.tsx +86 -0
  357. package/src/lib/floorplan/site-plan/front-edge.test.ts +103 -0
  358. package/src/lib/floorplan/site-plan/front-edge.ts +157 -0
  359. package/src/lib/floorplan/site-plan/geometry.test.ts +269 -0
  360. package/src/lib/floorplan/site-plan/geometry.ts +142 -0
  361. package/src/lib/floorplan/site-plan/index.ts +55 -0
  362. package/src/lib/floorplan/site-plan/site-annotations.test.ts +483 -0
  363. package/src/lib/floorplan/site-plan/site-annotations.ts +1084 -0
  364. package/src/lib/floorplan/site-plan/site-parts.ts +287 -0
  365. package/src/lib/floorplan/site-plan/site-plan-layer.tsx +138 -0
  366. package/src/lib/floorplan/site-plan/street-name.test.ts +69 -0
  367. package/src/lib/floorplan/site-plan/street-name.ts +302 -0
  368. package/src/lib/floorplan/site-plan/yards.test.ts +70 -0
  369. package/src/lib/floorplan/types.ts +1 -27
  370. package/src/lib/follow-pascal-exterior.test-fixture.ts +17 -0
  371. package/src/lib/follow-pascal-exterior.test.ts +171 -0
  372. package/src/lib/follow-pascal-exterior.ts +39 -0
  373. package/src/lib/follow-pascal-presentation.test.ts +203 -0
  374. package/src/lib/follow-pascal-presentation.ts +129 -0
  375. package/src/lib/follow-pascal-sight.ts +84 -0
  376. package/src/lib/follow-pascal-targets.test.ts +406 -0
  377. package/src/lib/follow-pascal-targets.ts +198 -0
  378. package/src/lib/follow-pascal.test.ts +350 -0
  379. package/src/lib/follow-pascal.ts +284 -0
  380. package/src/lib/fresh-planar-placement.test.ts +148 -0
  381. package/src/lib/fresh-planar-placement.ts +114 -37
  382. package/src/lib/geometry-script/author.ts +157 -0
  383. package/src/lib/geometry-script/client.ts +159 -0
  384. package/src/lib/geometry-script/finish-scripts.ts +127 -0
  385. package/src/lib/geometry-script/protocol.ts +13 -0
  386. package/src/lib/gesture-lifecycle.test.ts +595 -0
  387. package/src/lib/gesture-lifecycle.ts +290 -0
  388. package/src/lib/glb-export-zone-holes.test.ts +41 -0
  389. package/src/lib/glb-export.test.ts +636 -126
  390. package/src/lib/glb-export.ts +241 -120
  391. package/src/lib/history.test.ts +18 -7
  392. package/src/lib/history.ts +7 -0
  393. package/src/lib/hud-title.ts +109 -0
  394. package/src/lib/hydration-gated-storage.ts +49 -0
  395. package/src/lib/ifc-export.test.ts +174 -0
  396. package/src/lib/ifc-export.ts +201 -0
  397. package/src/lib/ifc-parts.ts +15 -0
  398. package/src/lib/inspector-expanded.test.ts +44 -0
  399. package/src/lib/inspector-expanded.ts +36 -0
  400. package/src/lib/interaction/scope.ts +22 -0
  401. package/src/lib/keyboard-pan.test.ts +129 -7
  402. package/src/lib/keyboard-pan.ts +161 -12
  403. package/src/lib/level-selection.test.ts +57 -0
  404. package/src/lib/level-selection.ts +16 -1
  405. package/src/lib/live-gesture-round-trip.test.ts +360 -0
  406. package/src/lib/lot/__fixtures__/map-dossier-miami-shores.json +1 -0
  407. package/src/lib/lot/__fixtures__/map-dossier-stpete.json +1 -0
  408. package/src/lib/lot/clean-ring.test.ts +187 -0
  409. package/src/lib/lot/clean-ring.ts +217 -0
  410. package/src/lib/lot/dossier.test.ts +202 -0
  411. package/src/lib/lot/dossier.ts +498 -0
  412. package/src/lib/lot/drop-in.test.ts +326 -0
  413. package/src/lib/lot/drop-in.ts +392 -0
  414. package/src/lib/lot/index.ts +43 -0
  415. package/src/lib/lot/lot-patch.test.ts +340 -0
  416. package/src/lib/lot/lot-patch.ts +394 -0
  417. package/src/lib/lot/parcel-provider.ts +43 -0
  418. package/src/lib/lot/terrain.test.ts +161 -0
  419. package/src/lib/lot/terrain.ts +266 -0
  420. package/src/lib/material-catalog-model.ts +3 -1
  421. package/src/lib/material-paint-panel-model.ts +9 -5
  422. package/src/lib/material-paint.ts +4 -0
  423. package/src/lib/measurement-kind.test.ts +6 -8
  424. package/src/lib/measurements.test.ts +23 -0
  425. package/src/lib/mezzanine-actions.test.ts +342 -0
  426. package/src/lib/mezzanine-draft.test.ts +501 -0
  427. package/src/lib/mezzanine-draft.ts +278 -0
  428. package/src/lib/mezzanine-messages.ts +26 -0
  429. package/src/lib/mezzanine-selection.test.ts +207 -0
  430. package/src/lib/mezzanine-stairs.ts +46 -0
  431. package/src/lib/model-export.ts +3 -1
  432. package/src/lib/node-action-movement.ts +17 -6
  433. package/src/lib/node-display-label.ts +37 -0
  434. package/src/lib/orbit-floor-clearance.test.ts +201 -0
  435. package/src/lib/orbit-floor-clearance.ts +154 -0
  436. package/src/lib/paint-commit-route.test.ts +37 -0
  437. package/src/lib/paint-commit-route.ts +17 -0
  438. package/src/lib/paint-eyedropper.test.tsx +165 -0
  439. package/src/lib/paint-eyedropper.ts +99 -0
  440. package/src/lib/paint-pass-through.test.ts +122 -0
  441. package/src/lib/paint-pass-through.ts +78 -0
  442. package/src/lib/paint-region-hover.ts +25 -0
  443. package/src/lib/paint-region-mode.ts +154 -0
  444. package/src/lib/paint-regions.test.ts +166 -0
  445. package/src/lib/paint-regions.ts +192 -0
  446. package/src/lib/paint-scope.test.ts +317 -35
  447. package/src/lib/paint-scope.ts +267 -25
  448. package/src/lib/panel-rows.ts +21 -0
  449. package/src/lib/parametric-node-update.ts +16 -7
  450. package/src/lib/plate-paint-affected.test.ts +300 -0
  451. package/src/lib/plate-paint-affected.ts +177 -0
  452. package/src/lib/plugin-chat.ts +65 -0
  453. package/src/lib/plugin-panels.test.ts +25 -0
  454. package/src/lib/plugin-panels.ts +94 -0
  455. package/src/lib/point-ask/__fixtures__/consumer-browser.tsx +76 -0
  456. package/src/lib/point-ask/__fixtures__/house.ts +81 -0
  457. package/src/lib/point-ask/ask-created.test.ts +195 -0
  458. package/src/lib/point-ask/ask-flow.test.ts +380 -0
  459. package/src/lib/point-ask/build-context.test.ts +173 -0
  460. package/src/lib/point-ask/build-context.ts +94 -0
  461. package/src/lib/point-ask/capture-crop.ts +129 -0
  462. package/src/lib/point-ask/choreography.ts +69 -0
  463. package/src/lib/point-ask/compare.test.ts +145 -0
  464. package/src/lib/point-ask/compare.ts +73 -0
  465. package/src/lib/point-ask/describe-target.test.ts +165 -0
  466. package/src/lib/point-ask/describe-target.ts +234 -0
  467. package/src/lib/point-ask/dictation.ts +79 -0
  468. package/src/lib/point-ask/edge-marker.test.ts +61 -0
  469. package/src/lib/point-ask/edge-marker.ts +27 -0
  470. package/src/lib/point-ask/frame-loop.ts +25 -0
  471. package/src/lib/point-ask/history-marks.test.ts +94 -0
  472. package/src/lib/point-ask/history-marks.ts +39 -0
  473. package/src/lib/point-ask/host-api.ts +32 -0
  474. package/src/lib/point-ask/outline-box.test.ts +30 -0
  475. package/src/lib/point-ask/outline-box.ts +11 -0
  476. package/src/lib/point-ask/overlay-metrics.ts +6 -0
  477. package/src/lib/point-ask/pick.test.ts +220 -0
  478. package/src/lib/point-ask/pick.ts +121 -0
  479. package/src/lib/point-ask/pin-machine.test.ts +494 -0
  480. package/src/lib/point-ask/pin-machine.ts +217 -0
  481. package/src/lib/point-ask/placement.test.ts +203 -0
  482. package/src/lib/point-ask/placement.ts +141 -0
  483. package/src/lib/point-ask/pointer-tracker.ts +34 -0
  484. package/src/lib/point-ask/projector.ts +83 -0
  485. package/src/lib/point-ask/region.test.ts +157 -0
  486. package/src/lib/point-ask/region.ts +136 -0
  487. package/src/lib/point-ask/retry.test.ts +217 -0
  488. package/src/lib/point-ask/retry.ts +37 -0
  489. package/src/lib/point-ask/scene-commit.test.ts +312 -0
  490. package/src/lib/point-ask/scene-commit.ts +32 -0
  491. package/src/lib/point-ask/session.ts +1391 -0
  492. package/src/lib/point-ask/spring-keyframes.test.ts +45 -0
  493. package/src/lib/point-ask/spring-keyframes.ts +38 -0
  494. package/src/lib/point-ask/spring.test.ts +63 -0
  495. package/src/lib/point-ask/spring.ts +107 -0
  496. package/src/lib/point-ask/suggestions.test.ts +80 -0
  497. package/src/lib/point-ask/suggestions.ts +125 -0
  498. package/src/lib/point-ask/target-scope.test.ts +622 -0
  499. package/src/lib/point-ask/target-scope.ts +338 -0
  500. package/src/lib/point-ask/types.ts +48 -0
  501. package/src/lib/portable-export.test.ts +34 -1
  502. package/src/lib/portable-export.ts +119 -53
  503. package/src/lib/print-feature-thickness.ts +10 -1
  504. package/src/lib/print-roof-solids.test.ts +39 -1
  505. package/src/lib/print-roof-solids.ts +43 -10
  506. package/src/lib/print-shell-compiler-manifold-core.ts +1 -1
  507. package/src/lib/print-shell-compiler.ts +1 -0
  508. package/src/lib/registered-draft-snap.ts +12 -0
  509. package/src/lib/roof-duplication.ts +10 -2
  510. package/src/lib/room-assembly-overlay.test.ts +275 -0
  511. package/src/lib/room-assembly-overlay.ts +265 -0
  512. package/src/lib/room-built-on.test.ts +379 -0
  513. package/src/lib/room-built-on.ts +138 -0
  514. package/src/lib/room-construction-commands.ts +712 -0
  515. package/src/lib/room-construction.test.ts +746 -0
  516. package/src/lib/room-construction.ts +385 -0
  517. package/src/lib/room-controls-phase6.test.ts +630 -0
  518. package/src/lib/room-divide-session.ts +523 -0
  519. package/src/lib/room-handle-drag.ts +1068 -0
  520. package/src/lib/room-name-catalog.test.ts +90 -0
  521. package/src/lib/room-name-catalog.ts +168 -0
  522. package/src/lib/room-push-dimensions.test.ts +311 -0
  523. package/src/lib/room-push-dimensions.ts +251 -0
  524. package/src/lib/room-selection-commands.ts +62 -0
  525. package/src/lib/room-selection.test.ts +1017 -0
  526. package/src/lib/room-selection.ts +417 -0
  527. package/src/lib/room-structure-commands.ts +94 -0
  528. package/src/lib/room-structure.test.ts +921 -0
  529. package/src/lib/room-transform-session.ts +570 -0
  530. package/src/lib/room-zone-routing.test.ts +294 -0
  531. package/src/lib/room-zone-routing.ts +197 -0
  532. package/src/lib/scene-clipboard.test.ts +610 -1
  533. package/src/lib/scene-clipboard.ts +269 -58
  534. package/src/lib/scene-material-refs.test.ts +79 -0
  535. package/src/lib/scene-material-refs.ts +79 -0
  536. package/src/lib/scene.test.ts +24 -36
  537. package/src/lib/scene.ts +33 -57
  538. package/src/lib/selection-routing.test.ts +129 -45
  539. package/src/lib/selection-routing.ts +54 -75
  540. package/src/lib/session-writes.test.ts +120 -0
  541. package/src/lib/session-writes.ts +205 -0
  542. package/src/lib/sfx-bus.ts +13 -0
  543. package/src/lib/sfx-player.test.ts +70 -9
  544. package/src/lib/sfx-player.ts +6 -0
  545. package/src/lib/sidebar-panel.ts +62 -0
  546. package/src/lib/site-boundary.test.ts +4 -6
  547. package/src/lib/site-boundary.ts +1 -1
  548. package/src/lib/snapping-mode.test.ts +4 -0
  549. package/src/lib/snapping-mode.ts +8 -1
  550. package/src/lib/stair-levels.test.ts +25 -0
  551. package/src/lib/stair-levels.ts +22 -3
  552. package/src/lib/terrace-draft.test.ts +145 -0
  553. package/src/lib/terrace-draft.ts +214 -0
  554. package/src/lib/tool-cursor-icon.test.ts +16 -0
  555. package/src/lib/tool-cursor-icon.ts +11 -0
  556. package/src/lib/typing-target.ts +9 -0
  557. package/src/lib/units.ts +77 -39
  558. package/src/lib/vector-edges.test.ts +58 -0
  559. package/src/lib/vector-edges.ts +400 -0
  560. package/src/lib/viewer-selection.test.ts +577 -0
  561. package/src/lib/viewer-selection.ts +580 -0
  562. package/src/lib/wall-draw-variant.test.ts +71 -0
  563. package/src/lib/wall-draw-variant.ts +91 -0
  564. package/src/lib/wall-paint-region-session.ts +246 -0
  565. package/src/lib/wall-paint-region.test.ts +373 -0
  566. package/src/lib/wall-placement-pointer.test.ts +42 -0
  567. package/src/lib/wall-placement-pointer.ts +57 -0
  568. package/src/lib/wall-polygon-draft.test.ts +262 -0
  569. package/src/lib/wall-polygon-draft.ts +286 -0
  570. package/src/lib/wall-push.test.ts +453 -0
  571. package/src/lib/wall-region-face.ts +352 -0
  572. package/src/lib/wall-region-handles.test.ts +304 -0
  573. package/src/lib/wall-region-handles.ts +368 -0
  574. package/src/lib/wall-region-list.test.ts +119 -0
  575. package/src/lib/wall-region-list.ts +136 -0
  576. package/src/lib/wall-region-snap.ts +110 -0
  577. package/src/lib/window-changes.ts +35 -0
  578. package/src/lib/window-interaction.ts +14 -0
  579. package/src/lib/zone-content.ts +4 -1
  580. package/src/lib/zone-name.test.ts +17 -0
  581. package/src/lib/zone-name.ts +17 -0
  582. package/src/store/opens-in-select-mode.test.ts +223 -0
  583. package/src/store/paint-mode.test.ts +188 -0
  584. package/src/store/terrain-sculpt-mode.test.ts +19 -21
  585. package/src/store/tool-mode.test.ts +137 -6
  586. package/src/store/use-audio.test.ts +146 -0
  587. package/src/store/use-audio.tsx +127 -3
  588. package/src/store/use-construction-reveal.test.ts +173 -0
  589. package/src/store/use-construction-reveal.ts +145 -0
  590. package/src/store/use-corner-snap-hint.test.ts +24 -0
  591. package/src/store/use-corner-snap-hint.ts +47 -0
  592. package/src/store/use-delete-confirmation.ts +28 -1
  593. package/src/store/use-drawing-view.test.ts +24 -3
  594. package/src/store/use-drawing-view.ts +29 -1
  595. package/src/store/use-editor.tsx +432 -321
  596. package/src/store/use-floorplan-draft-preview.ts +13 -0
  597. package/src/store/use-floorplan-marquee.ts +12 -2
  598. package/src/store/use-follow-pascal.test.ts +62 -0
  599. package/src/store/use-follow-pascal.ts +53 -0
  600. package/src/store/use-point-ask.ts +247 -0
  601. package/src/store/use-quick-measurement-hud.ts +3 -3
  602. package/src/store/use-stair-build-preview.ts +33 -5
  603. package/src/store/use-wall-move-ghosts.ts +4 -2
  604. package/src/store/use-wall-region-handles-selection.test.ts +222 -0
  605. package/src/store/use-wall-region-handles-selection.ts +139 -0
  606. package/src/store/view-layout.test.ts +201 -0
  607. package/src/store/view-layout.ts +199 -0
  608. package/src/test-utils/immediate-animation-frames.ts +16 -0
  609. package/src/test-utils/live-gesture-round-trip.ts +224 -0
  610. package/src/test-utils/render-current-markup.tsx +16 -0
  611. package/src/test-utils/selection-harness.ts +82 -0
  612. package/src/components/editor-2d/renderers/floorplan-stair-layer.tsx +0 -499
  613. package/src/components/systems/zone/zone-label-editor-system.tsx +0 -333
  614. package/src/components/tools/fence/fence-drafting.test.ts +0 -100
  615. package/src/components/tools/fence/fence-drafting.ts +0 -266
  616. package/src/components/tools/stair/stair-click-guard.test.ts +0 -58
  617. package/src/components/tools/stair/stair-click-guard.ts +0 -72
  618. package/src/components/tools/stair/stair-defaults.ts +0 -18
  619. package/src/components/tools/stair/stair-tool.tsx +0 -634
  620. package/src/components/ui/sidebar/panels/plugins-panel.tsx +0 -218
  621. package/src/components/viewer/viewer-units-panel.tsx +0 -116
  622. package/src/lib/floorplan/stairs.ts +0 -489
  623. package/src/lib/level-duplication.test.ts +0 -144
  624. package/src/lib/level-duplication.ts +0 -195
package/src/index.tsx CHANGED
@@ -7,6 +7,21 @@ export {
7
7
  acquireSceneReadOnlyLease,
8
8
  applyScenePatch,
9
9
  applySceneSnapshot,
10
+ DEFAULT_CURVED_STAIR_INNER_RADIUS,
11
+ DEFAULT_CURVED_STAIR_SWEEP_ANGLE,
12
+ DEFAULT_SPIRAL_SHOW_CENTER_COLUMN,
13
+ DEFAULT_SPIRAL_SHOW_STEP_SUPPORTS,
14
+ DEFAULT_SPIRAL_STAIR_SWEEP_ANGLE,
15
+ DEFAULT_SPIRAL_TOP_LANDING_DEPTH,
16
+ DEFAULT_SPIRAL_TOP_LANDING_MODE,
17
+ DEFAULT_STAIR_ATTACHMENT_SIDE,
18
+ DEFAULT_STAIR_FILL_TO_FLOOR,
19
+ DEFAULT_STAIR_OPENING_OFFSET,
20
+ DEFAULT_STAIR_RAILING_HEIGHT,
21
+ DEFAULT_STAIR_RAILING_MODE,
22
+ DEFAULT_STAIR_THICKNESS,
23
+ DEFAULT_STAIR_TYPE,
24
+ DEFAULT_STAIR_WIDTH,
10
25
  type SceneCommit,
11
26
  type SceneCommitListener,
12
27
  type SceneCommitOrigin,
@@ -20,13 +35,16 @@ export {
20
35
  export { useViewer } from '@pascal-app/viewer'
21
36
  export type { EditorProps } from './components/editor'
22
37
  export { default as Editor } from './components/editor'
38
+ export { ActionMenuButton } from './components/editor/action-menu-button'
23
39
  // Headless component aliases: the implementation files keep their
24
40
  // internal names (`ParametricInspector`, `FloatingActionMenu`) because
25
41
  // they're referenced throughout the editor's own internals; the public
26
42
  // surface uses the shorter, shell-friendly names from the unified
27
43
  // preset-system spec.
28
44
  export { BakeExporter } from './components/editor/bake-exporter'
29
- export { BakeThumbnail } from './components/editor/bake-thumbnail'
45
+ export { BakeThumbnail, prepareBakeThumbnailLook } from './components/editor/bake-thumbnail'
46
+ export { ConstructionRevealAudio } from './components/editor/construction-reveal-audio'
47
+ export { copyCollectionIds, duplicateNodeAndPickUp } from './components/editor/duplicate-node'
30
48
  export { FirstPersonControls } from './components/editor/first-person-controls'
31
49
  export { FloatingActionMenu as FloatingMenu } from './components/editor/floating-action-menu'
32
50
  // Embed surface — the editor's real in-canvas affordances, so a host can mount
@@ -84,13 +102,14 @@ export {
84
102
  type SnapshotCameraData,
85
103
  ThumbnailGenerator,
86
104
  } from './components/editor/thumbnail-generator'
105
+ export { PLUGINS_VIEW_ID } from './components/editor/views/use-editor-views'
87
106
  export { WallMoveSideHandles } from './components/editor/wall-move-side-handles'
88
107
  export { useFloorplanRender } from './components/editor-2d/floorplan-render-context'
89
108
  export { FloorplanDimensionRenderer } from './components/editor-2d/renderers/floorplan-dimension-renderer'
90
109
  export {
91
- type DraftWallMeasurement,
92
- FloorplanDraftWallMeasurement,
93
- } from './components/editor-2d/renderers/floorplan-draft-wall-measurement'
110
+ type DraftMeasurement,
111
+ FloorplanDraftMeasurement,
112
+ } from './components/editor-2d/renderers/floorplan-draft-measurement'
94
113
  export { FloorplanGeometryRenderer } from './components/editor-2d/renderers/floorplan-geometry-renderer'
95
114
  export {
96
115
  FloorplanNodePreview,
@@ -110,16 +129,7 @@ export type {
110
129
  SelectionAffordanceInteractionApi,
111
130
  SelectionAffordanceProps,
112
131
  } from './components/systems/selection-affordance-services'
113
- // Phase 5 Stage D transitional exports — pure drafting / angle helpers
114
- // consumed by kind-owned drag actions in @pascal-app/nodes. Stage F
115
- // cleanup moves these into @pascal-app/nodes (fence/drafting.ts +
116
- // shared/segment-angle.ts) once every Stage D port is in.
117
- export {
118
- createFenceOnCurrentLevel,
119
- createSplineFenceOnCurrentLevel,
120
- type FencePlanPoint,
121
- snapFenceDraftPoint,
122
- } from './components/tools/fence/fence-drafting'
132
+ export { StairEditSystem } from './components/systems/stair/stair-edit-system'
123
133
  export { MoveTool } from './components/tools/item/move-tool'
124
134
  // Placement-math helpers — shared by kind-owned placement tools in
125
135
  // `@pascal-app/nodes` (wall curve sagitta snap, door / window placement,
@@ -182,31 +192,11 @@ export {
182
192
  getSegmentAngleReferenceAtPoint,
183
193
  type SegmentAngleReference,
184
194
  } from './components/tools/shared/segment-angle'
185
- // Stair placement defaults — used by the kind-owned stair / stair-segment
186
- // panels. Re-exported from `components/tools/stair/stair-defaults.ts`.
187
- export {
188
- DEFAULT_CURVED_STAIR_INNER_RADIUS,
189
- DEFAULT_CURVED_STAIR_SWEEP_ANGLE,
190
- DEFAULT_SPIRAL_SHOW_CENTER_COLUMN,
191
- DEFAULT_SPIRAL_SHOW_STEP_SUPPORTS,
192
- DEFAULT_SPIRAL_STAIR_SWEEP_ANGLE,
193
- DEFAULT_SPIRAL_TOP_LANDING_DEPTH,
194
- DEFAULT_SPIRAL_TOP_LANDING_MODE,
195
- DEFAULT_STAIR_ATTACHMENT_SIDE,
196
- DEFAULT_STAIR_FILL_TO_FLOOR,
197
- DEFAULT_STAIR_HEIGHT,
198
- DEFAULT_STAIR_LENGTH,
199
- DEFAULT_STAIR_RAILING_HEIGHT,
200
- DEFAULT_STAIR_RAILING_MODE,
201
- DEFAULT_STAIR_STEP_COUNT,
202
- DEFAULT_STAIR_THICKNESS,
203
- DEFAULT_STAIR_TYPE,
204
- DEFAULT_STAIR_WIDTH,
205
- } from './components/tools/stair/stair-defaults'
206
195
  export { preloadRegistryToolModules, ToolManager } from './components/tools/tool-manager'
207
196
  export {
208
197
  chainEndJoinsExistingWall,
209
198
  createWallOnCurrentLevel,
199
+ findWallSnapTarget,
210
200
  getSegmentGridStep,
211
201
  isSegmentLongEnough,
212
202
  resolveEndpointWallSplit,
@@ -222,20 +212,26 @@ export {
222
212
  type WallPlanPoint,
223
213
  type WallSnapRadii,
224
214
  } from './components/tools/wall/wall-drafting'
225
- // `ToolbarLeft` / `ToolbarRight` are the headless-spec aliases for the
226
- // existing `ViewerToolbarLeft` / `ViewerToolbarRight` exports — the
227
- // underlying components are the same; the alias just matches the names
228
- // used in `pascalorg/private-editor:plans/community-preset-system.md`
229
- // so consumer code stays close to the spec vocabulary.
215
+ // `ToolbarLeft` / `ToolbarRight` alias `ViewerToolbarLeft` / `ViewerToolbarRight`
216
+ // (same components) under the names headless hosts compose their toolbars with.
230
217
  export {
231
218
  CameraActions as ToolbarRight,
232
219
  CameraActions as ViewerToolbarRight,
233
220
  } from './components/ui/action-menu/camera-actions'
234
221
  export { furnishTools } from './components/ui/action-menu/furnish-tools'
222
+ export type { ActionMenuPlacement } from './components/ui/action-menu/placement'
235
223
  export {
236
224
  ViewToggles as ToolbarLeft,
237
225
  ViewToggles as ViewerToolbarLeft,
238
226
  } from './components/ui/action-menu/view-toggles'
227
+ // The Build panel's grouped layout, shared by the community and standalone tabs.
228
+ export {
229
+ BuildPanelAdvancedSection,
230
+ BuildPanelRoomsSection,
231
+ BuildPanelSection,
232
+ BuildToolGrid,
233
+ BuildToolTile,
234
+ } from './components/ui/build-panel/build-panel'
239
235
  export { useCommandPalette } from './components/ui/command-palette'
240
236
  export { ActionButton, ActionGroup } from './components/ui/controls/action-button'
241
237
  export {
@@ -250,14 +246,17 @@ export {
250
246
  export { MetricControl } from './components/ui/controls/metric-control'
251
247
  export { PanelSection } from './components/ui/controls/panel-section'
252
248
  export { SegmentedControl } from './components/ui/controls/segmented-control'
249
+ export { SelectControl } from './components/ui/controls/select-control'
253
250
  export { SliderControl } from './components/ui/controls/slider-control'
254
251
  export { TerrainSculptPanel } from './components/ui/controls/terrain-sculpt-panel'
255
252
  export { ToggleControl } from './components/ui/controls/toggle-control'
256
253
  export { ToolOptionsPanel } from './components/ui/controls/tool-options-panel'
257
254
  export { FloatingLevelSelector } from './components/ui/floating-level-selector'
255
+ export { IconRefGlyph, IconRefImage } from './components/ui/icon-ref'
258
256
  export { CATALOG_ITEMS } from './components/ui/item-catalog/catalog-items'
259
- // Item collections UI — used by the kind-owned ItemPanel in nodes/.
260
- export { CollectionsPopover } from './components/ui/panels/collections/collections-popover'
257
+ // A base plate's panel (one connected footprint's floor and foundation); the
258
+ // slab kind's panel hands base plates to it.
259
+ export { FloorFoundationPanel } from './components/ui/panels/floor-foundation-panel'
261
260
  export {
262
261
  resolveHomogeneousSelection,
263
262
  resolveUniqueSelectionIds,
@@ -276,6 +275,8 @@ export { applyMultiHeightMode } from './components/ui/panels/multi-height-mode'
276
275
  // a kind-owned panel and need PanelWrapper for the chrome.
277
276
  export { PanelWrapper } from './components/ui/panels/panel-wrapper'
278
277
  export { ParametricInspector as Inspector } from './components/ui/panels/parametric-inspector'
278
+ export { ShapeChoice } from './components/ui/panels/shape-choice'
279
+ export { WallPaintRegionList } from './components/ui/panels/wall-region-list'
279
280
  export { PALETTE_COLORS } from './components/ui/primitives/color-dot'
280
281
  export {
281
282
  DropdownMenu,
@@ -299,9 +300,12 @@ export type { ExtraPanel } from './components/ui/sidebar/icon-rail'
299
300
  export { ItemsPanel } from './components/ui/sidebar/panels/items-panel'
300
301
  export type { FunctionTreeNode } from './components/ui/sidebar/panels/items-panel/function-tree-panel'
301
302
  export {
303
+ type InterfaceTheme,
304
+ InterfaceThemeRow,
302
305
  type ProjectVisibility,
303
306
  SettingsPanel,
304
307
  type SettingsPanelProps,
308
+ SettingsSwitchRow,
305
309
  } from './components/ui/sidebar/panels/settings-panel'
306
310
  export type { SitePanelProps } from './components/ui/sidebar/panels/site-panel'
307
311
  export type { SidebarTab } from './components/ui/sidebar/tab-bar'
@@ -326,10 +330,13 @@ export {
326
330
  ViewerControlsBar,
327
331
  type ViewerControlsBarProps,
328
332
  } from './components/viewer/viewer-controls-bar'
333
+ export { ViewerHoverLabel } from './components/viewer/viewer-hover-label'
334
+ export { ParametricViewerRooms, ViewerRooms } from './components/viewer/viewer-rooms'
329
335
  export {
330
336
  ViewerSceneHeader,
331
337
  type ViewerSceneHeaderProps,
332
338
  } from './components/viewer/viewer-scene-header'
339
+ export { ViewerSelectionManager } from './components/viewer/viewer-selection-manager'
333
340
  export { ViewerStage, type ViewerStageProps } from './components/viewer/viewer-stage'
334
341
  export {
335
342
  normalizeViewerStageModes,
@@ -343,7 +350,6 @@ export {
343
350
  ViewerStageSwitcher,
344
351
  type ViewerStageSwitcherProps,
345
352
  } from './components/viewer/viewer-stage-switcher'
346
- export { ViewerUnitsPanel } from './components/viewer/viewer-units-panel'
347
353
  export {
348
354
  WalkthroughHud,
349
355
  type WalkthroughHudProps,
@@ -356,7 +362,9 @@ export type { SaveStatus } from './hooks/use-auto-save'
356
362
  export { type UseDragActionArgs, useDragAction } from './hooks/use-drag-action'
357
363
  // Phase 5 Stage D — extras for kind-owned placement tools (FenceTool etc.).
358
364
  export { cancelActiveTool, markToolCancelConsumed } from './hooks/use-keyboard'
365
+ export { usePlacementNotice } from './hooks/use-placement-notice'
359
366
  export { useReducedMotion } from './hooks/use-reduced-motion'
367
+ export { useSelectedRoom } from './hooks/use-selected-room'
360
368
  export { type Selection, useSelection } from './hooks/use-selection'
361
369
  export {
362
370
  clearPlacementSurface,
@@ -364,11 +372,22 @@ export {
364
372
  type PlacementSurface,
365
373
  publishPlacementSurface,
366
374
  } from './lib/active-placement-surface'
375
+ export { cameraFacingYaw } from './lib/camera-facing'
367
376
  export {
368
377
  activateCatalogItem,
369
378
  filterCatalogItems,
370
379
  isCatalogItemSelected,
371
380
  } from './lib/catalog-panel-model'
381
+ export {
382
+ type CeilingEditSession,
383
+ endCeilingEdit,
384
+ exitCeilingEditToRoom,
385
+ getCeilingEditSession,
386
+ setCeilingHoles,
387
+ startCeilingEdit,
388
+ useCeilingEditCeilingId,
389
+ useCeilingEditSession,
390
+ } from './lib/ceiling-edit-session'
372
391
  export {
373
392
  CEILING_ALIGNMENT_THRESHOLD_M,
374
393
  type CeilingPlanSnapInput,
@@ -392,7 +411,20 @@ export {
392
411
  nextContinuation,
393
412
  } from './lib/continuation'
394
413
  export { canDirectMoveNode } from './lib/direct-manipulation'
414
+ export {
415
+ closeDoorOpenState,
416
+ getDisplayedDoorValue,
417
+ openDoorOpenState,
418
+ } from './lib/door-interaction'
419
+ export { downloadProjectFile } from './lib/download-project-file'
395
420
  export { createEditorApi } from './lib/editor-api'
421
+ export {
422
+ type EditorHostView,
423
+ editorHostViewRegistry,
424
+ openEditorView,
425
+ registerEditorHostView,
426
+ unregisterEditorHostView,
427
+ } from './lib/editor-views'
396
428
  export {
397
429
  clearStructuralElevationGuide,
398
430
  collectElevationSnapTargets,
@@ -413,30 +445,36 @@ export {
413
445
  } from './lib/elevator-support'
414
446
  export type { ExportTextureUtils } from './lib/export-texture-utils'
415
447
  export { getFloatingMenuScale } from './lib/floating-menu-scale'
416
- // Floor-plan stair helpers — the cumulative-transform walk
417
- // (`computeFloorplanStairSegmentTransforms`) and the rich segment-entry
418
- // builder (`buildFloorplanStairEntry`) used by the kind-owned stair
419
- // floor-plan emitter in `@pascal-app/nodes/src/stair/floorplan.ts`.
420
- // Each flight's transform depends on every prior sibling's length /
421
- // height / `attachmentSide`, so individual stair-segments can't compute
422
- // their own polygon in isolation — the stair (parent) owns the
423
- // computation and emits the whole stack as one registry entry.
448
+ export { startOpeningDraft } from './lib/floor-opening-draft'
424
449
  export {
425
450
  alignFloorplanDraftPoint,
426
451
  applyFloorplanAlignment,
427
- buildFloorplanStairEntry,
452
+ clampPlanValue,
428
453
  FLOORPLAN_ALIGNMENT_THRESHOLD_M,
429
454
  FLOORPLAN_DRAFT_ALIGN_ID,
430
455
  type FloorplanAlignmentResult,
431
- type FloorplanStairArrowEntry,
432
- type FloorplanStairEntry,
433
- type FloorplanStairSegmentEntry,
434
456
  getFloorplanWallThickness,
457
+ getPlanPointDistance,
458
+ getThickPlanLinePolygon,
459
+ interpolatePlanPoint,
460
+ movePlanPointTowards,
461
+ rotatePlanVector,
435
462
  } from './lib/floorplan'
436
463
  export type {
437
464
  FloorplanAnnotationCategory,
438
465
  FloorplanAnnotationVisibility,
439
466
  } from './lib/floorplan/annotation-visibility'
467
+ // Annotations (WS3) — deterministic door/window marks, driving dimensions,
468
+ // and construction-document schedule data.
469
+ export {
470
+ type DimensionDrivePlan,
471
+ type DimensionDriveResolution,
472
+ type DimensionDriveTarget,
473
+ type DimensionPlanPoint,
474
+ parseDimensionInput,
475
+ planDimensionDrive,
476
+ resolveDimensionDrive,
477
+ } from './lib/floorplan/dimension-drive'
440
478
  export {
441
479
  exportFloorplanPdf,
442
480
  type FloorplanExportScope,
@@ -466,11 +504,86 @@ export {
466
504
  type FloorplanMode,
467
505
  isFloorplanToolAvailableInMode,
468
506
  } from './lib/floorplan/floorplan-mode'
507
+ export {
508
+ type MarkResolution,
509
+ type OpeningMarkKind,
510
+ orderedOpenings,
511
+ persistResolvedMarks,
512
+ resolveMarkDetail,
513
+ resolveMarks,
514
+ } from './lib/floorplan/marks'
469
515
  export { clientToPlan } from './lib/floorplan/plan-coords'
516
+ export {
517
+ doorSchedule,
518
+ floorplanSchedules,
519
+ formatScheduleLength,
520
+ type OpeningScheduleRow,
521
+ type RoomScheduleRow,
522
+ roomSchedule,
523
+ type ScheduleResult,
524
+ type ScheduleUnit,
525
+ windowSchedule,
526
+ } from './lib/floorplan/schedules'
527
+ // Sheets — headless floor-plan geometry collection + the multi-sheet vector
528
+ // PDF writer.
529
+ export {
530
+ collectFloorplanSchedules,
531
+ collectSheetGeometry,
532
+ exportSheetsToPdf,
533
+ POINTS_PER_INCH,
534
+ resolveSheetRotationDeg,
535
+ type SheetGeometryEntry,
536
+ type SheetGeometryOptions,
537
+ type SheetPdfPage,
538
+ type SheetPdfWindow,
539
+ } from './lib/floorplan/sheet-export'
540
+ // ── Site plan (WS1) ──────────────────────────────────────────────────
541
+ export {
542
+ buildSitePlanDrawing,
543
+ castYardDimensions,
544
+ computeSiteCoverage,
545
+ describeSiteEdges,
546
+ detectFrontEdgeFromRoads,
547
+ FloorplanDrawingTypeSwitch,
548
+ FloorplanSitePlanLayer,
549
+ type FrontEdgeMatch,
550
+ flatworkKindOf,
551
+ formatCoveragePercent,
552
+ formatFeetInches,
553
+ formatSqFt,
554
+ formatStreetName,
555
+ type ImperviousRow,
556
+ type OutdoorPart,
557
+ type RoadCenterline,
558
+ registerSitePlanContributor,
559
+ type SiteCoverage,
560
+ type SitePlanContributor,
561
+ type SitePlanDrawing,
562
+ type SitePlanEdge,
563
+ type SitePlanServicePoint,
564
+ type SitePlanServiceRole,
565
+ type SitePlanServices,
566
+ serviceEntranceOf,
567
+ streetCore,
568
+ streetEdgeNames,
569
+ } from './lib/floorplan/site-plan'
470
570
  export {
471
571
  commitFreshPlacementSubtree,
472
572
  createFreshPlacementSubtree,
473
573
  } from './lib/fresh-planar-placement'
574
+ export {
575
+ type BlenderScriptBuilder,
576
+ compileAndStoreGeometryScript,
577
+ configureBlenderScriptBuilder,
578
+ rebuildAuthoredObject,
579
+ storedScript,
580
+ } from './lib/geometry-script/author'
581
+ export { compileGeometryScriptInWorker } from './lib/geometry-script/client'
582
+ export {
583
+ compileAndStoreFinishScript,
584
+ editorFinishScriptHost,
585
+ finishScriptCode,
586
+ } from './lib/geometry-script/finish-scripts'
474
587
  export { exportSceneToGlb, type GlbExportOptions } from './lib/glb-export'
475
588
  export {
476
589
  type EditorGridEvent,
@@ -507,10 +620,36 @@ export {
507
620
  scopeNodeId,
508
621
  } from './lib/interaction/scope'
509
622
  export { isEditableKeyboardTarget } from './lib/keyboard-pan'
623
+ export { selectPlacedNode } from './lib/level-selection'
624
+ // Lot drop-in — address → parcel → streets → front edge → setbacks, on the
625
+ // site node, through the parcel provider the host sets.
626
+ export {
627
+ DEFAULT_SETBACKS_FT,
628
+ DEFAULT_SETBACKS_M,
629
+ DEFAULT_SETBACKS_SOURCE,
630
+ type DropInInput,
631
+ type DropInOptions,
632
+ describeFrontEdge,
633
+ describeLotSummary,
634
+ dropInLot,
635
+ findSiteNode,
636
+ getParcelProvider,
637
+ type LotDropInResult,
638
+ type LotRoad,
639
+ type LotSummary,
640
+ type ParcelEndpoint,
641
+ type ParcelProvider,
642
+ type ParcelResolveData,
643
+ STREET_CLASSES,
644
+ setParcelProvider,
645
+ sitePatchFromParcel,
646
+ useParcelProvider,
647
+ } from './lib/lot'
510
648
  export { useMaterialCatalogModel } from './lib/material-catalog-model'
511
649
  export {
512
650
  type ActivePaintMaterial,
513
651
  buildResetSurfaceMaterialUpdates,
652
+ buildRoofSegmentSurfaceMaterialPatch,
514
653
  buildRoofSurfaceMaterialPatch,
515
654
  buildSingleSurfaceMaterialPatch,
516
655
  buildStairSurfaceMaterialPatch,
@@ -564,6 +703,8 @@ export type {
564
703
  ModelExportFormat,
565
704
  ModelExportOptions,
566
705
  } from './lib/model-export'
706
+ export { eyedropperMaterial } from './lib/paint-eyedropper'
707
+ export { usePaintRegionMode } from './lib/paint-region-mode'
567
708
  export {
568
709
  cyclePaintScope,
569
710
  type PaintHoverInfo,
@@ -578,7 +719,7 @@ export {
578
719
  type PanelRow,
579
720
  } from './lib/panel-rows'
580
721
  export { type PanelToolOption, usePanelToolHints } from './lib/panel-tool-options'
581
- export { commitParametricNodeFields } from './lib/parametric-node-update'
722
+ export { commitParametricNodeFields, parametricNodeUpdates } from './lib/parametric-node-update'
582
723
  export { consumePlacementDragRelease } from './lib/placement-drag-release'
583
724
  export {
584
725
  addFreshPlacementMetadata,
@@ -591,12 +732,31 @@ export {
591
732
  type PlanarPoint,
592
733
  resolvePlanarCursorPosition,
593
734
  } from './lib/planar-cursor-placement'
735
+ export type {
736
+ ChatStartProps,
737
+ ChatToolCardProps,
738
+ ChatToolOutput,
739
+ PluginChatExtension,
740
+ } from './lib/plugin-chat'
594
741
  export {
595
742
  type EditorHostPanel,
596
743
  type EditorHostPanelWorkspace,
597
744
  editorHostPanelRegistry,
745
+ type PluginAccess,
746
+ type PluginDirectoryContext,
747
+ type PluginInstallLock,
748
+ pluginInstallLocks,
598
749
  registerEditorHostPanel,
750
+ setPluginDirectoryContext,
751
+ setPluginInstallLocks,
599
752
  } from './lib/plugin-panels'
753
+ export {
754
+ retryPointAsk,
755
+ setPointAskBehindQueue,
756
+ setPointAskBusy,
757
+ setPointAskPlayful,
758
+ } from './lib/point-ask/host-api'
759
+ export { buildPrintableRoofSegmentSolids } from './lib/print-roof-solids'
600
760
  export { configureManifoldRuntime } from './lib/print-shell-compiler-manifold-worker'
601
761
  export type { ManifoldRuntimeOptions } from './lib/print-shell-compiler-protocol'
602
762
  export {
@@ -604,16 +764,36 @@ export {
604
764
  quickMeasurementContext,
605
765
  resolveQuickMeasurementReport,
606
766
  } from './lib/quick-measurement'
767
+ export {
768
+ REGISTERED_DRAFT_SNAP_EXTENSION,
769
+ snapRegisteredDraftPoint,
770
+ } from './lib/registered-draft-snap'
607
771
  export { clearRoofDuplicateMetadata, duplicateRoofSubtree } from './lib/roof-duplication'
608
772
  // Roof wall-face hit resolution + overlap guard — shared by the
609
773
  // kind-owned door / window tools in `@pascal-app/nodes` and the item
610
774
  // placement coordinator's roof-wall strategy.
611
775
  export { hasRoofFaceChildOverlap, type RoofWallHit, resolveRoofWallHit } from './lib/roof-wall-hit'
776
+ export { WALL_PUSH_AFFORDANCE, type WallPushArrowPayload } from './lib/room-handle-drag'
777
+ export type { RoomKey, RoomSelectionRecord } from './lib/room-selection'
778
+ export { popRoomSelection, selectRoom } from './lib/room-selection-commands'
779
+ export {
780
+ captureElementActionOrigin,
781
+ completeElementAction,
782
+ type ElementActionOrigin,
783
+ selectZoneOrRoom,
784
+ } from './lib/room-zone-routing'
612
785
  export type { SceneGraph } from './lib/scene'
613
- export { applySceneGraphToEditor } from './lib/scene'
786
+ export { applySceneGraphToEditor, getSavedSceneDocument } from './lib/scene'
787
+ export {
788
+ forEachSceneMaterialRef,
789
+ referencedSceneMaterialIds,
790
+ remapSceneMaterialRefs,
791
+ sceneMaterialUsageCounts,
792
+ } from './lib/scene-material-refs'
614
793
  export { movementSfxStepKey } from './lib/sfx/movement-tick'
615
794
  export { emitDeleteSFX, triggerSFX } from './lib/sfx-bus'
616
795
  export { playSFX, type SFXName, type SFXPlaybackOptions } from './lib/sfx-player'
796
+ export { showSidebarPanel } from './lib/sidebar-panel'
617
797
  export {
618
798
  clearSlabSnapFeedback,
619
799
  resolveSlabEdgeBandSnap,
@@ -650,6 +830,12 @@ export {
650
830
  type SurfacePlanSnapInput,
651
831
  type SurfacePlanSnapResult,
652
832
  } from './lib/surface-plan-snap'
833
+ // The Build panel's Outdoor → Terrace tool (an outdoor room: no walls, no ceiling).
834
+ export {
835
+ cancelTerraceDraft,
836
+ startTerraceDraft,
837
+ useTerraceDraft,
838
+ } from './lib/terrace-draft'
653
839
  export { useTerrainPanelRows } from './lib/terrain-panel-model'
654
840
  export {
655
841
  brushRadiusRange,
@@ -662,12 +848,49 @@ export {
662
848
  sculptFieldForSite,
663
849
  terrainPointInsideSite,
664
850
  } from './lib/terrain-sculpt'
851
+ export { isTypingTarget } from './lib/typing-target'
852
+ export { enterUnitFocus } from './lib/units'
665
853
  export { exportSceneToUsdz, type UsdzExportOptions } from './lib/usdz-export'
666
854
  export { useLinearDisplay } from './lib/use-linear-display'
667
855
  // `cn` (twMerge + clsx) — used by kind-owned panels in `@pascal-app/
668
856
  // nodes` so they don't need their own copy / their own tailwind-merge
669
857
  // dependency.
670
858
  export { cn } from './lib/utils'
859
+ export {
860
+ applyViewerClick,
861
+ applyViewerHover,
862
+ framedLookAt,
863
+ frameViewerCamera,
864
+ frameViewerNode,
865
+ useViewerFloorDisplay,
866
+ type ViewerPick,
867
+ type ViewerSource,
868
+ } from './lib/viewer-selection'
869
+ export {
870
+ getWallDrawVariant,
871
+ selectWallDrawVariant,
872
+ useWallDrawVariant,
873
+ type WallDrawVariant,
874
+ } from './lib/wall-draw-variant'
875
+ export {
876
+ createWallPointerTracker,
877
+ wallPointerInParent,
878
+ wallSideAtPointer,
879
+ } from './lib/wall-placement-pointer'
880
+ export {
881
+ addWallPolygonDraftCorner,
882
+ commitWallPolygonDraft,
883
+ discardWallPolygonDraft,
884
+ startWallPolygonDraft,
885
+ wallPolygonDraftWalls,
886
+ } from './lib/wall-polygon-draft'
887
+ export { writeWindowChanges } from './lib/window-changes'
888
+ export {
889
+ closeWindowOpenState,
890
+ getDisplayedWindowValue,
891
+ isOperableWindowType,
892
+ openWindowOpenState,
893
+ } from './lib/window-interaction'
671
894
  export {
672
895
  getActiveBuildingPose,
673
896
  projectAlignmentGuidesWorldToActiveBuildingLocal,
@@ -681,9 +904,28 @@ export { default as useAlignmentGuides } from './store/use-alignment-guides'
681
904
  export { default as useAudio } from './store/use-audio'
682
905
  export { type CameraHintAction, useCameraHintFocus } from './store/use-camera-hint-focus'
683
906
  export { type CommandAction, useCommandRegistry } from './store/use-command-registry'
907
+ export {
908
+ CONSTRUCTION_REVEAL_LEVELS,
909
+ default as useConstructionReveal,
910
+ FRAMING_KIND,
911
+ getConstructionRevealLevel,
912
+ isFramingAvailable,
913
+ resolveConstructionLevel,
914
+ useConstructionRevealLevel,
915
+ useFramingAvailable,
916
+ } from './store/use-construction-reveal'
917
+ export {
918
+ CORNER_BLOCK_NOTES,
919
+ type CornerHintRow,
920
+ type CornerSnapHint,
921
+ cornerHintRows,
922
+ useCornerSnapHint,
923
+ } from './store/use-corner-snap-hint'
684
924
  export {
685
925
  DRAWING_TYPE_OPTIONS,
686
926
  default as useDrawingView,
927
+ EDITOR_DRAWING_TYPE_OPTIONS,
928
+ type EditorDrawingType,
687
929
  } from './store/use-drawing-view'
688
930
  export type {
689
931
  CaptureMode,
@@ -691,7 +933,6 @@ export type {
691
933
  Mode,
692
934
  SnapshotCropMode,
693
935
  SnapshotStandardAspect,
694
- SplitOrientation,
695
936
  StructureTool,
696
937
  Tool,
697
938
  ToolDefaults,
@@ -719,6 +960,7 @@ export { type FirstPersonHudState, useFirstPersonHud } from './store/use-first-p
719
960
  export { default as useFloorplanAnnotationVisibility } from './store/use-floorplan-annotation-visibility'
720
961
  export { useFloorplanDraftPreview } from './store/use-floorplan-draft-preview'
721
962
  export { default as useFloorplanMode } from './store/use-floorplan-mode'
963
+ export { default as useFollowPascal } from './store/use-follow-pascal'
722
964
  export {
723
965
  default as useInteractionScope,
724
966
  getEditingHole,
@@ -767,6 +1009,7 @@ export {
767
1009
  default as usePlacementPreview,
768
1010
  type PlacementPreviewDimension,
769
1011
  } from './store/use-placement-preview'
1012
+ export { usePointAsk } from './store/use-point-ask'
770
1013
  export {
771
1014
  activateQuickMeasurementHudSource,
772
1015
  clearQuickMeasurementHudSource,
@@ -788,3 +1031,14 @@ export {
788
1031
  type WallSnapKind,
789
1032
  type WallSnapPoint,
790
1033
  } from './store/use-wall-snap-indicator'
1034
+ export {
1035
+ activeViewLayout,
1036
+ isViewVisible,
1037
+ sceneLayout,
1038
+ VIEW_2D,
1039
+ VIEW_3D,
1040
+ type ViewLayout,
1041
+ type ViewPaneIndex,
1042
+ type VisibleScene,
1043
+ visibleScene,
1044
+ } from './store/view-layout'