@mp70/react-networks 0.5.0-rc.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import React$1, { Component, ReactNode, ErrorInfo } from 'react';
1
+ import React$1, { Component, ReactNode, ErrorInfo, CSSProperties } from 'react';
2
+ import * as reactflow from 'reactflow';
2
3
  import { Node, NodeTypes, EdgeTypes, Connection, Edge, ConnectionMode, ReactFlowInstance, Viewport, FitViewOptions, NodeProps, EdgeProps } from 'reactflow';
3
4
 
4
5
  type FibreFlowCableKind = 'simple' | 'tube';
@@ -240,7 +241,7 @@ declare enum Width {
240
241
  * Port type enumeration
241
242
  * @public
242
243
  */
243
- type PortType = 'ethernet' | 'fiber' | 'console' | 'mgmt' | 'usb' | 'power_ac' | 'power_c13' | 'power_c19';
244
+ type PortType = 'ethernet' | 'rj45' | 'fiber' | 'console' | 'mgmt' | 'usb' | 'power_ac' | 'power_c13' | 'power_c19';
244
245
  /**
245
246
  * Cable types used for connected network ports.
246
247
  * @public
@@ -383,6 +384,17 @@ type DeviceStatus = 'active' | 'inactive' | 'maintenance';
383
384
  * @public
384
385
  */
385
386
  type DeviceFace = 'front' | 'rear';
387
+ type DiagramPortHandleRef = {
388
+ nodeId: string;
389
+ handleId: string;
390
+ };
391
+ type DiagramPortClickPayload = {
392
+ nodeId: string;
393
+ handleId: string;
394
+ groupName: string;
395
+ portLabel: string;
396
+ face: DeviceFace;
397
+ };
386
398
  /**
387
399
  * Rack rendering layout modes.
388
400
  * @public
@@ -413,12 +425,14 @@ interface NetworkNodeDataBase extends DeviceImageOptions {
413
425
  label: string;
414
426
  /** Current status of the node/device */
415
427
  status?: DeviceStatus | string;
416
- /** Simple flat port input. Use `portGroups` / `rearPortGroups` for explicit grouped control. */
417
- ports?: DevicePort[] | number;
428
+ /** Simple flat port input or grouped port blocks. Use `portGroups` / `rearPortGroups` for explicit grouped control. */
429
+ ports?: DevicePort[] | PortBlock[] | number;
418
430
  /** Advanced grouped front port input */
419
431
  portGroups?: PortBlock[];
420
432
  /** Advanced grouped rear port input */
421
433
  rearPortGroups?: PortBlock[];
434
+ /** Grouped rear port blocks (rack JSON alias for `rearPortGroups`) */
435
+ rearPorts?: PortBlock[];
422
436
  /** List of connected node IDs */
423
437
  connections?: string[];
424
438
  /** NetBox integration ID */
@@ -445,6 +459,11 @@ interface NetworkNodeDataBase extends DeviceImageOptions {
445
459
  mountMode?: RackMountMode;
446
460
  /** Device type specification */
447
461
  deviceType?: string;
462
+ /**
463
+ * When false, device elevation renders as a status-colored block without front/rear photos.
464
+ * Defaults to true (show photos when URLs exist).
465
+ */
466
+ showDeviceImages?: boolean;
448
467
  /** Device manufacturer */
449
468
  manufacturer?: string;
450
469
  /** Device role in network */
@@ -575,7 +594,7 @@ interface RackNodeData extends NetworkNodeDataBase {
575
594
  * @public
576
595
  */
577
596
  interface DeviceNodeData extends NetworkNodeDataBase {
578
- ports?: DevicePort[] | number;
597
+ ports?: DevicePort[] | PortBlock[] | number;
579
598
  }
580
599
  /**
581
600
  * Fibre flow cable node data.
@@ -912,14 +931,16 @@ interface RackDevice extends DeviceImageOptions {
912
931
  mountMode?: RackMountMode;
913
932
  /** Device role in network */
914
933
  role?: string;
915
- /** Recommended simple port input. Use `portGroups` / `rearPortGroups` for explicit grouped control. */
916
- ports?: DevicePort[];
934
+ /** Recommended simple port input (flat `DevicePort[]` or grouped `PortBlock[]`). */
935
+ ports?: DevicePort[] | PortBlock[];
917
936
  /** Current status of the device */
918
937
  status?: DeviceStatus | string;
919
938
  /** Advanced grouped front port input */
920
939
  portGroups?: PortBlock[];
921
940
  /** Advanced grouped rear port input */
922
941
  rearPortGroups?: PortBlock[];
942
+ /** Grouped rear port blocks (rack JSON alias for `rearPortGroups`) */
943
+ rearPorts?: PortBlock[];
923
944
  /** Power port side for rear face */
924
945
  powerSide?: PowerSide;
925
946
  /** Connected device IDs */
@@ -1212,6 +1233,26 @@ interface NetworkDiagramProps {
1212
1233
  * Defaults to true, matching the library's existing large-diagram behavior.
1213
1234
  */
1214
1235
  onlyRenderVisibleElements?: boolean;
1236
+ /** Node IDs to keep at full opacity when diagram focus dimming is enabled */
1237
+ highlightedNodeIds?: string[];
1238
+ /** Edge IDs to keep at full opacity when diagram focus dimming is enabled */
1239
+ highlightedEdgeIds?: string[];
1240
+ /**
1241
+ * When true, non-highlighted nodes and edges are dimmed while focus IDs are set.
1242
+ * Edges connected to highlighted nodes remain in focus unless
1243
+ * `connectEdgesToHighlightedNodes` is false.
1244
+ */
1245
+ dimUnhighlighted?: boolean;
1246
+ /** Opacity for dimmed nodes/edges (0-1). Defaults to 0.25 */
1247
+ dimOpacity?: number;
1248
+ /** When false, only explicit highlightedEdgeIds stay bright during focus. */
1249
+ connectEdgesToHighlightedNodes?: boolean;
1250
+ /** When false, devices render without rack photos. Status border still uses `getStatusColor`. Default true. */
1251
+ showDeviceImages?: boolean;
1252
+ /** Port handles kept highlighted during diagram trace/focus. */
1253
+ highlightedPortHandles?: DiagramPortHandleRef[];
1254
+ /** Fired when a port handle is clicked (typically in read-only trace mode). */
1255
+ onPortClick?: (payload: DiagramPortClickPayload) => void;
1215
1256
  }
1216
1257
 
1217
1258
  declare const NetworkDiagram: React$1.FC<NetworkDiagramProps>;
@@ -1260,91 +1301,32 @@ interface RackNodeProps extends NodeProps<NetworkNode['data']> {
1260
1301
  onRackFaceChange?: (rackId: string, face: 'front' | 'rear') => void;
1261
1302
  isDragOver?: boolean;
1262
1303
  }
1263
- /**
1264
- * Rack visualization component with U positioning support.
1265
- *
1266
- * Displays a 19" rack with configurable height, front/rear face switching,
1267
- * and support for mounting devices at specific U positions.
1268
- *
1269
- * @example
1270
- * ```tsx
1271
- * {
1272
- * id: 'rack-1',
1273
- * type: 'rack',
1274
- * position: { x: 100, y: 100 },
1275
- * data: {
1276
- * label: 'Main Rack',
1277
- * uHeight: 42,
1278
- * status: 'active'
1279
- * }
1280
- * }
1281
- * ```
1282
- *
1283
- * @public
1284
- */
1285
- declare const RackNode: React$1.FC<RackNodeProps>;
1304
+ /** Memoized; uses useStoreApi (not useReactFlow) so rack chrome does not re-render on every node move. */
1305
+ declare const RackNode: React$1.NamedExoticComponent<RackNodeProps>;
1286
1306
 
1287
1307
  declare const FiberNode: React$1.FC<NodeProps<NetworkNode['data']>>;
1288
1308
 
1289
- /**
1290
- * Fiber edge component for connecting fiber ports between nodes.
1291
- *
1292
- * Supports both single fiber connections with color coding and ribbon fiber
1293
- * connections (6-12 fibers) with parallel stripe visualization.
1294
- *
1295
- * @example
1296
- * ```tsx
1297
- * {
1298
- * id: 'edge-1',
1299
- * source: 'node-1',
1300
- * target: 'node-2',
1301
- * sourceHandle: 'fiber-1',
1302
- * targetHandle: 'fiber-2',
1303
- * type: 'fiber',
1304
- * data: {
1305
- * kind: 'fiber',
1306
- * ribbonFiberIds: [1, 2, 3, 4, 5, 6] // For ribbon mode
1307
- * }
1308
- * }
1309
- * ```
1310
- *
1311
- * @public
1312
- */
1313
- declare const FiberEdge: React$1.FC<EdgeProps<NetworkEdge['data']> & {
1309
+ declare const FiberEdge: React$1.NamedExoticComponent<Pick<reactflow.Edge<NetworkEdgeData | undefined>, "id" | "data" | "source" | "target" | "style" | "selected" | "animated"> & Pick<reactflow.WrapEdgeProps<any>, "sourcePosition" | "targetPosition" | "interactionWidth" | "sourceX" | "sourceY" | "targetX" | "targetY" | "sourceHandleId" | "targetHandleId"> & {
1310
+ label?: string | React$1.ReactNode;
1311
+ labelStyle?: React$1.CSSProperties;
1312
+ labelShowBg?: boolean;
1313
+ labelBgStyle?: React$1.CSSProperties;
1314
+ labelBgPadding?: [number, number];
1315
+ labelBgBorderRadius?: number;
1316
+ } & {
1317
+ markerStart?: string;
1318
+ markerEnd?: string;
1319
+ pathOptions?: any;
1320
+ } & {
1314
1321
  className?: string;
1315
1322
  }>;
1316
1323
 
1317
- declare const PowerEdge: React$1.FC<EdgeProps>;
1324
+ declare const PowerEdge: React$1.NamedExoticComponent<EdgeProps>;
1318
1325
 
1319
- /**
1320
- * Device visualization component with port management.
1321
- *
1322
- * Represents a device that can be placed in a rack. Supports port configuration,
1323
- * U positioning, front/rear views, and various device types (servers, switches, routers, etc.).
1324
- *
1325
- * @example
1326
- * ```tsx
1327
- * {
1328
- * id: 'server-1',
1329
- * type: 'device',
1330
- * position: { x: 120, y: 150 },
1331
- * parentId: 'rack-1',
1332
- * data: {
1333
- * label: 'Web Server',
1334
- * deviceType: 'server',
1335
- * uPosition: 1,
1336
- * ports: [
1337
- * { id: 'eth0', label: 'eth0', group: 'Network Ports', connected: true, type: 'ethernet' }
1338
- * ]
1339
- * }
1340
- * }
1341
- * ```
1342
- *
1343
- * @public
1344
- */
1345
- declare const DeviceNode: React$1.FC<NodeProps<NetworkNode['data']>>;
1326
+ /** Memoized to avoid re-rendering rack devices when unrelated nodes move (React Flow perf guide). */
1327
+ declare const DeviceNode: React$1.NamedExoticComponent<NodeProps<NetworkNodeDataBase | RackNodeData | DeviceNodeData | FibreFlowCableNodeData | FibreFlowClosureNodeData>>;
1346
1328
 
1347
- declare const VerticalPDU: React$1.FC<NodeProps<NetworkNode['data']>>;
1329
+ declare const VerticalPDU: React$1.NamedExoticComponent<NodeProps<NetworkNodeDataBase | RackNodeData | DeviceNodeData | FibreFlowCableNodeData | FibreFlowClosureNodeData>>;
1348
1330
 
1349
1331
  declare const SpliceNode: React$1.FC<NodeProps<NetworkNode['data']>>;
1350
1332
 
@@ -2128,7 +2110,10 @@ declare function buildPortBlocksFromPorts(devicePorts: DevicePort[]): {
2128
2110
  * flat `ports: DevicePort[]` or explicit `portGroups` / `rearPortGroups`.
2129
2111
  * @public
2130
2112
  */
2131
- declare function getResolvedPortBlocks(data: Pick<NetworkNode['data'], 'ports' | 'portGroups' | 'rearPortGroups'> | undefined): {
2113
+ type ResolvedPortBlockInput = Pick<NetworkNode['data'], 'ports' | 'portGroups' | 'rearPortGroups'> & {
2114
+ rearPorts?: PortBlock[];
2115
+ };
2116
+ declare function getResolvedPortBlocks(data: ResolvedPortBlockInput | undefined): {
2132
2117
  ports: PortBlock[];
2133
2118
  rearPorts: PortBlock[];
2134
2119
  };
@@ -2158,6 +2143,139 @@ declare function hasRearPorts(data: Pick<NetworkNode['data'], 'ports' | 'portGro
2158
2143
  */
2159
2144
  declare function getDefaultDeviceFace(data: Pick<NetworkNode['data'], 'ports' | 'portGroups' | 'rearPortGroups'> | undefined): DeviceFace;
2160
2145
 
2146
+ /**
2147
+ * Normalize source/target directional suffixes used for bidirectional handles.
2148
+ * Example: `Rear Ports-1-target` -\> `Rear Ports-1`.
2149
+ */
2150
+ declare function normalizeDirectionalHandleId(handleId: string | null | undefined): string;
2151
+ /**
2152
+ * Normalize rendered handle ids back to their canonical endpoint id.
2153
+ * This removes both directional suffixes and split-face rear aliases.
2154
+ */
2155
+ declare function normalizeHandleId(handleId: string | null | undefined): string;
2156
+ /**
2157
+ * Returns true when a port type is considered power-related.
2158
+ */
2159
+ declare function isPowerPortType(portType: string | undefined): boolean;
2160
+ /**
2161
+ * Build a stable handle id for a port.
2162
+ * Power ports use the label directly to preserve legacy ids.
2163
+ */
2164
+ declare function buildPortHandleId(portBlockName: string, port: Pick<Port, 'label' | 'id'> & {
2165
+ type?: string;
2166
+ }): string;
2167
+ /**
2168
+ * Heuristic for whether a handle id represents a power endpoint.
2169
+ */
2170
+ declare function looksLikePowerHandleId(handleId: string): boolean;
2171
+
2172
+ /**
2173
+ * Resolve the effective device face for a flat port input.
2174
+ * @public
2175
+ */
2176
+ declare function resolveDevicePortFace(port: Pick<DevicePort, 'face' | 'type'>): DeviceFace;
2177
+ /** @deprecated Use {@link resolveDevicePortFace}. */
2178
+ declare const resolveReactNetworksPortFace: typeof resolveDevicePortFace;
2179
+ /**
2180
+ * Resolve the effective port group name for a flat port input.
2181
+ * @public
2182
+ */
2183
+ declare function resolveDevicePortGroup(port: Pick<DevicePort, 'face' | 'group' | 'type'>): string;
2184
+ /** @deprecated Use {@link resolveDevicePortGroup}. */
2185
+ declare const resolveReactNetworksPortGroup: typeof resolveDevicePortGroup;
2186
+ /**
2187
+ * Normalize unknown port array input into canonical flat {@link DevicePort} entries.
2188
+ * @public
2189
+ */
2190
+ declare function normalizeDevicePorts(value: unknown): DevicePort[] | undefined;
2191
+ /** @deprecated Use {@link normalizeDevicePorts}. */
2192
+ declare const normalizeReactNetworksPorts: typeof normalizeDevicePorts;
2193
+ /**
2194
+ * Resolve flat device ports from node data supporting flat or grouped port input.
2195
+ * @public
2196
+ */
2197
+ declare function resolveNodeDevicePorts(value: unknown): DevicePort[] | undefined;
2198
+ /** @deprecated Use {@link resolveNodeDevicePorts}. */
2199
+ declare const resolveReactNetworksNodePorts: typeof resolveNodeDevicePorts;
2200
+ /**
2201
+ * Flatten grouped port blocks into canonical flat {@link DevicePort} entries.
2202
+ * @public
2203
+ */
2204
+ declare function flattenDevicePortsFromGroups({ portGroups, rearPortGroups, }: {
2205
+ portGroups?: PortBlock[];
2206
+ rearPortGroups?: PortBlock[];
2207
+ }): DevicePort[];
2208
+ /** @deprecated Use {@link flattenDevicePortsFromGroups}. */
2209
+ declare const flattenReactNetworksPortGroups: typeof flattenDevicePortsFromGroups;
2210
+ /**
2211
+ * Build grouped port blocks from flat device port input.
2212
+ * @public
2213
+ */
2214
+ declare function buildDevicePortGroupsFromPorts(ports: DevicePort[] | undefined): {
2215
+ portGroups: PortBlock[];
2216
+ rearPortGroups: PortBlock[];
2217
+ };
2218
+ /** @deprecated Use {@link buildDevicePortGroupsFromPorts}. */
2219
+ declare const buildReactNetworksPortGroupsFromPorts: typeof buildDevicePortGroupsFromPorts;
2220
+ interface ListPossiblePortHandleIdsOptions {
2221
+ deviceType?: string;
2222
+ face?: DeviceFace;
2223
+ }
2224
+ /**
2225
+ * List handle ids that may exist on a rendered node for a port.
2226
+ * @public
2227
+ */
2228
+ declare function listPossiblePortHandleIds(portBlockName: string, port: Pick<Port, 'id' | 'label' | 'type'>, options?: ListPossiblePortHandleIdsOptions): string[];
2229
+ /**
2230
+ * Validate that a handle id exists on node data after grouping resolution.
2231
+ * @public
2232
+ */
2233
+ declare function validatePortHandleOnNodeData(nodeData: Pick<NetworkNodeDataBase, 'ports' | 'portGroups' | 'rearPortGroups'> | undefined, handle: string, options?: {
2234
+ deviceType?: string;
2235
+ sanitizeHandle?: (value: string) => string;
2236
+ }): boolean;
2237
+ /**
2238
+ * Convert flat ports to grouped blocks using the same rules as renderers.
2239
+ * @public
2240
+ */
2241
+ declare function resolveDevicePortBlocksFromFlatPorts(ports: DevicePort[]): {
2242
+ portGroups: PortBlock[];
2243
+ rearPortGroups: PortBlock[];
2244
+ };
2245
+
2246
+ declare const parseSemanticPortPosition: (value: string) => PortPosition | undefined;
2247
+ declare const normalizePortPositionInput: (value: unknown) => PortPosition | undefined;
2248
+
2249
+ type PathLayoutDirection = 'horizontal' | 'vertical';
2250
+ interface PathLayoutStepInput {
2251
+ id: string;
2252
+ type?: NetworkNode['type'];
2253
+ data?: NetworkNode['data'];
2254
+ }
2255
+ interface PathLayoutEdgeInput {
2256
+ id: string;
2257
+ source: string;
2258
+ target: string;
2259
+ type?: NetworkEdge['type'];
2260
+ data?: NetworkEdge['data'];
2261
+ }
2262
+ interface BuildPathLayoutOptions {
2263
+ direction?: PathLayoutDirection;
2264
+ spacing?: number;
2265
+ origin?: {
2266
+ x: number;
2267
+ y: number;
2268
+ };
2269
+ }
2270
+ /**
2271
+ * Lay out a sequential path of nodes and connecting edges with deterministic spacing.
2272
+ * @public
2273
+ */
2274
+ declare function buildPathLayoutGraph(steps: PathLayoutStepInput[], edges: PathLayoutEdgeInput[], options?: BuildPathLayoutOptions): {
2275
+ nodes: NetworkNode[];
2276
+ edges: NetworkEdge[];
2277
+ };
2278
+
2161
2279
  interface NetworkGraphSnapshot {
2162
2280
  nodes: NetworkNode[];
2163
2281
  edges: NetworkEdge[];
@@ -2365,6 +2483,41 @@ interface ReplaceEdgeOptions {
2365
2483
  */
2366
2484
  declare function replaceEdge(options: ReplaceEdgeOptions): Edge[] | null;
2367
2485
 
2486
+ interface DiagramFocusOptions {
2487
+ highlightedNodeIds?: readonly string[];
2488
+ highlightedEdgeIds?: readonly string[];
2489
+ dimUnhighlighted?: boolean;
2490
+ dimOpacity?: number;
2491
+ /** When false, only explicit highlightedEdgeIds stay bright (not every edge on a highlighted node). */
2492
+ connectEdgesToHighlightedNodes?: boolean;
2493
+ }
2494
+ declare const DEFAULT_DIAGRAM_DIM_OPACITY = 0.25;
2495
+ declare function hasDiagramFocus(options: DiagramFocusOptions): boolean;
2496
+ declare function isNodeInDiagramFocus(nodeId: string, options: DiagramFocusOptions): boolean;
2497
+ declare function isEdgeInDiagramFocus(edgeId: string, edge: Pick<NetworkEdge, 'source' | 'target'>, options: DiagramFocusOptions): boolean;
2498
+ type RuntimeNode = NetworkNode & {
2499
+ style?: CSSProperties;
2500
+ };
2501
+ type RuntimeEdge = NetworkEdge & {
2502
+ style?: CSSProperties;
2503
+ };
2504
+ declare function applyDiagramFocusToNodes<TNode extends RuntimeNode>(nodes: TNode[], options: DiagramFocusOptions): TNode[];
2505
+ declare function applyDiagramFocusToEdges<TEdge extends RuntimeEdge>(edges: TEdge[], options: DiagramFocusOptions): TEdge[];
2506
+
2507
+ declare function isDeviceDiagramNode(node: NetworkNode): boolean;
2508
+ declare function applyDeviceDisplayToNodes(nodes: NetworkNode[], options?: {
2509
+ showDeviceImages?: boolean;
2510
+ }, previousNodes?: NetworkNode[]): NetworkNode[];
2511
+
2512
+ type DiagramPortContextValue = {
2513
+ highlightedPortHandles?: readonly DiagramPortHandleRef[];
2514
+ onPortClick?: (payload: DiagramPortClickPayload) => void;
2515
+ portClickEnabled: boolean;
2516
+ };
2517
+ declare const DiagramPortProvider: React$1.Provider<DiagramPortContextValue>;
2518
+ declare function useDiagramPortInteraction(): DiagramPortContextValue;
2519
+ declare function isDiagramPortHandleHighlighted(highlightedPortHandles: readonly DiagramPortHandleRef[] | undefined, nodeId: string, handleId: string): boolean;
2520
+
2368
2521
  /**
2369
2522
  * Template Schema V2 — unified device template model.
2370
2523
  *
@@ -2674,4 +2827,4 @@ declare function useNetworkDiagram(store: NetworkDiagramStore): NetworkDiagramSt
2674
2827
  declare function useNodes(store: NetworkDiagramStore): NetworkNode[];
2675
2828
  declare function useEdges(store: NetworkDiagramStore): NetworkEdge[];
2676
2829
 
2677
- export { COUPLERS_PER_PANEL, COUPLER_SLOT_HEIGHT_PX, COUPLER_WIDTH_PX, CableNode, ClosureNode, CouplerNode, type DeviceFace, type DeviceImageFit, type DeviceImageOptions, type DeviceImageRepeat, DeviceNode, type DeviceNodeData, DevicePlacementError, type DevicePlacementValidation, type DevicePort, type DeviceStatus, type DeviceTemplateV2, type DiagramDocument, type DiagramEdge, type DiagramEdgeEndpoint, type DiagramEndpoint, DiagramErrorBoundary, type DiagramErrorBoundaryProps, type DiagramErrorBoundaryState, type DiagramExternalRef, type DiagramNode, type DiagramNodeKind, type DiagramNodePlacement, type DiagramNodeRender, type DiagramUiState, type EndpointConnectionKind, type EndpointMetadata, FIBER_COLORS_12, type FiberCable, type FiberCableType, type FiberColorId, FiberEdge, FiberNode, FibreCableWithTubesExpanded, type FibreCableWithTubesExpandedProps, type FibreFlowCable, type FibreFlowCableKind, type FibreFlowCableLayout, type FibreFlowCableNodeData, type FibreFlowCircuit, type FibreFlowClosure, type FibreFlowClosureNodeData, type FibreFlowColorMode, type FibreFlowEndpoint, type FibreFlowLayoutDirection, FibreFlowMap, type FibreFlowMapProps, type FibreFlowRow, type FibreFlowSplice, type FibreFlowTubeLabel, FibreSplitNode, HANDLE_EXTENSION_PX, type InventoryCableDTO, type InventoryDeviceDTO, type InventoryRackDTO, type MountClass, MultiTubeCableNode, type NetBoxCable, type NetBoxDevice, type NetBoxDeviceTransformOptions, type NetBoxInterface, type NetBoxMappedPort, type NetBoxPortPosition, type NetBoxRack, NetworkDiagram, type NetworkDiagramActionPanelOptions, type NetworkDiagramFitViewOptions, type NetworkDiagramFlowMethods, type NetworkDiagramFlowObject, type NetworkDiagramInteractionOptions, type NetworkDiagramOptions, type NetworkDiagramProps, type NetworkDiagramState, type NetworkDiagramStore, type NetworkDiagramStoreApi, type NetworkDiagramStoreState, type NetworkDiagramToImageOptions, type NetworkDiagramValidateConnectionParams, type NetworkDiagramValidationResult, type NetworkEdge, type NetworkEdgeData, type NetworkEdgeType, type NetworkGraphSnapshot, type NetworkNode, type NetworkNodeData, type NetworkNodeDataBase, type NetworkNodeDataByType, type NetworkNodeType, PANEL_BORDER_WIDTH, PANEL_HEADER_HEIGHT, PANEL_HEIGHT_PX, PANEL_PADDING, PANEL_TUBE_TRAY_SPACING, PANEL_WIDTH_PX, POWER_CONNECTORS, PatchPanelNode, type Port, type PortBlock, type PortCableType, type PortPosition, type PortType, type PortVisualDimensions, type PortVisualInput, type PortVisualKind, type PowerConnectorConfig, PowerEdge, type PowerPortStyle, type PowerSide, RACK_HEADER_HEIGHT, RACK_WIDTH_PX, type RackConfig, type RackDevice, type RackDeviceType, type RackLayoutMode, type RackMountMode, type RackMountedNodeType, RackNode, type RackNodeData, type RackNodeProps, type RackSchemaOptions, type RawNetboxTemplate, type RawTemplatePort, type RawTemplatePortBlock, type ReplaceEdgeOptions, type SpliceConfig, SpliceNode, SplicePlacementError, type SplicePlacementValidation, type SpliceSchemaOptions, type SpliceTrayConfig, SpliceTrayNode, TEMPLATE_SCHEMA_VERSION, type TemplateFaceData, type TemplateFrontRearPortLink, type TemplateParseResult, type TemplatePort, type TemplatePortBlock, type TemplateSource, type TemplateValidationIssue, type TemplateValidationReport, type TemplateWidth, TubeNode, type UNumberingDirection, U_HEIGHT_PX, type ValidateConnectionParams, type ValidationResult, VerticalPDU, Width, addDeviceToRack, addSpliceToTray, baseColorFor, buildNodesFromRackConfig, buildNodesFromSpliceConfig, buildPortBlocksFromPorts, calculateClosureDimensions, calculateCouplerRightX, calculateCouplerSlotSpacing, calculateCouplerSpacing, calculateDevicePositionFromU, calculatePanelDimensions, calculateSlotPositionFromY, calculateSplicePositionFromNumber, calculateUPositions, calculateYFromSlotPosition, countTemplateFacePorts, createNetworkDiagramStore, createRackConfigFromNodes, createSpliceConfigFromNodes, diagramDocumentToNetworkGraph, fiberSolidOrStriped, findNearestRack, findNextAvailableHolderPosition, findNextAvailableUPosition, generateLayout, getConnectorConfig, getCouplerDimensions, getDefaultDeviceFace, getDeviceConnectorType, getEndpointMetadata, getFiberColor, getFrontPortBlocks, getInnerContentWidth, getPDUPortType, getPanelHeight, getPanelWidth, getPowerPortStyle, getRackBounds, getRearPortBlocks, getResolvedPortBlocks, getStandardPortVisualDimensions, getStatusColor, getTrayDimensions, getTubeDimensions, hasFrontPorts, hasRearPorts, inventoryCableToNetworkEdge, inventoryDeviceToNetworkNode, inventoryRackToNetworkNode, inventoryToDiagramDocument, inventoryToNetworkDiagram, isHighPowerConnector, isPointInRack, isStriped, isUPositionAvailable, netboxCableToNetworkEdge, netboxDeviceToNetworkNode, netboxRackToNetworkNode, netboxToDiagramDocument, netboxToNetworkDiagram, networkGraphToDiagramDocument, parseNetboxTemplate, removeDeviceFromRack, removeSpliceFromTray, replaceEdge, resolveEndpointCompatibilityKeys, resolvePortVisualKind, snapToCouplerPosition, snapToSplicePosition, snapToUPosition, updateDeviceUPosition$1 as updateDeviceUPosition, updateDeviceUPosition as updateDeviceUPositionInSchema, updateSpliceHolderPosition, useEdges as useDiagramEdges, useNodes as useDiagramNodes, useNetworkDiagram, validateAndSnapDevice, validateRackDevicePlacements, validateRenderFidelity, validateSplicePlacements };
2830
+ export { type BuildPathLayoutOptions, COUPLERS_PER_PANEL, COUPLER_SLOT_HEIGHT_PX, COUPLER_WIDTH_PX, CableNode, ClosureNode, CouplerNode, DEFAULT_DIAGRAM_DIM_OPACITY, type DeviceFace, type DeviceImageFit, type DeviceImageOptions, type DeviceImageRepeat, DeviceNode, type DeviceNodeData, DevicePlacementError, type DevicePlacementValidation, type DevicePort, type DeviceStatus, type DeviceTemplateV2, type DiagramDocument, type DiagramEdge, type DiagramEdgeEndpoint, type DiagramEndpoint, DiagramErrorBoundary, type DiagramErrorBoundaryProps, type DiagramErrorBoundaryState, type DiagramExternalRef, type DiagramFocusOptions, type DiagramNode, type DiagramNodeKind, type DiagramNodePlacement, type DiagramNodeRender, type DiagramPortClickPayload, type DiagramPortContextValue, type DiagramPortHandleRef, DiagramPortProvider, type DiagramUiState, type EndpointConnectionKind, type EndpointMetadata, FIBER_COLORS_12, type FiberCable, type FiberCableType, type FiberColorId, FiberEdge, FiberNode, FibreCableWithTubesExpanded, type FibreCableWithTubesExpandedProps, type FibreFlowCable, type FibreFlowCableKind, type FibreFlowCableLayout, type FibreFlowCableNodeData, type FibreFlowCircuit, type FibreFlowClosure, type FibreFlowClosureNodeData, type FibreFlowColorMode, type FibreFlowEndpoint, type FibreFlowLayoutDirection, FibreFlowMap, type FibreFlowMapProps, type FibreFlowRow, type FibreFlowSplice, type FibreFlowTubeLabel, FibreSplitNode, HANDLE_EXTENSION_PX, type InventoryCableDTO, type InventoryDeviceDTO, type InventoryRackDTO, type ListPossiblePortHandleIdsOptions, type MountClass, MultiTubeCableNode, type NetBoxCable, type NetBoxDevice, type NetBoxDeviceTransformOptions, type NetBoxInterface, type NetBoxMappedPort, type NetBoxPortPosition, type NetBoxRack, NetworkDiagram, type NetworkDiagramActionPanelOptions, type NetworkDiagramFitViewOptions, type NetworkDiagramFlowMethods, type NetworkDiagramFlowObject, type NetworkDiagramInteractionOptions, type NetworkDiagramOptions, type NetworkDiagramProps, type NetworkDiagramState, type NetworkDiagramStore, type NetworkDiagramStoreApi, type NetworkDiagramStoreState, type NetworkDiagramToImageOptions, type NetworkDiagramValidateConnectionParams, type NetworkDiagramValidationResult, type NetworkEdge, type NetworkEdgeData, type NetworkEdgeType, type NetworkGraphSnapshot, type NetworkNode, type NetworkNodeData, type NetworkNodeDataBase, type NetworkNodeDataByType, type NetworkNodeType, PANEL_BORDER_WIDTH, PANEL_HEADER_HEIGHT, PANEL_HEIGHT_PX, PANEL_PADDING, PANEL_TUBE_TRAY_SPACING, PANEL_WIDTH_PX, POWER_CONNECTORS, PatchPanelNode, type PathLayoutDirection, type PathLayoutEdgeInput, type PathLayoutStepInput, type Port, type PortBlock, type PortCableType, type PortPosition, type PortType, type PortVisualDimensions, type PortVisualInput, type PortVisualKind, type PowerConnectorConfig, PowerEdge, type PowerPortStyle, type PowerSide, RACK_HEADER_HEIGHT, RACK_WIDTH_PX, type RackConfig, type RackDevice, type RackDeviceType, type RackLayoutMode, type RackMountMode, type RackMountedNodeType, RackNode, type RackNodeData, type RackNodeProps, type RackSchemaOptions, type RawNetboxTemplate, type RawTemplatePort, type RawTemplatePortBlock, type ReplaceEdgeOptions, type SpliceConfig, SpliceNode, SplicePlacementError, type SplicePlacementValidation, type SpliceSchemaOptions, type SpliceTrayConfig, SpliceTrayNode, TEMPLATE_SCHEMA_VERSION, type TemplateFaceData, type TemplateFrontRearPortLink, type TemplateParseResult, type TemplatePort, type TemplatePortBlock, type TemplateSource, type TemplateValidationIssue, type TemplateValidationReport, type TemplateWidth, TubeNode, type UNumberingDirection, U_HEIGHT_PX, type ValidateConnectionParams, type ValidationResult, VerticalPDU, Width, addDeviceToRack, addSpliceToTray, applyDeviceDisplayToNodes, applyDiagramFocusToEdges, applyDiagramFocusToNodes, baseColorFor, buildDevicePortGroupsFromPorts, buildNodesFromRackConfig, buildNodesFromSpliceConfig, buildPathLayoutGraph, buildPortBlocksFromPorts, buildPortHandleId, buildPortHandleId as buildReactNetworksHandleId, buildReactNetworksPortGroupsFromPorts, calculateClosureDimensions, calculateCouplerRightX, calculateCouplerSlotSpacing, calculateCouplerSpacing, calculateDevicePositionFromU, calculatePanelDimensions, calculateSlotPositionFromY, calculateSplicePositionFromNumber, calculateUPositions, calculateYFromSlotPosition, countTemplateFacePorts, createNetworkDiagramStore, createRackConfigFromNodes, createSpliceConfigFromNodes, diagramDocumentToNetworkGraph, fiberSolidOrStriped, findNearestRack, findNextAvailableHolderPosition, findNextAvailableUPosition, flattenDevicePortsFromGroups, flattenReactNetworksPortGroups, generateLayout, getConnectorConfig, getCouplerDimensions, getDefaultDeviceFace, getDeviceConnectorType, getEndpointMetadata, getFiberColor, getFrontPortBlocks, getInnerContentWidth, getPDUPortType, getPanelHeight, getPanelWidth, getPowerPortStyle, getRackBounds, getRearPortBlocks, getResolvedPortBlocks, getStandardPortVisualDimensions, getStatusColor, getTrayDimensions, getTubeDimensions, hasDiagramFocus, hasFrontPorts, hasRearPorts, inventoryCableToNetworkEdge, inventoryDeviceToNetworkNode, inventoryRackToNetworkNode, inventoryToDiagramDocument, inventoryToNetworkDiagram, isDeviceDiagramNode, isDiagramPortHandleHighlighted, isEdgeInDiagramFocus, isHighPowerConnector, isNodeInDiagramFocus, isPointInRack, isPowerPortType, isStriped, isUPositionAvailable, listPossiblePortHandleIds, looksLikePowerHandleId, netboxCableToNetworkEdge, netboxDeviceToNetworkNode, netboxRackToNetworkNode, netboxToDiagramDocument, netboxToNetworkDiagram, networkGraphToDiagramDocument, normalizeDevicePorts, normalizeDirectionalHandleId, normalizeHandleId, normalizePortPositionInput, normalizeReactNetworksPorts, parseNetboxTemplate, parseSemanticPortPosition, removeDeviceFromRack, removeSpliceFromTray, replaceEdge, resolveDevicePortBlocksFromFlatPorts, resolveDevicePortFace, resolveDevicePortGroup, resolveEndpointCompatibilityKeys, resolveNodeDevicePorts, resolvePortVisualKind, resolveReactNetworksNodePorts, resolveReactNetworksPortFace, resolveReactNetworksPortGroup, snapToCouplerPosition, snapToSplicePosition, snapToUPosition, updateDeviceUPosition$1 as updateDeviceUPosition, updateDeviceUPosition as updateDeviceUPositionInSchema, updateSpliceHolderPosition, useEdges as useDiagramEdges, useNodes as useDiagramNodes, useDiagramPortInteraction, useNetworkDiagram, validateAndSnapDevice, validatePortHandleOnNodeData, validateRackDevicePlacements, validateRenderFidelity, validateSplicePlacements };