@procaaso/alphinity-ui-components 1.8.2 → 1.9.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.cjs +10 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +118 -70
- package/dist/index.d.ts +118 -70
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
3
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
-
import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import react__default from 'react';
|
|
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
|
-
interface ButtonProps extends
|
|
9
|
+
interface ButtonProps extends react__default.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
11
10
|
variant?: 'primary' | 'secondary';
|
|
12
|
-
children:
|
|
11
|
+
children: react__default.ReactNode;
|
|
13
12
|
}
|
|
14
|
-
declare const Button:
|
|
13
|
+
declare const Button: react__default.FC<ButtonProps>;
|
|
15
14
|
|
|
16
15
|
interface SelectorOption {
|
|
17
16
|
/** Unique value for the option */
|
|
@@ -23,7 +22,7 @@ interface SelectorOption {
|
|
|
23
22
|
/** Optional description for tooltip or additional context */
|
|
24
23
|
description?: string;
|
|
25
24
|
}
|
|
26
|
-
interface SelectorProps extends Omit<
|
|
25
|
+
interface SelectorProps extends Omit<react__default.HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
27
26
|
/** Currently selected value */
|
|
28
27
|
value: string;
|
|
29
28
|
/** Callback when selection changes */
|
|
@@ -43,7 +42,7 @@ interface SelectorProps extends Omit<React__default.HTMLAttributes<HTMLDivElemen
|
|
|
43
42
|
/** Whether the dropdown should open upward */
|
|
44
43
|
dropdownUp?: boolean;
|
|
45
44
|
}
|
|
46
|
-
declare const Selector:
|
|
45
|
+
declare const Selector: react__default.FC<SelectorProps>;
|
|
47
46
|
|
|
48
47
|
/**
|
|
49
48
|
* Status levels for telemetry values
|
|
@@ -189,7 +188,7 @@ interface ModeConfig {
|
|
|
189
188
|
/** Precision for second setpoint */
|
|
190
189
|
secondPrecision?: number;
|
|
191
190
|
}
|
|
192
|
-
interface ControlPanelProps extends
|
|
191
|
+
interface ControlPanelProps extends react__default.HTMLAttributes<HTMLDivElement> {
|
|
193
192
|
/** Panel title/identifier */
|
|
194
193
|
title: string;
|
|
195
194
|
/** Currently selected mode */
|
|
@@ -250,9 +249,9 @@ interface ControlPanelProps extends React__default.HTMLAttributes<HTMLDivElement
|
|
|
250
249
|
/** Custom stop button text */
|
|
251
250
|
stopButtonText?: string;
|
|
252
251
|
}
|
|
253
|
-
declare const ControlPanel:
|
|
252
|
+
declare const ControlPanel: react__default.FC<ControlPanelProps>;
|
|
254
253
|
|
|
255
|
-
interface StatusIndicatorProps extends
|
|
254
|
+
interface StatusIndicatorProps extends react__default.HTMLAttributes<HTMLDivElement> {
|
|
256
255
|
/** Status state determining color and behavior */
|
|
257
256
|
status: 'off' | 'normal' | 'alarm' | 'warning' | 'active' | 'fault';
|
|
258
257
|
/** Size of the indicator */
|
|
@@ -268,9 +267,9 @@ interface StatusIndicatorProps extends React__default.HTMLAttributes<HTMLDivElem
|
|
|
268
267
|
/** Whether the indicator should have a 3D LED effect */
|
|
269
268
|
led?: boolean;
|
|
270
269
|
}
|
|
271
|
-
declare const StatusIndicator:
|
|
270
|
+
declare const StatusIndicator: react__default.FC<StatusIndicatorProps>;
|
|
272
271
|
|
|
273
|
-
interface ValueEntryProps extends Omit<
|
|
272
|
+
interface ValueEntryProps extends Omit<react__default.InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {
|
|
274
273
|
/** Current value */
|
|
275
274
|
value: number | string;
|
|
276
275
|
/** Callback when value changes */
|
|
@@ -292,9 +291,9 @@ interface ValueEntryProps extends Omit<React__default.InputHTMLAttributes<HTMLIn
|
|
|
292
291
|
/** Whether the input is read-only */
|
|
293
292
|
readOnly?: boolean;
|
|
294
293
|
}
|
|
295
|
-
declare const ValueEntry:
|
|
294
|
+
declare const ValueEntry: react__default.FC<ValueEntryProps>;
|
|
296
295
|
|
|
297
|
-
interface LegacyValueEntryProps extends Omit<
|
|
296
|
+
interface LegacyValueEntryProps extends Omit<react__default.InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {
|
|
298
297
|
/** Current value */
|
|
299
298
|
value: number | string;
|
|
300
299
|
/** Callback when value changes */
|
|
@@ -316,7 +315,7 @@ interface LegacyValueEntryProps extends Omit<React__default.InputHTMLAttributes<
|
|
|
316
315
|
/** Whether the input is read-only */
|
|
317
316
|
readOnly?: boolean;
|
|
318
317
|
}
|
|
319
|
-
declare const LegacyValueEntry:
|
|
318
|
+
declare const LegacyValueEntry: react__default.FC<LegacyValueEntryProps>;
|
|
320
319
|
|
|
321
320
|
interface NodeControlConfig {
|
|
322
321
|
/** Node ID */
|
|
@@ -354,7 +353,7 @@ interface NodeControlConfig {
|
|
|
354
353
|
/** Whether setpoint is read-only */
|
|
355
354
|
readOnly?: boolean;
|
|
356
355
|
}
|
|
357
|
-
interface NodeControlsPanelProps extends
|
|
356
|
+
interface NodeControlsPanelProps extends react__default.HTMLAttributes<HTMLDivElement> {
|
|
358
357
|
/** Control configuration for the selected node */
|
|
359
358
|
config: NodeControlConfig | null;
|
|
360
359
|
/** Callback to close the panel */
|
|
@@ -373,7 +372,7 @@ interface NodeControlsPanelProps extends React__default.HTMLAttributes<HTMLDivEl
|
|
|
373
372
|
* - Clear visual feedback
|
|
374
373
|
* - Bottom or side slide-in animation
|
|
375
374
|
*/
|
|
376
|
-
declare const NodeControlsPanel:
|
|
375
|
+
declare const NodeControlsPanel: react__default.FC<NodeControlsPanelProps>;
|
|
377
376
|
|
|
378
377
|
/**
|
|
379
378
|
* A custom action button rendered in the device control panel (e.g. Tare, Zero).
|
|
@@ -659,10 +658,33 @@ interface DeviceControlPanelProps {
|
|
|
659
658
|
undockIcon?: string;
|
|
660
659
|
/** Style for mode selector: 'buttons' (horizontal scroll), 'dropdown' (select), or 'modal' (click to open modal) */
|
|
661
660
|
modeSelectionStyle?: 'buttons' | 'dropdown' | 'modal';
|
|
661
|
+
/**
|
|
662
|
+
* Render this panel's OWN result toast. Default true, so existing
|
|
663
|
+
* consumers are unchanged.
|
|
664
|
+
*
|
|
665
|
+
* Set false when the host application already surfaces command and save
|
|
666
|
+
* results through its own notification channel. Without it the operator
|
|
667
|
+
* sees two notices for one action - this panel's optimistic "command
|
|
668
|
+
* sent", in this panel's styling, followed by the host's message for the
|
|
669
|
+
* real outcome - which reads as two different mechanisms.
|
|
670
|
+
*
|
|
671
|
+
* The result still lands in `binding.state`, so a host that opts out can
|
|
672
|
+
* read it and render its own.
|
|
673
|
+
*/
|
|
674
|
+
showBuiltInToast?: boolean;
|
|
662
675
|
/** Embedded mode - uses static positioning for rendering in containers (default: false) */
|
|
663
676
|
embedded?: boolean;
|
|
664
677
|
}
|
|
665
|
-
|
|
678
|
+
/**
|
|
679
|
+
* Memoized below (kiosk heap-leak fix, same rationale as DeviceConfigPanel):
|
|
680
|
+
* an OPEN control panel must not re-render on host ticks whose props did not
|
|
681
|
+
* change. Unlike the config panel, a control binding legitimately changes when
|
|
682
|
+
* its live values move, so the memo bails only on genuinely idle ticks - the
|
|
683
|
+
* win is proportional to how often values are flat at display precision.
|
|
684
|
+
*/
|
|
685
|
+
declare function DeviceControlPanelImpl({ binding, onClose, position, align, touchOptimized, compact, fontScale, maxHeight, maxWidth, toastDuration, onModeChange, onParameterChange, onParameterActivate, onStart, onStop, startPending, stopPending, onCustomAction, onOpenConfig, showConfigButton, onUndock, undockIcon, modeSelectionStyle, showBuiltInToast, embedded, }: DeviceControlPanelProps): react__default.JSX.Element | null;
|
|
686
|
+
/** Memo boundary - see DeviceControlPanelImpl doc comment (kiosk heap-leak fix). */
|
|
687
|
+
declare const DeviceControlPanel: react__default.MemoExoticComponent<typeof DeviceControlPanelImpl>;
|
|
666
688
|
|
|
667
689
|
interface NumpadDialogProps {
|
|
668
690
|
/** Whether the dialog is open */
|
|
@@ -711,7 +733,7 @@ interface NumpadDialogProps {
|
|
|
711
733
|
* out-of-range values are rejected (never silently clamped). The field pre-fills
|
|
712
734
|
* with the current value so an operator never blind-zeroes a live setpoint.
|
|
713
735
|
*/
|
|
714
|
-
declare const NumpadDialog:
|
|
736
|
+
declare const NumpadDialog: react__default.FC<NumpadDialogProps>;
|
|
715
737
|
|
|
716
738
|
type DisplayMode = 'standard' | 'dashboard';
|
|
717
739
|
interface FullscreenContainerProps {
|
|
@@ -722,9 +744,9 @@ type OverlayTheme = 'tank' | 'pressure' | 'vessel' | 'flow';
|
|
|
722
744
|
interface SVGLockedOverlayProps {
|
|
723
745
|
svgX: number;
|
|
724
746
|
svgY: number;
|
|
725
|
-
children:
|
|
747
|
+
children: react__default.ReactNode;
|
|
726
748
|
theme?: OverlayTheme;
|
|
727
|
-
style?:
|
|
749
|
+
style?: react__default.CSSProperties;
|
|
728
750
|
className?: string;
|
|
729
751
|
onClick?: () => void;
|
|
730
752
|
containerSelector?: string;
|
|
@@ -769,20 +791,20 @@ interface EquipmentIndicatorProps {
|
|
|
769
791
|
color: string;
|
|
770
792
|
label: string;
|
|
771
793
|
size?: number;
|
|
772
|
-
style?:
|
|
794
|
+
style?: react__default.CSSProperties;
|
|
773
795
|
className?: string;
|
|
774
796
|
}
|
|
775
797
|
interface FullscreenWorkspaceTab {
|
|
776
798
|
label: string;
|
|
777
799
|
value: string;
|
|
778
|
-
content:
|
|
779
|
-
}
|
|
780
|
-
interface FullscreenWorkspaceProps extends
|
|
781
|
-
svgContent:
|
|
782
|
-
overlays?:
|
|
783
|
-
leftPanel?:
|
|
784
|
-
rightPanel?:
|
|
785
|
-
footer?:
|
|
800
|
+
content: react__default.ReactNode;
|
|
801
|
+
}
|
|
802
|
+
interface FullscreenWorkspaceProps extends react__default.HTMLAttributes<HTMLDivElement> {
|
|
803
|
+
svgContent: react__default.ReactNode;
|
|
804
|
+
overlays?: react__default.ReactNode;
|
|
805
|
+
leftPanel?: react__default.ReactNode;
|
|
806
|
+
rightPanel?: react__default.ReactNode;
|
|
807
|
+
footer?: react__default.ReactNode;
|
|
786
808
|
tabs?: FullscreenWorkspaceTab[];
|
|
787
809
|
activeTab?: string;
|
|
788
810
|
onTabChange?: (value: string) => void;
|
|
@@ -803,60 +825,60 @@ interface FullscreenWorkspaceProps extends React__default.HTMLAttributes<HTMLDiv
|
|
|
803
825
|
zoomDisabled?: boolean;
|
|
804
826
|
}
|
|
805
827
|
|
|
806
|
-
declare const FullscreenContainer: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<
|
|
828
|
+
declare const FullscreenContainer: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof _mui_system.BoxOwnProps<_mui_material.Theme>> & {
|
|
807
829
|
theme?: _emotion_react.Theme;
|
|
808
830
|
} & FullscreenContainerProps, {}, {}>;
|
|
809
|
-
declare const LeftPanel: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<
|
|
831
|
+
declare const LeftPanel: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof _mui_system.BoxOwnProps<_mui_material.Theme>> & {
|
|
810
832
|
theme?: _emotion_react.Theme;
|
|
811
833
|
} & {
|
|
812
834
|
collapsed: boolean;
|
|
813
835
|
}, {}, {}>;
|
|
814
|
-
declare const RightPanel: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<
|
|
836
|
+
declare const RightPanel: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof _mui_system.BoxOwnProps<_mui_material.Theme>> & {
|
|
815
837
|
theme?: _emotion_react.Theme;
|
|
816
838
|
} & {
|
|
817
839
|
collapsed: boolean;
|
|
818
840
|
}, {}, {}>;
|
|
819
|
-
declare const SVGArea: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<
|
|
841
|
+
declare const SVGArea: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof _mui_system.BoxOwnProps<_mui_material.Theme>> & {
|
|
820
842
|
theme?: _emotion_react.Theme;
|
|
821
843
|
}, {}, {}>;
|
|
822
|
-
declare const LeftToggleButton: _emotion_styled.StyledComponent<_mui_material.IconButtonOwnProps & Omit<_mui_material.ButtonBaseOwnProps, "classes"> & _mui_material_OverridableComponent.CommonProps & Omit<
|
|
844
|
+
declare const LeftToggleButton: _emotion_styled.StyledComponent<_mui_material.IconButtonOwnProps & Omit<_mui_material.ButtonBaseOwnProps, "classes"> & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children" | "className" | "disabled" | "style" | "tabIndex" | "color" | "size" | "sx" | "classes" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "loading" | "loadingIndicator"> & {
|
|
823
845
|
theme?: _emotion_react.Theme;
|
|
824
846
|
} & {
|
|
825
847
|
collapsed: boolean;
|
|
826
848
|
}, {}, {}>;
|
|
827
|
-
declare const RightToggleButton: _emotion_styled.StyledComponent<_mui_material.IconButtonOwnProps & Omit<_mui_material.ButtonBaseOwnProps, "classes"> & _mui_material_OverridableComponent.CommonProps & Omit<
|
|
849
|
+
declare const RightToggleButton: _emotion_styled.StyledComponent<_mui_material.IconButtonOwnProps & Omit<_mui_material.ButtonBaseOwnProps, "classes"> & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children" | "className" | "disabled" | "style" | "tabIndex" | "color" | "size" | "sx" | "classes" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "loading" | "loadingIndicator"> & {
|
|
828
850
|
theme?: _emotion_react.Theme;
|
|
829
851
|
} & {
|
|
830
852
|
collapsed: boolean;
|
|
831
853
|
}, {}, {}>;
|
|
832
|
-
declare const DisplayModeToggle: _emotion_styled.StyledComponent<_mui_material.IconButtonOwnProps & Omit<_mui_material.ButtonBaseOwnProps, "classes"> & _mui_material_OverridableComponent.CommonProps & Omit<
|
|
854
|
+
declare const DisplayModeToggle: _emotion_styled.StyledComponent<_mui_material.IconButtonOwnProps & Omit<_mui_material.ButtonBaseOwnProps, "classes"> & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children" | "className" | "disabled" | "style" | "tabIndex" | "color" | "size" | "sx" | "classes" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "loading" | "loadingIndicator"> & {
|
|
833
855
|
theme?: _emotion_react.Theme;
|
|
834
856
|
} & {
|
|
835
857
|
mode: DisplayMode;
|
|
836
858
|
}, {}, {}>;
|
|
837
|
-
declare const ZoomControls: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<
|
|
859
|
+
declare const ZoomControls: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof _mui_system.BoxOwnProps<_mui_material.Theme>> & {
|
|
838
860
|
theme?: _emotion_react.Theme;
|
|
839
861
|
}, {}, {}>;
|
|
840
|
-
declare const ZoomButton: _emotion_styled.StyledComponent<_mui_material.IconButtonOwnProps & Omit<_mui_material.ButtonBaseOwnProps, "classes"> & _mui_material_OverridableComponent.CommonProps & Omit<
|
|
862
|
+
declare const ZoomButton: _emotion_styled.StyledComponent<_mui_material.IconButtonOwnProps & Omit<_mui_material.ButtonBaseOwnProps, "classes"> & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children" | "className" | "disabled" | "style" | "tabIndex" | "color" | "size" | "sx" | "classes" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "loading" | "loadingIndicator"> & {
|
|
841
863
|
theme?: _emotion_react.Theme;
|
|
842
864
|
}, {}, {}>;
|
|
843
|
-
declare const FooterPanel: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<
|
|
865
|
+
declare const FooterPanel: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof _mui_system.BoxOwnProps<_mui_material.Theme>> & {
|
|
844
866
|
theme?: _emotion_react.Theme;
|
|
845
867
|
}, {}, {}>;
|
|
846
|
-
declare const PanelTabs: _emotion_styled.StyledComponent<_mui_material.TabsOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<
|
|
868
|
+
declare const PanelTabs: _emotion_styled.StyledComponent<_mui_material.TabsOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "variant" | "children" | "className" | "value" | "style" | "aria-label" | "aria-labelledby" | "onChange" | "sx" | "classes" | "action" | "allowScrollButtonsMobile" | "centered" | "indicatorColor" | "orientation" | "ScrollButtonComponent" | "scrollButtons" | "selectionFollowsFocus" | "TabIndicatorProps" | "TabScrollButtonProps" | "textColor" | "visibleScrollbar" | "slots" | "slotProps"> & {
|
|
847
869
|
theme?: _emotion_react.Theme;
|
|
848
870
|
}, {}, {}>;
|
|
849
|
-
declare const PanelContent: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<
|
|
871
|
+
declare const PanelContent: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof _mui_system.BoxOwnProps<_mui_material.Theme>> & {
|
|
850
872
|
theme?: _emotion_react.Theme;
|
|
851
873
|
}, {}, {}>;
|
|
852
874
|
declare const FixedSVGContainer: _emotion_styled.StyledComponent<{
|
|
853
875
|
theme?: _emotion_react.Theme;
|
|
854
876
|
as?: React.ElementType;
|
|
855
|
-
},
|
|
877
|
+
}, react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
856
878
|
declare const ScrollableSVGWrapper: _emotion_styled.StyledComponent<{
|
|
857
879
|
theme?: _emotion_react.Theme;
|
|
858
880
|
as?: React.ElementType;
|
|
859
|
-
},
|
|
881
|
+
}, react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
860
882
|
|
|
861
883
|
declare const baseOverlayStyles: {
|
|
862
884
|
readonly tank: {
|
|
@@ -909,8 +931,8 @@ declare const baseOverlayStyles: {
|
|
|
909
931
|
};
|
|
910
932
|
};
|
|
911
933
|
declare const overlayStyles: Record<OverlayTheme, typeof baseOverlayStyles[OverlayTheme]>;
|
|
912
|
-
declare const SVGLockedOverlay: ({ svgX, svgY, children, theme, style, className, onClick, containerSelector, }: SVGLockedOverlayProps) =>
|
|
913
|
-
declare const DashboardCard: _emotion_styled.StyledComponent<_mui_system.BoxOwnProps<_mui_material.Theme> & Omit<
|
|
934
|
+
declare const SVGLockedOverlay: ({ svgX, svgY, children, theme, style, className, onClick, containerSelector, }: SVGLockedOverlayProps) => react.JSX.Element;
|
|
935
|
+
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>> & {
|
|
914
936
|
theme?: _emotion_react.Theme;
|
|
915
937
|
} & {
|
|
916
938
|
svgX: number;
|
|
@@ -922,23 +944,23 @@ declare const CardHeader: _emotion_styled.StyledComponent<{
|
|
|
922
944
|
as?: React.ElementType;
|
|
923
945
|
} & {
|
|
924
946
|
color?: string;
|
|
925
|
-
},
|
|
947
|
+
}, react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
926
948
|
declare const CardValue: _emotion_styled.StyledComponent<{
|
|
927
949
|
theme?: _emotion_react.Theme;
|
|
928
950
|
as?: React.ElementType;
|
|
929
|
-
},
|
|
951
|
+
}, react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
930
952
|
declare const CardUnit: _emotion_styled.StyledComponent<{
|
|
931
953
|
theme?: _emotion_react.Theme;
|
|
932
954
|
as?: React.ElementType;
|
|
933
|
-
},
|
|
955
|
+
}, react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
934
956
|
|
|
935
|
-
declare const TrendLine: ({ values, width, height, color, strokeWidth, backgroundColor, }: TrendLineProps) =>
|
|
936
|
-
declare const CircularGauge: ({ value, max, unit, label, size, color, }: CircularGaugeProps) =>
|
|
937
|
-
declare const Sparkline: ({ data, width, height, color }: SparklineProps) =>
|
|
938
|
-
declare const EquipmentIndicatorWithSparkline: ({ svgX, svgY, color, label, size, sparklineData, sparklineOffset, }: EquipmentIndicatorWithSparklineProps) =>
|
|
939
|
-
declare const EquipmentIndicator: ({ svgX, svgY, color, label, size, style, className, }: EquipmentIndicatorProps) =>
|
|
957
|
+
declare const TrendLine: ({ values, width, height, color, strokeWidth, backgroundColor, }: TrendLineProps) => react.JSX.Element;
|
|
958
|
+
declare const CircularGauge: ({ value, max, unit, label, size, color, }: CircularGaugeProps) => react.JSX.Element;
|
|
959
|
+
declare const Sparkline: ({ data, width, height, color }: SparklineProps) => react.JSX.Element | null;
|
|
960
|
+
declare const EquipmentIndicatorWithSparkline: ({ svgX, svgY, color, label, size, sparklineData, sparklineOffset, }: EquipmentIndicatorWithSparklineProps) => react.JSX.Element;
|
|
961
|
+
declare const EquipmentIndicator: ({ svgX, svgY, color, label, size, style, className, }: EquipmentIndicatorProps) => react.JSX.Element;
|
|
940
962
|
|
|
941
|
-
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):
|
|
963
|
+
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;
|
|
942
964
|
|
|
943
965
|
type Theme = 'modern' | 'hmi';
|
|
944
966
|
interface ThemeContextType {
|
|
@@ -948,17 +970,17 @@ interface ThemeContextType {
|
|
|
948
970
|
}
|
|
949
971
|
declare const useTheme: () => ThemeContextType;
|
|
950
972
|
interface ThemeProviderProps {
|
|
951
|
-
children:
|
|
973
|
+
children: react__default.ReactNode;
|
|
952
974
|
}
|
|
953
|
-
declare const ThemeProvider:
|
|
975
|
+
declare const ThemeProvider: react__default.FC<ThemeProviderProps>;
|
|
954
976
|
|
|
955
|
-
interface ThemeToggleProps extends
|
|
977
|
+
interface ThemeToggleProps extends react__default.HTMLAttributes<HTMLDivElement> {
|
|
956
978
|
/** Size of the toggle */
|
|
957
979
|
size?: 'small' | 'medium' | 'large';
|
|
958
980
|
/** Position of the toggle */
|
|
959
981
|
position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'inline';
|
|
960
982
|
}
|
|
961
|
-
declare const ThemeToggle:
|
|
983
|
+
declare const ThemeToggle: react__default.FC<ThemeToggleProps>;
|
|
962
984
|
|
|
963
985
|
/**
|
|
964
986
|
* ISA-101 High Performance HMI — Unified Status Color System
|
|
@@ -1427,13 +1449,13 @@ interface PIDCanvasFeatures {
|
|
|
1427
1449
|
/** Background color for canvas (default: '#ffffff') */
|
|
1428
1450
|
backgroundColor?: string;
|
|
1429
1451
|
}
|
|
1430
|
-
interface PIDCanvasProps extends
|
|
1452
|
+
interface PIDCanvasProps extends react__default.HTMLAttributes<HTMLDivElement> {
|
|
1431
1453
|
/** The diagram to render */
|
|
1432
1454
|
diagram: Diagram;
|
|
1433
1455
|
/** Optional className for the container */
|
|
1434
1456
|
className?: string;
|
|
1435
1457
|
/** Optional inline styles for the container */
|
|
1436
|
-
style?:
|
|
1458
|
+
style?: react__default.CSSProperties;
|
|
1437
1459
|
/** Enable interactive features (pan, zoom, selection, telemetry, dragNodes) */
|
|
1438
1460
|
features?: PIDCanvasFeatures;
|
|
1439
1461
|
/** Callback when selection changes */
|
|
@@ -1489,20 +1511,20 @@ interface PIDCanvasControls {
|
|
|
1489
1511
|
*
|
|
1490
1512
|
* Future: Editing tools, symbol library UI
|
|
1491
1513
|
*/
|
|
1492
|
-
declare function PIDCanvasImpl({ diagram, className, style, features, onSelectionChange, onNodeClick, onPipeClick, onNodeMove, onDiagramChange, onDelete, onItemsCopied, onPaste, onSymbolDrop, onPipeCreated, onMounted, telemetry, statusColorMap, ...props }: PIDCanvasProps):
|
|
1514
|
+
declare function PIDCanvasImpl({ diagram, className, style, features, onSelectionChange, onNodeClick, onPipeClick, onNodeMove, onDiagramChange, onDelete, onItemsCopied, onPaste, onSymbolDrop, onPipeCreated, onMounted, telemetry, statusColorMap, ...props }: PIDCanvasProps): react__default.ReactElement;
|
|
1493
1515
|
/**
|
|
1494
1516
|
* Memo boundary - see PIDCanvasImpl doc comment (renderer-OOM fix). Shallow
|
|
1495
1517
|
* compare: `diagram`, `telemetry`, `features`, `style`, `statusColorMap`, and
|
|
1496
1518
|
* every callback are compared by identity; hosts that keep them stable skip
|
|
1497
1519
|
* the full-canvas re-render entirely when unrelated screen state changes.
|
|
1498
1520
|
*/
|
|
1499
|
-
declare const PIDCanvas:
|
|
1521
|
+
declare const PIDCanvas: react__default.MemoExoticComponent<typeof PIDCanvasImpl>;
|
|
1500
1522
|
|
|
1501
1523
|
interface SymbolLibraryProps {
|
|
1502
1524
|
/** Optional className for styling */
|
|
1503
1525
|
className?: string;
|
|
1504
1526
|
/** Callback when a symbol drag starts */
|
|
1505
|
-
onSymbolDragStart?: (symbolId: string, event:
|
|
1527
|
+
onSymbolDragStart?: (symbolId: string, event: react__default.DragEvent) => void;
|
|
1506
1528
|
/** Show category filter */
|
|
1507
1529
|
showCategories?: boolean;
|
|
1508
1530
|
/** Custom symbol categories */
|
|
@@ -1514,7 +1536,7 @@ interface SymbolLibraryProps {
|
|
|
1514
1536
|
* Displays available symbols organized by category
|
|
1515
1537
|
* Supports drag-and-drop to add new nodes to diagrams
|
|
1516
1538
|
*/
|
|
1517
|
-
declare function SymbolLibrary({ className, onSymbolDragStart, showCategories, categories, }: SymbolLibraryProps):
|
|
1539
|
+
declare function SymbolLibrary({ className, onSymbolDragStart, showCategories, categories, }: SymbolLibraryProps): react__default.ReactElement;
|
|
1518
1540
|
|
|
1519
1541
|
interface NodeConfigPanelProps {
|
|
1520
1542
|
/** Selected node to configure */
|
|
@@ -1532,7 +1554,7 @@ interface NodeConfigPanelProps {
|
|
|
1532
1554
|
/** Additional CSS class name */
|
|
1533
1555
|
className?: string;
|
|
1534
1556
|
/** Custom styles */
|
|
1535
|
-
style?:
|
|
1557
|
+
style?: react__default.CSSProperties;
|
|
1536
1558
|
}
|
|
1537
1559
|
/**
|
|
1538
1560
|
* NodeConfigPanel - Reusable configuration panel for editing node properties and telemetry
|
|
@@ -1548,7 +1570,7 @@ interface NodeConfigPanelProps {
|
|
|
1548
1570
|
* />
|
|
1549
1571
|
* ```
|
|
1550
1572
|
*/
|
|
1551
|
-
declare function NodeConfigPanel({ node, binding, onUpdateNode, onUpdateTelemetry, onAddTelemetry, onRemove, className, style, }: NodeConfigPanelProps):
|
|
1573
|
+
declare function NodeConfigPanel({ node, binding, onUpdateNode, onUpdateTelemetry, onAddTelemetry, onRemove, className, style, }: NodeConfigPanelProps): react__default.JSX.Element;
|
|
1552
1574
|
|
|
1553
1575
|
/**
|
|
1554
1576
|
* Validates a diagram object structure
|
|
@@ -1967,10 +1989,36 @@ interface DeviceConfigPanelProps {
|
|
|
1967
1989
|
onOpenControls?: () => void;
|
|
1968
1990
|
/** Show controls button in header */
|
|
1969
1991
|
showControlsButton?: boolean;
|
|
1992
|
+
/**
|
|
1993
|
+
* Render this panel's OWN result toast. Default true, so existing
|
|
1994
|
+
* consumers are unchanged.
|
|
1995
|
+
*
|
|
1996
|
+
* Set false when the host application already surfaces command and save
|
|
1997
|
+
* results through its own notification channel. Without it the operator
|
|
1998
|
+
* sees two notices for one action - this panel's optimistic "command
|
|
1999
|
+
* sent", in this panel's styling, followed by the host's message for the
|
|
2000
|
+
* real outcome - which reads as two different mechanisms.
|
|
2001
|
+
*
|
|
2002
|
+
* The result still lands in `binding.state`, so a host that opts out can
|
|
2003
|
+
* read it and render its own.
|
|
2004
|
+
*/
|
|
2005
|
+
showBuiltInToast?: boolean;
|
|
1970
2006
|
/** Embedded mode - uses static positioning for rendering in containers (default: false) */
|
|
1971
2007
|
embedded?: boolean;
|
|
1972
2008
|
}
|
|
1973
|
-
|
|
2009
|
+
/**
|
|
2010
|
+
* Memoized below (kiosk heap-leak fix): a host whose screen re-renders ~1Hz on
|
|
2011
|
+
* telemetry must not re-render an OPEN config panel every tick - each pass
|
|
2012
|
+
* re-creates the panel's handler closures and re-binds its MUI event handlers,
|
|
2013
|
+
* and on the kiosk those generations were RETAINED (~100 closures/sec,
|
|
2014
|
+
* ~2.1 MB/min heap growth -> renderer OOM at the 512 MB cap, heap-snapshot
|
|
2015
|
+
* fingerprint: Context/scope buckets + onSave/onReset closures). The memo only
|
|
2016
|
+
* pays off when the host passes identity-stable `binding` and handler props;
|
|
2017
|
+
* an unstable host degrades gracefully to the old behavior.
|
|
2018
|
+
*/
|
|
2019
|
+
declare function DeviceConfigPanelImpl({ binding, onClose, onUndock, undockIcon, position, align, touchOptimized, compact, fontScale, maxHeight, maxWidth, toastDuration, onOpenControls, showControlsButton, showBuiltInToast, embedded, }: DeviceConfigPanelProps): react__default.JSX.Element | null;
|
|
2020
|
+
/** Memo boundary - see DeviceConfigPanelImpl doc comment (kiosk heap-leak fix). */
|
|
2021
|
+
declare const DeviceConfigPanel: react__default.MemoExoticComponent<typeof DeviceConfigPanelImpl>;
|
|
1974
2022
|
|
|
1975
2023
|
/**
|
|
1976
2024
|
* Options for simulation behavior
|
package/dist/index.js
CHANGED
|
@@ -895,7 +895,7 @@ var NodeControlsPanel = ({
|
|
|
895
895
|
};
|
|
896
896
|
|
|
897
897
|
// src/components/DeviceControlPanel/DeviceControlPanel.tsx
|
|
898
|
-
import { useState as useState5, useEffect as useEffect2 } from "react";
|
|
898
|
+
import React5, { useState as useState5, useEffect as useEffect2 } from "react";
|
|
899
899
|
|
|
900
900
|
// src/theme/statusColors.ts
|
|
901
901
|
var DEFAULT_STATUS_COLORS = {
|
|
@@ -922,7 +922,7 @@ function resolveStatusColor(status, customMap) {
|
|
|
922
922
|
|
|
923
923
|
// src/components/DeviceControlPanel/DeviceControlPanel.tsx
|
|
924
924
|
import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
925
|
-
function
|
|
925
|
+
function DeviceControlPanelImpl({
|
|
926
926
|
binding,
|
|
927
927
|
onClose,
|
|
928
928
|
position = "bottom",
|
|
@@ -946,6 +946,7 @@ function DeviceControlPanel({
|
|
|
946
946
|
onUndock,
|
|
947
947
|
undockIcon = "\u21F1",
|
|
948
948
|
modeSelectionStyle = "buttons",
|
|
949
|
+
showBuiltInToast = true,
|
|
949
950
|
embedded = false
|
|
950
951
|
}) {
|
|
951
952
|
const [localParameterValues, setLocalParameterValues] = useState5({});
|
|
@@ -1791,7 +1792,7 @@ function DeviceControlPanel({
|
|
|
1791
1792
|
);
|
|
1792
1793
|
}) })
|
|
1793
1794
|
] }),
|
|
1794
|
-
binding.state.lastCommandResult && showToast && /* @__PURE__ */ jsx8(
|
|
1795
|
+
binding.state.lastCommandResult && showToast && showBuiltInToast && /* @__PURE__ */ jsx8(
|
|
1795
1796
|
"div",
|
|
1796
1797
|
{
|
|
1797
1798
|
style: {
|
|
@@ -1847,6 +1848,7 @@ function DeviceControlPanel({
|
|
|
1847
1848
|
` })
|
|
1848
1849
|
] });
|
|
1849
1850
|
}
|
|
1851
|
+
var DeviceControlPanel = React5.memo(DeviceControlPanelImpl);
|
|
1850
1852
|
|
|
1851
1853
|
// src/components/NumpadDialog/NumpadDialog.tsx
|
|
1852
1854
|
import { useState as useState6, useEffect as useEffect3, useCallback as useCallback3, useRef as useRef2, useId } from "react";
|
|
@@ -8590,9 +8592,9 @@ function useDeviceConfigs(initialConfigs) {
|
|
|
8590
8592
|
}
|
|
8591
8593
|
|
|
8592
8594
|
// src/components/DeviceConfigPanel/DeviceConfigPanel.tsx
|
|
8593
|
-
import { useState as useState18, useEffect as useEffect13, useMemo, useRef as useRef8 } from "react";
|
|
8595
|
+
import React15, { useState as useState18, useEffect as useEffect13, useMemo, useRef as useRef8 } from "react";
|
|
8594
8596
|
import { Fragment as Fragment9, jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
8595
|
-
function
|
|
8597
|
+
function DeviceConfigPanelImpl({
|
|
8596
8598
|
binding,
|
|
8597
8599
|
onClose,
|
|
8598
8600
|
onUndock,
|
|
@@ -8607,6 +8609,7 @@ function DeviceConfigPanel({
|
|
|
8607
8609
|
toastDuration = 3e3,
|
|
8608
8610
|
onOpenControls,
|
|
8609
8611
|
showControlsButton = true,
|
|
8612
|
+
showBuiltInToast = true,
|
|
8610
8613
|
embedded = false
|
|
8611
8614
|
}) {
|
|
8612
8615
|
const [localValues, setLocalValues] = useState18(() => {
|
|
@@ -9272,7 +9275,7 @@ function DeviceConfigPanel({
|
|
|
9272
9275
|
}
|
|
9273
9276
|
)
|
|
9274
9277
|
] }),
|
|
9275
|
-
binding.state.lastSaveResult && showToast && /* @__PURE__ */ jsx23(
|
|
9278
|
+
binding.state.lastSaveResult && showToast && showBuiltInToast && /* @__PURE__ */ jsx23(
|
|
9276
9279
|
"div",
|
|
9277
9280
|
{
|
|
9278
9281
|
style: {
|
|
@@ -9294,6 +9297,7 @@ function DeviceConfigPanel({
|
|
|
9294
9297
|
)
|
|
9295
9298
|
] });
|
|
9296
9299
|
}
|
|
9300
|
+
var DeviceConfigPanel = React15.memo(DeviceConfigPanelImpl);
|
|
9297
9301
|
|
|
9298
9302
|
// src/diagram/hooks/useSimulation.ts
|
|
9299
9303
|
import { useEffect as useEffect14 } from "react";
|