@procaaso/alphinity-ui-components 1.1.3 → 1.3.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/dist/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  import * as react from 'react';
2
2
  import react__default from 'react';
3
- import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
5
3
  import * as _emotion_styled from '@emotion/styled';
6
4
  import * as _emotion_react from '@emotion/react';
7
5
  import * as _mui_system from '@mui/system';
8
6
  import * as _mui_material from '@mui/material';
7
+ import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
9
8
 
10
9
  interface ButtonProps extends react__default.ButtonHTMLAttributes<HTMLButtonElement> {
11
10
  variant?: 'primary' | 'secondary';
@@ -45,6 +44,126 @@ interface SelectorProps extends Omit<react__default.HTMLAttributes<HTMLDivElemen
45
44
  }
46
45
  declare const Selector: react__default.FC<SelectorProps>;
47
46
 
47
+ /**
48
+ * Status levels for telemetry values
49
+ */
50
+ type TelemetryStatus$1 = 'normal' | 'warning' | 'alarm' | 'fault' | 'off';
51
+ /**
52
+ * Live telemetry value with status
53
+ */
54
+ interface TelemetryValue {
55
+ /** Current value */
56
+ value: number | string | boolean;
57
+ /** Status/severity level */
58
+ status: TelemetryStatus$1;
59
+ /** Unit of measurement (optional) */
60
+ unit?: string;
61
+ /** Timestamp of last update */
62
+ timestamp?: number;
63
+ /** Quality indicator (0-100, where 100 is good) */
64
+ quality?: number;
65
+ }
66
+ /**
67
+ * Uniform scaling / engineering-unit (EU) metadata for an analog value.
68
+ *
69
+ * Mirrors the control program's published `scaling` record (alphinity-tffi
70
+ * issue #1663): one shape carries the units, EU range, raw range, and display
71
+ * precision for any analog tag. When present on a TelemetryBinding it is the
72
+ * authoritative source for units / precision / trend-axis range - the consumer
73
+ * passes the live published metadata here instead of static diagram config.
74
+ * All fields optional so a producer can omit what does not apply.
75
+ */
76
+ interface ScalingMetadata {
77
+ /** Engineering units (e.g. "psig", "LMH", "mL"). */
78
+ units?: string;
79
+ /** Engineering-unit range low / high (trend axis + faceplate range). */
80
+ euLow?: number;
81
+ euHigh?: number;
82
+ /** Raw signal range low / high (AnalogInputs only). */
83
+ rawLow?: number;
84
+ rawHigh?: number;
85
+ /** Display decimal places. */
86
+ decimals?: number;
87
+ /** Optional descriptive metadata. */
88
+ description?: string;
89
+ sensorType?: string;
90
+ }
91
+ /**
92
+ * Telemetry data binding for a node
93
+ */
94
+ interface TelemetryBinding {
95
+ /** Node ID this telemetry is bound to */
96
+ nodeId: string;
97
+ /** Tag/variable name for the telemetry source */
98
+ tag: string;
99
+ /** Current telemetry value */
100
+ value: TelemetryValue;
101
+ /**
102
+ * Uniform scaling / EU metadata (units, range, precision). When present it is
103
+ * the authoritative source for the displayed units, decimal precision, and
104
+ * trend-axis range - overriding `value.unit` / `display.precision` and the
105
+ * history-derived sparkline range. Populate from the live published scaling
106
+ * stream rather than static diagram config (#1663).
107
+ */
108
+ scaling?: ScalingMetadata;
109
+ /** Historical values for sparkline/trend (optional) */
110
+ history?: number[];
111
+ /** Thresholds for status determination */
112
+ thresholds?: {
113
+ /** High-High threshold (value >= this triggers alarm) */
114
+ highHigh?: number;
115
+ /** High threshold (value >= this triggers warning) */
116
+ high?: number;
117
+ /** Low threshold (value <= this triggers warning) */
118
+ low?: number;
119
+ /** Low-Low threshold (value <= this triggers alarm/fault) */
120
+ lowLow?: number;
121
+ /** Custom label for high-high threshold */
122
+ highHighLabel?: string;
123
+ /** Custom label for high threshold */
124
+ highLabel?: string;
125
+ /** Custom label for low threshold */
126
+ lowLabel?: string;
127
+ /** Custom label for low-low threshold */
128
+ lowLowLabel?: string;
129
+ };
130
+ /** Custom colors for status levels */
131
+ statusColors?: {
132
+ normal?: string;
133
+ warning?: string;
134
+ alarm?: string;
135
+ fault?: string;
136
+ off?: string;
137
+ };
138
+ /** Display configuration */
139
+ display?: {
140
+ /** Show value overlay above node */
141
+ showValue?: boolean;
142
+ /** Show status indicator */
143
+ showStatus?: boolean;
144
+ /** Custom label for the value */
145
+ label?: string;
146
+ /** Number of decimal places for numeric values */
147
+ precision?: number;
148
+ /** Show sparkline trend (requires history) */
149
+ showSparkline?: boolean;
150
+ /** Sparkline color (defaults to status color) */
151
+ sparklineColor?: string;
152
+ /** Custom background color (hex code or 'status' for status-based color) */
153
+ backgroundColor?: string;
154
+ /** Custom text color for value display (hex code) */
155
+ textColor?: string;
156
+ /** Horizontal offset from node center */
157
+ offsetX?: number;
158
+ /** Vertical offset from node center */
159
+ offsetY?: number;
160
+ };
161
+ }
162
+ /**
163
+ * Map of telemetry bindings by node ID
164
+ */
165
+ type TelemetryMap = Map<string, TelemetryBinding>;
166
+
48
167
  interface ModeConfig {
49
168
  /** Units for this mode */
50
169
  unit?: string;
@@ -98,6 +217,15 @@ interface ControlPanelProps extends react__default.HTMLAttributes<HTMLDivElement
98
217
  defaultMax?: number;
99
218
  /** Default precision when no mode config is found */
100
219
  defaultPrecision?: number;
220
+ /**
221
+ * Uniform scaling / EU metadata (#1663). When provided, supplies the
222
+ * units / min / max / precision defaults from the live published scaling
223
+ * record - used only where an explicit `default*` prop or a mode config does
224
+ * not already set the value (modeConfig > explicit default > scaling >
225
+ * hardcoded). Lets the consumer drive the panel from the scaling stream
226
+ * instead of static diagram config.
227
+ */
228
+ scaling?: ScalingMetadata;
101
229
  /** Status state for the entire panel */
102
230
  status?: 'normal' | 'alarm' | 'warning' | 'disabled';
103
231
  /** Whether the panel is collapsed */
@@ -486,6 +614,14 @@ interface DeviceControlPanelProps {
486
614
  onStart?: () => void;
487
615
  /** Called when stop button clicked */
488
616
  onStop?: () => void;
617
+ /**
618
+ * Start command is in flight (awaiting ack). Shows a busy affordance on the
619
+ * START button and disables it, without locking STOP — wire from the hook's
620
+ * `isCommandPending(nodeId, 'start')`.
621
+ */
622
+ startPending?: boolean;
623
+ /** Stop command is in flight (awaiting ack). See `startPending`. */
624
+ stopPending?: boolean;
489
625
  /** Called when custom action clicked */
490
626
  onCustomAction?: (actionId: string) => void;
491
627
  /** Called when config button clicked (opens config panel for this device) */
@@ -501,7 +637,7 @@ interface DeviceControlPanelProps {
501
637
  /** Embedded mode - uses static positioning for rendering in containers (default: false) */
502
638
  embedded?: boolean;
503
639
  }
504
- declare function DeviceControlPanel({ binding, onClose, position, align, touchOptimized, compact, fontScale, maxHeight, maxWidth, toastDuration, onModeChange, onParameterChange, onStart, onStop, onCustomAction, onOpenConfig, showConfigButton, onUndock, undockIcon, modeSelectionStyle, embedded, }: DeviceControlPanelProps): react_jsx_runtime.JSX.Element | null;
640
+ declare function DeviceControlPanel({ binding, onClose, position, align, touchOptimized, compact, fontScale, maxHeight, maxWidth, toastDuration, onModeChange, onParameterChange, onStart, onStop, startPending, stopPending, onCustomAction, onOpenConfig, showConfigButton, onUndock, undockIcon, modeSelectionStyle, embedded, }: DeviceControlPanelProps): react__default.JSX.Element | null;
505
641
 
506
642
  type DisplayMode = 'standard' | 'dashboard';
507
643
  interface FullscreenContainerProps {
@@ -699,7 +835,7 @@ declare const baseOverlayStyles: {
699
835
  };
700
836
  };
701
837
  declare const overlayStyles: Record<OverlayTheme, typeof baseOverlayStyles[OverlayTheme]>;
702
- declare const SVGLockedOverlay: ({ svgX, svgY, children, theme, style, className, onClick, containerSelector, }: SVGLockedOverlayProps) => react_jsx_runtime.JSX.Element;
838
+ declare const SVGLockedOverlay: ({ svgX, svgY, children, theme, style, className, onClick, containerSelector, }: SVGLockedOverlayProps) => react.JSX.Element;
703
839
  declare const DashboardCard: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof _mui_system.BoxOwnProps<_mui_material.Theme>> & {
704
840
  theme?: _emotion_react.Theme;
705
841
  } & {
@@ -722,11 +858,11 @@ declare const CardUnit: _emotion_styled.StyledComponent<{
722
858
  as?: React.ElementType;
723
859
  }, react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
724
860
 
725
- declare const TrendLine: ({ values, width, height, color, strokeWidth, backgroundColor, }: TrendLineProps) => react_jsx_runtime.JSX.Element;
726
- declare const CircularGauge: ({ value, max, unit, label, size, color, }: CircularGaugeProps) => react_jsx_runtime.JSX.Element;
727
- declare const Sparkline: ({ data, width, height, color }: SparklineProps) => react_jsx_runtime.JSX.Element | null;
728
- declare const EquipmentIndicatorWithSparkline: ({ svgX, svgY, color, label, size, sparklineData, sparklineOffset, }: EquipmentIndicatorWithSparklineProps) => react_jsx_runtime.JSX.Element;
729
- declare const EquipmentIndicator: ({ svgX, svgY, color, label, size, style, className, }: EquipmentIndicatorProps) => react_jsx_runtime.JSX.Element;
861
+ declare const TrendLine: ({ values, width, height, color, strokeWidth, backgroundColor, }: TrendLineProps) => react.JSX.Element;
862
+ declare const CircularGauge: ({ value, max, unit, label, size, color, }: CircularGaugeProps) => react.JSX.Element;
863
+ declare const Sparkline: ({ data, width, height, color }: SparklineProps) => react.JSX.Element | null;
864
+ declare const EquipmentIndicatorWithSparkline: ({ svgX, svgY, color, label, size, sparklineData, sparklineOffset, }: EquipmentIndicatorWithSparklineProps) => react.JSX.Element;
865
+ declare const EquipmentIndicator: ({ svgX, svgY, color, label, size, style, className, }: EquipmentIndicatorProps) => react.JSX.Element;
730
866
 
731
867
  declare function FullscreenWorkspace({ svgContent, overlays, leftPanel, rightPanel, footer, tabs, activeTab, onTabChange, defaultLeftCollapsed, defaultRightCollapsed, leftCollapsed: leftCollapsedProp, rightCollapsed: rightCollapsedProp, onLeftCollapseChange, onRightCollapseChange, displayMode, defaultDisplayMode, onDisplayModeChange, showDisplayModeToggle, showZoomControls, onZoomIn, onZoomOut, onResetZoom, zoomDisabled, className, ...rest }: FullscreenWorkspaceProps): react__default.ReactElement;
732
868
 
@@ -934,93 +1070,6 @@ interface SymbolMetadata {
934
1070
  tags?: string[];
935
1071
  }
936
1072
 
937
- /**
938
- * Status levels for telemetry values
939
- */
940
- type TelemetryStatus$1 = 'normal' | 'warning' | 'alarm' | 'fault' | 'off';
941
- /**
942
- * Live telemetry value with status
943
- */
944
- interface TelemetryValue {
945
- /** Current value */
946
- value: number | string | boolean;
947
- /** Status/severity level */
948
- status: TelemetryStatus$1;
949
- /** Unit of measurement (optional) */
950
- unit?: string;
951
- /** Timestamp of last update */
952
- timestamp?: number;
953
- /** Quality indicator (0-100, where 100 is good) */
954
- quality?: number;
955
- }
956
- /**
957
- * Telemetry data binding for a node
958
- */
959
- interface TelemetryBinding {
960
- /** Node ID this telemetry is bound to */
961
- nodeId: string;
962
- /** Tag/variable name for the telemetry source */
963
- tag: string;
964
- /** Current telemetry value */
965
- value: TelemetryValue;
966
- /** Historical values for sparkline/trend (optional) */
967
- history?: number[];
968
- /** Thresholds for status determination */
969
- thresholds?: {
970
- /** High-High threshold (value >= this triggers alarm) */
971
- highHigh?: number;
972
- /** High threshold (value >= this triggers warning) */
973
- high?: number;
974
- /** Low threshold (value <= this triggers warning) */
975
- low?: number;
976
- /** Low-Low threshold (value <= this triggers alarm/fault) */
977
- lowLow?: number;
978
- /** Custom label for high-high threshold */
979
- highHighLabel?: string;
980
- /** Custom label for high threshold */
981
- highLabel?: string;
982
- /** Custom label for low threshold */
983
- lowLabel?: string;
984
- /** Custom label for low-low threshold */
985
- lowLowLabel?: string;
986
- };
987
- /** Custom colors for status levels */
988
- statusColors?: {
989
- normal?: string;
990
- warning?: string;
991
- alarm?: string;
992
- fault?: string;
993
- off?: string;
994
- };
995
- /** Display configuration */
996
- display?: {
997
- /** Show value overlay above node */
998
- showValue?: boolean;
999
- /** Show status indicator */
1000
- showStatus?: boolean;
1001
- /** Custom label for the value */
1002
- label?: string;
1003
- /** Number of decimal places for numeric values */
1004
- precision?: number;
1005
- /** Show sparkline trend (requires history) */
1006
- showSparkline?: boolean;
1007
- /** Sparkline color (defaults to status color) */
1008
- sparklineColor?: string;
1009
- /** Custom background color (hex code or 'status' for status-based color) */
1010
- backgroundColor?: string;
1011
- /** Custom text color for value display (hex code) */
1012
- textColor?: string;
1013
- /** Horizontal offset from node center */
1014
- offsetX?: number;
1015
- /** Vertical offset from node center */
1016
- offsetY?: number;
1017
- };
1018
- }
1019
- /**
1020
- * Map of telemetry bindings by node ID
1021
- */
1022
- type TelemetryMap = Map<string, TelemetryBinding>;
1023
-
1024
1073
  interface UseViewBoxOptions {
1025
1074
  /** Initial viewBox configuration */
1026
1075
  initialViewBox: ViewBox;
@@ -1412,7 +1461,7 @@ interface NodeConfigPanelProps {
1412
1461
  * />
1413
1462
  * ```
1414
1463
  */
1415
- declare function NodeConfigPanel({ node, binding, onUpdateNode, onUpdateTelemetry, onAddTelemetry, onRemove, className, style, }: NodeConfigPanelProps): react_jsx_runtime.JSX.Element;
1464
+ declare function NodeConfigPanel({ node, binding, onUpdateNode, onUpdateTelemetry, onAddTelemetry, onRemove, className, style, }: NodeConfigPanelProps): react__default.JSX.Element;
1416
1465
 
1417
1466
  /**
1418
1467
  * Validates a diagram object structure
@@ -1518,11 +1567,28 @@ declare function calculateThresholdStatus(value: number, thresholds?: Thresholds
1518
1567
  */
1519
1568
  declare const DEFAULT_THRESHOLDS: Thresholds;
1520
1569
 
1570
+ /** Kinds of command a node can have in flight at once. */
1571
+ type CommandKind = 'start' | 'stop' | 'mode' | 'parameter' | 'action';
1572
+ interface UseDeviceControlsOptions {
1573
+ /**
1574
+ * If set (> 0), a command whose action callback does not settle within this
1575
+ * many milliseconds is abandoned: the in-flight marker clears and a timeout
1576
+ * result is recorded as command feedback. This only bounds how long the
1577
+ * optional "sending…" hint shows — controls are never disabled, so a hung
1578
+ * command can never lock anyone out regardless of this value.
1579
+ *
1580
+ * Note: this is a UI-level abort — it stops the HMI from *waiting*, but does
1581
+ * not cancel an already-dispatched command (that would require the action to
1582
+ * honor an AbortSignal). The command may still land; telemetry remains the
1583
+ * source of truth for the resulting device state.
1584
+ */
1585
+ commandTimeoutMs?: number;
1586
+ }
1521
1587
  /**
1522
1588
  * Hook for managing device control bindings
1523
1589
  * Similar pattern to useTelemetry
1524
1590
  */
1525
- declare function useDeviceControls(initialBindings?: DeviceControlBinding[]): {
1591
+ declare function useDeviceControls(initialBindings?: DeviceControlBinding[], options?: UseDeviceControlsOptions): {
1526
1592
  controls: DeviceControlMap;
1527
1593
  updateControl: (nodeId: string, updates: Partial<DeviceControlBinding>) => void;
1528
1594
  updateControlBatch: (updates: Record<string, Partial<DeviceControlBinding>>) => void;
@@ -1531,6 +1597,7 @@ declare function useDeviceControls(initialBindings?: DeviceControlBinding[]): {
1531
1597
  setControlBinding: (binding: DeviceControlBinding) => void;
1532
1598
  removeControlBinding: (nodeId: string) => void;
1533
1599
  getControlBinding: (nodeId: string) => DeviceControlBinding | undefined;
1600
+ isCommandPending: (nodeId: string, kind?: CommandKind) => boolean;
1534
1601
  sendModeChange: (nodeId: string, mode: string) => Promise<void>;
1535
1602
  sendParameterChange: (nodeId: string, parameterId: string, value: any) => Promise<void>;
1536
1603
  sendStartCommand: (nodeId: string) => Promise<void>;
@@ -1816,7 +1883,7 @@ interface DeviceConfigPanelProps {
1816
1883
  /** Embedded mode - uses static positioning for rendering in containers (default: false) */
1817
1884
  embedded?: boolean;
1818
1885
  }
1819
- declare function DeviceConfigPanel({ binding, onClose, onUndock, undockIcon, position, align, touchOptimized, compact, fontScale, maxHeight, maxWidth, toastDuration, onOpenControls, showControlsButton, embedded, }: DeviceConfigPanelProps): react_jsx_runtime.JSX.Element | null;
1886
+ declare function DeviceConfigPanel({ binding, onClose, onUndock, undockIcon, position, align, touchOptimized, compact, fontScale, maxHeight, maxWidth, toastDuration, onOpenControls, showControlsButton, embedded, }: DeviceConfigPanelProps): react__default.JSX.Element | null;
1820
1887
 
1821
1888
  /**
1822
1889
  * Options for simulation behavior
@@ -1856,4 +1923,4 @@ interface SimulationOptions {
1856
1923
  */
1857
1924
  declare function useSimulation(telemetry: TelemetryMap, updateTelemetryBatch: (updates: Array<any>) => void, options?: SimulationOptions): void;
1858
1925
 
1859
- export { type AnchorType, Button, type ButtonProps, CardHeader, CardUnit, CardValue, CircularGauge, type CircularGaugeProps, type ConfigActions, type ConfigDisplay, type ConfigParameter, type ConfigSection, type ConfigState, type ConfigTheme, type ControlCapabilities, type ControlMode, ControlPanel, type ControlPanelProps, type ControlParameter, type ControlState, DEFAULT_STATUS_COLORS, DEFAULT_THRESHOLDS, DashboardCard, type DataBinding, type DeviceConfigBinding, type DeviceConfigMap, DeviceConfigPanel, type DeviceConfigPanelProps, type DeviceControlBinding, type DeviceControlMap, DeviceControlPanel, type DeviceControlPanelProps, type DeviceStatus, type Diagram, type DiagramMetadata, type DisplayMode, DisplayModeToggle, type DragPoint, type DragState, EquipmentIndicator, type EquipmentIndicatorProps, EquipmentIndicatorWithSparkline, type EquipmentIndicatorWithSparklineProps, FixedSVGContainer, FooterPanel, FullscreenContainer, FullscreenWorkspace, type FullscreenWorkspaceProps, type FullscreenWorkspaceTab, type KeyboardShortcutsOptions, LeftPanel, LeftToggleButton, LegacyValueEntry, type LegacyValueEntryProps, type ModeConfig, NodeConfigPanel, type NodeConfigPanelProps, type NodeControlConfig, NodeControlsPanel, type NodeControlsPanelProps, type NodeInstance, type Overlay, type OverlayContent, type OverlayTheme, type OverlayType, PIDCanvas, type PIDCanvasControls, type PIDCanvasFeatures, type PIDCanvasProps, PanelContent, PanelTabs, type PipeEdge, type PipeStyle, type Point, type PortDefinition, type PortInstance, type PortType, RightPanel, RightToggleButton, SVGArea, SVGLockedOverlay, type SVGLockedOverlayProps, ScrollableSVGWrapper, type SelectionState, Selector, type SelectorOption, type SelectorProps, type SimulationOptions, Sparkline, type SparklineProps, type StatusColorEntry, type StatusColorMap, StatusIndicator, type StatusIndicatorProps, type SymbolCategory, type SymbolDefinition, SymbolLibrary, type SymbolLibraryProps, type SymbolMetadata, type TelemetryBinding, type TelemetryMap, type TelemetryStatus$1 as TelemetryStatus, type TelemetryValue, ThemeProvider, ThemeToggle, type ThemeToggleProps, type Thresholds, type Transform, TrendLine, type TrendLineProps, type UseDragOptions, type UseDragResult, type UseSelectionOptions, type UseSelectionResult, type UseTelemetryOptions, type UseTelemetryResult, type UseTelemetryStatusOptions, type UseViewBoxOptions, type UseViewBoxResult, ValueEntry, type ValueEntryProps, type ViewBox, ZoomButton, ZoomControls, calculateThresholdStatus, createConfigBinding, createControlBinding, exampleDiagram, exportDiagram, generateRoutePoints, getAvailableSymbols, getPortWorldPosition, getSymbolDefinition, importDiagram, mockSymbolLibrary, nodeHasPort, overlayStyles, registerSymbol, registerSymbols, resolveStatusColor, useDeviceConfigs, useDeviceControls, useDrag, useKeyboardShortcuts, useSelection, useSimulation, useTelemetry, useTelemetryStatus, useTheme, useViewBox, validateDiagram };
1926
+ export { type AnchorType, Button, type ButtonProps, CardHeader, CardUnit, CardValue, CircularGauge, type CircularGaugeProps, type CommandKind, type ConfigActions, type ConfigDisplay, type ConfigParameter, type ConfigSection, type ConfigState, type ConfigTheme, type ControlCapabilities, type ControlMode, ControlPanel, type ControlPanelProps, type ControlParameter, type ControlState, DEFAULT_STATUS_COLORS, DEFAULT_THRESHOLDS, DashboardCard, type DataBinding, type DeviceConfigBinding, type DeviceConfigMap, DeviceConfigPanel, type DeviceConfigPanelProps, type DeviceControlBinding, type DeviceControlMap, DeviceControlPanel, type DeviceControlPanelProps, type DeviceStatus, type Diagram, type DiagramMetadata, type DisplayMode, DisplayModeToggle, type DragPoint, type DragState, EquipmentIndicator, type EquipmentIndicatorProps, EquipmentIndicatorWithSparkline, type EquipmentIndicatorWithSparklineProps, FixedSVGContainer, FooterPanel, FullscreenContainer, FullscreenWorkspace, type FullscreenWorkspaceProps, type FullscreenWorkspaceTab, type KeyboardShortcutsOptions, LeftPanel, LeftToggleButton, LegacyValueEntry, type LegacyValueEntryProps, type ModeConfig, NodeConfigPanel, type NodeConfigPanelProps, type NodeControlConfig, NodeControlsPanel, type NodeControlsPanelProps, type NodeInstance, type Overlay, type OverlayContent, type OverlayTheme, type OverlayType, PIDCanvas, type PIDCanvasControls, type PIDCanvasFeatures, type PIDCanvasProps, PanelContent, PanelTabs, type PipeEdge, type PipeStyle, type Point, type PortDefinition, type PortInstance, type PortType, RightPanel, RightToggleButton, SVGArea, SVGLockedOverlay, type SVGLockedOverlayProps, type ScalingMetadata, ScrollableSVGWrapper, type SelectionState, Selector, type SelectorOption, type SelectorProps, type SimulationOptions, Sparkline, type SparklineProps, type StatusColorEntry, type StatusColorMap, StatusIndicator, type StatusIndicatorProps, type SymbolCategory, type SymbolDefinition, SymbolLibrary, type SymbolLibraryProps, type SymbolMetadata, type TelemetryBinding, type TelemetryMap, type TelemetryStatus$1 as TelemetryStatus, type TelemetryValue, ThemeProvider, ThemeToggle, type ThemeToggleProps, type Thresholds, type Transform, TrendLine, type TrendLineProps, type UseDeviceControlsOptions, type UseDragOptions, type UseDragResult, type UseSelectionOptions, type UseSelectionResult, type UseTelemetryOptions, type UseTelemetryResult, type UseTelemetryStatusOptions, type UseViewBoxOptions, type UseViewBoxResult, ValueEntry, type ValueEntryProps, type ViewBox, ZoomButton, ZoomControls, calculateThresholdStatus, createConfigBinding, createControlBinding, exampleDiagram, exportDiagram, generateRoutePoints, getAvailableSymbols, getPortWorldPosition, getSymbolDefinition, importDiagram, mockSymbolLibrary, nodeHasPort, overlayStyles, registerSymbol, registerSymbols, resolveStatusColor, useDeviceConfigs, useDeviceControls, useDrag, useKeyboardShortcuts, useSelection, useSimulation, useTelemetry, useTelemetryStatus, useTheme, useViewBox, validateDiagram };