import { P as Port, a as NetworkEdge, N as NetworkNode, b as DiagramNodeKind, c as DevicePort, d as DeviceFace, e as PortBlock, f as NetworkNodeDataBase, g as PortCableType, h as PortPosition, i as DiagramNode, j as DiagramEdge, k as DiagramUiState, D as DiagramDocument } from './index-CD1VEhzs.mjs'; export { B as BreakerPhase, l as BreakerSwitchState, m as BreakerWay, n as BreakerWayInstanceState, o as DeviceBay, p as DeviceBayInstanceState, q as DeviceBaySlot, r as DeviceBayStatus, s as DeviceImageOptions, t as DeviceStatus, u as DiagramEdgeEndpoint, v as DiagramEndpoint, w as DiagramExternalRef, x as DiagramNodePlacement, y as DiagramNodeRender, z as DistributionBoardNodeData, A as NetworkEdgeData, C as NetworkEdgeType, E as NetworkNodeDataByType, F as NetworkNodeType, G as PduBoardType, H as PduSupply, I as PortPositionInput, J as PortType, K as PowerConnectorGender, L as PowerFeedType, M as PowerSide, R as RackConfig, O as RackDevice, Q as RackLayoutMode, S as RackMountMode, T as TemplateBayKind, U as UNumberingDirection, V as VerticalPduNodeData, W as Width } from './index-CD1VEhzs.mjs'; import '@xyflow/react'; /** * Normalize source/target directional suffixes used for bidirectional handles. * Example: `Rear Ports-1-target` -\> `Rear Ports-1`. */ declare function normalizeDirectionalHandleId(handleId: string | null | undefined): string; /** * Normalize rendered handle ids back to their canonical endpoint id. * This removes the directional suffix and the split-face alias, in the order * the renderer composes them: `[--rear|--front][-source|-target]`. * (Previously only `--rear` was stripped; `--front` ghost aliases now * normalize too.) * * Losslessness: the strip is unconditional, so it is only safe when the base * itself cannot end in a reserved suffix. {@link buildPortHandleId} guarantees * this for device ports — a label like `target` or `foo-target` is escaped at * build time (`-%74arget`, `-foo%2Dtarget`) so it survives * normalization intact. Bare power labels and explicit `port.id`s are emitted * verbatim, so a caller that chooses an id ending in `-source`/`-target`/ * `--rear`/`--front` owns that collision. */ declare function normalizeHandleId(handleId: string | null | undefined): string; /** * Returns true when a port type is considered power-related. */ declare function isPowerPortType(portType: string | undefined): boolean; /** * Handle id of a vertical PDU's supply inlet — the single point where a branch * circuit from a distribution-board breaker way lands. * * Deliberately non-numeric so it can never collide with an outlet id, which is * always a bare 1-based number (`"1"…"N"`). * @public */ declare const PDU_INLET_HANDLE_ID = "inlet"; /** * Handle id of a distribution board's incomer — the board's own supply inlet, * mounted by `DistributionBoardNode`. The board analogue of * {@link PDU_INLET_HANDLE_ID}. * @public */ declare const BOARD_INCOMER_HANDLE_ID = "incomer"; /** * Whether a handle id names a power-distribution node's supply inlet * (`inlet` on a PDU strip, `incomer` on a distribution board). Directional and * face-alias suffixes are normalized away first. * @public */ declare function isPowerInletHandleId(handleId: string | null | undefined): boolean; /** * Build a stable handle id for a port. * * Three shapes, in priority order: * 1. An explicit `port.id` is returned verbatim — it is the caller's contract, * including any collision with a fixed grammar shape. * 2. A power port returns its `label` verbatim, preserving legacy ids (bare * outlet numbers, `PSU-A`, ...). * 3. Otherwise the group and label are percent-escaped and joined * (`-