feat: HVAC ductwork + DWV plumbing systems (#402)

Adds two new MEP node families (HVAC ductwork, DWV plumbing) built on a shared port-connectivity model. Co-authored by @sudhir9297.
This commit is contained in:
Sudhir Yadav
2026-06-16 15:30:39 -04:00
committed by GitHub
parent a0d3d9c701
commit 5551500d98
172 changed files with 17361 additions and 150 deletions
+27
View File
@@ -11,13 +11,22 @@ import type {
DoorNode,
DormerNode,
DownspoutNode,
DuctFittingNode,
DuctSegmentNode,
DuctTerminalNode,
ElevatorNode,
EyebrowVentNode,
FenceNode,
GuideNode,
GutterNode,
HvacEquipmentNode,
ItemNode,
LevelNode,
LinesetNode,
LiquidLineNode,
PipeFittingNode,
PipeSegmentNode,
PipeTrapNode,
RidgeVentNode,
RoofNode,
RoofSegmentNode,
@@ -107,6 +116,15 @@ export type SolarPanelEvent = NodeEvent<SolarPanelNode>
export type SkylightEvent = NodeEvent<SkylightNode>
export type DormerEvent = NodeEvent<DormerNode>
export type DownspoutEvent = NodeEvent<DownspoutNode>
export type DuctSegmentEvent = NodeEvent<DuctSegmentNode>
export type DuctFittingEvent = NodeEvent<DuctFittingNode>
export type DuctTerminalEvent = NodeEvent<DuctTerminalNode>
export type HvacEquipmentEvent = NodeEvent<HvacEquipmentNode>
export type PipeSegmentEvent = NodeEvent<PipeSegmentNode>
export type PipeFittingEvent = NodeEvent<PipeFittingNode>
export type PipeTrapEvent = NodeEvent<PipeTrapNode>
export type LinesetEvent = NodeEvent<LinesetNode>
export type LiquidLineEvent = NodeEvent<LiquidLineNode>
// Event suffixes - exported for use in hooks
export const eventSuffixes = [
@@ -261,6 +279,15 @@ type EditorEvents = GridEvents &
NodeEvents<'skylight', SkylightEvent> &
NodeEvents<'dormer', DormerEvent> &
NodeEvents<'downspout', DownspoutEvent> &
NodeEvents<'duct-segment', DuctSegmentEvent> &
NodeEvents<'duct-fitting', DuctFittingEvent> &
NodeEvents<'duct-terminal', DuctTerminalEvent> &
NodeEvents<'hvac-equipment', HvacEquipmentEvent> &
NodeEvents<'pipe-segment', PipeSegmentEvent> &
NodeEvents<'pipe-fitting', PipeFittingEvent> &
NodeEvents<'pipe-trap', PipeTrapEvent> &
NodeEvents<'lineset', LinesetEvent> &
NodeEvents<'liquid-line', LiquidLineEvent> &
CameraControlEvents &
ToolEvents &
GuideEvents &