@pascal-app/nodes 1.0.1 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/block/definition.d.ts.map +1 -1
- package/dist/block/definition.js +22 -4
- package/dist/block/face-host.d.ts.map +1 -1
- package/dist/block/face-host.js +19 -2
- package/dist/block/floorplan.d.ts +11 -1
- package/dist/block/floorplan.d.ts.map +1 -1
- package/dist/block/floorplan.js +81 -13
- package/dist/block/geometry.d.ts +2 -2
- package/dist/block/geometry.d.ts.map +1 -1
- package/dist/block/geometry.js +39 -24
- package/dist/block/hosted-edit.d.ts +13 -0
- package/dist/block/hosted-edit.d.ts.map +1 -0
- package/dist/block/hosted-edit.js +230 -0
- package/dist/block/last-operation.d.ts +1 -1
- package/dist/block/last-operation.d.ts.map +1 -1
- package/dist/block/last-operation.js +6 -4
- package/dist/block/material-slots.d.ts +1 -3
- package/dist/block/material-slots.d.ts.map +1 -1
- package/dist/block/material-slots.js +1 -11
- package/dist/block/modal-session.d.ts +2 -1
- package/dist/block/modal-session.d.ts.map +1 -1
- package/dist/block/modal-session.js +2 -2
- package/dist/block/paint.d.ts.map +1 -1
- package/dist/block/paint.js +4 -10
- package/dist/block/panel.d.ts.map +1 -1
- package/dist/block/panel.js +8 -3
- package/dist/block/selection.d.ts.map +1 -1
- package/dist/block/selection.js +83 -25
- package/dist/block/surface.d.ts +4 -0
- package/dist/block/surface.d.ts.map +1 -0
- package/dist/block/surface.js +54 -0
- package/dist/block/use-block-face-operation.d.ts +2 -2
- package/dist/block/use-block-face-operation.d.ts.map +1 -1
- package/dist/block/use-block-face-operation.js +25 -11
- package/dist/box-vent/definition.d.ts.map +1 -1
- package/dist/box-vent/definition.js +3 -5
- package/dist/box-vent/panel.d.ts.map +1 -1
- package/dist/box-vent/panel.js +5 -28
- package/dist/building/renderer.d.ts.map +1 -1
- package/dist/building/renderer.js +1 -1
- package/dist/cabinet/countertop-layout.d.ts +13 -2
- package/dist/cabinet/countertop-layout.d.ts.map +1 -1
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +4 -3
- package/dist/cabinet/floorplan.d.ts.map +1 -1
- package/dist/cabinet/floorplan.js +125 -28
- package/dist/cabinet/geometry/shared.d.ts +1 -2
- package/dist/cabinet/geometry/shared.d.ts.map +1 -1
- package/dist/cabinet/geometry/shared.js +1 -2
- package/dist/cabinet/hosted-resize.d.ts +3 -6
- package/dist/cabinet/hosted-resize.d.ts.map +1 -1
- package/dist/cabinet/hosted-resize.js +9 -153
- package/dist/cabinet/placement-snap.d.ts.map +1 -1
- package/dist/cabinet/placement-snap.js +4 -2
- package/dist/cabinet/run-layout.d.ts.map +1 -1
- package/dist/cabinet/run-layout.js +8 -5
- package/dist/cabinet/run-ops.d.ts +13 -2
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/surfaces.d.ts +1 -0
- package/dist/cabinet/surfaces.d.ts.map +1 -1
- package/dist/cabinet/surfaces.js +13 -1
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +30 -28
- package/dist/cabinet/wall-snap.d.ts.map +1 -1
- package/dist/cabinet/wall-snap.js +8 -8
- package/dist/ceiling/boundary-editor.d.ts.map +1 -1
- package/dist/ceiling/boundary-editor.js +5 -3
- package/dist/ceiling/definition.d.ts +4 -4
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.js +20 -15
- package/dist/ceiling/floorplan-affordances.d.ts +84 -4
- package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
- package/dist/ceiling/floorplan-affordances.js +0 -1
- package/dist/ceiling/floorplan-move.d.ts.map +1 -1
- package/dist/ceiling/floorplan-move.js +0 -1
- package/dist/ceiling/floorplan.d.ts +1 -1
- package/dist/ceiling/floorplan.d.ts.map +1 -1
- package/dist/ceiling/floorplan.js +2 -1
- package/dist/ceiling/height-bounds.d.ts +19 -0
- package/dist/ceiling/height-bounds.d.ts.map +1 -0
- package/dist/ceiling/height-bounds.js +24 -0
- package/dist/ceiling/hole-editor.d.ts.map +1 -1
- package/dist/ceiling/hole-editor.js +3 -4
- package/dist/ceiling/materials.d.ts +1 -1
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +10 -3
- package/dist/ceiling/paint.d.ts +2 -8
- package/dist/ceiling/paint.d.ts.map +1 -1
- package/dist/ceiling/paint.js +121 -24
- package/dist/ceiling/panel.d.ts.map +1 -1
- package/dist/ceiling/panel.js +40 -23
- package/dist/ceiling/renderer.d.ts.map +1 -1
- package/dist/ceiling/renderer.js +43 -6
- package/dist/chimney/definition.d.ts.map +1 -1
- package/dist/chimney/definition.js +1 -0
- package/dist/chimney/move-tool.d.ts.map +1 -1
- package/dist/chimney/move-tool.js +8 -2
- package/dist/chimney/paint.d.ts.map +1 -1
- package/dist/chimney/paint.js +3 -10
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.js +34 -5
- package/dist/column/floorplan-affordances.d.ts.map +1 -1
- package/dist/column/floorplan-affordances.js +11 -1
- package/dist/column/floorplan.d.ts +1 -1
- package/dist/column/floorplan.d.ts.map +1 -1
- package/dist/column/floorplan.js +69 -12
- package/dist/column/hosted-resize.d.ts +215 -0
- package/dist/column/hosted-resize.d.ts.map +1 -0
- package/dist/column/hosted-resize.js +9 -0
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +153 -149
- package/dist/column/renderer.d.ts.map +1 -1
- package/dist/column/renderer.js +29 -105
- package/dist/column/shape.d.ts +22 -0
- package/dist/column/shape.d.ts.map +1 -0
- package/dist/column/shape.js +120 -0
- package/dist/column/surface.d.ts +4 -0
- package/dist/column/surface.d.ts.map +1 -0
- package/dist/column/surface.js +73 -0
- package/dist/construction-dimension/floorplan.js +7 -3
- package/dist/cupola/definition.d.ts.map +1 -1
- package/dist/cupola/definition.js +3 -8
- package/dist/cupola/panel.d.ts.map +1 -1
- package/dist/cupola/panel.js +5 -23
- package/dist/door/definition.d.ts.map +1 -1
- package/dist/door/definition.js +52 -4
- package/dist/door/door-math.d.ts +6 -11
- package/dist/door/door-math.d.ts.map +1 -1
- package/dist/door/door-math.js +13 -17
- package/dist/door/floorplan-affordances.d.ts.map +1 -1
- package/dist/door/floorplan-affordances.js +8 -12
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +3 -1
- package/dist/door/floorplan.d.ts.map +1 -1
- package/dist/door/floorplan.js +55 -21
- package/dist/door/mechanism.d.ts +4 -0
- package/dist/door/mechanism.d.ts.map +1 -0
- package/dist/door/mechanism.js +24 -0
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +75 -52
- package/dist/door/paint.d.ts.map +1 -1
- package/dist/door/paint.js +3 -0
- package/dist/door/panel.d.ts.map +1 -1
- package/dist/door/panel.js +54 -308
- package/dist/door/placement.d.ts +45 -0
- package/dist/door/placement.d.ts.map +1 -0
- package/dist/door/placement.js +51 -0
- package/dist/door/preview.d.ts.map +1 -1
- package/dist/door/preview.js +2 -0
- package/dist/door/renderer.d.ts.map +1 -1
- package/dist/door/renderer.js +3 -2
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +112 -23
- package/dist/dormer/csg-geometry.d.ts.map +1 -1
- package/dist/dormer/csg-geometry.js +2 -0
- package/dist/dormer/definition.d.ts.map +1 -1
- package/dist/dormer/definition.js +1 -0
- package/dist/dormer/paint.d.ts.map +1 -1
- package/dist/dormer/paint.js +2 -5
- package/dist/dormer/panel.d.ts.map +1 -1
- package/dist/dormer/panel.js +4 -14
- package/dist/downspout/definition.d.ts.map +1 -1
- package/dist/downspout/definition.js +3 -2
- package/dist/duct-fitting/definition.d.ts.map +1 -1
- package/dist/duct-fitting/definition.js +2 -1
- package/dist/duct-fitting/geometry.d.ts.map +1 -1
- package/dist/duct-fitting/geometry.js +1 -1
- package/dist/duct-fitting/move-tool.d.ts.map +1 -1
- package/dist/duct-fitting/move-tool.js +8 -2
- package/dist/duct-segment/definition.d.ts.map +1 -1
- package/dist/duct-segment/definition.js +2 -2
- package/dist/duct-segment/geometry.d.ts.map +1 -1
- package/dist/duct-segment/geometry.js +1 -1
- package/dist/duct-segment/move-tool.d.ts.map +1 -1
- package/dist/duct-segment/move-tool.js +8 -2
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +11 -0
- package/dist/duct-terminal/tool.d.ts.map +1 -1
- package/dist/duct-terminal/tool.js +77 -8
- package/dist/elevator/definition.d.ts.map +1 -1
- package/dist/elevator/definition.js +3 -2
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +5 -27
- package/dist/elevator/parametrics.d.ts.map +1 -1
- package/dist/elevator/parametrics.js +98 -1
- package/dist/elevator/renderer.d.ts.map +1 -1
- package/dist/elevator/renderer.js +3 -4
- package/dist/eyebrow-vent/definition.d.ts.map +1 -1
- package/dist/eyebrow-vent/definition.js +3 -5
- package/dist/eyebrow-vent/paint.d.ts.map +1 -1
- package/dist/eyebrow-vent/paint.js +3 -6
- package/dist/eyebrow-vent/panel.d.ts.map +1 -1
- package/dist/eyebrow-vent/panel.js +5 -23
- package/dist/fence/actions/move-endpoint.d.ts +1 -1
- package/dist/fence/actions/move-endpoint.d.ts.map +1 -1
- package/dist/fence/actions/move-endpoint.js +2 -1
- package/dist/fence/definition.d.ts +2 -1
- package/dist/fence/definition.d.ts.map +1 -1
- package/dist/fence/definition.js +84 -28
- package/dist/fence/drafting.d.ts +36 -0
- package/dist/fence/drafting.d.ts.map +1 -0
- package/dist/fence/drafting.js +210 -0
- package/dist/fence/feature-tool.d.ts +4 -0
- package/dist/fence/feature-tool.d.ts.map +1 -0
- package/dist/fence/feature-tool.js +140 -0
- package/dist/fence/features.d.ts +2 -0
- package/dist/fence/features.d.ts.map +1 -0
- package/dist/fence/features.js +12 -0
- package/dist/fence/floorplan-affordances.d.ts.map +1 -1
- package/dist/fence/floorplan-affordances.js +2 -1
- package/dist/fence/floorplan.d.ts +2 -3
- package/dist/fence/floorplan.d.ts.map +1 -1
- package/dist/fence/floorplan.js +131 -71
- package/dist/fence/geometry-parts.d.ts +50 -0
- package/dist/fence/geometry-parts.d.ts.map +1 -0
- package/dist/fence/geometry-parts.js +1144 -0
- package/dist/fence/geometry.d.ts +2 -3
- package/dist/fence/geometry.d.ts.map +1 -1
- package/dist/fence/geometry.js +84 -7
- package/dist/fence/index.d.ts +1 -0
- package/dist/fence/index.d.ts.map +1 -1
- package/dist/fence/index.js +1 -0
- package/dist/fence/inspector-editors.d.ts +15 -0
- package/dist/fence/inspector-editors.d.ts.map +1 -1
- package/dist/fence/inspector-editors.js +128 -3
- package/dist/fence/lift.d.ts.map +1 -1
- package/dist/fence/lift.js +5 -2
- package/dist/fence/move-tool.js +2 -1
- package/dist/fence/panel-model.d.ts +4 -0
- package/dist/fence/panel-model.d.ts.map +1 -0
- package/dist/fence/panel-model.js +12 -0
- package/dist/fence/parametrics.d.ts +0 -12
- package/dist/fence/parametrics.d.ts.map +1 -1
- package/dist/fence/parametrics.js +185 -18
- package/dist/fence/system.d.ts.map +1 -1
- package/dist/fence/system.js +141 -31
- package/dist/fence/tool.d.ts.map +1 -1
- package/dist/fence/tool.js +257 -48
- package/dist/fence-feature/actions.d.ts +7 -0
- package/dist/fence-feature/actions.d.ts.map +1 -0
- package/dist/fence-feature/actions.js +26 -0
- package/dist/fence-feature/definition.d.ts +4 -0
- package/dist/fence-feature/definition.d.ts.map +1 -0
- package/dist/fence-feature/definition.js +112 -0
- package/dist/fence-feature/floorplan-affordances.d.ts +3 -0
- package/dist/fence-feature/floorplan-affordances.d.ts.map +1 -0
- package/dist/fence-feature/floorplan-affordances.js +37 -0
- package/dist/fence-feature/floorplan.d.ts +4 -0
- package/dist/fence-feature/floorplan.d.ts.map +1 -0
- package/dist/fence-feature/floorplan.js +120 -0
- package/dist/fence-feature/geometry.d.ts +5 -0
- package/dist/fence-feature/geometry.d.ts.map +1 -0
- package/dist/fence-feature/geometry.js +43 -0
- package/dist/fence-feature/handles.d.ts +5 -0
- package/dist/fence-feature/handles.d.ts.map +1 -0
- package/dist/fence-feature/handles.js +84 -0
- package/dist/fence-feature/inspector.d.ts +6 -0
- package/dist/fence-feature/inspector.d.ts.map +1 -0
- package/dist/fence-feature/inspector.js +214 -0
- package/dist/fence-feature/interaction.d.ts +3 -0
- package/dist/fence-feature/interaction.d.ts.map +1 -0
- package/dist/fence-feature/interaction.js +41 -0
- package/dist/fence-feature/move-session.d.ts +9 -0
- package/dist/fence-feature/move-session.d.ts.map +1 -0
- package/dist/fence-feature/move-session.js +48 -0
- package/dist/fence-feature/move-tool.d.ts +5 -0
- package/dist/fence-feature/move-tool.d.ts.map +1 -0
- package/dist/fence-feature/move-tool.js +58 -0
- package/dist/fence-feature/pick-target.d.ts +7 -0
- package/dist/fence-feature/pick-target.d.ts.map +1 -0
- package/dist/fence-feature/pick-target.js +52 -0
- package/dist/floor-opening/definition.d.ts +3 -0
- package/dist/floor-opening/definition.d.ts.map +1 -0
- package/dist/floor-opening/definition.js +41 -0
- package/dist/floor-opening/floorplan.d.ts +156 -0
- package/dist/floor-opening/floorplan.d.ts.map +1 -0
- package/dist/floor-opening/floorplan.js +63 -0
- package/dist/guide/definition.d.ts.map +1 -1
- package/dist/guide/definition.js +1 -0
- package/dist/gutter/definition.d.ts.map +1 -1
- package/dist/gutter/definition.js +3 -2
- package/dist/hvac-equipment/tool.d.ts.map +1 -1
- package/dist/hvac-equipment/tool.js +8 -2
- package/dist/imported-mesh/definition.d.ts.map +1 -1
- package/dist/imported-mesh/definition.js +2 -0
- package/dist/imported-mesh/geometry.d.ts +1 -1
- package/dist/imported-mesh/geometry.d.ts.map +1 -1
- package/dist/imported-mesh/geometry.js +40 -12
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/item/authored-face-host.d.ts +10 -0
- package/dist/item/authored-face-host.d.ts.map +1 -0
- package/dist/item/authored-face-host.js +87 -0
- package/dist/item/authored-params.d.ts +15 -0
- package/dist/item/authored-params.d.ts.map +1 -0
- package/dist/item/authored-params.js +72 -0
- package/dist/item/definition.d.ts +2 -2
- package/dist/item/definition.d.ts.map +1 -1
- package/dist/item/definition.js +35 -4
- package/dist/item/floorplan-move.d.ts.map +1 -1
- package/dist/item/floorplan-move.js +209 -130
- package/dist/item/floorplan.d.ts +22 -0
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +95 -6
- package/dist/item/index.d.ts +1 -0
- package/dist/item/index.d.ts.map +1 -1
- package/dist/item/index.js +1 -0
- package/dist/item/model-loader.d.ts +2 -0
- package/dist/item/model-loader.d.ts.map +1 -1
- package/dist/item/model-loader.js +55 -23
- package/dist/item/move-tool.d.ts +1 -1
- package/dist/item/move-tool.d.ts.map +1 -1
- package/dist/item/move-tool.js +19 -11
- package/dist/item/paint.d.ts.map +1 -1
- package/dist/item/paint.js +5 -24
- package/dist/item/panel.d.ts +1 -3
- package/dist/item/panel.d.ts.map +1 -1
- package/dist/item/panel.js +20 -24
- package/dist/item/placement-notice.d.ts +14 -0
- package/dist/item/placement-notice.d.ts.map +1 -0
- package/dist/item/placement-notice.js +38 -0
- package/dist/item/plan-symbols.d.ts +67 -0
- package/dist/item/plan-symbols.d.ts.map +1 -0
- package/dist/item/plan-symbols.js +407 -0
- package/dist/item/renderer.d.ts +10 -0
- package/dist/item/renderer.d.ts.map +1 -1
- package/dist/item/renderer.js +72 -40
- package/dist/item/script-param-defaults.d.ts +12 -0
- package/dist/item/script-param-defaults.d.ts.map +1 -0
- package/dist/item/script-param-defaults.js +34 -0
- package/dist/lean-to-extension/definition.d.ts.map +1 -1
- package/dist/lean-to-extension/definition.js +1 -2
- package/dist/lean-to-extension/geometry.d.ts.map +1 -1
- package/dist/lean-to-extension/geometry.js +1 -1
- package/dist/lean-to-extension/layout.d.ts.map +1 -1
- package/dist/lean-to-extension/layout.js +2 -3
- package/dist/lean-to-extension/placement-validation.d.ts.map +1 -1
- package/dist/lean-to-extension/placement-validation.js +5 -5
- package/dist/lean-to-extension/tool.d.ts.map +1 -1
- package/dist/lean-to-extension/tool.js +5 -5
- package/dist/level/renderer.js +1 -1
- package/dist/lineset/move-tool.d.ts.map +1 -1
- package/dist/lineset/move-tool.js +8 -2
- package/dist/lineset/tool.d.ts.map +1 -1
- package/dist/lineset/tool.js +1 -0
- package/dist/liquid-line/move-tool.d.ts.map +1 -1
- package/dist/liquid-line/move-tool.js +8 -2
- package/dist/liquid-line/tool.d.ts.map +1 -1
- package/dist/liquid-line/tool.js +5 -1
- package/dist/measurement/definition.d.ts.map +1 -1
- package/dist/measurement/definition.js +2 -1
- package/dist/pipe-fitting/move-tool.d.ts.map +1 -1
- package/dist/pipe-fitting/move-tool.js +8 -2
- package/dist/pipe-segment/move-tool.d.ts.map +1 -1
- package/dist/pipe-segment/move-tool.js +8 -2
- package/dist/pipe-segment/tool.d.ts.map +1 -1
- package/dist/pipe-segment/tool.js +14 -3
- package/dist/pipe-trap/tool.d.ts.map +1 -1
- package/dist/pipe-trap/tool.js +7 -8
- package/dist/procedural-item/animation.d.ts +8 -0
- package/dist/procedural-item/animation.d.ts.map +1 -0
- package/dist/procedural-item/animation.js +116 -0
- package/dist/procedural-item/definition.d.ts.map +1 -1
- package/dist/procedural-item/definition.js +77 -8
- package/dist/procedural-item/geometry.d.ts +5 -1
- package/dist/procedural-item/geometry.d.ts.map +1 -1
- package/dist/procedural-item/geometry.js +239 -15
- package/dist/procedural-item/renderer.d.ts.map +1 -1
- package/dist/procedural-item/renderer.js +272 -23
- package/dist/ridge-vent/definition.d.ts.map +1 -1
- package/dist/ridge-vent/definition.js +1 -0
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +5 -23
- package/dist/ridge-vent/renderer.d.ts.map +1 -1
- package/dist/ridge-vent/renderer.js +9 -8
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.js +8 -2
- package/dist/roof/floorplan.d.ts +8 -0
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +194 -18
- package/dist/roof/panel-model.d.ts +4 -0
- package/dist/roof/panel-model.d.ts.map +1 -0
- package/dist/roof/panel-model.js +155 -0
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +5 -13
- package/dist/roof/parametrics.d.ts.map +1 -1
- package/dist/roof/parametrics.js +16 -1
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/renderer.js +5 -2
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.js +1 -0
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +5 -24
- package/dist/roof-segment/parametrics.d.ts.map +1 -1
- package/dist/roof-segment/parametrics.js +176 -1
- package/dist/roof-segment/renderer.d.ts.map +1 -1
- package/dist/roof-segment/renderer.js +17 -8
- package/dist/scan/definition.d.ts.map +1 -1
- package/dist/scan/definition.js +1 -0
- package/dist/separator/definition.d.ts +3 -0
- package/dist/separator/definition.d.ts.map +1 -0
- package/dist/separator/definition.js +39 -0
- package/dist/separator/renderer.d.ts +5 -0
- package/dist/separator/renderer.d.ts.map +1 -0
- package/dist/separator/renderer.js +36 -0
- package/dist/shared/commit-opening-move.d.ts +4 -0
- package/dist/shared/commit-opening-move.d.ts.map +1 -0
- package/dist/shared/commit-opening-move.js +9 -0
- package/dist/shared/curtain-opening-limits.d.ts +14 -0
- package/dist/shared/curtain-opening-limits.d.ts.map +1 -0
- package/dist/shared/curtain-opening-limits.js +53 -0
- package/dist/shared/draft-axis-guides.d.ts +0 -6
- package/dist/shared/draft-axis-guides.d.ts.map +1 -1
- package/dist/shared/draft-axis-guides.js +1 -8
- package/dist/shared/duct-body-paint.d.ts +0 -4
- package/dist/shared/duct-body-paint.d.ts.map +1 -1
- package/dist/shared/duct-body-paint.js +1 -5
- package/dist/shared/hosted-resize.d.ts +12 -0
- package/dist/shared/hosted-resize.d.ts.map +1 -0
- package/dist/shared/hosted-resize.js +166 -0
- package/dist/shared/item-interaction-actions.d.ts +6 -0
- package/dist/shared/item-interaction-actions.d.ts.map +1 -0
- package/dist/shared/item-interaction-actions.js +27 -0
- package/dist/shared/item-interactions.d.ts +9 -0
- package/dist/shared/item-interactions.d.ts.map +1 -0
- package/dist/shared/item-interactions.js +74 -0
- package/dist/shared/item-light-placement.d.ts +2 -0
- package/dist/shared/item-light-placement.d.ts.map +1 -0
- package/dist/shared/item-light-placement.js +3 -0
- package/dist/shared/move-roof-tool.js +2 -1
- package/dist/shared/node-batch/batchable.d.ts +12 -0
- package/dist/shared/node-batch/batchable.d.ts.map +1 -0
- package/dist/shared/node-batch/batchable.js +41 -0
- package/dist/shared/node-batch/candidates.d.ts +7 -5
- package/dist/shared/node-batch/candidates.d.ts.map +1 -1
- package/dist/shared/node-batch/candidates.js +43 -59
- package/dist/shared/node-batch/release.d.ts +8 -0
- package/dist/shared/node-batch/release.d.ts.map +1 -0
- package/dist/shared/node-batch/release.js +16 -0
- package/dist/shared/node-batch/system.d.ts.map +1 -1
- package/dist/shared/node-batch/system.js +17 -12
- package/dist/shared/node-batch/types.d.ts +4 -1
- package/dist/shared/node-batch/types.d.ts.map +1 -1
- package/dist/shared/opening-documentation.d.ts +13 -1
- package/dist/shared/opening-documentation.d.ts.map +1 -1
- package/dist/shared/opening-documentation.js +245 -59
- package/dist/shared/opening-grid-follow.d.ts +8 -0
- package/dist/shared/opening-grid-follow.d.ts.map +1 -0
- package/dist/shared/opening-grid-follow.js +12 -0
- package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
- package/dist/shared/opening-guides-runtime.js +17 -14
- package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
- package/dist/shared/opening-placement-dimensions.js +3 -3
- package/dist/shared/opening-plane-offset.d.ts +23 -0
- package/dist/shared/opening-plane-offset.d.ts.map +1 -0
- package/dist/shared/opening-plane-offset.js +24 -0
- package/dist/shared/opening-property-preview-host.d.ts +3 -0
- package/dist/shared/opening-property-preview-host.d.ts.map +1 -0
- package/dist/shared/opening-property-preview-host.js +21 -0
- package/dist/shared/opening-property-preview.d.ts +19 -0
- package/dist/shared/opening-property-preview.d.ts.map +1 -0
- package/dist/shared/opening-property-preview.js +99 -0
- package/dist/shared/polygon-centroid-move.d.ts.map +1 -1
- package/dist/shared/polygon-centroid-move.js +4 -1
- package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
- package/dist/shared/polygon-vertex-affordance.js +19 -15
- package/dist/shared/resting-surface-plan.d.ts +2 -1
- package/dist/shared/resting-surface-plan.d.ts.map +1 -1
- package/dist/shared/resting-surface-plan.js +29 -4
- package/dist/shared/run-hangers.d.ts.map +1 -1
- package/dist/shared/run-hangers.js +5 -4
- package/dist/shared/scripted-opening-handles.d.ts +18 -0
- package/dist/shared/scripted-opening-handles.d.ts.map +1 -0
- package/dist/shared/scripted-opening-handles.js +53 -0
- package/dist/shared/scripted-opening.d.ts +25 -0
- package/dist/shared/scripted-opening.d.ts.map +1 -0
- package/dist/shared/scripted-opening.js +72 -0
- package/dist/shared/slot-paint.d.ts +14 -2
- package/dist/shared/slot-paint.d.ts.map +1 -1
- package/dist/shared/slot-paint.js +29 -29
- package/dist/shared/surface-counterparts.d.ts +12 -0
- package/dist/shared/surface-counterparts.d.ts.map +1 -0
- package/dist/shared/surface-counterparts.js +27 -0
- package/dist/shared/surface-paint.d.ts.map +1 -1
- package/dist/shared/surface-paint.js +2 -5
- package/dist/shared/swap-preview-material.d.ts +11 -0
- package/dist/shared/swap-preview-material.d.ts.map +1 -0
- package/dist/shared/swap-preview-material.js +16 -0
- package/dist/shared/system-checks.d.ts.map +1 -1
- package/dist/shared/system-checks.js +5 -3
- package/dist/shared/wall-attach-target.d.ts +4 -10
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +6 -63
- package/dist/shared/wall-event-from-grid.d.ts +5 -0
- package/dist/shared/wall-event-from-grid.d.ts.map +1 -0
- package/dist/shared/wall-event-from-grid.js +36 -0
- package/dist/shared/wall-opening-ceiling.d.ts +5 -15
- package/dist/shared/wall-opening-ceiling.d.ts.map +1 -1
- package/dist/shared/wall-opening-ceiling.js +10 -18
- package/dist/shelf/definition.d.ts.map +1 -1
- package/dist/shelf/definition.js +4 -2
- package/dist/shelf/floorplan.d.ts.map +1 -1
- package/dist/shelf/floorplan.js +9 -2
- package/dist/shelf/geometry.d.ts.map +1 -1
- package/dist/shelf/geometry.js +1 -2
- package/dist/shelf/paint.d.ts.map +1 -1
- package/dist/shelf/paint.js +4 -10
- package/dist/site/line-ribbon.d.ts +31 -0
- package/dist/site/line-ribbon.d.ts.map +1 -0
- package/dist/site/line-ribbon.js +117 -0
- package/dist/site/lot-mask.d.ts +18 -0
- package/dist/site/lot-mask.d.ts.map +1 -0
- package/dist/site/lot-mask.js +35 -0
- package/dist/site/panel.d.ts +10 -0
- package/dist/site/panel.d.ts.map +1 -0
- package/dist/site/panel.js +155 -0
- package/dist/site/parametrics.d.ts +7 -0
- package/dist/site/parametrics.d.ts.map +1 -1
- package/dist/site/parametrics.js +8 -0
- package/dist/site/recessed-slab-ground-holes.d.ts.map +1 -1
- package/dist/site/recessed-slab-ground-holes.js +5 -2
- package/dist/site/renderer.d.ts.map +1 -1
- package/dist/site/renderer.js +158 -20
- package/dist/site/setbacks.d.ts +33 -0
- package/dist/site/setbacks.d.ts.map +1 -0
- package/dist/site/setbacks.js +204 -0
- package/dist/site/terrain-geometry.d.ts +28 -1
- package/dist/site/terrain-geometry.d.ts.map +1 -1
- package/dist/site/terrain-geometry.js +78 -4
- package/dist/site/terrain-holes.d.ts +15 -0
- package/dist/site/terrain-holes.d.ts.map +1 -0
- package/dist/site/terrain-holes.js +74 -0
- package/dist/site/terrain-mesh.d.ts +9 -2
- package/dist/site/terrain-mesh.d.ts.map +1 -1
- package/dist/site/terrain-mesh.js +36 -9
- package/dist/site/terrain-renderer.d.ts +9 -2
- package/dist/site/terrain-renderer.d.ts.map +1 -1
- package/dist/site/terrain-renderer.js +14 -4
- package/dist/skylight/definition.d.ts.map +1 -1
- package/dist/skylight/definition.js +1 -0
- package/dist/slab/boundary-editor.d.ts +1 -1
- package/dist/slab/boundary-editor.d.ts.map +1 -1
- package/dist/slab/boundary-editor.js +13 -13
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.js +23 -3
- package/dist/slab/dependency-tracker.d.ts.map +1 -1
- package/dist/slab/dependency-tracker.js +67 -7
- package/dist/slab/elevation-limit.d.ts.map +1 -1
- package/dist/slab/elevation-limit.js +2 -2
- package/dist/slab/floorplan-affordances.d.ts +176 -4
- package/dist/slab/floorplan-affordances.d.ts.map +1 -1
- package/dist/slab/floorplan-affordances.js +0 -1
- package/dist/slab/floorplan-move.d.ts.map +1 -1
- package/dist/slab/floorplan-move.js +3 -4
- package/dist/slab/floorplan.d.ts +7 -0
- package/dist/slab/floorplan.d.ts.map +1 -1
- package/dist/slab/floorplan.js +22 -5
- package/dist/slab/geometry.d.ts.map +1 -1
- package/dist/slab/geometry.js +186 -76
- package/dist/slab/move-tool.js +7 -6
- package/dist/slab/paint.d.ts +18 -5
- package/dist/slab/paint.d.ts.map +1 -1
- package/dist/slab/paint.js +458 -9
- package/dist/slab/panel.d.ts.map +1 -1
- package/dist/slab/panel.js +28 -9
- package/dist/slab/placement-ownership.d.ts +2 -1
- package/dist/slab/placement-ownership.d.ts.map +1 -1
- package/dist/slab/placement-ownership.js +2 -2
- package/dist/slab/surface-split.d.ts +24 -0
- package/dist/slab/surface-split.d.ts.map +1 -0
- package/dist/slab/surface-split.js +389 -0
- package/dist/slab/tool.d.ts.map +1 -1
- package/dist/slab/tool.js +3 -3
- package/dist/solar-panel/definition.d.ts.map +1 -1
- package/dist/solar-panel/definition.js +1 -0
- package/dist/spawn/definition.d.ts.map +1 -1
- package/dist/spawn/definition.js +1 -0
- package/dist/stair/baluster-geometry.d.ts +21 -0
- package/dist/stair/baluster-geometry.d.ts.map +1 -0
- package/dist/stair/baluster-geometry.js +74 -0
- package/dist/stair/baluster-guard.d.ts +50 -0
- package/dist/stair/baluster-guard.d.ts.map +1 -0
- package/dist/stair/baluster-guard.js +71 -0
- package/dist/stair/boards-guard.d.ts +37 -0
- package/dist/stair/boards-guard.d.ts.map +1 -0
- package/dist/stair/boards-guard.js +61 -0
- package/dist/stair/cable-guard.d.ts +39 -0
- package/dist/stair/cable-guard.d.ts.map +1 -0
- package/dist/stair/cable-guard.js +105 -0
- package/dist/stair/construction-controls.d.ts +15 -0
- package/dist/stair/construction-controls.d.ts.map +1 -0
- package/dist/stair/construction-controls.js +29 -0
- package/dist/stair/continuous-railings.d.ts +10 -0
- package/dist/stair/continuous-railings.d.ts.map +1 -0
- package/dist/stair/continuous-railings.js +159 -0
- package/dist/stair/definition.d.ts.map +1 -1
- package/dist/stair/definition.js +18 -37
- package/dist/stair/documentation.d.ts +1 -1
- package/dist/stair/documentation.d.ts.map +1 -1
- package/dist/stair/documentation.js +10 -17
- package/dist/stair/floorplan-affordances.d.ts.map +1 -1
- package/dist/stair/floorplan-affordances.js +9 -25
- package/dist/stair/floorplan.d.ts +1 -23
- package/dist/stair/floorplan.d.ts.map +1 -1
- package/dist/stair/floorplan.js +102 -86
- package/dist/stair/glass-guard.d.ts +72 -0
- package/dist/stair/glass-guard.d.ts.map +1 -0
- package/dist/stair/glass-guard.js +167 -0
- package/dist/stair/guard-path.d.ts +119 -0
- package/dist/stair/guard-path.d.ts.map +1 -0
- package/dist/stair/guard-path.js +208 -0
- package/dist/stair/materials.d.ts +11 -0
- package/dist/stair/materials.d.ts.map +1 -0
- package/dist/stair/materials.js +51 -0
- package/dist/stair/metal-guard.d.ts +38 -0
- package/dist/stair/metal-guard.d.ts.map +1 -0
- package/dist/stair/metal-guard.js +79 -0
- package/dist/stair/paint.d.ts +32 -0
- package/dist/stair/paint.d.ts.map +1 -1
- package/dist/stair/paint.js +75 -36
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +154 -17
- package/dist/stair/parametrics.d.ts +1 -1
- package/dist/stair/parametrics.d.ts.map +1 -1
- package/dist/stair/parametrics.js +181 -1
- package/dist/stair/plan-entry.d.ts +31 -0
- package/dist/stair/plan-entry.d.ts.map +1 -0
- package/dist/stair/plan-entry.js +325 -0
- package/dist/stair/post-and-rail-guard.d.ts +31 -0
- package/dist/stair/post-and-rail-guard.d.ts.map +1 -0
- package/dist/stair/post-and-rail-guard.js +63 -0
- package/dist/stair/railing-controls.d.ts +9 -0
- package/dist/stair/railing-controls.d.ts.map +1 -0
- package/dist/stair/railing-controls.js +49 -0
- package/dist/stair/renderer.d.ts.map +1 -1
- package/dist/stair/renderer.js +259 -259
- package/dist/stair/use-stair-render-data.d.ts +317 -0
- package/dist/stair/use-stair-render-data.d.ts.map +1 -0
- package/dist/stair/use-stair-render-data.js +73 -0
- package/dist/stair-segment/definition.d.ts.map +1 -1
- package/dist/stair-segment/definition.js +52 -10
- package/dist/stair-segment/panel.d.ts.map +1 -1
- package/dist/stair-segment/panel.js +36 -42
- package/dist/stair-segment/parametrics.d.ts +1 -1
- package/dist/stair-segment/parametrics.d.ts.map +1 -1
- package/dist/stair-segment/parametrics.js +94 -1
- package/dist/stair-segment/renderer.d.ts.map +1 -1
- package/dist/stair-segment/renderer.js +16 -28
- package/dist/turbine-vent/definition.d.ts.map +1 -1
- package/dist/turbine-vent/definition.js +3 -5
- package/dist/turbine-vent/paint.d.ts.map +1 -1
- package/dist/turbine-vent/paint.js +2 -5
- package/dist/turbine-vent/panel.d.ts.map +1 -1
- package/dist/turbine-vent/panel.js +5 -23
- package/dist/unit/unit-panel.d.ts.map +1 -1
- package/dist/unit/unit-panel.js +6 -1
- package/dist/wall/actions.d.ts +3 -0
- package/dist/wall/actions.d.ts.map +1 -0
- package/dist/wall/actions.js +61 -0
- package/dist/wall/construction-dimensions.js +8 -5
- package/dist/wall/contextual-dimensions.js +4 -4
- package/dist/wall/curtain-opening-frame.d.ts +14 -0
- package/dist/wall/curtain-opening-frame.d.ts.map +1 -0
- package/dist/wall/curtain-opening-frame.js +111 -0
- package/dist/wall/curtain-panel-highlight.d.ts +3 -0
- package/dist/wall/curtain-panel-highlight.d.ts.map +1 -0
- package/dist/wall/curtain-panel-highlight.js +113 -0
- package/dist/wall/curtain-wall-adapter.d.ts +3 -0
- package/dist/wall/curtain-wall-adapter.d.ts.map +1 -0
- package/dist/wall/curtain-wall-adapter.js +55 -0
- package/dist/wall/curtain-wall-floorplan.d.ts +3 -0
- package/dist/wall/curtain-wall-floorplan.d.ts.map +1 -0
- package/dist/wall/curtain-wall-floorplan.js +91 -0
- package/dist/wall/curtain-wall-geometry.d.ts +4 -0
- package/dist/wall/curtain-wall-geometry.d.ts.map +1 -0
- package/dist/wall/curtain-wall-geometry.js +226 -0
- package/dist/wall/curtain-wall-layout.d.ts +16 -0
- package/dist/wall/curtain-wall-layout.d.ts.map +1 -0
- package/dist/wall/curtain-wall-layout.js +176 -0
- package/dist/wall/curtain-wall-materials.d.ts +5 -0
- package/dist/wall/curtain-wall-materials.d.ts.map +1 -0
- package/dist/wall/curtain-wall-materials.js +55 -0
- package/dist/wall/curtain-wall-panel.d.ts +14 -0
- package/dist/wall/curtain-wall-panel.d.ts.map +1 -0
- package/dist/wall/curtain-wall-panel.js +167 -0
- package/dist/wall/curtain-wall-piece-geometry.d.ts +5 -0
- package/dist/wall/curtain-wall-piece-geometry.d.ts.map +1 -0
- package/dist/wall/curtain-wall-piece-geometry.js +220 -0
- package/dist/wall/curtain-wall-shadow.d.ts +4 -0
- package/dist/wall/curtain-wall-shadow.d.ts.map +1 -0
- package/dist/wall/curtain-wall-shadow.js +15 -0
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +4 -0
- package/dist/wall/definition.d.ts +0 -15
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +92 -7
- package/dist/wall/floorplan-move.d.ts +1 -1
- package/dist/wall/floorplan-move.d.ts.map +1 -1
- package/dist/wall/floorplan-move.js +20 -83
- package/dist/wall/floorplan-tool.d.ts +4 -0
- package/dist/wall/floorplan-tool.d.ts.map +1 -0
- package/dist/wall/floorplan-tool.js +106 -0
- package/dist/wall/floorplan.d.ts +3 -1
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +189 -22
- package/dist/wall/length-patch.d.ts +3 -0
- package/dist/wall/length-patch.d.ts.map +1 -0
- package/dist/wall/length-patch.js +14 -0
- package/dist/wall/measurement.d.ts.map +1 -1
- package/dist/wall/measurement.js +5 -5
- package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
- package/dist/wall/move-endpoint-tool.js +20 -7
- package/dist/wall/move-shared.d.ts.map +1 -1
- package/dist/wall/move-shared.js +11 -7
- package/dist/wall/move-tool.d.ts.map +1 -1
- package/dist/wall/move-tool.js +140 -148
- package/dist/wall/paint.d.ts +26 -15
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +339 -115
- package/dist/wall/panel-model.d.ts +22 -0
- package/dist/wall/panel-model.d.ts.map +1 -0
- package/dist/wall/panel-model.js +175 -0
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +233 -61
- package/dist/wall/parametrics.d.ts.map +1 -1
- package/dist/wall/parametrics.js +3 -0
- package/dist/wall/property-preview.d.ts +7 -0
- package/dist/wall/property-preview.d.ts.map +1 -0
- package/dist/wall/property-preview.js +31 -0
- package/dist/wall/rectangle-command.d.ts +248 -0
- package/dist/wall/rectangle-command.d.ts.map +1 -0
- package/dist/wall/rectangle-command.js +22 -0
- package/dist/wall/rectangle-tool.d.ts +2 -0
- package/dist/wall/rectangle-tool.d.ts.map +1 -0
- package/dist/wall/rectangle-tool.js +165 -0
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +9 -4
- package/dist/wall/split-floorplan-layer.d.ts +4 -0
- package/dist/wall/split-floorplan-layer.d.ts.map +1 -0
- package/dist/wall/split-floorplan-layer.js +71 -0
- package/dist/wall/split-pointer.d.ts +3 -0
- package/dist/wall/split-pointer.d.ts.map +1 -0
- package/dist/wall/split-pointer.js +95 -0
- package/dist/wall/split-preview.d.ts +55 -0
- package/dist/wall/split-preview.d.ts.map +1 -0
- package/dist/wall/split-preview.js +106 -0
- package/dist/wall/split-session.d.ts +16 -0
- package/dist/wall/split-session.d.ts.map +1 -0
- package/dist/wall/split-session.js +144 -0
- package/dist/wall/split-store.d.ts +16 -0
- package/dist/wall/split-store.d.ts.map +1 -0
- package/dist/wall/split-store.js +6 -0
- package/dist/wall/split-tool.d.ts +10 -0
- package/dist/wall/split-tool.d.ts.map +1 -0
- package/dist/wall/split-tool.js +95 -0
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +39 -5
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +114 -50
- package/dist/wall/treatment-level-data.d.ts +3 -2
- package/dist/wall/treatment-level-data.d.ts.map +1 -1
- package/dist/wall/treatment-level-data.js +17 -13
- package/dist/wall/treatments.d.ts +10 -10
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +67 -54
- package/dist/wall/wall-batch-system.d.ts +7 -0
- package/dist/wall/wall-batch-system.d.ts.map +1 -1
- package/dist/wall/wall-batch-system.js +38 -3
- package/dist/wall/wall-batch.d.ts +6 -0
- package/dist/wall/wall-batch.d.ts.map +1 -1
- package/dist/wall/wall-batch.js +7 -1
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.js +60 -5
- package/dist/window/floorplan-affordances.d.ts.map +1 -1
- package/dist/window/floorplan-affordances.js +8 -10
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +3 -1
- package/dist/window/floorplan.d.ts.map +1 -1
- package/dist/window/floorplan.js +145 -60
- package/dist/window/mechanism.d.ts +4 -0
- package/dist/window/mechanism.d.ts.map +1 -0
- package/dist/window/mechanism.js +20 -0
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +83 -54
- package/dist/window/paint.d.ts.map +1 -1
- package/dist/window/paint.js +3 -0
- package/dist/window/panel.d.ts.map +1 -1
- package/dist/window/panel.js +50 -144
- package/dist/window/placement.d.ts +23 -0
- package/dist/window/placement.d.ts.map +1 -0
- package/dist/window/placement.js +66 -0
- package/dist/window/preview.d.ts.map +1 -1
- package/dist/window/preview.js +2 -0
- package/dist/window/renderer.d.ts.map +1 -1
- package/dist/window/renderer.js +3 -2
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +130 -26
- package/dist/window/window-math.d.ts +6 -14
- package/dist/window/window-math.d.ts.map +1 -1
- package/dist/window/window-math.js +13 -22
- package/dist/zone/contextual-dimensions.d.ts.map +1 -1
- package/dist/zone/contextual-dimensions.js +6 -28
- package/dist/zone/definition.d.ts.map +1 -1
- package/dist/zone/definition.js +4 -3
- package/dist/zone/floorplan-affordances.d.ts +200 -0
- package/dist/zone/floorplan-affordances.d.ts.map +1 -1
- package/dist/zone/floorplan.d.ts +1 -1
- package/dist/zone/floorplan.d.ts.map +1 -1
- package/dist/zone/floorplan.js +93 -53
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +6 -33
- package/dist/zone/quick-measurement.d.ts +2 -2
- package/dist/zone/quick-measurement.d.ts.map +1 -1
- package/dist/zone/quick-measurement.js +6 -5
- package/dist/zone/renderer.d.ts +1 -1
- package/dist/zone/renderer.d.ts.map +1 -1
- package/dist/zone/renderer.js +58 -146
- package/dist/zone/room-clear-dimensions.js +3 -3
- package/dist/zone/room-documentation.d.ts.map +1 -1
- package/dist/zone/room-documentation.js +2 -6
- package/package.json +12 -12
- package/dist/block/slots.d.ts +0 -4
- package/dist/block/slots.d.ts.map +0 -1
- package/dist/block/slots.js +0 -17
- package/dist/cabinet/slots.d.ts +0 -4
- package/dist/cabinet/slots.d.ts.map +0 -1
- package/dist/cabinet/slots.js +0 -24
- package/dist/ceiling/slots.d.ts +0 -6
- package/dist/ceiling/slots.d.ts.map +0 -1
- package/dist/ceiling/slots.js +0 -7
- package/dist/column/slots.d.ts +0 -9
- package/dist/column/slots.d.ts.map +0 -1
- package/dist/column/slots.js +0 -19
- package/dist/door/slots.d.ts +0 -9
- package/dist/door/slots.d.ts.map +0 -1
- package/dist/door/slots.js +0 -20
- package/dist/elevator/slots.d.ts +0 -8
- package/dist/elevator/slots.d.ts.map +0 -1
- package/dist/elevator/slots.js +0 -17
- package/dist/fence/slots.d.ts +0 -10
- package/dist/fence/slots.d.ts.map +0 -1
- package/dist/fence/slots.js +0 -23
- package/dist/lean-to-extension/slots.d.ts +0 -5
- package/dist/lean-to-extension/slots.d.ts.map +0 -1
- package/dist/lean-to-extension/slots.js +0 -15
- package/dist/shared/opening-documentation-fields.d.ts +0 -16
- package/dist/shared/opening-documentation-fields.d.ts.map +0 -1
- package/dist/shared/opening-documentation-fields.js +0 -54
- package/dist/shelf/slots.d.ts +0 -9
- package/dist/shelf/slots.d.ts.map +0 -1
- package/dist/shelf/slots.js +0 -30
- package/dist/slab/slots.d.ts +0 -10
- package/dist/slab/slots.d.ts.map +0 -1
- package/dist/slab/slots.js +0 -20
- package/dist/stair/floor-stack.d.ts +0 -10
- package/dist/stair/floor-stack.d.ts.map +0 -1
- package/dist/stair/floor-stack.js +0 -115
- package/dist/stair/slots.d.ts +0 -7
- package/dist/stair/slots.d.ts.map +0 -1
- package/dist/stair/slots.js +0 -13
- package/dist/wall/slots.d.ts +0 -10
- package/dist/wall/slots.d.ts.map +0 -1
- package/dist/wall/slots.js +0 -84
- package/dist/window/slots.d.ts +0 -5
- package/dist/window/slots.d.ts.map +0 -1
- package/dist/window/slots.js +0 -11
|
@@ -1,15 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getOpeningFloorDatum, getWallLocalFaceZ, wallSupportForNodes } from '@pascal-app/core';
|
|
2
|
+
import { resolveMarkDetail, withFloorplanGeometryMetadata, } from '@pascal-app/editor';
|
|
2
3
|
import { formatConstructionLength, } from './construction-length';
|
|
4
|
+
function openingLevelData(openings, nodes, kind) {
|
|
5
|
+
let drafted;
|
|
6
|
+
return {
|
|
7
|
+
markById: resolveOpeningMarks(openings, nodes, kind).markById,
|
|
8
|
+
draftingMarkById: () => {
|
|
9
|
+
drafted ??= resolveOpeningMarks(openings, nodes, kind, undefined, true).markById;
|
|
10
|
+
return drafted;
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
3
14
|
export function computeDoorFloorplanLevelData(args) {
|
|
4
|
-
return
|
|
15
|
+
return openingLevelData(args.siblings, args.nodes, 'door');
|
|
5
16
|
}
|
|
6
17
|
export function computeWindowFloorplanLevelData(args) {
|
|
7
|
-
return
|
|
18
|
+
return openingLevelData(args.siblings, args.nodes, 'window');
|
|
8
19
|
}
|
|
9
20
|
export function buildDoorFloorplanSchedule(args) {
|
|
10
21
|
if (args.siblings.length === 0)
|
|
11
22
|
return null;
|
|
12
|
-
const marks = resolveOpeningMarks(args.siblings, args.nodes, 'door', args.levelId);
|
|
23
|
+
const marks = resolveOpeningMarks(args.siblings, args.nodes, 'door', args.levelId, args.drafting === true);
|
|
13
24
|
return {
|
|
14
25
|
id: 'doors',
|
|
15
26
|
title: 'DOOR SCHEDULE',
|
|
@@ -40,7 +51,7 @@ export function buildDoorFloorplanSchedule(args) {
|
|
|
40
51
|
export function buildWindowFloorplanSchedule(args) {
|
|
41
52
|
if (args.siblings.length === 0)
|
|
42
53
|
return null;
|
|
43
|
-
const marks = resolveOpeningMarks(args.siblings, args.nodes, 'window', args.levelId);
|
|
54
|
+
const marks = resolveOpeningMarks(args.siblings, args.nodes, 'window', args.levelId, args.drafting === true);
|
|
44
55
|
return {
|
|
45
56
|
id: 'windows',
|
|
46
57
|
title: 'WINDOW SCHEDULE',
|
|
@@ -60,15 +71,42 @@ export function buildWindowFloorplanSchedule(args) {
|
|
|
60
71
|
type: window.openingKind === 'opening' ? 'Opening' : titleCase(window.windowType),
|
|
61
72
|
size: formatSize(window.width, window.height, args.unit, args.profile ?? 'document'),
|
|
62
73
|
roughOpening: formatRoughOpening(window, args.unit, args.profile ?? 'document'),
|
|
63
|
-
sill: formatConstructionLength(Math.max(0, window.position[1] - window.height / 2), args.unit, args.profile ?? 'document'),
|
|
64
|
-
head: formatConstructionLength(window.position[1] + window.height / 2, args.unit, args.profile ?? 'document'),
|
|
74
|
+
sill: formatConstructionLength(Math.max(0, window.position[1] - window.height / 2 + openingDatumOffset(window, args.nodes)), args.unit, args.profile ?? 'document'),
|
|
75
|
+
head: formatConstructionLength(window.position[1] + window.height / 2 + openingDatumOffset(window, args.nodes), args.unit, args.profile ?? 'document'),
|
|
65
76
|
operation: windowOperation(window),
|
|
66
77
|
},
|
|
67
78
|
})),
|
|
68
79
|
issues: marks.issues,
|
|
69
80
|
};
|
|
70
81
|
}
|
|
71
|
-
|
|
82
|
+
/**
|
|
83
|
+
* TAG SIZE — sized for the paper, not for the screen.
|
|
84
|
+
*
|
|
85
|
+
* These annotations are emitted in WORLD METRES and printed at the sheet's
|
|
86
|
+
* drawing scale, so a size only means something once you name the scale it is
|
|
87
|
+
* read at. The reference is a 1/4" = 1'-0" plan (scale 48, i.e. 48 world
|
|
88
|
+
* inches per paper inch), which is what a residential floor plan is drawn at,
|
|
89
|
+
* and the targets are the ones a permit sheet uses:
|
|
90
|
+
*
|
|
91
|
+
* tag height 0.28 in of paper → 0.28 × 48 / 39.3701 = 0.341 m
|
|
92
|
+
* tag stroke 0.02 in of paper → 0.024 m
|
|
93
|
+
* mark text 0.11 in of paper → 0.134 m, bold
|
|
94
|
+
*
|
|
95
|
+
* The previous values (0.32 m tall, 0.02 m stroke, 0.15 m text) drew a tag
|
|
96
|
+
* that was slightly short with a hairline outline — 0.016 in of paper, under
|
|
97
|
+
* half the intended weight — and text that overflowed it.
|
|
98
|
+
*/
|
|
99
|
+
const TAG_REFERENCE_SCALE = 48;
|
|
100
|
+
const INCHES_PER_METRE = 39.37007874015748;
|
|
101
|
+
/** Paper inches → world metres at the reference scale. */
|
|
102
|
+
const paperInches = (inches) => (inches * TAG_REFERENCE_SCALE) / INCHES_PER_METRE;
|
|
103
|
+
export const OPENING_TAG_HEIGHT = paperInches(0.3);
|
|
104
|
+
export const OPENING_TAG_STROKE_WIDTH = paperInches(0.028);
|
|
105
|
+
export const OPENING_TAG_FONT_SIZE = paperInches(0.125);
|
|
106
|
+
export const OPENING_TAG_LEADER_WIDTH = paperInches(0.012);
|
|
107
|
+
/** Clear distance from the wall face to the near edge of the tag. */
|
|
108
|
+
export const OPENING_TAG_STANDOFF = paperInches(0.16);
|
|
109
|
+
export function buildOpeningMarkAnnotation(opening, wall, levelData, { preferredSide = -1, stroke = '#334155', drafting = false, } = {}) {
|
|
72
110
|
const dx = wall.end[0] - wall.start[0];
|
|
73
111
|
const dz = wall.end[1] - wall.start[1];
|
|
74
112
|
const wallLength = Math.hypot(dx, dz);
|
|
@@ -78,57 +116,120 @@ export function buildOpeningMarkAnnotation(opening, wall, levelData, { preferred
|
|
|
78
116
|
const dirZ = dz / wallLength;
|
|
79
117
|
const normalX = -dirZ;
|
|
80
118
|
const normalZ = dirX;
|
|
81
|
-
const side = interiorSide(wall, preferredSide);
|
|
82
119
|
const openingCenterX = wall.start[0] + dirX * opening.position[0];
|
|
83
120
|
const openingCenterZ = wall.start[1] + dirZ * opening.position[0];
|
|
84
|
-
const
|
|
85
|
-
const
|
|
121
|
+
const explicitMark = opening.mark?.trim();
|
|
122
|
+
const marks = drafting ? levelData?.draftingMarkById() : levelData?.markById;
|
|
123
|
+
const mark = marks?.get(opening.id) ?? (explicitMark || fallbackMark(opening));
|
|
124
|
+
if (!drafting) {
|
|
125
|
+
const side = interiorSide(wall, preferredSide);
|
|
126
|
+
// Distance from the reference line to that face: a justified wall's
|
|
127
|
+
// faces are not symmetric about it.
|
|
128
|
+
const halfDepth = getWallLocalFaceZ(wall, side > 0 ? 'a' : 'b') * side;
|
|
129
|
+
const bubbleOffset = halfDepth + 0.5;
|
|
130
|
+
const bubbleX = openingCenterX + normalX * bubbleOffset * side;
|
|
131
|
+
const bubbleZ = openingCenterZ + normalZ * bubbleOffset * side;
|
|
132
|
+
const bubbleWidth = Math.max(0.38, mark.length * 0.105 + 0.18);
|
|
133
|
+
const bubbleHeight = 0.32;
|
|
134
|
+
const leaderEndOffset = bubbleOffset - bubbleHeight / 2;
|
|
135
|
+
return withFloorplanGeometryMetadata({
|
|
136
|
+
kind: 'group',
|
|
137
|
+
children: [
|
|
138
|
+
{
|
|
139
|
+
kind: 'line',
|
|
140
|
+
x1: openingCenterX + normalX * halfDepth * side,
|
|
141
|
+
y1: openingCenterZ + normalZ * halfDepth * side,
|
|
142
|
+
x2: openingCenterX + normalX * leaderEndOffset * side,
|
|
143
|
+
y2: openingCenterZ + normalZ * leaderEndOffset * side,
|
|
144
|
+
stroke,
|
|
145
|
+
strokeWidth: 0.018,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
kind: 'rect',
|
|
149
|
+
x: bubbleX - bubbleWidth / 2,
|
|
150
|
+
y: bubbleZ - bubbleHeight / 2,
|
|
151
|
+
width: bubbleWidth,
|
|
152
|
+
height: bubbleHeight,
|
|
153
|
+
rx: bubbleHeight / 2,
|
|
154
|
+
ry: bubbleHeight / 2,
|
|
155
|
+
fill: '#ffffff',
|
|
156
|
+
stroke,
|
|
157
|
+
strokeWidth: 0.02,
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
kind: 'text',
|
|
161
|
+
x: bubbleX,
|
|
162
|
+
y: bubbleZ,
|
|
163
|
+
text: mark,
|
|
164
|
+
fontSize: 0.15,
|
|
165
|
+
fill: stroke,
|
|
166
|
+
fontWeight: 700,
|
|
167
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace',
|
|
168
|
+
textAnchor: 'middle',
|
|
169
|
+
dominantBaseline: 'middle',
|
|
170
|
+
upright: true,
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
}, { annotationRole: 'opening-mark' });
|
|
174
|
+
}
|
|
175
|
+
// A sheet sets the tag just OUTSIDE the wall on the exterior side, the way
|
|
176
|
+
// a door/window tag is drawn on a construction document. `preferredSide` is
|
|
177
|
+
// the fallback when neither face is declared exterior.
|
|
178
|
+
const side = exteriorSide(wall, preferredSide);
|
|
179
|
+
const halfDepth = getWallLocalFaceZ(wall, side > 0 ? 'a' : 'b') * side;
|
|
180
|
+
const bubbleHeight = OPENING_TAG_HEIGHT;
|
|
181
|
+
// Monospace bold sets at roughly 0.62 em; the tag keeps 0.9 of its own
|
|
182
|
+
// height as end padding so a four-character mark never touches the outline.
|
|
183
|
+
const bubbleWidth = Math.max(bubbleHeight * 1.25, mark.length * OPENING_TAG_FONT_SIZE * 0.62 + bubbleHeight * 0.9);
|
|
184
|
+
// The tag sits just OUTSIDE the wall face on the exterior side.
|
|
185
|
+
const bubbleOffset = halfDepth + OPENING_TAG_STANDOFF + bubbleHeight / 2;
|
|
86
186
|
const bubbleX = openingCenterX + normalX * bubbleOffset * side;
|
|
87
187
|
const bubbleZ = openingCenterZ + normalZ * bubbleOffset * side;
|
|
88
|
-
const explicitMark = opening.mark?.trim();
|
|
89
|
-
const mark = levelData?.markById.get(opening.id) ?? (explicitMark || fallbackMark(opening));
|
|
90
|
-
const bubbleWidth = Math.max(0.38, mark.length * 0.105 + 0.18);
|
|
91
|
-
const bubbleHeight = 0.32;
|
|
92
188
|
const leaderEndOffset = bubbleOffset - bubbleHeight / 2;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
189
|
+
const children = [];
|
|
190
|
+
// A leader only where there is actually a gap to bridge; a leader drawn
|
|
191
|
+
// under a tag that already touches the wall is just a smudge.
|
|
192
|
+
if (leaderEndOffset - halfDepth > OPENING_TAG_STROKE_WIDTH) {
|
|
193
|
+
children.push({
|
|
194
|
+
kind: 'line',
|
|
195
|
+
x1: openingCenterX + normalX * halfDepth * side,
|
|
196
|
+
y1: openingCenterZ + normalZ * halfDepth * side,
|
|
197
|
+
x2: openingCenterX + normalX * leaderEndOffset * side,
|
|
198
|
+
y2: openingCenterZ + normalZ * leaderEndOffset * side,
|
|
199
|
+
stroke,
|
|
200
|
+
strokeWidth: OPENING_TAG_LEADER_WIDTH,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
// Door tag = hexagon, window tag = ellipse (WS3).
|
|
204
|
+
children.push(opening.type === 'door'
|
|
205
|
+
? {
|
|
206
|
+
kind: 'polygon',
|
|
207
|
+
points: hexagonPoints(bubbleX, bubbleZ, bubbleWidth, bubbleHeight),
|
|
208
|
+
fill: '#ffffff',
|
|
209
|
+
stroke,
|
|
210
|
+
strokeWidth: OPENING_TAG_STROKE_WIDTH,
|
|
211
|
+
}
|
|
212
|
+
: {
|
|
213
|
+
kind: 'polygon',
|
|
214
|
+
points: ellipsePoints(bubbleX, bubbleZ, bubbleWidth / 2, bubbleHeight / 2),
|
|
215
|
+
fill: '#ffffff',
|
|
216
|
+
stroke,
|
|
217
|
+
strokeWidth: OPENING_TAG_STROKE_WIDTH,
|
|
218
|
+
});
|
|
219
|
+
children.push({
|
|
220
|
+
kind: 'text',
|
|
221
|
+
x: bubbleX,
|
|
222
|
+
y: bubbleZ,
|
|
223
|
+
text: mark,
|
|
224
|
+
fontSize: OPENING_TAG_FONT_SIZE,
|
|
225
|
+
fill: stroke,
|
|
226
|
+
fontWeight: 700,
|
|
227
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace',
|
|
228
|
+
textAnchor: 'middle',
|
|
229
|
+
dominantBaseline: 'middle',
|
|
230
|
+
upright: true,
|
|
231
|
+
});
|
|
232
|
+
return withFloorplanGeometryMetadata({ kind: 'group', children }, { annotationRole: 'opening-mark' });
|
|
132
233
|
}
|
|
133
234
|
export function resolveOpeningDimensionDocumentation(opening) {
|
|
134
235
|
const constructionType = opening.constructionType ?? 'framed';
|
|
@@ -148,7 +249,43 @@ export function resolveOpeningDimensionDocumentation(opening) {
|
|
|
148
249
|
verified: requestedReference === 'nominal' || dimensions.width !== null,
|
|
149
250
|
};
|
|
150
251
|
}
|
|
151
|
-
|
|
252
|
+
/**
|
|
253
|
+
* The editor plan numbers doors 101, 102… and windows W01, W02… in sibling
|
|
254
|
+
* order. A drafted sheet numbers through `resolveMarkDetail` in the editor
|
|
255
|
+
* package — D101/W101 per level ordinal, clockwise from the NW-most exterior
|
|
256
|
+
* wall. When no level can be resolved (a detached opening in a preview
|
|
257
|
+
* context) both fall back to a local sequence so previews still label
|
|
258
|
+
* something.
|
|
259
|
+
*/
|
|
260
|
+
function resolveOpeningMarks(openings, nodes, kind, explicitLevelId, drafting = false) {
|
|
261
|
+
const level = resolveLevel(openings[0], nodes, explicitLevelId);
|
|
262
|
+
const markFor = drafting ? sheetMark : automaticMark;
|
|
263
|
+
if (drafting && level) {
|
|
264
|
+
// Callers pass live sibling snapshots that may not be the objects in
|
|
265
|
+
// `nodes` (mid-drag overrides, un-committed panel edits). Overlay them so
|
|
266
|
+
// an explicit `mark` on the snapshot is honoured.
|
|
267
|
+
const overlaid = { ...nodes };
|
|
268
|
+
for (const opening of openings)
|
|
269
|
+
overlaid[opening.id] = opening;
|
|
270
|
+
const resolution = resolveMarkDetail(overlaid, level.id);
|
|
271
|
+
const markById = new Map();
|
|
272
|
+
for (const opening of openings) {
|
|
273
|
+
const mark = resolution.marks.get(opening.id);
|
|
274
|
+
if (mark)
|
|
275
|
+
markById.set(opening.id, mark);
|
|
276
|
+
}
|
|
277
|
+
const issues = resolution.issues.filter((issue) => issue.startsWith(`Duplicate ${kind} `));
|
|
278
|
+
// Openings the level walk did not reach (detached / hidden) still need
|
|
279
|
+
// a mark so the schedule row is not blank.
|
|
280
|
+
let fallbackSequence = 1;
|
|
281
|
+
for (const opening of openings) {
|
|
282
|
+
if (markById.has(opening.id))
|
|
283
|
+
continue;
|
|
284
|
+
const explicit = opening.mark?.trim();
|
|
285
|
+
markById.set(opening.id, explicit || sheetMark(kind, level.level ?? 0, fallbackSequence++));
|
|
286
|
+
}
|
|
287
|
+
return { markById, issues };
|
|
288
|
+
}
|
|
152
289
|
const markById = new Map();
|
|
153
290
|
const explicitMarks = new Map();
|
|
154
291
|
const used = new Set();
|
|
@@ -165,15 +302,14 @@ function resolveOpeningMarks(openings, nodes, kind, explicitLevelId) {
|
|
|
165
302
|
else
|
|
166
303
|
explicitMarks.set(normalized, [opening.id]);
|
|
167
304
|
}
|
|
168
|
-
const level = resolveLevel(openings[0], nodes, explicitLevelId);
|
|
169
305
|
let sequence = 1;
|
|
170
306
|
for (const opening of openings) {
|
|
171
307
|
if (markById.has(opening.id))
|
|
172
308
|
continue;
|
|
173
|
-
let candidate =
|
|
309
|
+
let candidate = markFor(kind, level?.level ?? 0, sequence);
|
|
174
310
|
while (used.has(candidate.toLocaleUpperCase())) {
|
|
175
311
|
sequence++;
|
|
176
|
-
candidate =
|
|
312
|
+
candidate = markFor(kind, level?.level ?? 0, sequence);
|
|
177
313
|
}
|
|
178
314
|
markById.set(opening.id, candidate);
|
|
179
315
|
used.add(candidate.toLocaleUpperCase());
|
|
@@ -196,13 +332,17 @@ function resolveLevel(opening, nodes, explicitLevelId) {
|
|
|
196
332
|
if (current?.type === 'level')
|
|
197
333
|
return current;
|
|
198
334
|
}
|
|
199
|
-
return
|
|
335
|
+
return;
|
|
200
336
|
}
|
|
201
337
|
function automaticMark(kind, level, sequence) {
|
|
202
338
|
if (kind === 'door')
|
|
203
339
|
return String((Math.max(0, level) + 1) * 100 + sequence);
|
|
204
340
|
return `W${String(sequence).padStart(2, '0')}`;
|
|
205
341
|
}
|
|
342
|
+
function sheetMark(kind, level, sequence) {
|
|
343
|
+
const base = (Math.max(0, level) + 1) * 100;
|
|
344
|
+
return `${kind === 'door' ? 'D' : 'W'}${base + sequence}`;
|
|
345
|
+
}
|
|
206
346
|
function fallbackMark(opening) {
|
|
207
347
|
return opening.type === 'door' ? 'D?' : 'W?';
|
|
208
348
|
}
|
|
@@ -213,6 +353,46 @@ function interiorSide(wall, fallback) {
|
|
|
213
353
|
return 1;
|
|
214
354
|
return fallback;
|
|
215
355
|
}
|
|
356
|
+
/** The face that looks outdoors — where the opening tag is drawn. */
|
|
357
|
+
function exteriorSide(wall, fallback) {
|
|
358
|
+
if (wall.frontSide === 'exterior' && wall.backSide !== 'exterior')
|
|
359
|
+
return 1;
|
|
360
|
+
if (wall.backSide === 'exterior' && wall.frontSide !== 'exterior')
|
|
361
|
+
return -1;
|
|
362
|
+
return fallback;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Window tag outline. The geometry union has no `ellipse` primitive
|
|
366
|
+
* (`packages/core/src/registry/types.ts:364+`), so the ellipse is emitted as
|
|
367
|
+
* a 24-gon — indistinguishable at tag size in both SVG and the vector PDF,
|
|
368
|
+
* and it needs no change to the renderers.
|
|
369
|
+
*/
|
|
370
|
+
function ellipsePoints(cx, cy, rx, ry) {
|
|
371
|
+
const segments = 24;
|
|
372
|
+
const points = [];
|
|
373
|
+
for (let index = 0; index < segments; index++) {
|
|
374
|
+
const angle = (index / segments) * Math.PI * 2;
|
|
375
|
+
points.push([cx + Math.cos(angle) * rx, cy + Math.sin(angle) * ry]);
|
|
376
|
+
}
|
|
377
|
+
return points;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* A flat-top hexagon inscribed in the tag box: the standard door-tag
|
|
381
|
+
* outline. `width` is the full span, `height` the full depth.
|
|
382
|
+
*/
|
|
383
|
+
function hexagonPoints(cx, cy, width, height) {
|
|
384
|
+
const halfWidth = width / 2;
|
|
385
|
+
const halfHeight = height / 2;
|
|
386
|
+
const inset = Math.min(halfWidth * 0.42, halfHeight);
|
|
387
|
+
return [
|
|
388
|
+
[cx - halfWidth, cy],
|
|
389
|
+
[cx - halfWidth + inset, cy - halfHeight],
|
|
390
|
+
[cx + halfWidth - inset, cy - halfHeight],
|
|
391
|
+
[cx + halfWidth, cy],
|
|
392
|
+
[cx + halfWidth - inset, cy + halfHeight],
|
|
393
|
+
[cx - halfWidth + inset, cy + halfHeight],
|
|
394
|
+
];
|
|
395
|
+
}
|
|
216
396
|
function formatSize(width, height, unit, profile) {
|
|
217
397
|
return `${formatConstructionLength(width, unit, profile)} x ${formatConstructionLength(height, unit, profile)}`;
|
|
218
398
|
}
|
|
@@ -298,3 +478,9 @@ function titleCase(value) {
|
|
|
298
478
|
.map((part) => part.charAt(0).toLocaleUpperCase() + part.slice(1))
|
|
299
479
|
.join(' ');
|
|
300
480
|
}
|
|
481
|
+
function openingDatumOffset(opening, nodes) {
|
|
482
|
+
const wall = nodes[opening.parentId ?? ''];
|
|
483
|
+
return wall?.type === 'wall'
|
|
484
|
+
? getOpeningFloorDatum(wall, opening, nodes) - wallSupportForNodes(wall, nodes).elevation
|
|
485
|
+
: 0;
|
|
486
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function shouldFollowOpeningGrid(args: {
|
|
2
|
+
eventTime: number;
|
|
3
|
+
hasActiveHost: boolean;
|
|
4
|
+
lastHostEventTime: number;
|
|
5
|
+
pointerType?: string;
|
|
6
|
+
}): boolean;
|
|
7
|
+
export declare function shouldHandleOpeningHostLeave(nativeEvent: unknown): boolean;
|
|
8
|
+
//# sourceMappingURL=opening-grid-follow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opening-grid-follow.d.ts","sourceRoot":"","sources":["../../src/shared/opening-grid-follow.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,OAAO,CAGV;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAS1E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function shouldFollowOpeningGrid(args) {
|
|
2
|
+
if (args.pointerType === 'xr' && args.hasActiveHost)
|
|
3
|
+
return false;
|
|
4
|
+
return args.eventTime !== args.lastHostEventTime;
|
|
5
|
+
}
|
|
6
|
+
export function shouldHandleOpeningHostLeave(nativeEvent) {
|
|
7
|
+
if (!nativeEvent || typeof nativeEvent !== 'object')
|
|
8
|
+
return true;
|
|
9
|
+
const event = nativeEvent;
|
|
10
|
+
const isSpatialPointer = event.inputSource != null || event.pointerState?.inputSource != null;
|
|
11
|
+
return !isSpatialPointer || event.openingHoverBridge === true;
|
|
12
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opening-guides-runtime.d.ts","sourceRoot":"","sources":["../../src/shared/opening-guides-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"opening-guides-runtime.d.ts","sourceRoot":"","sources":["../../src/shared/opening-guides-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,OAAO,EAOZ,KAAK,WAAW,EAGhB,KAAK,QAAQ,EAEd,MAAM,kBAAkB,CAAA;AAUzB;;qFAEqF;AACrF,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEjE,sEAAsE;AACtE,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,WAAW,EAAE,CAmBf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,GAAG,MAAM,GAAG,IAAI,CAoBhB;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,GAAG,IAAI,CAmFP;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAcD;yEACyE;AACzE,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAKnD;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE;IACrD,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,IAAI,CAQP;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE;IACJ,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,EACD,eAAe,EAAE,OAAO,GACvB,IAAI,CAeN"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// editor's 3D guide store, used by the door/window move + placement tools. Lives
|
|
3
3
|
// in `nodes` (not core) because it talks to the editor store; kept thin so each
|
|
4
4
|
// tool's per-tick hook is a single call.
|
|
5
|
-
import { computeOpeningGuides, detectVerticalAlignment,
|
|
5
|
+
import { computeOpeningGuides, detectVerticalAlignment, getOpeningFloorDatum, getWallCurveFrameAt, getWallCurveLength, sceneRegistry, useScene, wallSupportForNodes, } from '@pascal-app/core';
|
|
6
6
|
import { useOpeningGuides } from '@pascal-app/editor';
|
|
7
7
|
import { resolveWallOpeningCeiling } from './wall-opening-ceiling';
|
|
8
8
|
// Parity with `snapLocalXToNeighbors`' along-wall threshold.
|
|
@@ -24,7 +24,9 @@ export function collectOpeningSiblings(wall, movingId, nodes) {
|
|
|
24
24
|
id: node.id,
|
|
25
25
|
centerS: node.position[0],
|
|
26
26
|
width: node.width,
|
|
27
|
-
centerY: node.position[1]
|
|
27
|
+
centerY: node.position[1] +
|
|
28
|
+
getOpeningFloorDatum(wall, node, nodes) -
|
|
29
|
+
wallSupportForNodes(wall, nodes).elevation,
|
|
28
30
|
height: node.height,
|
|
29
31
|
});
|
|
30
32
|
}
|
|
@@ -38,19 +40,23 @@ export function collectOpeningSiblings(wall, movingId, nodes) {
|
|
|
38
40
|
*/
|
|
39
41
|
export function resolveSillSnap(args) {
|
|
40
42
|
const siblings = collectOpeningSiblings(args.wall, args.movingId, args.nodes);
|
|
43
|
+
const datumOffset = getOpeningFloorDatum(args.wall, { position: [args.localX, args.localY, 0], width: args.width, height: args.height }, args.nodes) - wallSupportForNodes(args.wall, args.nodes).elevation;
|
|
41
44
|
const match = detectVerticalAlignment({
|
|
42
45
|
id: args.movingId,
|
|
43
46
|
centerS: args.localX,
|
|
44
47
|
width: args.width,
|
|
45
|
-
centerY: args.localY,
|
|
48
|
+
centerY: args.localY + datumOffset,
|
|
46
49
|
height: args.height,
|
|
47
50
|
}, siblings, SILL_SNAP_THRESHOLD_M);
|
|
48
51
|
return match ? args.localY + match.snap : null;
|
|
49
52
|
}
|
|
50
53
|
/** Compute and publish the 3D opening guides for the current drag tick. */
|
|
51
54
|
export function publishOpeningGuides3D(args) {
|
|
52
|
-
const { wall, centerS,
|
|
53
|
-
const
|
|
55
|
+
const { wall, centerS, width, toWorld } = args;
|
|
56
|
+
const centerY = args.centerY +
|
|
57
|
+
getOpeningFloorDatum(wall, { position: [centerS, args.centerY, 0], width, height: args.height }, args.nodes) -
|
|
58
|
+
wallSupportForNodes(wall, args.nodes).elevation;
|
|
59
|
+
const wallLength = getWallCurveLength(wall);
|
|
54
60
|
const wallHeight = resolveWallOpeningCeiling(wall, args.nodes);
|
|
55
61
|
const siblings = collectOpeningSiblings(wall, args.movingId, args.nodes);
|
|
56
62
|
const guides = computeOpeningGuides({
|
|
@@ -126,21 +132,18 @@ export function clearOpeningGuides3D() {
|
|
|
126
132
|
* publisher (which already has them) and the resize publisher (which derives
|
|
127
133
|
* them from the scene). Same frame as `wallLocalToWorld`. */
|
|
128
134
|
function makeWallToWorld(wall, levelYOffset, slabElevation) {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
slabElevation + y + levelYOffset,
|
|
135
|
-
wall.start[1] + s * sin,
|
|
136
|
-
];
|
|
135
|
+
const length = getWallCurveLength(wall);
|
|
136
|
+
return (s, y) => {
|
|
137
|
+
const { point } = getWallCurveFrameAt(wall, s / length);
|
|
138
|
+
return [point.x, slabElevation + y + levelYOffset, point.y];
|
|
139
|
+
};
|
|
137
140
|
}
|
|
138
141
|
/** Like {@link makeWallToWorld} but derives the level Y + slab elevation from the
|
|
139
142
|
* scene, for callers without a wall event — i.e. the resize handles. */
|
|
140
143
|
export function wallToWorld(wall) {
|
|
141
144
|
const levelId = wall.parentId;
|
|
142
145
|
const levelYOffset = levelId ? (sceneRegistry.nodes.get(levelId)?.position.y ?? 0) : 0;
|
|
143
|
-
const slabElevation =
|
|
146
|
+
const slabElevation = wallSupportForNodes(wall, useScene.getState().nodes).elevation;
|
|
144
147
|
return makeWallToWorld(wall, levelYOffset, slabElevation);
|
|
145
148
|
}
|
|
146
149
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opening-placement-dimensions.d.ts","sourceRoot":"","sources":["../../src/shared/opening-placement-dimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,iBAAiB,EAEtB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"opening-placement-dimensions.d.ts","sourceRoot":"","sources":["../../src/shared/opening-placement-dimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAMpB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AAKzB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,QAAQ,GAAG,UAAU,EAC9B,GAAG,EAAE,eAAe,GACnB,iBAAiB,EAAE,CA6GrB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computeOpeningGuides, isCurvedWall, useScene, } from '@pascal-app/core';
|
|
1
|
+
import { computeOpeningGuides, getWallFaceOffsets, isCurvedWall, useScene, } from '@pascal-app/core';
|
|
2
2
|
import { readFloorplanContext } from '@pascal-app/editor';
|
|
3
3
|
import { formatConstructionLength } from './construction-length';
|
|
4
4
|
import { resolveWallOpeningCeiling } from './wall-opening-ceiling';
|
|
@@ -38,8 +38,8 @@ export function buildOpeningPlacementDimensions(opening, ctx) {
|
|
|
38
38
|
// land on the same face. Walk wall's siblings (the level's other
|
|
39
39
|
// walls) via ctx.resolve to compute the centroid.
|
|
40
40
|
const outwardNormal = computeOutwardNormal(wall, ctx, dirX, dirZ);
|
|
41
|
-
const
|
|
42
|
-
const halfThickness =
|
|
41
|
+
const offsets = getWallFaceOffsets(wall);
|
|
42
|
+
const halfThickness = outwardNormal[0] * -dirZ + outwardNormal[1] * dirX >= 0 ? offsets.a : -offsets.b;
|
|
43
43
|
const FLOORPLAN_WALL_OUTER_MEASUREMENT_OFFSET = 0.32;
|
|
44
44
|
// Outer-face projection for the placement dimensions (so extension lines stay
|
|
45
45
|
// short and the layout matches the legacy treatment); centreline projection
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DoorNode, WindowNode } from '@pascal-app/core';
|
|
2
|
+
type PlanarOpening = Pick<DoorNode | WindowNode, 'position' | 'wallId' | 'parentId'>;
|
|
3
|
+
/**
|
|
4
|
+
* The wall-local plane offset (`position[2]`) a moved door / window keeps on
|
|
5
|
+
* `targetWallId`. The offset is measured from the centre plane of the wall the
|
|
6
|
+
* opening stands on (a photo-profiled slider can sit wholly outside one face),
|
|
7
|
+
* so it survives a slide along that same wall and resets to the centre plane on
|
|
8
|
+
* any other host, whose faces it says nothing about.
|
|
9
|
+
*/
|
|
10
|
+
export declare function openingPlaneOffsetOnWall(opening: PlanarOpening, targetWallId: string): number;
|
|
11
|
+
/**
|
|
12
|
+
* Where an opening's plan symbol sits across its wall. A centred opening keeps
|
|
13
|
+
* the long-standing symbol: centred in the cutout, as deep as the wall. An
|
|
14
|
+
* opening offset from the centre plane draws its frame at that offset with its
|
|
15
|
+
* own `frameDepth`, like the 3D renderer; the builder then also draws the
|
|
16
|
+
* cutout, because the wall is still cut through its whole thickness.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveOpeningPlanPlane(opening: Pick<DoorNode | WindowNode, 'position' | 'frameDepth'>, wallThickness: number): {
|
|
19
|
+
offset: number;
|
|
20
|
+
depth: number;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=opening-plane-offset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opening-plane-offset.d.ts","sourceRoot":"","sources":["../../src/shared/opening-plane-offset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE5D,KAAK,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAA;AAEpF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAG7F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,IAAI,CAAC,QAAQ,GAAG,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,EAC/D,aAAa,EAAE,MAAM,GACpB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAInC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wall-local plane offset (`position[2]`) a moved door / window keeps on
|
|
3
|
+
* `targetWallId`. The offset is measured from the centre plane of the wall the
|
|
4
|
+
* opening stands on (a photo-profiled slider can sit wholly outside one face),
|
|
5
|
+
* so it survives a slide along that same wall and resets to the centre plane on
|
|
6
|
+
* any other host, whose faces it says nothing about.
|
|
7
|
+
*/
|
|
8
|
+
export function openingPlaneOffsetOnWall(opening, targetWallId) {
|
|
9
|
+
const hostWallId = opening.wallId ?? opening.parentId;
|
|
10
|
+
return hostWallId === targetWallId ? (opening.position[2] ?? 0) : 0;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Where an opening's plan symbol sits across its wall. A centred opening keeps
|
|
14
|
+
* the long-standing symbol: centred in the cutout, as deep as the wall. An
|
|
15
|
+
* opening offset from the centre plane draws its frame at that offset with its
|
|
16
|
+
* own `frameDepth`, like the 3D renderer; the builder then also draws the
|
|
17
|
+
* cutout, because the wall is still cut through its whole thickness.
|
|
18
|
+
*/
|
|
19
|
+
export function resolveOpeningPlanPlane(opening, wallThickness) {
|
|
20
|
+
const offset = opening.position[2] ?? 0;
|
|
21
|
+
if (offset === 0 || !(opening.frameDepth > 0))
|
|
22
|
+
return { offset: 0, depth: wallThickness };
|
|
23
|
+
return { offset, depth: opening.frameDepth };
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opening-property-preview-host.d.ts","sourceRoot":"","sources":["../../src/shared/opening-property-preview-host.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,4BAA4B,CAAA;AAEpF,eAAO,MAAM,0BAA0B,EAAE,kCAiBxC,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useLiveNodeOverrides, useScene } from '@pascal-app/core';
|
|
2
|
+
export const openingPropertyPreviewHost = {
|
|
3
|
+
nodes: () => useScene.getState().nodes,
|
|
4
|
+
override: (id) => useLiveNodeOverrides.getState().get(id),
|
|
5
|
+
setOverride: (id, patch) => useLiveNodeOverrides.getState().set(id, patch),
|
|
6
|
+
clearOverrideFields: (id, fields) => useLiveNodeOverrides.getState().clearFields(id, fields),
|
|
7
|
+
markDirty: (id) => useScene.getState().markDirty(id),
|
|
8
|
+
updateNode: (id, patch) => useScene.getState().updateNode(id, patch),
|
|
9
|
+
scheduleFrame: (callback) => {
|
|
10
|
+
if (typeof requestAnimationFrame === 'function')
|
|
11
|
+
return requestAnimationFrame(callback);
|
|
12
|
+
callback(0);
|
|
13
|
+
return 0;
|
|
14
|
+
},
|
|
15
|
+
cancelFrame: (handle) => {
|
|
16
|
+
if (typeof cancelAnimationFrame === 'function')
|
|
17
|
+
cancelAnimationFrame(handle);
|
|
18
|
+
},
|
|
19
|
+
scheduleDelay: (callback, delay) => setTimeout(callback, delay),
|
|
20
|
+
cancelDelay: (handle) => clearTimeout(handle),
|
|
21
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AnyNode, AnyNodeId, DoorNode, WindowNode } from '@pascal-app/core';
|
|
2
|
+
export type OpeningPropertyPreviewDependencies = {
|
|
3
|
+
nodes: () => Readonly<Record<AnyNodeId, AnyNode>>;
|
|
4
|
+
override: (id: AnyNodeId) => Partial<AnyNode> | undefined;
|
|
5
|
+
setOverride: (id: AnyNodeId, patch: Partial<AnyNode>) => void;
|
|
6
|
+
clearOverrideFields: (id: AnyNodeId, fields: string[]) => void;
|
|
7
|
+
markDirty: (id: AnyNodeId) => void;
|
|
8
|
+
updateNode: (id: AnyNodeId, patch: Partial<AnyNode>) => void;
|
|
9
|
+
scheduleFrame: (callback: FrameRequestCallback) => number;
|
|
10
|
+
cancelFrame: (handle: number) => void;
|
|
11
|
+
scheduleDelay: (callback: () => void, delay: number) => number;
|
|
12
|
+
cancelDelay: (handle: number) => void;
|
|
13
|
+
};
|
|
14
|
+
export declare function createOpeningPropertyPreview<T extends DoorNode | WindowNode>(id: AnyNodeId, dependencies: OpeningPropertyPreviewDependencies): {
|
|
15
|
+
preview(patch: Partial<T>): void;
|
|
16
|
+
commit(patch?: Partial<T>): void;
|
|
17
|
+
cancel: () => void;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=opening-property-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opening-property-preview.d.ts","sourceRoot":"","sources":["../../src/shared/opening-property-preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGhF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,KAAK,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IACjD,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;IACzD,WAAW,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IAC7D,mBAAmB,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC9D,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,CAAA;IAClC,UAAU,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IAC5D,aAAa,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,MAAM,CAAA;IACzD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC,CAAA;AAID,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,QAAQ,GAAG,UAAU,EAC1E,EAAE,EAAE,SAAS,EACb,YAAY,EAAE,kCAAkC;mBAsD/B,OAAO,CAAC,CAAC,CAAC;mBAcV,OAAO,CAAC,CAAC,CAAC;;EAyB5B"}
|