@pascal-app/core 1.0.0-beta.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +23 -0
- package/dist/capture/index.d.ts +3 -0
- package/dist/capture/index.d.ts.map +1 -0
- package/dist/capture/index.js +2 -0
- package/dist/capture/schema.d.ts +417 -0
- package/dist/capture/schema.d.ts.map +1 -0
- package/dist/capture/schema.js +348 -0
- package/dist/capture/source.d.ts +60 -0
- package/dist/capture/source.d.ts.map +1 -0
- package/dist/capture/source.js +254 -0
- package/dist/events/bus.d.ts +55 -7
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/hidden-wall-pointer-hold.d.ts +28 -0
- package/dist/events/hidden-wall-pointer-hold.d.ts.map +1 -0
- package/dist/events/hidden-wall-pointer-hold.js +37 -0
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +12 -0
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +39 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2785 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +132 -19
- package/dist/hooks/spatial-grid/support-host-patch.d.ts +45 -1
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +171 -6
- package/dist/index.d.ts +15 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -5
- package/dist/lib/asset-storage.d.ts.map +1 -1
- package/dist/lib/asset-storage.js +4 -1
- package/dist/lib/polygon-union.d.ts +4 -0
- package/dist/lib/polygon-union.d.ts.map +1 -0
- package/dist/lib/polygon-union.js +306 -0
- package/dist/lib/roof-overlap.d.ts +32 -0
- package/dist/lib/roof-overlap.d.ts.map +1 -0
- package/dist/lib/roof-overlap.js +72 -0
- package/dist/lib/room-topology-index.d.ts +50 -0
- package/dist/lib/room-topology-index.d.ts.map +1 -0
- package/dist/lib/room-topology-index.js +237 -0
- package/dist/lib/slab-polygon.d.ts +35 -2
- package/dist/lib/slab-polygon.d.ts.map +1 -1
- package/dist/lib/slab-polygon.js +133 -27
- package/dist/lib/space-detection.d.ts +40 -3
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +890 -246
- package/dist/registry/handles.d.ts +24 -3
- package/dist/registry/handles.d.ts.map +1 -1
- package/dist/registry/index.d.ts +3 -3
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/registry.d.ts +29 -6
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +111 -4
- package/dist/registry/scene-api.d.ts +16 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +49 -1
- package/dist/registry/types.d.ts +261 -13
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/use-registry-version.d.ts +11 -0
- package/dist/registry/use-registry-version.d.ts.map +1 -0
- package/dist/registry/use-registry-version.js +15 -0
- package/dist/schema/__bench__/node-parsers.bench.d.ts +24 -0
- package/dist/schema/__bench__/node-parsers.bench.d.ts.map +1 -0
- package/dist/schema/__bench__/node-parsers.bench.js +314 -0
- package/dist/schema/__fixtures__/node-fixtures.d.ts +28 -0
- package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -0
- package/dist/schema/__fixtures__/node-fixtures.js +125 -0
- package/dist/schema/base.d.ts +1 -1
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +8 -1
- package/dist/schema/compiled-node-parsers.d.ts +40 -0
- package/dist/schema/compiled-node-parsers.d.ts.map +1 -0
- package/dist/schema/compiled-node-parsers.js +95 -0
- package/dist/schema/index.d.ts +20 -15
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +19 -12
- package/dist/schema/material.d.ts +2 -1
- package/dist/schema/material.d.ts.map +1 -1
- package/dist/schema/material.js +1 -0
- package/dist/schema/nodes/automatic-downspout.d.ts +17 -0
- package/dist/schema/nodes/automatic-downspout.d.ts.map +1 -0
- package/dist/schema/nodes/automatic-downspout.js +237 -0
- package/dist/schema/nodes/block.d.ts +107 -0
- package/dist/schema/nodes/block.d.ts.map +1 -0
- package/dist/schema/nodes/block.js +207 -0
- package/dist/schema/nodes/box-vent.d.ts +8 -2
- package/dist/schema/nodes/box-vent.d.ts.map +1 -1
- package/dist/schema/nodes/box-vent.js +2 -0
- package/dist/schema/nodes/building.d.ts +1 -1
- package/dist/schema/nodes/cabinet.d.ts +25 -3
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.js +26 -5
- package/dist/schema/nodes/ceiling.d.ts +1 -1
- package/dist/schema/nodes/chimney.d.ts +2 -2
- package/dist/schema/nodes/column.d.ts +6 -6
- package/dist/schema/nodes/construction-dimension.d.ts +4 -4
- package/dist/schema/nodes/cupola.d.ts +9 -1
- package/dist/schema/nodes/cupola.d.ts.map +1 -1
- package/dist/schema/nodes/cupola.js +2 -0
- package/dist/schema/nodes/door.d.ts +1 -1
- package/dist/schema/nodes/dormer.d.ts +44 -1
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/dormer.js +131 -7
- package/dist/schema/nodes/downspout.d.ts +11 -1
- package/dist/schema/nodes/downspout.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.js +24 -0
- package/dist/schema/nodes/duct-fitting.d.ts +18 -1
- package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
- package/dist/schema/nodes/duct-fitting.js +25 -4
- package/dist/schema/nodes/duct-segment.d.ts +23 -1
- package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
- package/dist/schema/nodes/duct-segment.js +20 -0
- package/dist/schema/nodes/duct-terminal.d.ts +1 -1
- package/dist/schema/nodes/elevator.d.ts +1 -1
- package/dist/schema/nodes/eyebrow-vent.d.ts +8 -2
- package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
- package/dist/schema/nodes/eyebrow-vent.js +2 -0
- package/dist/schema/nodes/fence.d.ts +1 -1
- package/dist/schema/nodes/guide.d.ts +1 -1
- package/dist/schema/nodes/gutter.d.ts +36 -2
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.js +308 -1
- package/dist/schema/nodes/hanger-overrides.d.ts +7 -0
- package/dist/schema/nodes/hanger-overrides.d.ts.map +1 -0
- package/dist/schema/nodes/hanger-overrides.js +6 -0
- package/dist/schema/nodes/hvac-equipment.d.ts +1 -1
- package/dist/schema/nodes/item.d.ts +4 -3
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +5 -0
- package/dist/schema/nodes/lean-to-extension.d.ts +212 -0
- package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -0
- package/dist/schema/nodes/lean-to-extension.js +114 -0
- package/dist/schema/nodes/level.d.ts +5 -2
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/level.js +9 -0
- package/dist/schema/nodes/lineset.d.ts +1 -1
- package/dist/schema/nodes/liquid-line.d.ts +1 -1
- package/dist/schema/nodes/measurement.d.ts +1 -1
- package/dist/schema/nodes/pipe-fitting.d.ts +9 -1
- package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-fitting.js +6 -2
- package/dist/schema/nodes/pipe-segment.d.ts +23 -1
- package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-segment.js +20 -0
- package/dist/schema/nodes/pipe-trap.d.ts +1 -1
- package/dist/schema/nodes/ridge-vent.d.ts +1 -1
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.js +4 -1
- package/dist/schema/nodes/roof-segment-shape.d.ts +4 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-shape.js +64 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts +3 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.js +1 -1
- package/dist/schema/nodes/roof-segment.d.ts +41 -1
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +79 -2
- package/dist/schema/nodes/roof.d.ts +22 -1
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +14 -0
- package/dist/schema/nodes/scan.d.ts +19 -2
- package/dist/schema/nodes/scan.d.ts.map +1 -1
- package/dist/schema/nodes/scan.js +11 -1
- package/dist/schema/nodes/shelf.d.ts +2 -2
- package/dist/schema/nodes/site.d.ts +1 -1
- package/dist/schema/nodes/skylight.d.ts +1 -1
- package/dist/schema/nodes/slab.d.ts +1 -1
- package/dist/schema/nodes/solar-panel.d.ts +1 -1
- package/dist/schema/nodes/spawn.d.ts +1 -1
- package/dist/schema/nodes/stair-segment.d.ts +1 -1
- package/dist/schema/nodes/stair.d.ts +1 -1
- package/dist/schema/nodes/structural-grid.d.ts +1 -1
- package/dist/schema/nodes/turbine-vent.d.ts +7 -1
- package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
- package/dist/schema/nodes/turbine-vent.js +2 -0
- package/dist/schema/nodes/wall.d.ts +4 -4
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +7 -1
- package/dist/schema/nodes/window.d.ts +10 -3
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +4 -0
- package/dist/schema/nodes/zone.d.ts +2 -2
- package/dist/schema/nodes/zone.js +1 -1
- package/dist/schema/types.d.ts +485 -109
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +27 -1
- package/dist/services/hosting.d.ts +2 -2
- package/dist/services/hosting.d.ts.map +1 -1
- package/dist/services/hosting.js +4 -4
- package/dist/services/index.d.ts +2 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/storey.d.ts +3 -10
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +45 -15
- package/dist/services/system-graph.d.ts +11 -0
- package/dist/services/system-graph.d.ts.map +1 -1
- package/dist/services/system-graph.js +35 -5
- package/dist/store/actions/node-actions.d.ts +15 -4
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +458 -19
- package/dist/store/history-control.d.ts +5 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +68 -6
- package/dist/store/history-invalidation.d.ts +3 -0
- package/dist/store/history-invalidation.d.ts.map +1 -0
- package/dist/store/history-invalidation.js +72 -0
- package/dist/store/scene-hydration.d.ts +5 -0
- package/dist/store/scene-hydration.d.ts.map +1 -0
- package/dist/store/scene-hydration.js +57 -0
- package/dist/store/use-scene.d.ts +3 -0
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +407 -227
- package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-service.js +16 -11
- package/dist/systems/roof/roof-elevation-system.d.ts +3 -0
- package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -0
- package/dist/systems/roof/roof-elevation-system.js +94 -0
- package/dist/systems/roof/roof-elevation.d.ts +4 -0
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -0
- package/dist/systems/roof/roof-elevation.js +95 -0
- package/dist/systems/roof/roof-footprint.d.ts +17 -0
- package/dist/systems/roof/roof-footprint.d.ts.map +1 -0
- package/dist/systems/roof/roof-footprint.js +83 -0
- package/dist/systems/slab/slab-support.d.ts +0 -31
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +26 -4
- package/dist/systems/stair/stair-flight.d.ts +17 -0
- package/dist/systems/stair/stair-flight.d.ts.map +1 -0
- package/dist/systems/stair/stair-flight.js +27 -0
- package/dist/systems/stair/stair-opening-preview.d.ts +1556 -1328
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.d.ts +1 -0
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.js +93 -96
- package/dist/systems/stair/stair-rise.js +21 -20
- package/dist/systems/wall/wall-curve.d.ts +1 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +73 -0
- package/dist/systems/wall/wall-footprint.d.ts +1 -0
- package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
- package/dist/systems/wall/wall-footprint.js +1 -0
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +88 -9
- package/dist/systems/wall/wall-topology.d.ts +53 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -0
- package/dist/systems/wall/wall-topology.js +414 -0
- package/dist/utils/clone-scene-graph.d.ts +2 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +39 -2
- package/dist/utils/scene-migrations.d.ts +1 -0
- package/dist/utils/scene-migrations.d.ts.map +1 -1
- package/dist/utils/scene-migrations.js +1 -0
- package/dist/utils/vertical-scene-migration.d.ts +13 -0
- package/dist/utils/vertical-scene-migration.d.ts.map +1 -0
- package/dist/utils/vertical-scene-migration.js +179 -0
- package/dist/validation/validate-build-json.d.ts +3 -0
- package/dist/validation/validate-build-json.d.ts.map +1 -1
- package/dist/validation/validate-build-json.js +49 -2
- package/package.json +10 -3
- package/dist/systems/elevator/elevator-runtime-system.d.ts +0 -2
- package/dist/systems/elevator/elevator-runtime-system.d.ts.map +0 -1
- package/dist/systems/elevator/elevator-runtime-system.js +0 -8
|
@@ -2,10 +2,12 @@ import dedent from 'dedent';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
4
|
import { MaterialSchema } from '../material';
|
|
5
|
+
const DEFAULT_DOWNSPOUT_GENERATOR = 'default-downspout';
|
|
5
6
|
export const DownspoutNode = BaseNode.extend({
|
|
6
7
|
id: objectId('downspout'),
|
|
7
8
|
type: nodeType('downspout'),
|
|
8
9
|
material: MaterialSchema.optional(),
|
|
10
|
+
slots: z.record(z.string(), z.string()).optional(),
|
|
9
11
|
// Match the gutter family default — paint inspector reads "White"
|
|
10
12
|
// instead of "no material" on a freshly placed downspout.
|
|
11
13
|
materialPreset: z.string().default('preset-white'),
|
|
@@ -26,6 +28,7 @@ export const DownspoutNode = BaseNode.extend({
|
|
|
26
28
|
// tool can default to the gutter's eave-Y minus building floor on
|
|
27
29
|
// commit so the user doesn't have to set it on every drop.
|
|
28
30
|
length: z.number().default(2.5),
|
|
31
|
+
lengthMode: z.enum(['to-ground', 'manual']).optional(),
|
|
29
32
|
// Bore diameter, default 0.07 m ≈ 3″ to match the gutter outlet
|
|
30
33
|
// default. Larger downspouts are common on commercial gutters.
|
|
31
34
|
diameter: z.number().default(0.07),
|
|
@@ -61,3 +64,24 @@ export const DownspoutNode = BaseNode.extend({
|
|
|
61
64
|
- strapStyle / strapSpacing: wall straps clamping the run
|
|
62
65
|
- terminal: bottom treatment (splash block, kickout only, or straight down)
|
|
63
66
|
`);
|
|
67
|
+
function metadataRecord(metadata) {
|
|
68
|
+
if (typeof metadata === 'object' && metadata !== null && !Array.isArray(metadata)) {
|
|
69
|
+
return metadata;
|
|
70
|
+
}
|
|
71
|
+
return {};
|
|
72
|
+
}
|
|
73
|
+
export function defaultDownspoutMetadata() {
|
|
74
|
+
return { generatedBy: DEFAULT_DOWNSPOUT_GENERATOR };
|
|
75
|
+
}
|
|
76
|
+
export function isDefaultDownspoutNode(node, gutterId) {
|
|
77
|
+
const parsed = DownspoutNode.safeParse(node);
|
|
78
|
+
if (!parsed.success)
|
|
79
|
+
return false;
|
|
80
|
+
if (gutterId && parsed.data.gutterId !== gutterId)
|
|
81
|
+
return false;
|
|
82
|
+
return metadataRecord(parsed.data.metadata).generatedBy === DEFAULT_DOWNSPOUT_GENERATOR;
|
|
83
|
+
}
|
|
84
|
+
export function usesAutomaticDownspoutLength(node) {
|
|
85
|
+
return (node.lengthMode === 'to-ground' ||
|
|
86
|
+
(node.lengthMode === undefined && isDefaultDownspoutNode(node)));
|
|
87
|
+
}
|
|
@@ -45,7 +45,7 @@ export declare const DuctFittingNode: z.ZodObject<{
|
|
|
45
45
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
46
46
|
zoom: z.ZodOptional<z.ZodNumber>;
|
|
47
47
|
}, z.core.$strip>>;
|
|
48
|
-
metadata: z.ZodDefault<z.ZodOptional<z.
|
|
48
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
49
49
|
id: z.ZodDefault<z.ZodTemplateLiteral<`duct-fitting_${string}`>>;
|
|
50
50
|
type: z.ZodDefault<z.ZodLiteral<"duct-fitting">>;
|
|
51
51
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
@@ -56,12 +56,26 @@ export declare const DuctFittingNode: z.ZodObject<{
|
|
|
56
56
|
cross: "cross";
|
|
57
57
|
reducer: "reducer";
|
|
58
58
|
transition: "transition";
|
|
59
|
+
"end-cap": "end-cap";
|
|
60
|
+
damper: "damper";
|
|
61
|
+
"access-panel": "access-panel";
|
|
62
|
+
coupling: "coupling";
|
|
59
63
|
}>>;
|
|
60
64
|
shape: z.ZodDefault<z.ZodEnum<{
|
|
61
65
|
round: "round";
|
|
62
66
|
rect: "rect";
|
|
63
67
|
oval: "oval";
|
|
64
68
|
}>>;
|
|
69
|
+
inletShape: z.ZodOptional<z.ZodEnum<{
|
|
70
|
+
round: "round";
|
|
71
|
+
rect: "rect";
|
|
72
|
+
oval: "oval";
|
|
73
|
+
}>>;
|
|
74
|
+
outletShape: z.ZodOptional<z.ZodEnum<{
|
|
75
|
+
round: "round";
|
|
76
|
+
rect: "rect";
|
|
77
|
+
oval: "oval";
|
|
78
|
+
}>>;
|
|
65
79
|
width: z.ZodDefault<z.ZodNumber>;
|
|
66
80
|
height: z.ZodDefault<z.ZodNumber>;
|
|
67
81
|
shape2: z.ZodDefault<z.ZodEnum<{
|
|
@@ -84,6 +98,9 @@ export declare const DuctFittingNode: z.ZodObject<{
|
|
|
84
98
|
supply: "supply";
|
|
85
99
|
return: "return";
|
|
86
100
|
}>>;
|
|
101
|
+
damperAngle: z.ZodDefault<z.ZodNumber>;
|
|
102
|
+
panelWidth: z.ZodDefault<z.ZodNumber>;
|
|
103
|
+
panelHeight: z.ZodDefault<z.ZodNumber>;
|
|
87
104
|
slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
88
105
|
}, z.core.$strip>;
|
|
89
106
|
export type DuctFittingNode = z.infer<typeof DuctFittingNode>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duct-fitting.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/duct-fitting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"duct-fitting.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/duct-fitting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgF3B,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -39,12 +39,27 @@ export const DuctFittingNode = BaseNode.extend({
|
|
|
39
39
|
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
40
40
|
// XYZ euler radians.
|
|
41
41
|
rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
42
|
-
fittingType: z
|
|
42
|
+
fittingType: z
|
|
43
|
+
.enum([
|
|
44
|
+
'elbow',
|
|
45
|
+
'tee',
|
|
46
|
+
'cross',
|
|
47
|
+
'reducer',
|
|
48
|
+
'transition',
|
|
49
|
+
'end-cap',
|
|
50
|
+
'damper',
|
|
51
|
+
'access-panel',
|
|
52
|
+
'coupling',
|
|
53
|
+
])
|
|
54
|
+
.default('elbow'),
|
|
43
55
|
// Run-leg cross-section: round collars, or a rect / flat-oval profile
|
|
44
56
|
// matching the trunk the fitting sits in. Reducers ignore the shape.
|
|
45
57
|
// When non-round, `diameter` carries the area-equivalent round size
|
|
46
58
|
// (drives leg lengths + advertised ports).
|
|
47
59
|
shape: z.enum(['round', 'rect', 'oval']).default('rect'),
|
|
60
|
+
// Adapter end profiles; omitted values use the fitting type's standard profiles.
|
|
61
|
+
inletShape: z.enum(['round', 'rect', 'oval']).optional(),
|
|
62
|
+
outletShape: z.enum(['round', 'rect', 'oval']).optional(),
|
|
48
63
|
// Rect / oval run-leg profile in inches (used when shape ≠ 'round').
|
|
49
64
|
width: z.number().min(4).max(60).default(14),
|
|
50
65
|
height: z.number().min(3).max(40).default(8),
|
|
@@ -73,16 +88,22 @@ export const DuctFittingNode = BaseNode.extend({
|
|
|
73
88
|
diameter2: z.number().min(2).max(48).default(6),
|
|
74
89
|
ductMaterial: z.enum(['sheet-metal', 'flex', 'duct-board']).default('sheet-metal'),
|
|
75
90
|
system: z.enum(['supply', 'return']).default('supply'),
|
|
91
|
+
damperAngle: z.number().finite().min(0).max(90).default(0),
|
|
92
|
+
panelWidth: z.number().finite().min(0.1).max(1.2).default(0.25),
|
|
93
|
+
panelHeight: z.number().finite().min(0.1).max(1.2).default(0.15),
|
|
76
94
|
slots: z.record(z.string(), z.string()).optional(),
|
|
77
95
|
}).describe(dedent `
|
|
78
96
|
Duct fitting - elbow, tee, cross, reducer, or square-to-round transition between duct runs.
|
|
79
97
|
- position: [x, y, z] level-local meters
|
|
80
98
|
- rotation: [x, y, z] euler radians
|
|
81
|
-
- fittingType: elbow | tee | cross | reducer | transition
|
|
82
|
-
-
|
|
99
|
+
- fittingType: elbow | tee | cross | reducer | transition | end-cap | damper | access-panel | coupling
|
|
100
|
+
- damperAngle: blade opening in degrees, 0 closed, 90 open
|
|
101
|
+
- panelWidth / panelHeight: access door dimensions in meters; door lies in local XY with outward normal +Z; no flow ports
|
|
102
|
+
- inletShape / outletShape: round | rect | oval adapter end profiles; defaults are round-to-round for reducer and rect-to-round for transition
|
|
103
|
+
- shape: round | rect | oval run legs (matches the trunk)
|
|
83
104
|
- width / height: rect / oval run-leg profile in inches (transition: the rect end)
|
|
84
105
|
- shape2: round | rect | oval tee / cross branch (matches the duct drawn off the tap)
|
|
85
|
-
- width2 / height2: rect / oval branch profile in inches
|
|
106
|
+
- width2 / height2: rect / oval branch or adapter outlet profile in inches
|
|
86
107
|
- angle: elbow turn in degrees (45 or 90 typical)
|
|
87
108
|
- branchAngle: tee branch angle off the outlet axis (90 straight tee, 45 downstream lateral, 135 upstream); cross branches are always square
|
|
88
109
|
- diameter: main nominal diameter in inches
|
|
@@ -28,10 +28,32 @@ export declare const DuctSegmentNode: z.ZodObject<{
|
|
|
28
28
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
29
29
|
zoom: z.ZodOptional<z.ZodNumber>;
|
|
30
30
|
}, z.core.$strip>>;
|
|
31
|
-
metadata: z.ZodDefault<z.ZodOptional<z.
|
|
31
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
32
32
|
id: z.ZodDefault<z.ZodTemplateLiteral<`duct-segment_${string}`>>;
|
|
33
33
|
type: z.ZodDefault<z.ZodLiteral<"duct-segment">>;
|
|
34
34
|
path: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
35
|
+
autoHangers: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
hangerOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
37
|
+
fraction: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
skipped: z.ZodOptional<z.ZodBoolean>;
|
|
39
|
+
hostId: z.ZodOptional<z.ZodString>;
|
|
40
|
+
}, z.core.$strip>>>;
|
|
41
|
+
hangerStyle: z.ZodOptional<z.ZodEnum<{
|
|
42
|
+
double: "double";
|
|
43
|
+
single: "single";
|
|
44
|
+
}>>;
|
|
45
|
+
hangerSpacing: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
hangerMaxReach: z.ZodOptional<z.ZodNumber>;
|
|
47
|
+
wallAttachment: z.ZodOptional<z.ZodObject<{
|
|
48
|
+
wallId: z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>;
|
|
49
|
+
side: z.ZodEnum<{
|
|
50
|
+
front: "front";
|
|
51
|
+
back: "back";
|
|
52
|
+
}>;
|
|
53
|
+
startUV: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
54
|
+
endUV: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
55
|
+
offset: z.ZodNumber;
|
|
56
|
+
}, z.core.$strip>>;
|
|
35
57
|
shape: z.ZodDefault<z.ZodEnum<{
|
|
36
58
|
round: "round";
|
|
37
59
|
rect: "rect";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duct-segment.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/duct-segment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"duct-segment.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/duct-segment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4E3B,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import dedent from 'dedent';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
import { HangerOverrides } from './hanger-overrides';
|
|
4
5
|
/**
|
|
5
6
|
* Round duct segment — a polyline of 3D points connected by cylindrical
|
|
6
7
|
* duct sections. Forced-air HVAC supply/return runs in US residential.
|
|
@@ -20,6 +21,22 @@ export const DuctSegmentNode = BaseNode.extend({
|
|
|
20
21
|
type: nodeType('duct-segment'),
|
|
21
22
|
// Polyline path in level-local meters. Minimum two points (start, end).
|
|
22
23
|
path: z.array(z.tuple([z.number(), z.number(), z.number()])).min(2),
|
|
24
|
+
autoHangers: z.boolean().optional(),
|
|
25
|
+
hangerOverrides: HangerOverrides.optional(),
|
|
26
|
+
hangerStyle: z.enum(['single', 'double']).optional(),
|
|
27
|
+
hangerSpacing: z.number().finite().positive().optional(),
|
|
28
|
+
hangerMaxReach: z.number().finite().positive().optional(),
|
|
29
|
+
// Logical wall host for runs drafted on a wall. The path remains
|
|
30
|
+
// level-local; UV coordinates let wall edits reproject the run later.
|
|
31
|
+
wallAttachment: z
|
|
32
|
+
.object({
|
|
33
|
+
wallId: objectId('wall'),
|
|
34
|
+
side: z.enum(['front', 'back']),
|
|
35
|
+
startUV: z.tuple([z.number(), z.number()]),
|
|
36
|
+
endUV: z.tuple([z.number(), z.number()]),
|
|
37
|
+
offset: z.number().finite().nonnegative(),
|
|
38
|
+
})
|
|
39
|
+
.optional(),
|
|
23
40
|
// Cross-section. Round is the branch default; rect is the trunk /
|
|
24
41
|
// plenum profile (real US systems: rect trunk, round branches); oval
|
|
25
42
|
// is the flat-oval profile (two semicircles of the duct height joined
|
|
@@ -60,6 +77,9 @@ export const DuctSegmentNode = BaseNode.extend({
|
|
|
60
77
|
slots: z.record(z.string(), z.string()).optional(),
|
|
61
78
|
}).describe(dedent `
|
|
62
79
|
Duct segment - polyline of 3D points connected by duct sections.
|
|
80
|
+
- autoHangers: automatically attach supports to nearby walls or ceilings (off when absent)
|
|
81
|
+
- hangerSpacing: distance between supports in meters (default 1.5)
|
|
82
|
+
- hangerMaxReach: maximum centerline-to-host distance in meters (default 2)
|
|
63
83
|
- path: list of [x, y, z] points in level-local meters (min 2)
|
|
64
84
|
- shape: round (branches) | rect (trunks / plenums) | oval (flat-oval, tight joist bays)
|
|
65
85
|
- diameter: nominal inner diameter in inches for round (typ. 4-14 residential)
|
|
@@ -26,7 +26,7 @@ export declare const DuctTerminalNode: z.ZodObject<{
|
|
|
26
26
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
27
27
|
zoom: z.ZodOptional<z.ZodNumber>;
|
|
28
28
|
}, z.core.$strip>>;
|
|
29
|
-
metadata: z.ZodDefault<z.ZodOptional<z.
|
|
29
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
30
30
|
id: z.ZodDefault<z.ZodTemplateLiteral<`duct-terminal_${string}`>>;
|
|
31
31
|
type: z.ZodDefault<z.ZodLiteral<"duct-terminal">>;
|
|
32
32
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
@@ -31,7 +31,7 @@ export declare const ElevatorNode: z.ZodObject<{
|
|
|
31
31
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
32
32
|
zoom: z.ZodOptional<z.ZodNumber>;
|
|
33
33
|
}, z.core.$strip>>;
|
|
34
|
-
metadata: z.ZodDefault<z.ZodOptional<z.
|
|
34
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
35
35
|
id: z.ZodDefault<z.ZodTemplateLiteral<`elevator_${string}`>>;
|
|
36
36
|
type: z.ZodDefault<z.ZodLiteral<"elevator">>;
|
|
37
37
|
material: z.ZodOptional<z.ZodObject<{
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
export declare const EyebrowVentMaterialRole: z.ZodEnum<{
|
|
3
|
+
front: "front";
|
|
4
|
+
hood: "hood";
|
|
5
|
+
}>;
|
|
6
|
+
export type EyebrowVentMaterialRole = z.infer<typeof EyebrowVentMaterialRole>;
|
|
2
7
|
export declare const EyebrowVentNode: z.ZodObject<{
|
|
3
8
|
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
4
9
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -14,7 +19,7 @@ export declare const EyebrowVentNode: z.ZodObject<{
|
|
|
14
19
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
15
20
|
zoom: z.ZodOptional<z.ZodNumber>;
|
|
16
21
|
}, z.core.$strip>>;
|
|
17
|
-
metadata: z.ZodDefault<z.ZodOptional<z.
|
|
22
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
18
23
|
id: z.ZodDefault<z.ZodTemplateLiteral<`eyebrow-vent_${string}`>>;
|
|
19
24
|
type: z.ZodDefault<z.ZodLiteral<"eyebrow-vent">>;
|
|
20
25
|
material: z.ZodOptional<z.ZodObject<{
|
|
@@ -49,6 +54,7 @@ export declare const EyebrowVentNode: z.ZodObject<{
|
|
|
49
54
|
scale: z.ZodOptional<z.ZodNumber>;
|
|
50
55
|
}, z.core.$strip>>;
|
|
51
56
|
}, z.core.$strip>>;
|
|
57
|
+
slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
52
58
|
materialPreset: z.ZodDefault<z.ZodString>;
|
|
53
59
|
roofSegmentId: z.ZodOptional<z.ZodString>;
|
|
54
60
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
@@ -57,8 +63,8 @@ export declare const EyebrowVentNode: z.ZodObject<{
|
|
|
57
63
|
depth: z.ZodDefault<z.ZodNumber>;
|
|
58
64
|
height: z.ZodDefault<z.ZodNumber>;
|
|
59
65
|
style: z.ZodDefault<z.ZodEnum<{
|
|
60
|
-
scoop: "scoop";
|
|
61
66
|
"half-round": "half-round";
|
|
67
|
+
scoop: "scoop";
|
|
62
68
|
"slant-box": "slant-box";
|
|
63
69
|
}>>;
|
|
64
70
|
louverCount: z.ZodDefault<z.ZodNumber>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eyebrow-vent.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/eyebrow-vent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"eyebrow-vent.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/eyebrow-vent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,uBAAuB;;;EAA4B,CAAA;AAChE,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4C3B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA"}
|
|
@@ -2,10 +2,12 @@ import dedent from 'dedent';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
4
|
import { MaterialSchema } from '../material';
|
|
5
|
+
export const EyebrowVentMaterialRole = z.enum(['hood', 'front']);
|
|
5
6
|
export const EyebrowVentNode = BaseNode.extend({
|
|
6
7
|
id: objectId('eyebrow-vent'),
|
|
7
8
|
type: nodeType('eyebrow-vent'),
|
|
8
9
|
material: MaterialSchema.optional(),
|
|
10
|
+
slots: z.record(z.string(), z.string()).optional(),
|
|
9
11
|
// Default to the white preset so a freshly-placed vent reads as clean
|
|
10
12
|
// painted metal and the paint inspector shows "White" (matches box-vent).
|
|
11
13
|
materialPreset: z.string().default('preset-white'),
|
|
@@ -29,7 +29,7 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
29
29
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
30
30
|
zoom: z.ZodOptional<z.ZodNumber>;
|
|
31
31
|
}, z.core.$strip>>;
|
|
32
|
-
metadata: z.ZodDefault<z.ZodOptional<z.
|
|
32
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
33
33
|
id: z.ZodDefault<z.ZodTemplateLiteral<`fence_${string}`>>;
|
|
34
34
|
type: z.ZodDefault<z.ZodLiteral<"fence">>;
|
|
35
35
|
material: z.ZodOptional<z.ZodObject<{
|
|
@@ -22,7 +22,7 @@ export declare const GuideNode: z.ZodObject<{
|
|
|
22
22
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
23
23
|
zoom: z.ZodOptional<z.ZodNumber>;
|
|
24
24
|
}, z.core.$strip>>;
|
|
25
|
-
metadata: z.ZodDefault<z.ZodOptional<z.
|
|
25
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
26
26
|
id: z.ZodDefault<z.ZodTemplateLiteral<`guide_${string}`>>;
|
|
27
27
|
type: z.ZodDefault<z.ZodLiteral<"guide">>;
|
|
28
28
|
url: z.ZodString;
|
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { type RoofSegmentNode } from './roof-segment';
|
|
3
|
+
export declare const GUTTER_EAVE_TUCK_INWARD = 0.04;
|
|
4
|
+
export declare const GUTTER_EAVE_TUCK_UP = 0.04;
|
|
5
|
+
export type GutterEaveSide = '+X' | '-X' | '+Z' | '-Z';
|
|
6
|
+
export type GutterRun = {
|
|
7
|
+
side: GutterEaveSide;
|
|
8
|
+
position: [number, number, number];
|
|
9
|
+
rotation: number;
|
|
10
|
+
length: number;
|
|
11
|
+
};
|
|
12
|
+
export type GutterEdgeExclusion = {
|
|
13
|
+
side: GutterEaveSide;
|
|
14
|
+
from: number;
|
|
15
|
+
to: number;
|
|
16
|
+
};
|
|
2
17
|
export declare const GutterOutlet: z.ZodObject<{
|
|
3
18
|
id: z.ZodString;
|
|
4
19
|
offset: z.ZodDefault<z.ZodNumber>;
|
|
5
20
|
diameter: z.ZodDefault<z.ZodNumber>;
|
|
21
|
+
generatedBy: z.ZodOptional<z.ZodLiteral<"default-downspout">>;
|
|
6
22
|
}, z.core.$strip>;
|
|
7
23
|
export type GutterOutlet = z.infer<typeof GutterOutlet>;
|
|
8
24
|
export declare const GutterNode: z.ZodObject<{
|
|
@@ -20,7 +36,7 @@ export declare const GutterNode: z.ZodObject<{
|
|
|
20
36
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
21
37
|
zoom: z.ZodOptional<z.ZodNumber>;
|
|
22
38
|
}, z.core.$strip>>;
|
|
23
|
-
metadata: z.ZodDefault<z.ZodOptional<z.
|
|
39
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
24
40
|
id: z.ZodDefault<z.ZodTemplateLiteral<`gutter_${string}`>>;
|
|
25
41
|
type: z.ZodDefault<z.ZodLiteral<"gutter">>;
|
|
26
42
|
material: z.ZodOptional<z.ZodObject<{
|
|
@@ -55,17 +71,23 @@ export declare const GutterNode: z.ZodObject<{
|
|
|
55
71
|
scale: z.ZodOptional<z.ZodNumber>;
|
|
56
72
|
}, z.core.$strip>>;
|
|
57
73
|
}, z.core.$strip>>;
|
|
74
|
+
slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
58
75
|
materialPreset: z.ZodDefault<z.ZodString>;
|
|
59
76
|
roofSegmentId: z.ZodOptional<z.ZodString>;
|
|
60
77
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
61
78
|
rotation: z.ZodDefault<z.ZodNumber>;
|
|
62
79
|
length: z.ZodDefault<z.ZodNumber>;
|
|
80
|
+
arc: z.ZodOptional<z.ZodObject<{
|
|
81
|
+
centerX: z.ZodNumber;
|
|
82
|
+
centerZ: z.ZodNumber;
|
|
83
|
+
radius: z.ZodNumber;
|
|
84
|
+
}, z.core.$strip>>;
|
|
63
85
|
size: z.ZodDefault<z.ZodNumber>;
|
|
64
86
|
thickness: z.ZodDefault<z.ZodNumber>;
|
|
65
87
|
profile: z.ZodDefault<z.ZodEnum<{
|
|
66
88
|
box: "box";
|
|
67
|
-
"half-round": "half-round";
|
|
68
89
|
"k-style": "k-style";
|
|
90
|
+
"half-round": "half-round";
|
|
69
91
|
}>>;
|
|
70
92
|
endCapLeft: z.ZodDefault<z.ZodBoolean>;
|
|
71
93
|
endCapRight: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -78,7 +100,19 @@ export declare const GutterNode: z.ZodObject<{
|
|
|
78
100
|
id: z.ZodString;
|
|
79
101
|
offset: z.ZodDefault<z.ZodNumber>;
|
|
80
102
|
diameter: z.ZodDefault<z.ZodNumber>;
|
|
103
|
+
generatedBy: z.ZodOptional<z.ZodLiteral<"default-downspout">>;
|
|
81
104
|
}, z.core.$strip>>>;
|
|
82
105
|
}, z.core.$strip>;
|
|
83
106
|
export type GutterNode = z.infer<typeof GutterNode>;
|
|
107
|
+
export declare function computeGutterEaveY(segment: Pick<RoofSegmentNode, 'wallHeight' | 'overhang' | 'pitch' | 'roofType'>): number;
|
|
108
|
+
export declare function getGutterRunsForSegment(segment: RoofSegmentNode, roofSegments?: readonly RoofSegmentNode[], exclusions?: readonly GutterEdgeExclusion[]): GutterRun[];
|
|
109
|
+
export declare function createDefaultGuttersForSegment(segment: RoofSegmentNode, roofSegments?: readonly RoofSegmentNode[], exclusions?: readonly GutterEdgeExclusion[]): GutterNode[];
|
|
110
|
+
export declare function getDefaultGutterSide(node: unknown, roofSegmentId?: RoofSegmentNode['id']): GutterEaveSide | null;
|
|
111
|
+
export declare function isDefaultGutterNode(node: unknown, roofSegmentId?: RoofSegmentNode['id']): node is GutterNode;
|
|
112
|
+
export declare function hasAutoGutterMetadata(segment: Pick<RoofSegmentNode, 'metadata'>): segment is Pick<RoofSegmentNode, 'metadata'> & {
|
|
113
|
+
metadata: Record<string, unknown> & {
|
|
114
|
+
autoGutter: boolean;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
export declare function isAutoGutterEnabled(segment: Pick<RoofSegmentNode, 'id' | 'children' | 'metadata'>, nodes?: Record<string, unknown>): boolean;
|
|
84
118
|
//# sourceMappingURL=gutter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gutter.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/gutter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"gutter.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/gutter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAO/E,eAAO,MAAM,uBAAuB,OAAO,CAAA;AAC3C,eAAO,MAAM,mBAAmB,OAAO,CAAA;AACvC,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEtD,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAQD,eAAO,MAAM,YAAY;;;;;iBAWvB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAEvD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8EtB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AASnD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC,GAC/E,MAAM,CAKR;AAmND,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,eAAe,EACxB,YAAY,GAAE,SAAS,eAAe,EAAO,EAC7C,UAAU,GAAE,SAAS,mBAAmB,EAAO,GAC9C,SAAS,EAAE,CAkDb;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,eAAe,EACxB,YAAY,GAAE,SAAS,eAAe,EAAO,EAC7C,UAAU,GAAE,SAAS,mBAAmB,EAAO,GAC9C,UAAU,EAAE,CAcd;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,aAAa,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,GACpC,cAAc,GAAG,IAAI,CAQvB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,EACb,aAAa,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,GACpC,IAAI,IAAI,UAAU,CAEpB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,OAAO,IAAI,IAAI,CAChG,eAAe,EACf,UAAU,CACX,GAAG;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;CAC5D,CAEA;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,EAC9D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAKT"}
|