@pascal-app/nodes 1.0.5 → 1.0.7
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/README.md +1 -0
- package/dist/beam/actions/move-endpoint.d.ts +24 -0
- package/dist/beam/actions/move-endpoint.d.ts.map +1 -0
- package/dist/beam/actions/move-endpoint.js +54 -0
- package/dist/beam/definition.d.ts +14 -0
- package/dist/beam/definition.d.ts.map +1 -0
- package/dist/beam/definition.js +173 -0
- package/dist/beam/draft-settings.d.ts +17 -0
- package/dist/beam/draft-settings.d.ts.map +1 -0
- package/dist/beam/draft-settings.js +81 -0
- package/dist/beam/drafting.d.ts +35 -0
- package/dist/beam/drafting.d.ts.map +1 -0
- package/dist/beam/drafting.js +103 -0
- package/dist/beam/floorplan-affordances.d.ts +8 -0
- package/dist/beam/floorplan-affordances.d.ts.map +1 -0
- package/dist/beam/floorplan-affordances.js +40 -0
- package/dist/beam/floorplan-move.d.ts +11 -0
- package/dist/beam/floorplan-move.d.ts.map +1 -0
- package/dist/beam/floorplan-move.js +54 -0
- package/dist/beam/floorplan.d.ts +11 -0
- package/dist/beam/floorplan.d.ts.map +1 -0
- package/dist/beam/floorplan.js +91 -0
- package/dist/beam/geometry.d.ts +19 -0
- package/dist/beam/geometry.d.ts.map +1 -0
- package/dist/beam/geometry.js +63 -0
- package/dist/beam/index.d.ts +3 -0
- package/dist/beam/index.d.ts.map +1 -0
- package/dist/beam/index.js +2 -0
- package/dist/beam/move-endpoint-tool.d.ts +21 -0
- package/dist/beam/move-endpoint-tool.d.ts.map +1 -0
- package/dist/beam/move-endpoint-tool.js +49 -0
- package/dist/beam/move-tool.d.ts +12 -0
- package/dist/beam/move-tool.d.ts.map +1 -0
- package/dist/beam/move-tool.js +114 -0
- package/dist/beam/panel-model.d.ts +28 -0
- package/dist/beam/panel-model.d.ts.map +1 -0
- package/dist/beam/panel-model.js +123 -0
- package/dist/beam/panel.d.ts +13 -0
- package/dist/beam/panel.d.ts.map +1 -0
- package/dist/beam/panel.js +107 -0
- package/dist/beam/parametrics.d.ts +3 -0
- package/dist/beam/parametrics.d.ts.map +1 -0
- package/dist/beam/parametrics.js +4 -0
- package/dist/beam/renderer.d.ts +13 -0
- package/dist/beam/renderer.d.ts.map +1 -0
- package/dist/beam/renderer.js +36 -0
- package/dist/beam/schema.d.ts +2 -0
- package/dist/beam/schema.d.ts.map +1 -0
- package/dist/beam/schema.js +1 -0
- package/dist/beam/tool.d.ts +13 -0
- package/dist/beam/tool.d.ts.map +1 -0
- package/dist/beam/tool.js +152 -0
- package/dist/box-vent/panel.d.ts.map +1 -1
- package/dist/box-vent/panel.js +8 -7
- package/dist/cabinet/batchable.d.ts +10 -0
- package/dist/cabinet/batchable.d.ts.map +1 -0
- package/dist/cabinet/batchable.js +12 -0
- package/dist/cabinet/compartment-card.d.ts.map +1 -1
- package/dist/cabinet/compartment-card.js +142 -46
- package/dist/cabinet/countertop-layout.d.ts +5 -0
- package/dist/cabinet/countertop-layout.d.ts.map +1 -1
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +3 -0
- package/dist/cabinet/dimension-input.d.ts +6 -0
- package/dist/cabinet/dimension-input.d.ts.map +1 -0
- package/dist/cabinet/dimension-input.js +8 -0
- package/dist/cabinet/essential-controls.d.ts.map +1 -1
- package/dist/cabinet/essential-controls.js +82 -17
- package/dist/cabinet/index.d.ts +1 -1
- package/dist/cabinet/index.d.ts.map +1 -1
- package/dist/cabinet/index.js +1 -1
- package/dist/cabinet/kitchen-catalog.d.ts +17 -4
- package/dist/cabinet/kitchen-catalog.d.ts.map +1 -1
- package/dist/cabinet/kitchen-catalog.js +45 -7
- package/dist/cabinet/kitchen-collection.d.ts.map +1 -1
- package/dist/cabinet/kitchen-collection.js +21 -5
- package/dist/cabinet/kitchen-module-actions.d.ts.map +1 -1
- package/dist/cabinet/kitchen-module-actions.js +107 -14
- package/dist/cabinet/neighbor-placement.d.ts +10 -0
- package/dist/cabinet/neighbor-placement.d.ts.map +1 -1
- package/dist/cabinet/panel.d.ts.map +1 -1
- package/dist/cabinet/panel.js +127 -50
- package/dist/cabinet/run-finishing.d.ts +5 -0
- package/dist/cabinet/run-finishing.d.ts.map +1 -1
- package/dist/cabinet/run-ops.d.ts +5 -0
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/run-panel.d.ts.map +1 -1
- package/dist/cabinet/run-panel.js +203 -52
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +8 -5
- package/dist/ceiling/build-up-section.d.ts +7 -0
- package/dist/ceiling/build-up-section.d.ts.map +1 -0
- package/dist/ceiling/build-up-section.js +57 -0
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.js +3 -1
- package/dist/ceiling/floorplan-affordances.d.ts +112 -0
- package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
- package/dist/ceiling/materials.d.ts +5 -0
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +17 -0
- package/dist/ceiling/panel-model.d.ts +13 -0
- package/dist/ceiling/panel-model.d.ts.map +1 -0
- package/dist/ceiling/panel-model.js +49 -0
- package/dist/ceiling/panel.d.ts.map +1 -1
- package/dist/ceiling/panel.js +82 -18
- package/dist/ceiling/renderer.d.ts.map +1 -1
- package/dist/ceiling/renderer.js +10 -4
- package/dist/ceiling/tool.d.ts.map +1 -1
- package/dist/ceiling/tool.js +24 -4
- package/dist/chimney/panel.d.ts.map +1 -1
- package/dist/chimney/panel.js +113 -41
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.js +3 -0
- package/dist/column/floorplan.d.ts.map +1 -1
- package/dist/column/floorplan.js +17 -0
- package/dist/column/hosted-resize.d.ts +28 -1
- package/dist/column/hosted-resize.d.ts.map +1 -1
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +125 -37
- package/dist/column/post-options.d.ts +10 -0
- package/dist/column/post-options.d.ts.map +1 -0
- package/dist/column/post-options.js +71 -0
- package/dist/column/post-placement.d.ts +78 -0
- package/dist/column/post-placement.d.ts.map +1 -0
- package/dist/column/post-placement.js +157 -0
- package/dist/column/post-section.d.ts +17 -0
- package/dist/column/post-section.d.ts.map +1 -0
- package/dist/column/post-section.js +95 -0
- package/dist/column/post-tool.d.ts +11 -0
- package/dist/column/post-tool.d.ts.map +1 -0
- package/dist/column/post-tool.js +94 -0
- package/dist/column/tool.d.ts +3 -10
- package/dist/column/tool.d.ts.map +1 -1
- package/dist/column/tool.js +13 -1
- package/dist/cupola/panel.d.ts.map +1 -1
- package/dist/cupola/panel.js +14 -7
- package/dist/door/actions.d.ts +7 -0
- package/dist/door/actions.d.ts.map +1 -0
- package/dist/door/actions.js +32 -0
- package/dist/door/contextual-dimensions.d.ts.map +1 -1
- package/dist/door/contextual-dimensions.js +11 -1
- package/dist/door/definition.d.ts.map +1 -1
- package/dist/door/definition.js +34 -7
- package/dist/door/floorplan-affordances.d.ts.map +1 -1
- package/dist/door/floorplan-affordances.js +5 -2
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +28 -6
- package/dist/door/floorplan.d.ts +2 -0
- package/dist/door/floorplan.d.ts.map +1 -1
- package/dist/door/floorplan.js +89 -16
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +60 -16
- package/dist/door/paint.d.ts +2 -7
- package/dist/door/paint.d.ts.map +1 -1
- package/dist/door/paint.js +26 -2
- package/dist/door/panel.d.ts.map +1 -1
- package/dist/door/panel.js +242 -90
- package/dist/door/parametrics.js +1 -1
- package/dist/door/placement.d.ts.map +1 -1
- package/dist/door/placement.js +9 -2
- package/dist/door/swing.d.ts +22 -0
- package/dist/door/swing.d.ts.map +1 -0
- package/dist/door/swing.js +36 -0
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +76 -29
- package/dist/dormer/panel-actions-section.d.ts.map +1 -1
- package/dist/dormer/panel-actions-section.js +3 -1
- package/dist/dormer/panel-position-section.d.ts.map +1 -1
- package/dist/dormer/panel-position-section.js +4 -3
- package/dist/dormer/panel-windows-section.d.ts.map +1 -1
- package/dist/dormer/panel-windows-section.js +38 -1
- package/dist/dormer/panel.d.ts.map +1 -1
- package/dist/dormer/panel.js +24 -18
- package/dist/downspout/inspector-editors.d.ts.map +1 -1
- package/dist/downspout/inspector-editors.js +3 -2
- package/dist/duct-fitting/inspector-editors.d.ts.map +1 -1
- package/dist/duct-fitting/inspector-editors.js +6 -1
- package/dist/duct-fitting/tool.d.ts.map +1 -1
- package/dist/duct-fitting/tool.js +11 -2
- package/dist/duct-terminal/tool.d.ts.map +1 -1
- package/dist/duct-terminal/tool.js +11 -2
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +41 -18
- package/dist/eyebrow-vent/panel.d.ts.map +1 -1
- package/dist/eyebrow-vent/panel.js +16 -6
- package/dist/fence/drafting.d.ts +2 -3
- package/dist/fence/drafting.d.ts.map +1 -1
- package/dist/fence/drafting.js +2 -3
- package/dist/fence/inspector-editors.d.ts.map +1 -1
- package/dist/fence/inspector-editors.js +64 -21
- package/dist/fence/move-endpoint-tool.d.ts.map +1 -1
- package/dist/fence/move-endpoint-tool.js +11 -2
- package/dist/fence/system.d.ts.map +1 -1
- package/dist/fence/system.js +13 -0
- package/dist/fence-feature/actions.d.ts.map +1 -1
- package/dist/fence-feature/actions.js +5 -2
- package/dist/fence-feature/inspector.d.ts.map +1 -1
- package/dist/fence-feature/inspector.js +150 -34
- package/dist/fence-feature/move-session.d.ts +1 -1
- package/dist/floor-opening/floorplan.d.ts +29 -6
- package/dist/floor-opening/floorplan.d.ts.map +1 -1
- package/dist/floor-opening/floorplan.js +172 -14
- package/dist/gutter/downspouts-panel.d.ts.map +1 -1
- package/dist/gutter/downspouts-panel.js +14 -2
- package/dist/hvac-equipment/tool.d.ts.map +1 -1
- package/dist/hvac-equipment/tool.js +3 -2
- package/dist/i18n/definition-messages.d.ts +5 -0
- package/dist/i18n/definition-messages.d.ts.map +1 -0
- package/dist/i18n/definition-messages.js +771 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/item/authored-params.d.ts.map +1 -1
- package/dist/item/authored-params.js +19 -4
- package/dist/item/floorplan.d.ts +1 -1
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/panel.d.ts.map +1 -1
- package/dist/item/panel.js +9 -7
- package/dist/liquid-line/tool.d.ts.map +1 -1
- package/dist/liquid-line/tool.js +10 -3
- package/dist/measurement/tool.d.ts +1 -1
- package/dist/measurement/tool.d.ts.map +1 -1
- package/dist/measurement/tool.js +8 -8
- package/dist/pipe-fitting/tool.d.ts.map +1 -1
- package/dist/pipe-fitting/tool.js +3 -2
- package/dist/pipe-trap/tool.d.ts.map +1 -1
- package/dist/pipe-trap/tool.js +7 -2
- package/dist/procedural-item/renderer.d.ts.map +1 -1
- package/dist/procedural-item/renderer.js +8 -1
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +22 -9
- package/dist/roof/barrel-panel.d.ts.map +1 -1
- package/dist/roof/barrel-panel.js +7 -3
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.js +33 -3
- package/dist/roof/floorplan-overrides.d.ts +22 -0
- package/dist/roof/floorplan-overrides.d.ts.map +1 -0
- package/dist/roof/floorplan-overrides.js +46 -0
- package/dist/roof/floorplan-tool.d.ts +9 -0
- package/dist/roof/floorplan-tool.d.ts.map +1 -0
- package/dist/roof/floorplan-tool.js +168 -0
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +131 -41
- package/dist/roof/glazing-controls.d.ts +2 -1
- package/dist/roof/glazing-controls.d.ts.map +1 -1
- package/dist/roof/glazing-controls.js +51 -13
- package/dist/roof/glazing-panel-editor.d.ts.map +1 -1
- package/dist/roof/glazing-panel-editor.js +40 -13
- package/dist/roof/glazing-panel.d.ts.map +1 -1
- package/dist/roof/glazing-panel.js +73 -9
- package/dist/roof/paint.d.ts +19 -0
- package/dist/roof/paint.d.ts.map +1 -0
- package/dist/roof/paint.js +158 -0
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +90 -22
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/renderer.js +13 -2
- package/dist/roof/roof-footprint-source.d.ts +17 -0
- package/dist/roof/roof-footprint-source.d.ts.map +1 -1
- package/dist/roof/roof-footprint-source.js +14 -0
- package/dist/roof/roof-footprint.d.ts +36 -2
- package/dist/roof/roof-footprint.d.ts.map +1 -1
- package/dist/roof/roof-footprint.js +124 -2
- package/dist/roof/roof-materials.d.ts.map +1 -1
- package/dist/roof/roof-materials.js +10 -1
- package/dist/roof/roof-placement-mode.d.ts +0 -2
- package/dist/roof/roof-placement-mode.d.ts.map +1 -1
- package/dist/roof/roof-placement-mode.js +8 -6
- package/dist/roof/roof-plan-creases.d.ts +50 -0
- package/dist/roof/roof-plan-creases.d.ts.map +1 -0
- package/dist/roof/roof-plan-creases.js +194 -0
- package/dist/roof/roof-ridge-mode.d.ts +20 -0
- package/dist/roof/roof-ridge-mode.d.ts.map +1 -0
- package/dist/roof/roof-ridge-mode.js +16 -0
- package/dist/roof/tool.d.ts +17 -4
- package/dist/roof/tool.d.ts.map +1 -1
- package/dist/roof/tool.js +211 -113
- package/dist/roof/wall-catch.d.ts +106 -0
- package/dist/roof/wall-catch.d.ts.map +1 -0
- package/dist/roof/wall-catch.js +267 -0
- package/dist/roof-segment/build-up-section.d.ts +9 -0
- package/dist/roof-segment/build-up-section.d.ts.map +1 -0
- package/dist/roof-segment/build-up-section.js +191 -0
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.js +50 -5
- package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
- package/dist/roof-segment/floorplan-affordances.js +68 -19
- package/dist/roof-segment/floorplan.d.ts.map +1 -1
- package/dist/roof-segment/floorplan.js +16 -12
- package/dist/roof-segment/paint.d.ts +3 -1
- package/dist/roof-segment/paint.d.ts.map +1 -1
- package/dist/roof-segment/paint.js +43 -2
- package/dist/roof-segment/panel-model.d.ts +23 -0
- package/dist/roof-segment/panel-model.d.ts.map +1 -0
- package/dist/roof-segment/panel-model.js +64 -0
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +96 -14
- package/dist/roof-segment/parametrics.d.ts.map +1 -1
- package/dist/roof-segment/parametrics.js +4 -0
- package/dist/roof-segment/renderer.d.ts.map +1 -1
- package/dist/roof-segment/renderer.js +26 -5
- package/dist/separator/definition.d.ts.map +1 -1
- package/dist/separator/definition.js +10 -12
- package/dist/separator/floorplan-affordances.d.ts +9 -0
- package/dist/separator/floorplan-affordances.d.ts.map +1 -0
- package/dist/separator/floorplan-affordances.js +23 -0
- package/dist/separator/floorplan.d.ts +9 -0
- package/dist/separator/floorplan.d.ts.map +1 -0
- package/dist/separator/floorplan.js +54 -0
- package/dist/separator/renderer.d.ts +4 -0
- package/dist/separator/renderer.d.ts.map +1 -1
- package/dist/separator/renderer.js +21 -6
- package/dist/separator/selection.d.ts +10 -0
- package/dist/separator/selection.d.ts.map +1 -0
- package/dist/separator/selection.js +35 -0
- package/dist/shared/build-up-controls.d.ts +88 -0
- package/dist/shared/build-up-controls.d.ts.map +1 -0
- package/dist/shared/build-up-controls.js +139 -0
- package/dist/shared/curtain-opening-limits.d.ts.map +1 -1
- package/dist/shared/curtain-opening-limits.js +44 -14
- package/dist/shared/item-interaction-actions.d.ts.map +1 -1
- package/dist/shared/item-interaction-actions.js +11 -2
- package/dist/shared/layer-thickness.d.ts +2 -0
- package/dist/shared/layer-thickness.d.ts.map +1 -0
- package/dist/shared/layer-thickness.js +3 -0
- package/dist/shared/move-roof-tool.d.ts.map +1 -1
- package/dist/shared/move-roof-tool.js +100 -5
- package/dist/shared/node-batch/batchable.d.ts +2 -0
- package/dist/shared/node-batch/batchable.d.ts.map +1 -1
- package/dist/shared/node-batch/batchable.js +4 -0
- package/dist/shared/node-batch/candidates.d.ts +21 -5
- package/dist/shared/node-batch/candidates.d.ts.map +1 -1
- package/dist/shared/node-batch/candidates.js +85 -50
- package/dist/shared/node-batch/system.d.ts.map +1 -1
- package/dist/shared/node-batch/system.js +24 -15
- package/dist/shared/opening-casing-move.d.ts +16 -0
- package/dist/shared/opening-casing-move.d.ts.map +1 -0
- package/dist/shared/opening-casing-move.js +33 -0
- package/dist/shared/opening-casing-section.d.ts +15 -0
- package/dist/shared/opening-casing-section.d.ts.map +1 -0
- package/dist/shared/opening-casing-section.js +38 -0
- package/dist/shared/opening-casing.d.ts +26 -0
- package/dist/shared/opening-casing.d.ts.map +1 -0
- package/dist/shared/opening-casing.js +80 -0
- package/dist/shared/opening-depth-position.d.ts +13 -0
- package/dist/shared/opening-depth-position.d.ts.map +1 -0
- package/dist/shared/opening-depth-position.js +34 -0
- package/dist/shared/opening-documentation.d.ts.map +1 -1
- package/dist/shared/opening-documentation.js +17 -8
- package/dist/shared/opening-guides-runtime.d.ts +2 -1
- package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
- package/dist/shared/opening-guides-runtime.js +11 -7
- package/dist/shared/opening-labels.d.ts +11 -0
- package/dist/shared/opening-labels.d.ts.map +1 -0
- package/dist/shared/opening-labels.js +46 -0
- package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
- package/dist/shared/opening-placement-dimensions.js +11 -9
- package/dist/shared/opening-plane-offset.d.ts +4 -3
- package/dist/shared/opening-plane-offset.d.ts.map +1 -1
- package/dist/shared/opening-plane-offset.js +7 -4
- package/dist/shared/opening-swap.d.ts +8 -0
- package/dist/shared/opening-swap.d.ts.map +1 -0
- package/dist/shared/opening-swap.js +18 -0
- package/dist/shared/polygon-vertex-affordance.d.ts +19 -0
- package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
- package/dist/shared/polygon-vertex-affordance.js +65 -6
- package/dist/shared/roof-opening-host.d.ts +2 -1
- package/dist/shared/roof-opening-host.d.ts.map +1 -1
- package/dist/shared/roof-opening-host.js +14 -5
- package/dist/shared/roof-wall-opening-cut.d.ts.map +1 -1
- package/dist/shared/roof-wall-opening-cut.js +14 -6
- package/dist/shared/roof-wall-opening-placement.d.ts +2 -1
- package/dist/shared/roof-wall-opening-placement.d.ts.map +1 -1
- package/dist/shared/roof-wall-opening-placement.js +6 -4
- package/dist/shared/run-hanger-inspector.d.ts.map +1 -1
- package/dist/shared/run-hanger-inspector.js +39 -5
- package/dist/shared/system-check-panel.d.ts.map +1 -1
- package/dist/shared/system-check-panel.js +94 -15
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +6 -3
- package/dist/shelf/definition.d.ts.map +1 -1
- package/dist/shelf/definition.js +2 -0
- package/dist/site/ground-hole.d.ts +3 -3
- package/dist/site/ground-hole.js +3 -3
- package/dist/site/ground-veil.d.ts +5 -12
- package/dist/site/ground-veil.d.ts.map +1 -1
- package/dist/site/ground-veil.js +9 -33
- package/dist/site/panel.d.ts.map +1 -1
- package/dist/site/panel.js +52 -12
- package/dist/site/renderer.d.ts.map +1 -1
- package/dist/site/renderer.js +52 -23
- package/dist/skylight/panel.d.ts.map +1 -1
- package/dist/skylight/panel.js +49 -19
- package/dist/slab/deck-geometry.d.ts +28 -0
- package/dist/slab/deck-geometry.d.ts.map +1 -0
- package/dist/slab/deck-geometry.js +320 -0
- package/dist/slab/definition.d.ts +2 -1
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.js +6 -1
- package/dist/slab/dependency-tracker.d.ts.map +1 -1
- package/dist/slab/dependency-tracker.js +3 -0
- package/dist/slab/floorplan-affordances.d.ts +500 -0
- package/dist/slab/floorplan-affordances.d.ts.map +1 -1
- package/dist/slab/geometry.d.ts.map +1 -1
- package/dist/slab/geometry.js +46 -9
- package/dist/slab/panel.d.ts.map +1 -1
- package/dist/slab/panel.js +97 -21
- package/dist/slab/renderer.d.ts +11 -0
- package/dist/slab/renderer.d.ts.map +1 -0
- package/dist/slab/renderer.js +19 -0
- package/dist/slab/system.d.ts.map +1 -1
- package/dist/slab/system.js +12 -1
- package/dist/solar-panel/panel.d.ts.map +1 -1
- package/dist/solar-panel/panel.js +49 -14
- package/dist/stair/construction-controls.d.ts +3 -1
- package/dist/stair/construction-controls.d.ts.map +1 -1
- package/dist/stair/construction-controls.js +75 -12
- package/dist/stair/paint.d.ts +6 -0
- package/dist/stair/paint.d.ts.map +1 -1
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +243 -51
- package/dist/stair/parametrics.d.ts.map +1 -1
- package/dist/stair/parametrics.js +7 -0
- package/dist/stair/placement-defaults.d.ts +18 -0
- package/dist/stair/placement-defaults.d.ts.map +1 -0
- package/dist/stair/placement-defaults.js +27 -0
- package/dist/stair/railing-controls.d.ts.map +1 -1
- package/dist/stair/railing-controls.js +78 -18
- package/dist/stair/renderer.d.ts.map +1 -1
- package/dist/stair/renderer.js +16 -10
- package/dist/stair/structure-controls.d.ts +18 -0
- package/dist/stair/structure-controls.d.ts.map +1 -0
- package/dist/stair/structure-controls.js +275 -0
- package/dist/stair/tool.d.ts.map +1 -1
- package/dist/stair/tool.js +13 -9
- package/dist/stair/use-stair-render-data.d.ts +41 -0
- package/dist/stair/use-stair-render-data.d.ts.map +1 -1
- package/dist/stair-segment/panel.d.ts.map +1 -1
- package/dist/stair-segment/panel.js +65 -18
- package/dist/turbine-vent/panel.d.ts.map +1 -1
- package/dist/turbine-vent/panel.js +14 -5
- package/dist/unit/unit-panel.d.ts.map +1 -1
- package/dist/unit/unit-panel.js +28 -12
- package/dist/wall/actions.d.ts +1 -1
- package/dist/wall/actions.d.ts.map +1 -1
- package/dist/wall/actions.js +17 -13
- package/dist/wall/construction-dimensions.d.ts +6 -0
- package/dist/wall/construction-dimensions.d.ts.map +1 -1
- package/dist/wall/construction-dimensions.js +8 -0
- package/dist/wall/contextual-dimensions.d.ts +6 -0
- package/dist/wall/contextual-dimensions.d.ts.map +1 -1
- package/dist/wall/contextual-dimensions.js +104 -17
- package/dist/wall/curtain-opening-frame.d.ts.map +1 -1
- package/dist/wall/curtain-opening-frame.js +6 -4
- package/dist/wall/curtain-wall-layout.d.ts +1 -1
- package/dist/wall/curtain-wall-layout.d.ts.map +1 -1
- package/dist/wall/curtain-wall-layout.js +6 -4
- package/dist/wall/curtain-wall-materials.d.ts.map +1 -1
- package/dist/wall/curtain-wall-materials.js +8 -3
- package/dist/wall/curtain-wall-panel.d.ts.map +1 -1
- package/dist/wall/curtain-wall-panel.js +241 -37
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +2 -3
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +20 -5
- package/dist/wall/floorplan-affordances.d.ts.map +1 -1
- package/dist/wall/floorplan-affordances.js +9 -6
- package/dist/wall/floorplan-move.d.ts.map +1 -1
- package/dist/wall/floorplan-move.js +66 -16
- package/dist/wall/floorplan.d.ts +4 -5
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +62 -46
- package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
- package/dist/wall/move-endpoint-tool.js +1 -0
- package/dist/wall/move-tool.d.ts.map +1 -1
- package/dist/wall/move-tool.js +77 -12
- package/dist/wall/paint.d.ts +2 -2
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +11 -4
- package/dist/wall/panel-model.d.ts +17 -2
- package/dist/wall/panel-model.d.ts.map +1 -1
- package/dist/wall/panel-model.js +158 -18
- package/dist/wall/panel.d.ts +8 -0
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +228 -156
- package/dist/wall/parametrics.d.ts +1 -1
- package/dist/wall/parametrics.d.ts.map +1 -1
- package/dist/wall/parametrics.js +14 -1
- package/dist/wall/railing-wall-adapter.d.ts +7 -0
- package/dist/wall/railing-wall-adapter.d.ts.map +1 -0
- package/dist/wall/railing-wall-adapter.js +38 -0
- package/dist/wall/railing-wall-floorplan.d.ts +8 -0
- package/dist/wall/railing-wall-floorplan.d.ts.map +1 -0
- package/dist/wall/railing-wall-floorplan.js +27 -0
- package/dist/wall/railing-wall-geometry.d.ts +12 -0
- package/dist/wall/railing-wall-geometry.d.ts.map +1 -0
- package/dist/wall/railing-wall-geometry.js +51 -0
- package/dist/wall/railing-wall-guard.d.ts +81 -0
- package/dist/wall/railing-wall-guard.d.ts.map +1 -0
- package/dist/wall/railing-wall-guard.js +435 -0
- package/dist/wall/railing-wall-materials.d.ts +11 -0
- package/dist/wall/railing-wall-materials.d.ts.map +1 -0
- package/dist/wall/railing-wall-materials.js +31 -0
- package/dist/wall/railing-wall-panel-model.d.ts +30 -0
- package/dist/wall/railing-wall-panel-model.d.ts.map +1 -0
- package/dist/wall/railing-wall-panel-model.js +117 -0
- package/dist/wall/railing-wall-panel.d.ts +17 -0
- package/dist/wall/railing-wall-panel.d.ts.map +1 -0
- package/dist/wall/railing-wall-panel.js +42 -0
- package/dist/wall/rectangle-command.d.ts +79 -1
- package/dist/wall/rectangle-command.d.ts.map +1 -1
- package/dist/wall/rectangle-tool.d.ts.map +1 -1
- package/dist/wall/rectangle-tool.js +2 -0
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +3 -1
- package/dist/wall/skirting-floor-gaps.d.ts +8 -0
- package/dist/wall/skirting-floor-gaps.d.ts.map +1 -0
- package/dist/wall/skirting-floor-gaps.js +36 -0
- package/dist/wall/system.d.ts +0 -14
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +6 -1
- package/dist/wall/tool.d.ts +16 -0
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +160 -47
- package/dist/wall/treatments.d.ts +3 -0
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +30 -7
- package/dist/window/actions.d.ts +7 -0
- package/dist/window/actions.d.ts.map +1 -0
- package/dist/window/actions.js +29 -0
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.js +11 -2
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +5 -0
- package/dist/window/floorplan.d.ts +2 -0
- package/dist/window/floorplan.d.ts.map +1 -1
- package/dist/window/floorplan.js +58 -1
- package/dist/window/mechanism.d.ts.map +1 -1
- package/dist/window/mechanism.js +21 -1
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +10 -3
- package/dist/window/paint.d.ts +2 -7
- package/dist/window/paint.d.ts.map +1 -1
- package/dist/window/paint.js +31 -3
- package/dist/window/panel.d.ts.map +1 -1
- package/dist/window/panel.js +311 -69
- package/dist/window/placement.d.ts.map +1 -1
- package/dist/window/placement.js +5 -1
- package/dist/window/swing.d.ts +13 -0
- package/dist/window/swing.d.ts.map +1 -0
- package/dist/window/swing.js +16 -0
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +19 -14
- package/dist/zone/floorplan-affordances.d.ts +136 -0
- package/dist/zone/floorplan-affordances.d.ts.map +1 -1
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +34 -9
- package/dist/zone/renderer.d.ts.map +1 -1
- package/dist/zone/renderer.js +9 -5
- package/package.json +14 -14
- package/dist/site/generic-foundation-geometry.d.ts +0 -16
- package/dist/site/generic-foundation-geometry.d.ts.map +0 -1
- package/dist/site/generic-foundation-geometry.js +0 -75
- package/dist/site/generic-foundation.d.ts +0 -4
- package/dist/site/generic-foundation.d.ts.map +0 -1
- package/dist/site/generic-foundation.js +0 -91
|
@@ -1,37 +1,89 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { usePascalI18n } from '@pascal-app/core';
|
|
3
4
|
import { SegmentedControl, SliderControl, ToggleControl } from '@pascal-app/editor';
|
|
4
5
|
import { ArrowDown, ArrowUp, FlipHorizontal2, Minus, Plus, Trash } from 'lucide-react';
|
|
5
6
|
import { COOKTOP_DEFAULT_GAS_LAYOUT, COOKTOP_DEFAULT_INDUCTION_LAYOUT, compartmentCooktopBurnersOn, compartmentCooktopElementCount, compartmentCooktopLayout, compartmentCooktopShowGrate, compartmentDoorType, compartmentDrawerCount, compartmentPullOutPantryRackStyle, compartmentShelfCount, compartmentSinkLayout, FRIDGE_COLUMN_HEIGHT, isCooktopCompartmentType, isFridgeCompartmentType, isHoodCompartmentType, newCabinetCompartment, patchCompartment, } from './stack.js';
|
|
6
7
|
const COMPARTMENT_TYPE_OPTIONS = [
|
|
7
|
-
{
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
{
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
{ value: '
|
|
8
|
+
{
|
|
9
|
+
value: 'shelf',
|
|
10
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.shelf', message: 'Shelf' },
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
value: 'drawer',
|
|
14
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.drawer', message: 'Drawer' },
|
|
15
|
+
},
|
|
16
|
+
{ value: 'door', label: /* i18n */ { id: 'node.cabinet.compartmentCard.door', message: 'Door' } },
|
|
17
|
+
{ value: 'oven', label: /* i18n */ { id: 'node.cabinet.compartmentCard.oven', message: 'Oven' } },
|
|
18
|
+
{
|
|
19
|
+
value: 'microwave',
|
|
20
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.micro', message: 'Micro' },
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
value: 'dishwasher',
|
|
24
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.washer', message: 'Washer' },
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
value: 'cooktop',
|
|
28
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.hob', message: 'Hob' },
|
|
29
|
+
},
|
|
30
|
+
{ value: 'sink', label: /* i18n */ { id: 'node.cabinet.compartmentCard.sink', message: 'Sink' } },
|
|
31
|
+
{
|
|
32
|
+
value: 'pull-out-pantry',
|
|
33
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.pullout', message: 'Pullout' },
|
|
34
|
+
},
|
|
16
35
|
];
|
|
17
|
-
const FRIDGE_TYPE_OPTION = {
|
|
18
|
-
|
|
36
|
+
const FRIDGE_TYPE_OPTION = {
|
|
37
|
+
value: 'fridge',
|
|
38
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.fridge', message: 'Fridge' },
|
|
39
|
+
};
|
|
40
|
+
const HOOD_TYPE_OPTION = {
|
|
41
|
+
value: 'hood',
|
|
42
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.chimney', message: 'Chimney' },
|
|
43
|
+
};
|
|
19
44
|
const COMPARTMENT_TYPE_CONTROL_OPTIONS = [...COMPARTMENT_TYPE_OPTIONS, FRIDGE_TYPE_OPTION];
|
|
20
45
|
const WALL_COMPARTMENT_TYPE_CONTROL_OPTIONS = [
|
|
21
|
-
{
|
|
22
|
-
|
|
23
|
-
|
|
46
|
+
{
|
|
47
|
+
value: 'shelf',
|
|
48
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.shelf', message: 'Shelf' },
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
value: 'drawer',
|
|
52
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.drawer', message: 'Drawer' },
|
|
53
|
+
},
|
|
54
|
+
{ value: 'door', label: /* i18n */ { id: 'node.cabinet.compartmentCard.door', message: 'Door' } },
|
|
24
55
|
HOOD_TYPE_OPTION,
|
|
25
56
|
];
|
|
26
57
|
const FRIDGE_STYLE_OPTIONS = [
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
58
|
+
{
|
|
59
|
+
value: 'fridge-single',
|
|
60
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.single', message: 'Single' },
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
value: 'fridge-double',
|
|
64
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.double', message: 'Double' },
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
value: 'fridge-top-freezer',
|
|
68
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.topFreezer', message: 'Top Freezer' },
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
value: 'fridge-bottom-freezer',
|
|
72
|
+
label: /* i18n */ {
|
|
73
|
+
id: 'node.cabinet.compartmentCard.bottomFreezer',
|
|
74
|
+
message: 'Bottom Freezer',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
31
77
|
];
|
|
32
78
|
const COOKTOP_STYLE_OPTIONS = [
|
|
33
|
-
{
|
|
34
|
-
|
|
79
|
+
{
|
|
80
|
+
value: 'cooktop-gas',
|
|
81
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.gas', message: 'Gas' },
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
value: 'cooktop-induction',
|
|
85
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.induction', message: 'Induction' },
|
|
86
|
+
},
|
|
35
87
|
];
|
|
36
88
|
const GAS_COOKTOP_LAYOUT_OPTIONS = [
|
|
37
89
|
{ value: 'gas-2burner', label: '2' },
|
|
@@ -44,27 +96,58 @@ const INDUCTION_COOKTOP_LAYOUT_OPTIONS = [
|
|
|
44
96
|
{ value: 'induction-4zone', label: '4' },
|
|
45
97
|
];
|
|
46
98
|
const SINK_LAYOUT_OPTIONS = [
|
|
47
|
-
{
|
|
48
|
-
|
|
99
|
+
{
|
|
100
|
+
value: 'single',
|
|
101
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.single', message: 'Single' },
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
value: 'double',
|
|
105
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.double', message: 'Double' },
|
|
106
|
+
},
|
|
49
107
|
{ value: 'double-offset', label: '60/40' },
|
|
50
108
|
];
|
|
51
109
|
const PULL_OUT_PANTRY_RACK_STYLE_OPTIONS = [
|
|
52
|
-
{ value: 'wire', label: 'Wire' },
|
|
53
|
-
{ value: 'tray', label: 'Tray' },
|
|
54
|
-
{
|
|
110
|
+
{ value: 'wire', label: /* i18n */ { id: 'node.cabinet.compartmentCard.wire', message: 'Wire' } },
|
|
111
|
+
{ value: 'tray', label: /* i18n */ { id: 'node.cabinet.compartmentCard.tray', message: 'Tray' } },
|
|
112
|
+
{
|
|
113
|
+
value: 'glass',
|
|
114
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.glass', message: 'Glass' },
|
|
115
|
+
},
|
|
55
116
|
];
|
|
56
117
|
const DOOR_TYPE_OPTIONS = [
|
|
57
|
-
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
118
|
+
{
|
|
119
|
+
value: 'single-left',
|
|
120
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.left', message: 'Left' },
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
value: 'single-right',
|
|
124
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.right', message: 'Right' },
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
value: 'double',
|
|
128
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.double', message: 'Double' },
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
value: 'glass',
|
|
132
|
+
label: /* i18n */ { id: 'node.cabinet.compartmentCard.glass', message: 'Glass' },
|
|
133
|
+
},
|
|
61
134
|
];
|
|
62
135
|
const ICON_BUTTON_CLASS = 'flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-border/40 bg-black/4 dark:bg-[#2C2C2E] text-muted-foreground transition-colors hover:bg-black/8 dark:hover:bg-[#343437] hover:text-foreground disabled:opacity-30 disabled:hover:bg-black/4 dark:disabled:hover:bg-[#2C2C2E] disabled:hover:text-muted-foreground';
|
|
63
136
|
const STEPPER_BUTTON_CLASS = 'flex h-8 w-8 items-center justify-center rounded-md border border-border/40 bg-black/4 dark:bg-[#2C2C2E] text-muted-foreground transition-colors hover:bg-black/8 dark:hover:bg-[#343437] hover:text-foreground';
|
|
64
137
|
function Stepper({ label, value, onChange, min, max, }) {
|
|
65
|
-
|
|
138
|
+
const i18n = usePascalI18n();
|
|
139
|
+
return (_jsxs("div", { className: "flex items-center justify-between rounded-lg border border-border/30 bg-black/3 dark:bg-black/10 px-2 py-1.5", children: [_jsx("span", { className: "text-[11px] font-medium text-muted-foreground", children: label }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("button", { "aria-label": i18n._({
|
|
140
|
+
id: 'node.cabinet.compartmentCard.decrease',
|
|
141
|
+
message: 'Decrease {label}',
|
|
142
|
+
values: { label },
|
|
143
|
+
}), className: STEPPER_BUTTON_CLASS, onClick: () => onChange(Math.max(min, value - 1)), type: "button", children: _jsx(Minus, { className: "h-3.5 w-3.5" }) }), _jsx("span", { className: "min-w-7 text-center text-xs font-medium tabular-nums text-foreground", children: value }), _jsx("button", { "aria-label": i18n._({
|
|
144
|
+
id: 'node.cabinet.compartmentCard.increase',
|
|
145
|
+
message: 'Increase {label}',
|
|
146
|
+
values: { label },
|
|
147
|
+
}), className: STEPPER_BUTTON_CLASS, onClick: () => onChange(Math.min(max, value + 1)), type: "button", children: _jsx(Plus, { className: "h-3.5 w-3.5" }) })] })] }));
|
|
66
148
|
}
|
|
67
149
|
function CompartmentTypeControl({ value, onChange, includeHood = false, wallCabinet = false, }) {
|
|
150
|
+
const i18n = usePascalI18n();
|
|
68
151
|
const options = wallCabinet
|
|
69
152
|
? WALL_COMPARTMENT_TYPE_CONTROL_OPTIONS
|
|
70
153
|
: includeHood
|
|
@@ -77,19 +160,26 @@ function CompartmentTypeControl({ value, onChange, includeHood = false, wallCabi
|
|
|
77
160
|
isSelected
|
|
78
161
|
? 'bg-white dark:bg-[#3e3e3e] text-foreground shadow-sm ring-1 ring-border/50'
|
|
79
162
|
: 'text-muted-foreground hover:bg-black/4 dark:hover:bg-white/5 hover:text-foreground',
|
|
80
|
-
].join(' '), onClick: () => onChange(option.value), type: "button", children: option.label }, option.value));
|
|
163
|
+
].join(' '), onClick: () => onChange(option.value), type: "button", children: i18n._(option.label) }, option.value));
|
|
81
164
|
}) }));
|
|
82
165
|
}
|
|
83
166
|
export function CompartmentCard({ compartment, index, displayIndex, total, carcassHeight, resolvedHeight, width, onReplace, onResizeHeight, onRemove, onMove, allowHood = false, wallCabinet = false, }) {
|
|
167
|
+
const i18n = usePascalI18n();
|
|
84
168
|
const type = compartment.type;
|
|
85
169
|
const isFridge = isFridgeCompartmentType(type);
|
|
86
170
|
const isHood = isHoodCompartmentType(type);
|
|
87
171
|
const isCooktop = isCooktopCompartmentType(type);
|
|
88
172
|
return (_jsxs("div", { className: "rounded-lg border border-border/40 bg-black/3 dark:bg-[#252527] p-2", children: [_jsxs("div", { className: "flex items-center justify-between pb-1.5", children: [_jsx("span", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: displayIndex === 0
|
|
89
|
-
? 'Top'
|
|
173
|
+
? i18n._({ id: 'node.cabinet.compartmentCard.top', message: 'Top' })
|
|
90
174
|
: displayIndex === total - 1
|
|
91
|
-
? 'Bottom'
|
|
92
|
-
: `#${total - displayIndex}` }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", {
|
|
175
|
+
? i18n._({ id: 'node.cabinet.compartmentCard.bottom', message: 'Bottom' })
|
|
176
|
+
: `#${total - displayIndex}` }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { "aria-label": i18n._({ id: 'node.cabinet.compartmentCard.moveUp', message: 'Move up' }), className: ICON_BUTTON_CLASS, disabled: index === total - 1, onClick: () => onMove(1), type: "button", children: _jsx(ArrowUp, { className: "h-3.5 w-3.5" }) }), _jsx("button", { "aria-label": i18n._({
|
|
177
|
+
id: 'node.cabinet.compartmentCard.moveDown',
|
|
178
|
+
message: 'Move down',
|
|
179
|
+
}), className: ICON_BUTTON_CLASS, disabled: index === 0, onClick: () => onMove(-1), type: "button", children: _jsx(ArrowDown, { className: "h-3.5 w-3.5" }) }), _jsx("button", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-red-500/20 bg-red-500/8 text-red-700 dark:text-red-300 transition-colors hover:bg-red-500/15 hover:text-red-700 dark:hover:text-red-200 disabled:opacity-30 disabled:hover:bg-red-500/8", "aria-label": i18n._({
|
|
180
|
+
id: 'node.cabinet.compartmentCard.removeCompartment',
|
|
181
|
+
message: 'Remove compartment',
|
|
182
|
+
}), disabled: total <= 1, onClick: onRemove, type: "button", children: _jsx(Trash, { className: "h-3.5 w-3.5" }) })] })] }), _jsxs("div", { className: "pb-2", children: [_jsx("div", { className: "px-1 pb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children: i18n._({ id: 'node.cabinet.compartmentCard.type', message: 'Type' }) }), _jsx(CompartmentTypeControl, { includeHood: allowHood || isHood, wallCabinet: wallCabinet, onChange: (value) => {
|
|
93
183
|
const nextType = value === 'fridge'
|
|
94
184
|
? 'fridge-single'
|
|
95
185
|
: value === 'hood'
|
|
@@ -101,9 +191,9 @@ export function CompartmentCard({ compartment, index, displayIndex, total, carca
|
|
|
101
191
|
...newCabinetCompartment(nextType),
|
|
102
192
|
id: compartment.id,
|
|
103
193
|
});
|
|
104
|
-
}, value: isFridge ? 'fridge' : isHood ? 'hood' : isCooktop ? 'cooktop' : type })] }), total > 1 && !isHood && !isCooktop && type !== 'sink' && (_jsx("div", { className: "pb-2", children: _jsx(SliderControl, { label:
|
|
194
|
+
}, value: isFridge ? 'fridge' : isHood ? 'hood' : isCooktop ? 'cooktop' : type })] }), total > 1 && !isHood && !isCooktop && type !== 'sink' && (_jsx("div", { className: "pb-2", children: _jsx(SliderControl, { label: i18n._({ id: 'node.cabinet.compartmentCard.height', message: 'Height' }), max: carcassHeight, min: 0.1, onChange: onResizeHeight, precision: 2, step: 0.01, unit: "m", value: resolvedHeight }) })), type === 'shelf' && (_jsx(Stepper, { label: i18n._({ id: 'node.cabinet.compartmentCard.shelves', message: 'Shelves' }), max: 8, min: 0, onChange: (value) => onReplace(patchCompartment(compartment, { shelfCount: value })), value: compartmentShelfCount(compartment) })), type === 'drawer' && (_jsx(Stepper, { label: i18n._({ id: 'node.cabinet.compartmentCard.drawers', message: 'Drawers' }), max: 6, min: 1, onChange: (value) => onReplace(patchCompartment(compartment, { drawerCount: value })), value: compartmentDrawerCount(compartment) })), type === 'door' && (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { children: [_jsx("div", { className: "px-1 pb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children: i18n._({ id: 'node.cabinet.compartmentCard.style', message: 'Style' }) }), _jsx(SegmentedControl, { onChange: (value) => onReplace(patchCompartment(compartment, { doorType: value })), options: DOOR_TYPE_OPTIONS.map((option) => ({
|
|
105
195
|
value: option.value,
|
|
106
|
-
label: option.label,
|
|
196
|
+
label: i18n._(option.label),
|
|
107
197
|
})), value: compartmentDoorType(compartment, width) })] }), _jsxs("button", { className: "flex min-h-8 w-full items-center justify-center gap-1.5 rounded-md border border-border/40 bg-black/4 dark:bg-[#2C2C2E] px-3 py-1.5 text-xs leading-4 font-medium text-foreground transition-colors hover:bg-black/8 dark:hover:bg-[#343437] disabled:cursor-not-allowed disabled:opacity-40", disabled: compartmentDoorType(compartment, width) !== 'single-left' &&
|
|
108
198
|
compartmentDoorType(compartment, width) !== 'single-right', onClick: () => {
|
|
109
199
|
const doorType = compartmentDoorType(compartment, width);
|
|
@@ -112,13 +202,19 @@ export function CompartmentCard({ compartment, index, displayIndex, total, carca
|
|
|
112
202
|
doorType: doorType === 'single-left' ? 'single-right' : 'single-left',
|
|
113
203
|
}));
|
|
114
204
|
}
|
|
115
|
-
}, title:
|
|
205
|
+
}, title: i18n._({
|
|
206
|
+
id: 'node.cabinet.compartmentCard.flipTheDoorHingeToThe',
|
|
207
|
+
message: 'Flip the door hinge to the opposite side',
|
|
208
|
+
}), type: "button", children: [_jsx(FlipHorizontal2, { className: "h-3.5 w-3.5" }), i18n._({ id: 'node.cabinet.compartmentCard.flipHinge', message: 'Flip hinge' })] }), _jsx(Stepper, { label: i18n._({
|
|
209
|
+
id: 'node.cabinet.compartmentCard.shelvesInside',
|
|
210
|
+
message: 'Shelves inside',
|
|
211
|
+
}), max: 8, min: 0, onChange: (value) => onReplace(patchCompartment(compartment, { shelfCount: value })), value: compartmentShelfCount(compartment) })] })), isFridge && (_jsxs("div", { children: [_jsx("div", { className: "px-1 pb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children: i18n._({ id: 'node.cabinet.compartmentCard.style', message: 'Style' }) }), _jsx(SegmentedControl, { onChange: (value) => onReplace(patchCompartment(compartment, {
|
|
116
212
|
type: value,
|
|
117
213
|
height: compartment.height ?? FRIDGE_COLUMN_HEIGHT,
|
|
118
214
|
})), options: FRIDGE_STYLE_OPTIONS.map((option) => ({
|
|
119
215
|
value: option.value,
|
|
120
|
-
label: option.label,
|
|
121
|
-
})), value: type })] })), isHood && (_jsx("div", { className: "rounded-lg border border-border/30 bg-black/3 dark:bg-black/10 px-2 py-1.5 text-[11px] font-medium text-muted-foreground", children:
|
|
216
|
+
label: i18n._(option.label),
|
|
217
|
+
})), value: type })] })), isHood && (_jsx("div", { className: "rounded-lg border border-border/30 bg-black/3 dark:bg-black/10 px-2 py-1.5 text-[11px] font-medium text-muted-foreground", children: i18n._({ id: 'node.cabinet.compartmentCard.chimney', message: 'Chimney' }) })), isCooktop && (_jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "px-1 pb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children: i18n._({ id: 'node.cabinet.compartmentCard.surface', message: 'Surface' }) }), _jsx(SegmentedControl, { onChange: (value) => onReplace(patchCompartment(compartment, {
|
|
122
218
|
type: value,
|
|
123
219
|
cooktopLayout: value === 'cooktop-gas'
|
|
124
220
|
? COOKTOP_DEFAULT_GAS_LAYOUT
|
|
@@ -128,13 +224,13 @@ export function CompartmentCard({ compartment, index, displayIndex, total, carca
|
|
|
128
224
|
cooktopShowGrate: compartmentCooktopShowGrate(compartment),
|
|
129
225
|
})), options: COOKTOP_STYLE_OPTIONS.map((option) => ({
|
|
130
226
|
value: option.value,
|
|
131
|
-
label: option.label,
|
|
132
|
-
})), value: type }), _jsxs("div", { children: [_jsx("div", { className: "px-1 pb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children:
|
|
227
|
+
label: i18n._(option.label),
|
|
228
|
+
})), value: type }), _jsxs("div", { children: [_jsx("div", { className: "px-1 pb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children: i18n._({ id: 'node.cabinet.compartmentCard.layout', message: 'Layout' }) }), _jsx(SegmentedControl, { onChange: (value) => onReplace(patchCompartment(compartment, { cooktopLayout: value })), options: (type === 'cooktop-gas'
|
|
133
229
|
? GAS_COOKTOP_LAYOUT_OPTIONS
|
|
134
230
|
: INDUCTION_COOKTOP_LAYOUT_OPTIONS).map((option) => ({
|
|
135
231
|
value: option.value,
|
|
136
232
|
label: option.label,
|
|
137
|
-
})), value: compartmentCooktopLayout(compartment, type) })] }), _jsx(ToggleControl, { checked: compartmentCooktopBurnersOn(compartment), label:
|
|
233
|
+
})), value: compartmentCooktopLayout(compartment, type) })] }), _jsx(ToggleControl, { checked: compartmentCooktopBurnersOn(compartment), label: i18n._({ id: 'node.cabinet.compartmentCard.burnersOn', message: 'Burners on' }), onChange: (checked) => {
|
|
138
234
|
const count = compartmentCooktopElementCount(compartment, type);
|
|
139
235
|
onReplace(patchCompartment(compartment, {
|
|
140
236
|
cooktopBurnersOn: checked,
|
|
@@ -143,11 +239,11 @@ export function CompartmentCard({ compartment, index, displayIndex, total, carca
|
|
|
143
239
|
: [],
|
|
144
240
|
cooktopKnobProgress: Array.from({ length: count }, () => (checked ? 1 : 0)),
|
|
145
241
|
}));
|
|
146
|
-
} }), type === 'cooktop-gas' && (_jsx(ToggleControl, { checked: compartmentCooktopShowGrate(compartment), label:
|
|
242
|
+
} }), type === 'cooktop-gas' && (_jsx(ToggleControl, { checked: compartmentCooktopShowGrate(compartment), label: i18n._({ id: 'node.cabinet.compartmentCard.topGrate', message: 'Top grate' }), onChange: (checked) => onReplace(patchCompartment(compartment, { cooktopShowGrate: checked })) }))] })), type === 'sink' && (_jsxs("div", { children: [_jsx("div", { className: "px-1 pb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children: i18n._({ id: 'node.cabinet.compartmentCard.bowls', message: 'Bowls' }) }), _jsx(SegmentedControl, { onChange: (value) => onReplace(patchCompartment(compartment, { sinkLayout: value })), options: SINK_LAYOUT_OPTIONS.map((option) => ({
|
|
147
243
|
value: option.value,
|
|
148
|
-
label: option.label,
|
|
149
|
-
})), value: compartmentSinkLayout(compartment) })] })), type === 'pull-out-pantry' && (_jsxs("div", { className: "space-y-2", children: [_jsx(Stepper, { label:
|
|
244
|
+
label: typeof option.label === 'string' ? option.label : i18n._(option.label),
|
|
245
|
+
})), value: compartmentSinkLayout(compartment) })] })), type === 'pull-out-pantry' && (_jsxs("div", { className: "space-y-2", children: [_jsx(Stepper, { label: i18n._({ id: 'node.cabinet.compartmentCard.baskets', message: 'Baskets' }), max: 8, min: 2, onChange: (value) => onReplace(patchCompartment(compartment, { shelfCount: value })), value: compartmentShelfCount(compartment) }), _jsxs("div", { children: [_jsx("div", { className: "px-1 pb-1 text-[10px] uppercase tracking-wide text-muted-foreground", children: i18n._({ id: 'node.cabinet.compartmentCard.rack', message: 'Rack' }) }), _jsx(SegmentedControl, { onChange: (value) => onReplace(patchCompartment(compartment, { pantryRackStyle: value })), options: PULL_OUT_PANTRY_RACK_STYLE_OPTIONS.map((option) => ({
|
|
150
246
|
value: option.value,
|
|
151
|
-
label: option.label,
|
|
247
|
+
label: i18n._(option.label),
|
|
152
248
|
})), value: compartmentPullOutPantryRackStyle(compartment) })] })] }))] }));
|
|
153
249
|
}
|
|
@@ -74,6 +74,11 @@ export declare function getCabinetCountertopLayout(node: CabinetNode, ctx?: Geom
|
|
|
74
74
|
url: string;
|
|
75
75
|
repeat?: [number, number] | undefined;
|
|
76
76
|
scale?: number | undefined;
|
|
77
|
+
offset?: [number, number] | undefined;
|
|
78
|
+
normalMap?: string | undefined;
|
|
79
|
+
normalScale?: number | undefined;
|
|
80
|
+
bumpMap?: string | undefined;
|
|
81
|
+
bumpScale?: number | undefined;
|
|
77
82
|
} | undefined;
|
|
78
83
|
} | undefined;
|
|
79
84
|
materialPreset?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"countertop-layout.d.ts","sourceRoot":"","sources":["../../src/cabinet/countertop-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,oBAAoB,CAAA;AAIjE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAExE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,eAAe
|
|
1
|
+
{"version":3,"file":"countertop-layout.d.ts","sourceRoot":"","sources":["../../src/cabinet/countertop-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,oBAAoB,CAAA;AAIjE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAExE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8BvE,WAAW;iBACR,WAAW;cACd,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;;;IA4DvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/cabinet/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EAET,WAAW,IAAI,eAAe,EAG9B,oBAAoB,EAMpB,cAAc,EACd,QAAQ,EACT,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/cabinet/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EAET,WAAW,IAAI,eAAe,EAG9B,oBAAoB,EAMpB,cAAc,EACd,QAAQ,EACT,MAAM,kBAAkB,CAAA;AA4DzB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAuKzD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,eAAe,EACrB,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,GAC3C,oBAAoB,EAAE,CAcxB;AAiKD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAA;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,GAC1C,mBAAmB,CAWrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,SAAS,mBAAmB,EAAE,EAC1C,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,QAgD9B;AAED,oEAAoE;AACpE,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAexE;AAgvDD,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,OAAO,WAAW,CAmNhE,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,cAAc,CAAC,OAAO,iBAAiB,CA4K5E,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CABINET_METRIC_DEFAULTS, cabinetSlots, findLevelAncestorId, selectionProxyIdFromMetadata, } from '@pascal-app/core';
|
|
2
2
|
import { findWallOpeningConflicts } from '../shared/wall-opening-clearance.js';
|
|
3
3
|
import { bakeCabinetAnimationClip } from './animation.js';
|
|
4
|
+
import { cabinetBatchable } from './batchable.js';
|
|
4
5
|
import { buildCabinetFloorplan, buildCabinetModuleFloorplan } from './floorplan.js';
|
|
5
6
|
import { cabinetModuleFloorplanMoveTarget } from './floorplan-move.js';
|
|
6
7
|
import { cabinetFloorplanSiblingOverrides } from './floorplan-overrides.js';
|
|
@@ -1801,6 +1802,7 @@ export const cabinetDefinition = {
|
|
|
1801
1802
|
// material / materialPreset left undefined — paint mode writes slot refs.
|
|
1802
1803
|
}),
|
|
1803
1804
|
capabilities: {
|
|
1805
|
+
batchable: cabinetBatchable,
|
|
1804
1806
|
reveal: { phase: 'furnishing', style: 'drop', height: 0.3 },
|
|
1805
1807
|
revealOnEdit: ['width', 'depth', 'carcassHeight', 'plinthHeight'],
|
|
1806
1808
|
surfacePlacement: 'floor-only',
|
|
@@ -1998,6 +2000,7 @@ export const cabinetModuleDefinition = {
|
|
|
1998
2000
|
// material / materialPreset left undefined — paint mode writes slot refs.
|
|
1999
2001
|
}),
|
|
2000
2002
|
capabilities: {
|
|
2003
|
+
batchable: cabinetBatchable,
|
|
2001
2004
|
selectable: { hitVolume: 'bbox' },
|
|
2002
2005
|
surfaces: { hosting: cabinetModuleSurfaceProvider },
|
|
2003
2006
|
movable: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dimension-input.d.ts","sourceRoot":"","sources":["../../src/cabinet/dimension-input.ts"],"names":[],"mappings":"AAEA,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,QAAQ,GAAG,aAAa,CAAA;IACxC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAA;CAC5B,GACA,MAAM,GAAG,IAAI,CAWf"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { parseMeasurement } from '@pascal-app/editor';
|
|
2
|
+
export function parseCabinetDimensionInput(input, options) {
|
|
3
|
+
return parseMeasurement(input, { kind: 'length', unitId: 'm' }, {
|
|
4
|
+
bareUnit: options.unit === 'imperial' ? 'in' : options.metricNotation === 'millimeters' ? 'mm' : 'm',
|
|
5
|
+
locale: options.locale,
|
|
6
|
+
system: options.unit === 'imperial' ? 'imperial' : 'metric',
|
|
7
|
+
});
|
|
8
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"essential-controls.d.ts","sourceRoot":"","sources":["../../src/cabinet/essential-controls.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"essential-controls.d.ts","sourceRoot":"","sources":["../../src/cabinet/essential-controls.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,kBAAkB,EAUxB,MAAM,SAAS,CAAA;AAEhB,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,kBAAkB,EAAE,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAA;CAC7D,sCA0KA"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { usePascalI18n } from '@pascal-app/core';
|
|
3
4
|
import { PanelSection, SegmentedControl } from '@pascal-app/editor';
|
|
4
5
|
import { COOKTOP_DEFAULT_GAS_LAYOUT, COOKTOP_DEFAULT_INDUCTION_LAYOUT, compartmentDoorType, compartmentSinkLayout, isCooktopCompartmentType, isFridgeCompartmentType, patchCompartment, } from './stack.js';
|
|
5
6
|
export function CabinetEssentialControls({ stack, width, onReplace, }) {
|
|
7
|
+
const i18n = usePascalI18n();
|
|
6
8
|
const entries = stack
|
|
7
9
|
.map((part, index) => ({ part, index }))
|
|
8
10
|
.filter(({ part }) => part.type === 'door' ||
|
|
@@ -11,33 +13,96 @@ export function CabinetEssentialControls({ stack, width, onReplace, }) {
|
|
|
11
13
|
isCooktopCompartmentType(part.type));
|
|
12
14
|
if (!entries.length)
|
|
13
15
|
return null;
|
|
14
|
-
return (_jsx(PanelSection, { title:
|
|
15
|
-
?
|
|
16
|
+
return (_jsx(PanelSection, { title: i18n._({ id: 'node.cabinet.essentialControls.itemOptions', message: 'Item options' }), children: entries.map(({ part, index }) => (_jsxs("div", { className: "space-y-2 pb-2", children: [_jsxs("div", { className: "text-xs text-muted-foreground", children: [part.type === 'door'
|
|
17
|
+
? i18n._({
|
|
18
|
+
id: 'node.cabinet.essentialControls.doorDirection',
|
|
19
|
+
message: 'Door direction',
|
|
20
|
+
})
|
|
16
21
|
: part.type === 'sink'
|
|
17
|
-
?
|
|
22
|
+
? i18n._({
|
|
23
|
+
id: 'node.cabinet.essentialControls.sinkLayout',
|
|
24
|
+
message: 'Sink layout',
|
|
25
|
+
})
|
|
18
26
|
: isFridgeCompartmentType(part.type)
|
|
19
|
-
?
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
? i18n._({
|
|
28
|
+
id: 'node.cabinet.essentialControls.fridgeType',
|
|
29
|
+
message: 'Fridge type',
|
|
30
|
+
})
|
|
31
|
+
: i18n._({
|
|
32
|
+
id: 'node.cabinet.essentialControls.cooktopType',
|
|
33
|
+
message: 'Cooktop type',
|
|
34
|
+
}), entries.length > 1 ? ` · ${index + 1}` : ''] }), part.type === 'door' && (_jsx(SegmentedControl, { value: compartmentDoorType(part, width), options: [
|
|
35
|
+
{
|
|
36
|
+
value: 'single-left',
|
|
37
|
+
label: i18n._({
|
|
38
|
+
id: 'node.cabinet.essentialControls.leftHinge',
|
|
39
|
+
message: 'Left hinge',
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
value: 'single-right',
|
|
44
|
+
label: i18n._({
|
|
45
|
+
id: 'node.cabinet.essentialControls.rightHinge',
|
|
46
|
+
message: 'Right hinge',
|
|
47
|
+
}),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
value: 'double',
|
|
51
|
+
label: i18n._({ id: 'node.cabinet.essentialControls.double', message: 'Double' }),
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
value: 'glass',
|
|
55
|
+
label: i18n._({ id: 'node.cabinet.essentialControls.glass', message: 'Glass' }),
|
|
56
|
+
},
|
|
25
57
|
], onChange: (value) => onReplace(index, patchCompartment(part, {
|
|
26
58
|
doorType: value,
|
|
27
59
|
})) })), part.type === 'sink' && (_jsx(SegmentedControl, { value: compartmentSinkLayout(part), options: [
|
|
28
|
-
{
|
|
29
|
-
|
|
60
|
+
{
|
|
61
|
+
value: 'single',
|
|
62
|
+
label: i18n._({ id: 'node.cabinet.essentialControls.single', message: 'Single' }),
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
value: 'double',
|
|
66
|
+
label: i18n._({ id: 'node.cabinet.essentialControls.double', message: 'Double' }),
|
|
67
|
+
},
|
|
30
68
|
{ value: 'double-offset', label: '60/40' },
|
|
31
69
|
], onChange: (value) => onReplace(index, patchCompartment(part, {
|
|
32
70
|
sinkLayout: value,
|
|
33
71
|
})) })), isFridgeCompartmentType(part.type) && (_jsx(SegmentedControl, { value: part.type, options: [
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
72
|
+
{
|
|
73
|
+
value: 'fridge-single',
|
|
74
|
+
label: i18n._({ id: 'node.cabinet.essentialControls.single', message: 'Single' }),
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
value: 'fridge-double',
|
|
78
|
+
label: i18n._({ id: 'node.cabinet.essentialControls.double', message: 'Double' }),
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
value: 'fridge-top-freezer',
|
|
82
|
+
label: i18n._({
|
|
83
|
+
id: 'node.cabinet.essentialControls.topFreezer',
|
|
84
|
+
message: 'Top freezer',
|
|
85
|
+
}),
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
value: 'fridge-bottom-freezer',
|
|
89
|
+
label: i18n._({
|
|
90
|
+
id: 'node.cabinet.essentialControls.bottomFreezer',
|
|
91
|
+
message: 'Bottom freezer',
|
|
92
|
+
}),
|
|
93
|
+
},
|
|
38
94
|
], onChange: (value) => onReplace(index, patchCompartment(part, { type: value })) })), isCooktopCompartmentType(part.type) && (_jsx(SegmentedControl, { value: part.type, options: [
|
|
39
|
-
{
|
|
40
|
-
|
|
95
|
+
{
|
|
96
|
+
value: 'cooktop-gas',
|
|
97
|
+
label: i18n._({ id: 'node.cabinet.essentialControls.gas', message: 'Gas' }),
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
value: 'cooktop-induction',
|
|
101
|
+
label: i18n._({
|
|
102
|
+
id: 'node.cabinet.essentialControls.induction',
|
|
103
|
+
message: 'Induction',
|
|
104
|
+
}),
|
|
105
|
+
},
|
|
41
106
|
], onChange: (value) => onReplace(index, patchCompartment(part, {
|
|
42
107
|
type: value,
|
|
43
108
|
cooktopLayout: value === 'cooktop-gas'
|
package/dist/cabinet/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { bakeCabinetAnimationClip, poseCabinetMovingParts } from './animation.js';
|
|
2
2
|
export { cabinetDefinition, cabinetModuleDefinition } from './definition.js';
|
|
3
|
-
export { findKitchenItems, KITCHEN_ITEMS, kitchenItemMatches, kitchenPresetForModule, } from './kitchen-catalog.js';
|
|
3
|
+
export { findKitchenItems, KITCHEN_ITEM_LABELS, KITCHEN_ITEMS, kitchenItemMatches, kitchenPresetForModule, kitchenPresetForPlacedModule, } from './kitchen-catalog.js';
|
|
4
4
|
export { KitchenCollection, KitchenThumbnail } from './kitchen-collection.js';
|
|
5
5
|
export { beginKitchenPlacement } from './kitchen-placement.js';
|
|
6
6
|
export { default as useCabinetPlacementStatus } from './placement-status.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cabinet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cabinet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EACL,KAAK,oBAAoB,EACzB,OAAO,IAAI,uBAAuB,GACnC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EACL,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,cAAc,CAAA"}
|
package/dist/cabinet/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { bakeCabinetAnimationClip, poseCabinetMovingParts } from './animation.js';
|
|
2
2
|
export { cabinetDefinition, cabinetModuleDefinition } from './definition.js';
|
|
3
|
-
export { findKitchenItems, KITCHEN_ITEMS, kitchenItemMatches, kitchenPresetForModule, } from './kitchen-catalog.js';
|
|
3
|
+
export { findKitchenItems, KITCHEN_ITEM_LABELS, KITCHEN_ITEMS, kitchenItemMatches, kitchenPresetForModule, kitchenPresetForPlacedModule, } from './kitchen-catalog.js';
|
|
4
4
|
export { KitchenCollection, KitchenThumbnail } from './kitchen-collection.js';
|
|
5
5
|
export { beginKitchenPlacement } from './kitchen-placement.js';
|
|
6
6
|
export { default as useCabinetPlacementStatus } from './placement-status.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnyNode, CabinetModuleNode, CabinetNode } from '@pascal-app/core';
|
|
1
|
+
import type { AnyNode, CabinetModuleNode, CabinetNode, MessageDescriptor } from '@pascal-app/core';
|
|
2
2
|
import { type CabinetPresetId } from './presets.js';
|
|
3
3
|
export declare const KITCHEN_ITEMS: {
|
|
4
4
|
id: CabinetPresetId;
|
|
@@ -7,8 +7,21 @@ export declare const KITCHEN_ITEMS: {
|
|
|
7
7
|
group: 'Cabinets' | 'Appliances & fixtures';
|
|
8
8
|
keywords: string;
|
|
9
9
|
}[];
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Preset names in the UI language. The presets keep their English labels
|
|
12
|
+
* (agents and MCP read them); the kitchen picker and replace dialog show these.
|
|
13
|
+
*/
|
|
14
|
+
export declare const KITCHEN_ITEM_LABELS: Record<CabinetPresetId, MessageDescriptor>;
|
|
15
|
+
export declare const KITCHEN_GROUP_TITLES: Record<'Cabinets' | 'Appliances & fixtures', MessageDescriptor>;
|
|
16
|
+
/** `label` is the name the picker shows, when it is not the English one. */
|
|
17
|
+
export declare function kitchenItemMatches(id: CabinetPresetId, query: string, label?: string): boolean;
|
|
11
18
|
export declare function kitchenPresetForModule(node: CabinetModuleNode, run?: CabinetNode): CabinetPresetId;
|
|
12
|
-
/**
|
|
13
|
-
export declare function
|
|
19
|
+
/** A placed module's preset, reading its parent: an upper attached to a module is a wall cabinet. */
|
|
20
|
+
export declare function kitchenPresetForPlacedModule(nodes: Readonly<Record<string, AnyNode>>, node: CabinetModuleNode): CabinetPresetId;
|
|
21
|
+
/**
|
|
22
|
+
* The kitchen's placed modules a query names; fillers are part of their run,
|
|
23
|
+
* not items. `labelFor` gives the name the UI shows for a preset, when it is
|
|
24
|
+
* not the English one.
|
|
25
|
+
*/
|
|
26
|
+
export declare function findKitchenItems(nodes: Readonly<Record<string, AnyNode>>, query: string, labelFor?: (id: CabinetPresetId) => string): CabinetModuleNode[];
|
|
14
27
|
//# sourceMappingURL=kitchen-catalog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kitchen-catalog.d.ts","sourceRoot":"","sources":["../../src/cabinet/kitchen-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"kitchen-catalog.d.ts","sourceRoot":"","sources":["../../src/cabinet/kitchen-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EAClB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAEjE,eAAO,MAAM,aAAa;;;;WAIQ,UAAU,GAAG,uBAAuB;;GAanE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAc1E,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,UAAU,GAAG,uBAAuB,EAAE,iBAAiB,CAO9F,CAAA;AAEH,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAS1F;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,iBAAiB,EACvB,GAAG,CAAC,EAAE,WAAW,GAChB,eAAe,CAYjB;AAED,qGAAqG;AACrG,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,IAAI,EAAE,iBAAiB,GACtB,eAAe,CAIjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,MAAM,GACzC,iBAAiB,EAAE,CASrB"}
|