@adcops/autocore-react 3.0.0 → 3.0.3
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/assets/BlocklyLogo.d.ts +3 -0
- package/dist/assets/BlocklyLogo.js +1 -0
- package/dist/assets/Distance.d.ts +3 -0
- package/dist/assets/Distance.js +1 -0
- package/dist/assets/JogLong.d.ts +3 -0
- package/dist/assets/JogLong.js +1 -0
- package/dist/assets/JogMedium.d.ts +3 -0
- package/dist/assets/JogMedium.js +1 -0
- package/dist/assets/JogShort.d.ts +3 -0
- package/dist/assets/JogShort.js +1 -0
- package/dist/assets/PythonLogo.d.ts +3 -0
- package/dist/assets/PythonLogo.js +1 -0
- package/dist/assets/Rotation3D.d.ts +3 -0
- package/dist/assets/Rotation3D.js +1 -0
- package/dist/assets/RotationCcw.d.ts +3 -0
- package/dist/assets/RotationCcw.js +1 -0
- package/dist/assets/RotationCcwA.d.ts +3 -0
- package/dist/assets/RotationCcwA.js +1 -0
- package/dist/assets/RotationCcwB.d.ts +3 -0
- package/dist/assets/RotationCcwB.js +1 -0
- package/dist/assets/RotationCcwC.d.ts +3 -0
- package/dist/assets/RotationCcwC.js +1 -0
- package/dist/assets/RotationCw.d.ts +3 -0
- package/dist/assets/RotationCw.js +1 -0
- package/dist/assets/RotationCwA.d.ts +3 -0
- package/dist/assets/RotationCwA.js +1 -0
- package/dist/assets/RotationCwB.d.ts +3 -0
- package/dist/assets/RotationCwB.js +1 -0
- package/dist/assets/RotationCwC.d.ts +3 -0
- package/dist/assets/RotationCwC.js +1 -0
- package/dist/assets/Run.d.ts +3 -0
- package/dist/assets/Run.js +1 -0
- package/dist/assets/Speed.d.ts +3 -0
- package/dist/assets/Speed.js +1 -0
- package/dist/assets/SpeedFast.d.ts +3 -0
- package/dist/assets/SpeedFast.js +1 -0
- package/dist/assets/SpeedMedium.d.ts +3 -0
- package/dist/assets/SpeedMedium.js +1 -0
- package/dist/assets/SpeedNone.d.ts +3 -0
- package/dist/assets/SpeedNone.js +1 -0
- package/dist/assets/SpeedSlow.d.ts +3 -0
- package/dist/assets/SpeedSlow.js +1 -0
- package/dist/assets/Walk.d.ts +3 -0
- package/dist/assets/Walk.js +1 -0
- package/dist/assets/index.d.ts +22 -0
- package/dist/assets/index.js +1 -0
- package/dist/assets/svg/blockly_logo.svg +82 -0
- package/dist/assets/svg/distance.svg +40 -0
- package/dist/assets/svg/jog_long.svg +1 -0
- package/dist/assets/svg/jog_medium.svg +1 -0
- package/dist/assets/svg/jog_short.svg +1 -0
- package/dist/assets/svg/python_logo.svg +246 -0
- package/dist/assets/svg/rotation_3d.svg +1 -0
- package/dist/assets/svg/rotation_ccw.svg +50 -0
- package/dist/assets/svg/rotation_ccw_a.svg +57 -0
- package/dist/assets/svg/rotation_ccw_b.svg +57 -0
- package/dist/assets/svg/rotation_ccw_c.svg +57 -0
- package/dist/assets/svg/rotation_cw.svg +49 -0
- package/dist/assets/svg/rotation_cw_a.svg +30 -0
- package/dist/assets/svg/rotation_cw_b.svg +30 -0
- package/dist/assets/svg/rotation_cw_c.svg +30 -0
- package/dist/assets/svg/run.svg +1 -0
- package/dist/assets/svg/speed.svg +39 -0
- package/dist/assets/svg/speed_fast.svg +1 -0
- package/dist/assets/svg/speed_medium.svg +1 -0
- package/dist/assets/svg/speed_none.svg +1 -0
- package/dist/assets/svg/speed_slow.svg +1 -0
- package/dist/assets/svg/walk.svg +1 -0
- package/dist/components/BlocklyEditor.css +25 -0
- package/dist/components/BlocklyEditor.d.ts +120 -0
- package/dist/components/BlocklyEditor.js +1 -0
- package/dist/components/CodeEditor.d.ts +76 -0
- package/dist/components/CodeEditor.js +1 -0
- package/dist/components/Indicator.d.ts +12 -27
- package/dist/components/Indicator.js +1 -1
- package/dist/components/IndicatorButton.d.ts +56 -37
- package/dist/components/IndicatorButton.js +1 -1
- package/dist/components/JogPanel.css +41 -0
- package/dist/components/JogPanel.d.ts +115 -0
- package/dist/components/JogPanel.js +1 -0
- package/dist/components/Lamp.d.ts +81 -0
- package/dist/components/Lamp.js +1 -0
- package/dist/components/ToggleGroup.d.ts +103 -0
- package/dist/components/ToggleGroup.js +1 -0
- package/dist/core/ActionMode.d.ts +9 -0
- package/dist/core/ActionMode.js +1 -0
- package/dist/core/EventEmitterContext.d.ts +42 -2
- package/dist/core/IndicatorButtonState.d.ts +21 -0
- package/dist/core/IndicatorButtonState.js +1 -0
- package/docs/assets/highlight.css +25 -18
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/components_BlocklyEditor.BlocklyEditor.html +124 -0
- package/docs/classes/components_CodeEditor.CodeEditor.html +128 -0
- package/docs/classes/components_Indicator.Indicator.html +8 -8
- package/docs/classes/components_IndicatorButton.IndicatorButton.html +17 -17
- package/docs/classes/components_JogPanel.JogPanel.html +138 -0
- package/docs/classes/components_Lamp.Lamp.html +105 -0
- package/docs/classes/components_OskDialog.OskDialog.html +5 -5
- package/docs/classes/components_ToggleGroup.ToggleGroup.html +118 -0
- package/docs/classes/components_ValueDisplay.ValueDisplay.html +25 -8
- package/docs/classes/core_ValueSimulator.ValueSimulator.html +13 -3
- package/docs/classes/hub_HubBase.HubBase.html +45 -16
- package/docs/classes/hub_HubSimulate.HubSimulate.html +16 -20
- package/docs/classes/hub_HubSocketIo.HubSocketIo.html +33 -21
- package/docs/classes/hub_HubTauri.HubTauri.html +21 -18
- package/docs/enums/components_JogPanel.JogDistanceAction.html +5 -0
- package/docs/enums/components_JogPanel.JogPanelAction.html +18 -0
- package/docs/enums/components_JogPanel.JogSpeedAction.html +5 -0
- package/docs/enums/core_ActionMode.ActionMode.html +6 -0
- package/docs/enums/core_IndicatorColor.IndicatorColor.html +23 -0
- package/docs/functions/assets_BlocklyLogo.default.html +1 -0
- package/docs/functions/assets_Distance.default.html +1 -0
- package/docs/functions/assets_JogLong.default.html +1 -0
- package/docs/functions/assets_JogMedium.default.html +1 -0
- package/docs/functions/assets_JogShort.default.html +1 -0
- package/docs/functions/assets_PythonLogo.default.html +1 -0
- package/docs/functions/assets_Rotation3D.default.html +1 -0
- package/docs/functions/assets_RotationCcw.default.html +1 -0
- package/docs/functions/assets_RotationCcwA.default.html +1 -0
- package/docs/functions/assets_RotationCcwB.default.html +1 -0
- package/docs/functions/assets_RotationCcwC.default.html +1 -0
- package/docs/functions/assets_RotationCw.default.html +1 -0
- package/docs/functions/assets_RotationCwA.default.html +1 -0
- package/docs/functions/assets_RotationCwB.default.html +1 -0
- package/docs/functions/assets_RotationCwC.default.html +1 -0
- package/docs/functions/assets_Run.default.html +1 -0
- package/docs/functions/assets_Speed.default.html +1 -0
- package/docs/functions/assets_SpeedFast.default.html +1 -0
- package/docs/functions/assets_SpeedMedium.default.html +1 -0
- package/docs/functions/assets_SpeedNone.default.html +1 -0
- package/docs/functions/assets_SpeedSlow.default.html +1 -0
- package/docs/functions/assets_Walk.default.html +1 -0
- package/docs/functions/components_BlocklyEditor.createCustomToolbox.html +6 -0
- package/docs/functions/components_Osk.Osk.html +2 -2
- package/docs/functions/core_EventEmitterContext.EventEmitterProvider.html +3 -3
- package/docs/functions/core_UniqueId.UniqueId.html +7 -2
- package/docs/functions/core_hoc.hocAddSubscription.html +2 -2
- package/docs/functions/hub.createHub.html +2 -2
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +28 -3
- package/docs/interfaces/components_IndicatorButton.IndicatorButtonProps.html +162 -132
- package/docs/interfaces/components_JogPanel.JogPanelButtonDefinition.html +5 -0
- package/docs/interfaces/components_ToggleGroup.ToggleGroupProps.html +636 -0
- package/docs/interfaces/core_EventEmitterContext.Action.html +6 -3
- package/docs/interfaces/core_EventEmitterContext.EventEmitterContextType.html +19 -7
- package/docs/interfaces/core_EventEmitterContext.State.html +5 -5
- package/docs/interfaces/core_EventEmitterContext.Subscription.html +4 -4
- package/docs/interfaces/core_IndicatorButtonState.IndicatorButtonState.html +10 -0
- package/docs/interfaces/core_PositionContext.IPositionContext.html +17 -0
- package/docs/modules/assets.html +23 -0
- package/docs/modules/{core_InputPatterns.html → assets_BlocklyLogo.html} +2 -2
- package/docs/modules/assets_Distance.html +2 -0
- package/docs/modules/assets_JogLong.html +2 -0
- package/docs/modules/assets_JogMedium.html +2 -0
- package/docs/modules/assets_JogShort.html +2 -0
- package/docs/modules/assets_PythonLogo.html +2 -0
- package/docs/modules/assets_Rotation3D.html +2 -0
- package/docs/modules/assets_RotationCcw.html +2 -0
- package/docs/modules/assets_RotationCcwA.html +2 -0
- package/docs/modules/assets_RotationCcwB.html +2 -0
- package/docs/modules/assets_RotationCcwC.html +2 -0
- package/docs/modules/assets_RotationCw.html +2 -0
- package/docs/modules/assets_RotationCwA.html +2 -0
- package/docs/modules/assets_RotationCwB.html +2 -0
- package/docs/modules/assets_RotationCwC.html +2 -0
- package/docs/modules/assets_Run.html +2 -0
- package/docs/modules/assets_Speed.html +2 -0
- package/docs/modules/assets_SpeedFast.html +2 -0
- package/docs/modules/assets_SpeedMedium.html +2 -0
- package/docs/modules/assets_SpeedNone.html +2 -0
- package/docs/modules/assets_SpeedSlow.html +2 -0
- package/docs/modules/assets_Walk.html +2 -0
- package/docs/modules/components_BlocklyEditor.html +5 -0
- package/docs/modules/components_CodeEditor.html +3 -0
- package/docs/modules/components_Indicator.html +2 -2
- package/docs/modules/components_IndicatorButton.html +4 -4
- package/docs/modules/components_JogPanel.html +9 -0
- package/docs/modules/components_Lamp.html +4 -0
- package/docs/modules/components_Osk.html +2 -2
- package/docs/modules/components_OskDialog.html +2 -2
- package/docs/modules/{core_DimensionsContext.html → components_ToggleGroup.html} +5 -4
- package/docs/modules/components_ValueDisplay.html +2 -2
- package/docs/modules/core_ActionMode.html +2 -0
- package/docs/modules/core_EventEmitterContext.html +2 -2
- package/docs/modules/{components_IndicatorColor.html → core_IndicatorButtonState.html} +2 -2
- package/docs/modules/core_IndicatorColor.html +2 -0
- package/docs/modules/core_MaskPatterns.html +3 -0
- package/docs/modules/core_NumerableTypes.html +2 -2
- package/docs/modules/core_PositionContext.html +4 -0
- package/docs/modules/core_UniqueId.html +2 -2
- package/docs/modules/core_ValueSimulator.html +2 -2
- package/docs/modules/core_hoc.html +2 -2
- package/docs/modules/hub.html +2 -2
- package/docs/modules/hub_HubBase.html +2 -2
- package/docs/modules/hub_HubSimulate.html +2 -2
- package/docs/modules/hub_HubSocketIo.html +2 -2
- package/docs/modules/hub_HubTauri.html +2 -2
- package/docs/types/components_IndicatorButton.IndicatorButtonOptionsType.html +1 -0
- package/docs/types/core_EventEmitterContext.EmitterDispatchFunction.html +3 -1
- package/docs/types/core_EventEmitterContext.EmitterSubscribeFunction.html +3 -1
- package/docs/types/core_EventEmitterContext.EmitterUnsubscribeFunction.html +3 -1
- package/docs/types/core_NumerableTypes.NumerableFormatOptions.html +4 -1
- package/docs/types/core_hoc.HocAddSubscriptionProps.html +2 -2
- package/docs/variables/components_BlocklyEditor.StandardToolbox.html +1 -0
- package/docs/variables/components_JogPanel.kDefaultButtonDefinitions.html +2 -0
- package/docs/variables/components_JogPanel.kRotationButtonDefinitions.html +1 -0
- package/docs/variables/core_EventEmitterContext.EventEmitterContext.html +58 -5
- package/docs/variables/core_MaskPatterns.PrimeReactMaskPatterns.html +14 -0
- package/docs/variables/core_MaskPatterns.RegExMaskPatterns.html +14 -0
- package/docs/variables/core_PositionContext.DimensionsContext.html +6 -0
- package/package.json +8 -4
- package/readme.md +33 -0
- package/src/assets/BlocklyLogo.tsx +27 -0
- package/src/assets/Distance.tsx +18 -0
- package/src/assets/JogLong.tsx +13 -0
- package/src/assets/JogMedium.tsx +13 -0
- package/src/assets/JogShort.tsx +13 -0
- package/src/assets/PythonLogo.tsx +83 -0
- package/src/assets/Rotation3D.tsx +13 -0
- package/src/assets/RotationCcw.tsx +33 -0
- package/src/assets/RotationCcwA.tsx +45 -0
- package/src/assets/RotationCcwB.tsx +45 -0
- package/src/assets/RotationCcwC.tsx +45 -0
- package/src/assets/RotationCw.tsx +31 -0
- package/src/assets/RotationCwA.tsx +42 -0
- package/src/assets/RotationCwB.tsx +42 -0
- package/src/assets/RotationCwC.tsx +42 -0
- package/src/assets/Run.tsx +13 -0
- package/src/assets/Speed.tsx +18 -0
- package/src/assets/SpeedFast.tsx +13 -0
- package/src/assets/SpeedMedium.tsx +13 -0
- package/src/assets/SpeedNone.tsx +13 -0
- package/src/assets/SpeedSlow.tsx +13 -0
- package/src/assets/Walk.tsx +13 -0
- package/src/assets/index.ts +22 -0
- package/src/assets/svg/blockly_logo.svg +82 -0
- package/src/assets/svg/distance.svg +40 -0
- package/src/assets/svg/jog_long.svg +1 -0
- package/src/assets/svg/jog_medium.svg +1 -0
- package/src/assets/svg/jog_short.svg +1 -0
- package/src/assets/svg/python_logo.svg +246 -0
- package/src/assets/svg/rotation_3d.svg +1 -0
- package/src/assets/svg/rotation_ccw.svg +50 -0
- package/src/assets/svg/rotation_ccw_a.svg +57 -0
- package/src/assets/svg/rotation_ccw_b.svg +57 -0
- package/src/assets/svg/rotation_ccw_c.svg +57 -0
- package/src/assets/svg/rotation_cw.svg +49 -0
- package/src/assets/svg/rotation_cw_a.svg +30 -0
- package/src/assets/svg/rotation_cw_b.svg +30 -0
- package/src/assets/svg/rotation_cw_c.svg +30 -0
- package/src/assets/svg/run.svg +1 -0
- package/src/assets/svg/speed.svg +39 -0
- package/src/assets/svg/speed_fast.svg +1 -0
- package/src/assets/svg/speed_medium.svg +1 -0
- package/src/assets/svg/speed_none.svg +1 -0
- package/src/assets/svg/speed_slow.svg +1 -0
- package/src/assets/svg/walk.svg +1 -0
- package/src/components/BlocklyEditor.css +25 -0
- package/src/components/BlocklyEditor.tsx +598 -0
- package/src/components/CodeEditor.tsx +156 -0
- package/src/components/Indicator.tsx +63 -118
- package/src/components/IndicatorButton.tsx +104 -50
- package/src/components/JogPanel.css +41 -0
- package/src/components/JogPanel.tsx +458 -0
- package/src/components/Lamp.tsx +243 -0
- package/src/components/ToggleGroup.tsx +429 -0
- package/src/core/ActionMode.ts +20 -0
- package/src/core/IndicatorButtonState.ts +34 -0
- package/tools/copy-distribution-files.cjs +3 -2
- package/dist/components/DPad.css +0 -522
- package/dist/components/DPad.d.ts +0 -34
- package/dist/components/DPad.js +0 -1
- package/docs/enums/components_DPad.VcJoyPadAction.html +0 -10
- package/docs/enums/components_DPad.VcJoyPadButtonId.html +0 -7
- package/docs/enums/components_IndicatorButton.ActionMode.html +0 -6
- package/docs/enums/components_IndicatorColor.IndicatorColor.html +0 -13
- package/docs/functions/components_DPad.VcDPad.html +0 -5
- package/docs/interfaces/components_IndicatorButton.IndicatorButtonState.html +0 -10
- package/docs/interfaces/core_DimensionsContext.IDimensionsContext.html +0 -4
- package/docs/modules/components_DPad.html +0 -5
- package/docs/variables/core_DimensionsContext.DimensionsContext.html +0 -1
- package/docs/variables/core_InputPatterns.InputPatterns.html +0 -2
- package/src/components/DPad.css +0 -522
- package/src/components/DPad.tsx +0 -94
- /package/dist/{components → core}/IndicatorColor.d.ts +0 -0
- /package/dist/{components → core}/IndicatorColor.js +0 -0
- /package/src/{components → core}/IndicatorColor.ts +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './JogPanel.css';
|
|
3
|
+
/**
|
|
4
|
+
* Enumerates the source button or action when an event occurs.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum JogPanelAction {
|
|
7
|
+
/** Invalid - Ignore this button */
|
|
8
|
+
Invalid = 0,
|
|
9
|
+
xPositive = 1,
|
|
10
|
+
xNegative = 2,
|
|
11
|
+
yPositive = 3,
|
|
12
|
+
yNegative = 4,
|
|
13
|
+
zPositive = 5,
|
|
14
|
+
zNegative = 6,
|
|
15
|
+
aPositive = 7,
|
|
16
|
+
aNegative = 8,
|
|
17
|
+
bPositive = 9,
|
|
18
|
+
bNegative = 16,
|
|
19
|
+
cPositive = 17,
|
|
20
|
+
cNegative = 18,
|
|
21
|
+
/** Stop, clear or reset */
|
|
22
|
+
Stop = 255
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Enumerates the selected jog distance.
|
|
26
|
+
*/
|
|
27
|
+
export declare enum JogDistanceAction {
|
|
28
|
+
Short = 0,
|
|
29
|
+
Medium = 16,
|
|
30
|
+
Long = 32
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Enumerates the selected jog distance.
|
|
34
|
+
*/
|
|
35
|
+
export declare enum JogSpeedAction {
|
|
36
|
+
Slow = 0,
|
|
37
|
+
Medium = 16,
|
|
38
|
+
Fast = 32
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Jog button definition type for defining the button in the JogPanel.
|
|
42
|
+
*/
|
|
43
|
+
export interface JogPanelButtonDefinition {
|
|
44
|
+
icon: string;
|
|
45
|
+
alt: string;
|
|
46
|
+
action: JogPanelAction;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Component properties of the directional pad.
|
|
50
|
+
*/
|
|
51
|
+
interface JogPanelProps {
|
|
52
|
+
onClicked?: (action: JogPanelAction) => void;
|
|
53
|
+
onJogDistanceChanged?: (action: JogDistanceAction) => void;
|
|
54
|
+
onJogSpeedChanged?: (action: JogSpeedAction) => void;
|
|
55
|
+
buttonDefinitions: (JogPanelButtonDefinition | undefined)[][] | undefined;
|
|
56
|
+
defaultJogDistance: JogDistanceAction;
|
|
57
|
+
defaultJogSpeed: JogSpeedAction;
|
|
58
|
+
showDistanceControl: boolean;
|
|
59
|
+
showSpeedControl: boolean;
|
|
60
|
+
}
|
|
61
|
+
interface JogPanelState {
|
|
62
|
+
jogDistance: JogDistanceAction;
|
|
63
|
+
jogSpeed: JogSpeedAction;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Default X, Y, Z configuration.
|
|
67
|
+
*/
|
|
68
|
+
export declare const kDefaultButtonDefinitions: (JogPanelButtonDefinition | undefined)[][];
|
|
69
|
+
export declare const kRotationButtonDefinitions: (JogPanelButtonDefinition | undefined)[][];
|
|
70
|
+
/**
|
|
71
|
+
* Jogging panel that supports 3D motion. In 3D:
|
|
72
|
+
* - Z is Up and Down,
|
|
73
|
+
* - Y is towards and away
|
|
74
|
+
* - X is left and right
|
|
75
|
+
*
|
|
76
|
+
* This Jog Panel is based upon a standard CNC mill and industrial standards.
|
|
77
|
+
*
|
|
78
|
+
* ## Parameters
|
|
79
|
+
* @param onClicked Callback any time a button is clicked. Includes argument for direction.
|
|
80
|
+
* @param buttonDefinitions A 3x3 matrix of (JogPanelButtonDefinition | undefined) that defines the button. If a button is undefined, it is disabled.
|
|
81
|
+
*
|
|
82
|
+
* ## Button definitions
|
|
83
|
+
*
|
|
84
|
+
* Example:
|
|
85
|
+
* ```
|
|
86
|
+
* export const kDefaultButtonDefinitions : (JogPanelButtonDefinition | undefined)[][] = [
|
|
87
|
+
* [{ icon: "pi pi-arrow-up-left", action: JogPanelAction.yPositive, alt: "Y Positive" }, { icon: "pi pi-arrow-up", action: JogPanelAction.zPositive, alt: "Z Positive" }, undefined],
|
|
88
|
+
* [{ icon: "pi pi-arrow-left", action: JogPanelAction.xNegative, alt: "X Negative" }, undefined, { icon: "pi pi-arrow-right", action: JogPanelAction.xPositive, alt: "X Positive" }],
|
|
89
|
+
* [undefined, { icon: "pi pi-arrow-down", action: JogPanelAction.zNegative, alt: "Z Negative" }, { icon: "pi pi-arrow-down-right", action: JogPanelAction.yNegative, alt: "Y Negative" }],
|
|
90
|
+
* ];
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
*/
|
|
94
|
+
export declare class JogPanel extends React.Component<JogPanelProps, JogPanelState> {
|
|
95
|
+
static defaultProps: JogPanelProps;
|
|
96
|
+
private jogDistanceItems;
|
|
97
|
+
private jogSpeedItems;
|
|
98
|
+
constructor(props: JogPanelProps);
|
|
99
|
+
/**
|
|
100
|
+
* Handle a user action on the DirectionalPad
|
|
101
|
+
* @param action DirectionalPadAction
|
|
102
|
+
*/
|
|
103
|
+
private handleClicked;
|
|
104
|
+
/**
|
|
105
|
+
* The user has selected a different jog distance.
|
|
106
|
+
* @param {JogDistanceAction} action The newly-selected distance.
|
|
107
|
+
*/
|
|
108
|
+
private handleDistanceChanged;
|
|
109
|
+
private handleSpeedChanged;
|
|
110
|
+
emptyRow(): import("react/jsx-runtime").JSX.Element;
|
|
111
|
+
private actionToIcon;
|
|
112
|
+
standardButton(row: number, col: number): import("react/jsx-runtime").JSX.Element;
|
|
113
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
114
|
+
}
|
|
115
|
+
export default JogPanel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import React from"react";import{Button}from"primereact/button";import{SelectButton}from"primereact/selectbutton";import{Tooltip}from"primereact/tooltip";import"./JogPanel.css";import{Distance,JogShort,JogMedium,JogLong}from"../assets";import{Speed,SpeedSlow,SpeedMedium,SpeedFast}from"../assets";import{RotationCcwA,RotationCcwB,RotationCcwC}from"../assets";import{RotationCwA,RotationCwB,RotationCwC}from"../assets";export var JogPanelAction;!function(t){t[t.Invalid=0]="Invalid",t[t.xPositive=1]="xPositive",t[t.xNegative=2]="xNegative",t[t.yPositive=3]="yPositive",t[t.yNegative=4]="yNegative",t[t.zPositive=5]="zPositive",t[t.zNegative=6]="zNegative",t[t.aPositive=7]="aPositive",t[t.aNegative=8]="aNegative",t[t.bPositive=9]="bPositive",t[t.bNegative=16]="bNegative",t[t.cPositive=17]="cPositive",t[t.cNegative=18]="cNegative",t[t.Stop=255]="Stop"}(JogPanelAction||(JogPanelAction={}));export var JogDistanceAction;!function(t){t[t.Short=0]="Short",t[t.Medium=16]="Medium",t[t.Long=32]="Long"}(JogDistanceAction||(JogDistanceAction={}));export var JogSpeedAction;!function(t){t[t.Slow=0]="Slow",t[t.Medium=16]="Medium",t[t.Fast=32]="Fast"}(JogSpeedAction||(JogSpeedAction={}));export const kDefaultButtonDefinitions=[[{icon:"pi pi-arrow-up-left",action:JogPanelAction.yPositive,alt:"Y Positive"},{icon:"pi pi-arrow-up",action:JogPanelAction.zPositive,alt:"Z Positive"},void 0],[{icon:"pi pi-arrow-left",action:JogPanelAction.xNegative,alt:"X Negative"},void 0,{icon:"pi pi-arrow-right",action:JogPanelAction.xPositive,alt:"X Positive"}],[void 0,{icon:"pi pi-arrow-down",action:JogPanelAction.zNegative,alt:"Z Negative"},{icon:"pi pi-arrow-down-right",action:JogPanelAction.yNegative,alt:"Y Negative"}]];export const kRotationButtonDefinitions=[[{icon:"pi",action:JogPanelAction.bPositive,alt:"Rot B Positive"},{icon:"pi",action:JogPanelAction.cPositive,alt:"Rot C Positive"},void 0],[{icon:"pi",action:JogPanelAction.aNegative,alt:"Rot A Negative"},void 0,{icon:"pi",action:JogPanelAction.aPositive,alt:"Rot A Positive"}],[void 0,{icon:"pi",action:JogPanelAction.cNegative,alt:"Rot C Negative"},{icon:"pi ",action:JogPanelAction.bNegative,alt:"Rot B Negative"}]];export class JogPanel extends React.Component{constructor(t){super(t),Object.defineProperty(this,"jogDistanceItems",{enumerable:!0,configurable:!0,writable:!0,value:[{name:"S",value:JogDistanceAction.Short},{name:"M",value:JogDistanceAction.Medium},{name:"L",value:JogDistanceAction.Long}]}),Object.defineProperty(this,"jogSpeedItems",{enumerable:!0,configurable:!0,writable:!0,value:[{name:"S",value:JogSpeedAction.Slow},{name:"M",value:JogSpeedAction.Medium},{name:"F",value:JogSpeedAction.Fast}]}),this.state={jogDistance:t.defaultJogDistance,jogSpeed:t.defaultJogSpeed}}handleClicked(t){null!=t&&this.props.onClicked&&this.props.onClicked(t)}handleDistanceChanged(t){this.setState({jogDistance:t}),this.props.onJogDistanceChanged&&this.props.onJogDistanceChanged(t)}handleSpeedChanged(t){this.setState({jogSpeed:t}),this.props.onJogSpeedChanged&&this.props.onJogSpeedChanged(t)}emptyRow(){return _jsxs("div",{className:"grid-row",children:[_jsx("div",{className:"button-item empty-slot"}),_jsx("div",{className:"button-item empty-slot"}),_jsx("div",{className:"button-item empty-slot"})]})}actionToIcon(t){return t==JogPanelAction.Invalid||t==JogPanelAction.Stop?_jsx("i",{}):t==JogPanelAction.xNegative?_jsx("i",{className:"pi pi-arrow-left"}):t==JogPanelAction.xPositive?_jsx("i",{className:"pi pi-arrow-right"}):t==JogPanelAction.yNegative?_jsx("i",{className:"pi pi-arrow-up-left"}):t==JogPanelAction.yPositive?_jsx("i",{className:"pi pi-arrow-down-right"}):t==JogPanelAction.zNegative?_jsx("i",{className:"pi pi-up"}):t==JogPanelAction.zPositive?_jsx("i",{className:"pi pi-down"}):t==JogPanelAction.aNegative?_jsx(RotationCcwA,{}):t==JogPanelAction.aPositive?_jsx(RotationCwA,{}):t==JogPanelAction.bNegative?_jsx(RotationCcwB,{}):t==JogPanelAction.bPositive?_jsx(RotationCwB,{}):t==JogPanelAction.cNegative?_jsx(RotationCcwC,{}):t==JogPanelAction.cPositive?_jsx(RotationCwC,{}):_jsx("i",{})}standardButton(t,i){if(void 0!==this.props.buttonDefinitions&&void 0!==this.props.buttonDefinitions[t]&&void 0!==this.props.buttonDefinitions[t][i]&&void 0!==this.props.buttonDefinitions[t][i]?.action){const o=this.props.buttonDefinitions[t][i]?.action;return void 0!==o&&o<JogPanelAction.aPositive?_jsx(Button,{icon:this.props.buttonDefinitions[t][i]?.icon,tooltip:this.props.buttonDefinitions[t][i]?.alt,onClick:()=>this.handleClicked(o),className:"button-item"},`${t}-${i}`):_jsx(Button,{tooltip:this.props.buttonDefinitions[t][i]?.alt,onClick:()=>this.handleClicked(o),className:"button-item",icon:()=>this.actionToIcon(o)},`${t}-${i}`)}return _jsx(Button,{icon:"pi",disabled:!0,className:"button-item empty-slot"},`${t}-${i}`)}render(){return _jsxs("div",{className:"jogpanel-container",children:[_jsx(Tooltip,{target:".distance-selector-button"}),_jsxs("div",{className:"grid-container",children:[_jsxs("div",{className:"grid-row",children:[this.standardButton(0,0),this.standardButton(0,1),this.standardButton(0,2)]},"0"),_jsxs("div",{className:"grid-row",children:[this.standardButton(1,0),this.standardButton(1,1),this.standardButton(1,2)]},"1"),_jsxs("div",{className:"grid-row",children:[this.standardButton(2,0),this.standardButton(2,1),this.standardButton(2,2)]},"2")]}),this.props.showDistanceControl&&_jsxs("div",{className:"distance-selector p-inputgroup flex-1",children:[_jsx("span",{className:"p-inputgroup-addon",children:_jsx(Distance,{width:16,height:16,fill:"white"})}),_jsx(SelectButton,{value:this.state.jogDistance,onChange:t=>this.handleDistanceChanged(t.value),optionLabel:"name",options:this.jogDistanceItems,allowEmpty:!1,itemTemplate:t=>t.value==JogDistanceAction.Short?_jsx(JogShort,{className:"distance-selector-button",width:16,height:16,"data-pr-tooltip":"Short Distance","data-pr-position":"bottom",fill:"white"}):t.value==JogDistanceAction.Medium?_jsx(JogMedium,{className:"distance-selector-button",width:16,height:16,"data-pr-tooltip":"Medium Distance","data-pr-position":"bottom",fill:"white"}):_jsx(JogLong,{className:"distance-selector-button",width:16,height:16,"data-pr-tooltip":"Long Distance","data-pr-position":"bottom",fill:"white"})})]}),this.props.showSpeedControl&&_jsxs("div",{className:"distance-selector p-inputgroup flex-1",children:[_jsx("span",{className:"p-inputgroup-addon",children:_jsx(Speed,{width:16,height:16,fill:"white"})}),_jsx(SelectButton,{value:this.state.jogSpeed,onChange:t=>this.handleSpeedChanged(t.value),optionLabel:"name",options:this.jogSpeedItems,allowEmpty:!1,itemTemplate:t=>t.value==JogSpeedAction.Slow?_jsx(SpeedSlow,{className:"distance-selector-button",width:16,height:16,"data-pr-tooltip":"Slow Speed","data-pr-position":"bottom",fill:"white"}):t.value==JogSpeedAction.Medium?_jsx(SpeedMedium,{className:"distance-selector-button",width:16,height:16,"data-pr-tooltip":"Medium Speed","data-pr-position":"bottom",fill:"white"}):_jsx(SpeedFast,{className:"distance-selector-button",width:16,height:16,"data-pr-tooltip":"Fast Speed","data-pr-position":"bottom",fill:"white"})})]})]})}}Object.defineProperty(JogPanel,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{onClicked:void 0,onJogDistanceChanged:void 0,buttonDefinitions:kDefaultButtonDefinitions,defaultJogDistance:JogDistanceAction.Short,defaultJogSpeed:JogSpeedAction.Medium,showDistanceControl:!0,showSpeedControl:!0}});export default JogPanel;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import { EventEmitterContextType } from '../core/EventEmitterContext';
|
|
3
|
+
import { IndicatorColor } from "../core/IndicatorColor";
|
|
4
|
+
export { IndicatorColor };
|
|
5
|
+
interface LampProps {
|
|
6
|
+
/**
|
|
7
|
+
* State to be displayed<br/>
|
|
8
|
+
*
|
|
9
|
+
* Available states: **on**, **off** and **not available**:
|
|
10
|
+
*
|
|
11
|
+
* * `true` is treated as **on**
|
|
12
|
+
* * `false` is treated as **off**
|
|
13
|
+
* * `undefined` is treated as **not available**
|
|
14
|
+
*/
|
|
15
|
+
value?: boolean | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* X position (in pixels)
|
|
18
|
+
*/
|
|
19
|
+
x?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Y position (in pixels)
|
|
22
|
+
*/
|
|
23
|
+
y?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Width (in pixels)
|
|
26
|
+
*/
|
|
27
|
+
width?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Height (in pixels)<br/>
|
|
30
|
+
* @default width
|
|
31
|
+
*/
|
|
32
|
+
height?: number;
|
|
33
|
+
/**
|
|
34
|
+
* CSS color for **enabled** state
|
|
35
|
+
*/
|
|
36
|
+
onColor?: string;
|
|
37
|
+
/**
|
|
38
|
+
* CSS color for **disabled** state
|
|
39
|
+
*/
|
|
40
|
+
offColor?: string;
|
|
41
|
+
/**
|
|
42
|
+
* CSS color for **not available** state
|
|
43
|
+
*/
|
|
44
|
+
invalidColor?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Custom class name to be attached
|
|
47
|
+
*/
|
|
48
|
+
className?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Enable absolute positioning for the component, allowing it to be
|
|
51
|
+
* placed on a specific position of its parent. This is useful when
|
|
52
|
+
* laying components over an image or wireframe.
|
|
53
|
+
*/
|
|
54
|
+
useAbsolutePositioning?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* The topic to monitor to display. Optional.
|
|
57
|
+
*/
|
|
58
|
+
topic?: string;
|
|
59
|
+
}
|
|
60
|
+
interface LampState {
|
|
61
|
+
subscribedValue?: boolean | null;
|
|
62
|
+
fontSize?: string;
|
|
63
|
+
}
|
|
64
|
+
export declare class Lamp extends Component<LampProps, LampState> {
|
|
65
|
+
static contextType: React.Context<EventEmitterContextType>;
|
|
66
|
+
protected unsubscribeTopicId: number | null;
|
|
67
|
+
static defaultProps: {
|
|
68
|
+
width: number;
|
|
69
|
+
height: number;
|
|
70
|
+
onColor: string;
|
|
71
|
+
offColor: string;
|
|
72
|
+
invalidColor: string;
|
|
73
|
+
useAbsolutePositioning: boolean;
|
|
74
|
+
};
|
|
75
|
+
constructor(props: LampProps);
|
|
76
|
+
componentDidMount(): void;
|
|
77
|
+
componentDidUpdate(prevProps: LampProps): void;
|
|
78
|
+
componentWillUnmount(): void;
|
|
79
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
80
|
+
}
|
|
81
|
+
export default Lamp;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{Component}from"react";import clsx from"clsx";import{EventEmitterContext}from"../core/EventEmitterContext";import{IndicatorColor}from"../core/IndicatorColor";export{IndicatorColor};export class Lamp extends Component{constructor(e){super(e),Object.defineProperty(this,"unsubscribeTopicId",{enumerable:!0,configurable:!0,writable:!0,value:null}),this.state={subscribedValue:e.value,fontSize:"100%"}}componentDidMount(){const{topic:e}=this.props;if(e&&null===this.unsubscribeTopicId){const{subscribe:t}=this.context;this.unsubscribeTopicId=t(e,(e=>{this.setState({subscribedValue:e})}))}}componentDidUpdate(e){e.value!==this.props.value&&this.setState({subscribedValue:this.props.value})}componentWillUnmount(){if(null!==this.unsubscribeTopicId){const{unsubscribe:e}=this.context;e(this.unsubscribeTopicId),this.unsubscribeTopicId=null}}render(){const{x:e,y:t,width:o,height:i,className:s,onColor:r,offColor:n,invalidColor:l,useAbsolutePositioning:c}=this.props,{scale:a,xOffset:u,yOffset:p}=this.context,{subscribedValue:b}=this.state;let d=o||10;d<10&&(d=10);let m=i||10;m<10&&(m=10);let h,f=a||1;switch(0===f&&(f=1),b){case!0:h=r;break;case!1:h=n;break;default:h=l}const x={position:c?"absolute":"relative",display:c?"":"inline-block",verticalAlign:"middle",top:c&&t?`${p+f*t}px`:void 0,left:c&&e?`${u+f*e}px`:void 0,width:d?d*f+"px":void 0,height:m?m*f+"px":void 0,lineHeight:m?m*f+"px":void 0,backgroundColor:h,borderRadius:"20px"};return _jsx("div",{className:clsx(s),style:x})}}Object.defineProperty(Lamp,"contextType",{enumerable:!0,configurable:!0,writable:!0,value:EventEmitterContext}),Object.defineProperty(Lamp,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{width:22,height:22,onColor:"green",offColor:"gray",invalidColor:"black",useAbsolutePositioning:!1}});export default Lamp;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Component } from 'react';
|
|
2
|
+
import { SelectButtonProps } from 'primereact/selectbutton';
|
|
3
|
+
import { EventEmitterContextType } from '../core/EventEmitterContext';
|
|
4
|
+
import { IndicatorColor } from "../core/IndicatorColor";
|
|
5
|
+
export { IndicatorColor };
|
|
6
|
+
import { ActionMode } from '../core/ActionMode';
|
|
7
|
+
export { ActionMode };
|
|
8
|
+
import { IndicatorButtonState } from '../core/IndicatorButtonState';
|
|
9
|
+
export interface ToggleGroupProps extends SelectButtonProps {
|
|
10
|
+
/**
|
|
11
|
+
* Label of the group/row. Can be any element.
|
|
12
|
+
*
|
|
13
|
+
* ## Examples
|
|
14
|
+
* ```
|
|
15
|
+
* <ToggleGroup label="Simple Text" />
|
|
16
|
+
* <ToggleGroup label={<span><i className="pi pi-check"></i> Icon and Text</span>} />
|
|
17
|
+
* <ToggleGroup label={<YourCustomIconComponent />} />
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
label?: React.ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* Topic name to monitor for state indication.
|
|
23
|
+
* If `value` field is not undefined, then that value is used instead.
|
|
24
|
+
*/
|
|
25
|
+
topic?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Color for the button when the state is TRUE.
|
|
28
|
+
*/
|
|
29
|
+
onColor?: IndicatorColor | IndicatorColor[];
|
|
30
|
+
/**
|
|
31
|
+
* Color for the button when the state is FALSE.
|
|
32
|
+
*/
|
|
33
|
+
offColor?: IndicatorColor;
|
|
34
|
+
/**
|
|
35
|
+
* Name of the command to invoke on button events.
|
|
36
|
+
* If command is "*", then the commandTopic will be dispatched
|
|
37
|
+
* internally.
|
|
38
|
+
*/
|
|
39
|
+
command?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Optional topic parameter to send along with the command.
|
|
42
|
+
* If set, will automatically be included with commandArgs as
|
|
43
|
+
* the value of field 'topic.'
|
|
44
|
+
*/
|
|
45
|
+
commandTopic?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Optional arguments sent with the command.
|
|
48
|
+
*/
|
|
49
|
+
commandArgs?: any;
|
|
50
|
+
/**
|
|
51
|
+
* Topic to disable button interaction.
|
|
52
|
+
*/
|
|
53
|
+
disableTopic?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Topic to control the visibility of the button.
|
|
56
|
+
*/
|
|
57
|
+
invisibleTopic?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Mode of input for the button (e.g., TAP, TOGGLE).
|
|
60
|
+
*/
|
|
61
|
+
actionMode?: ActionMode;
|
|
62
|
+
/**
|
|
63
|
+
* Inverts the signal values for TAP, PRESSED, and RELEASED modes.
|
|
64
|
+
*/
|
|
65
|
+
invert?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export declare class ToggleGroup extends Component<ToggleGroupProps, IndicatorButtonState> {
|
|
68
|
+
static contextType: import("react").Context<EventEmitterContextType>;
|
|
69
|
+
constructor(props: ToggleGroupProps);
|
|
70
|
+
componentDidMount(): void;
|
|
71
|
+
componentDidUpdate(prevProps: ToggleGroupProps): void;
|
|
72
|
+
componentWillUnmount(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Sets up subscriptions based on provided topics.
|
|
75
|
+
*/
|
|
76
|
+
private setupSubscriptions;
|
|
77
|
+
/**
|
|
78
|
+
* Handles updates for the main topic.
|
|
79
|
+
*/
|
|
80
|
+
private handleTopicUpdate;
|
|
81
|
+
/**
|
|
82
|
+
* Handles updates for the disable topic.
|
|
83
|
+
*/
|
|
84
|
+
private handleDisableTopicUpdate;
|
|
85
|
+
/**
|
|
86
|
+
* Handles updates for the invisible topic.
|
|
87
|
+
*/
|
|
88
|
+
private handleInvisibleTopicUpdate;
|
|
89
|
+
/**
|
|
90
|
+
* Handle the button being pressed down. Used for TAP and PRESSED action modes.
|
|
91
|
+
*/
|
|
92
|
+
protected handleOnPressed(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Handle the button being released. Used for TAP and RELEASED action modes.
|
|
95
|
+
*/
|
|
96
|
+
protected handleOnReleased(): void;
|
|
97
|
+
/**
|
|
98
|
+
* Dispatch a value to any listeners.
|
|
99
|
+
* @param value The value to dispatch as part of the payload.
|
|
100
|
+
*/
|
|
101
|
+
protected dispatchCommand(value: any): void;
|
|
102
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
103
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Component}from"react";import{SelectButton}from"primereact/selectbutton";import{EventEmitterContext}from"../core/EventEmitterContext";import{IndicatorColor}from"../core/IndicatorColor";export{IndicatorColor};import{ActionMode}from"../core/ActionMode";export{ActionMode};function matchCurrentValue(e,t){if(null==t||0===t.length)return;let o=typeof e;if("boolean"==o){return e&&t.length>1?t[1]:t[0]}if("number"==o){let o=e;if(void 0!==o&&o<t.length)return t[o]}else if("string"==o)return e}function selectOnColor(e,t,o){if(!t||0===t.length)return IndicatorColor.IndicatorInvalid;let n=Array.isArray(o)?o:void 0!==o?[o]:[IndicatorColor.IndicatorInvalid],i=typeof e;if("boolean"===i)return e?n[0]:n.length>1?n[1]:n[0];if("number"===i&&t.length>e){if(n.length>e){return n[e]}return n[0]}if("string"===i){let o=t.indexOf(e);return-1!==o&&o<n.length?n[o]:n[0]}return null!=o?Array.isArray(o)?o[0]:o:IndicatorColor.IndicatorInvalid}export class ToggleGroup extends Component{constructor(e){super(e),Object.defineProperty(this,"handleTopicUpdate",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this.setState({currentValue:e})}}),Object.defineProperty(this,"handleDisableTopicUpdate",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this.setState({isDisabled:e})}}),Object.defineProperty(this,"handleInvisibleTopicUpdate",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this.setState({isInvisible:e})}}),this.state={currentValue:void 0,isDisabled:!1,isInvisible:!1,isPressed:!1}}componentDidMount(){this.setupSubscriptions()}componentDidUpdate(e){}componentWillUnmount(){}setupSubscriptions(){const{topic:e,disableTopic:t,invisibleTopic:o}=this.props,{subscribe:n}=this.context;e&&n(e,this.handleTopicUpdate),t&&n(t,this.handleDisableTopicUpdate),o&&n(o,this.handleInvisibleTopicUpdate)}handleOnPressed(){const{isPressed:e}=this.state,{actionMode:t}=this.props;e||(this.setState({isPressed:!0}),t!==ActionMode.Tap&&t!==ActionMode.Pressed||this.dispatchCommand(!0))}handleOnReleased(){const{isPressed:e}=this.state,{actionMode:t}=this.props;e&&(this.setState({isPressed:!1}),t===ActionMode.Tap?this.dispatchCommand(!1):t===ActionMode.Released&&this.dispatchCommand(!0))}dispatchCommand(e){const{command:t,commandTopic:o,commandArgs:n}=this.props,{dispatch:i}=this.context;if(null!=t&&t.length>0){i({topic:t,payload:{topic:o,value:e,...n}})}}render(){const{currentValue:e,isDisabled:t,isInvisible:o}=this.state,{label:n,value:i,disabled:r,className:s,onColor:l,offColor:a,options:c,...d}=this.props;let p=e;void 0!==i&&(p=i);let u=selectOnColor(p,c,l);void 0===p&&(u=IndicatorColor.IndicatorInvalid);const h=null!=c&&c.length>2;return _jsxs("div",{className:"flex",children:[_jsx("style",{children:` \n ${void 0!==a?`\n .togglegroup-selectbutton-container .p-selectbutton .p-button {\n background-color: ${a};\n }\n `:""}\n .togglegroup-selectbutton-container .p-selectbutton .p-button.p-highlight {\n background-color: ${u} !important;\n border-color: ${u} !important;\n }\n .togglegroup-selectbutton-container .p-selectbutton .p-highlight {\n background-color: ${u} !important;\n border-color: ${u} !important;\n }\n `}),_jsxs("div",{className:"p-inputgroup togglegroup-selectbutton-container",children:[_jsx("span",{className:"p-inputgroup-addon",style:{flexGrow:1},children:n}),_jsx(SelectButton,{...d,options:c,disabled:t||r,multiple:h,className:`${s||""} ${void 0===p?"p-invalid":""}`.trim(),...o&&{style:{display:"none"}},value:matchCurrentValue(p,c),allowEmpty:!1,onMouseDown:()=>this.handleOnPressed(),onTouchStart:()=>this.handleOnPressed(),onMouseUp:()=>this.handleOnReleased(),onTouchEnd:()=>this.handleOnReleased()})]})]})}}Object.defineProperty(ToggleGroup,"contextType",{enumerable:!0,configurable:!0,writable:!0,value:EventEmitterContext});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export var ActionMode;!function(e){e.Tap="Tap",e.Toggle="Toggle",e.Pressed="Pressed",e.Released="Released"}(ActionMode||(ActionMode={}));
|
|
@@ -38,9 +38,28 @@ export interface Action {
|
|
|
38
38
|
*/
|
|
39
39
|
payload?: any;
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Type declaration for the EventEmitter dispatch function, which
|
|
43
|
+
* publishes an Action globally throughout the EventEmitterContext.
|
|
44
|
+
*/
|
|
41
45
|
export type EmitterDispatchFunction = (action: Action) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Type declaration for the EventEmitter dispatch function, which
|
|
48
|
+
* receives an Action on a specific topic broadcast through the EventEmitterContext.
|
|
49
|
+
*/
|
|
42
50
|
export type EmitterSubscribeFunction = (action: Action) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Type declaration for the EventEmitter unsubscribe function, which
|
|
53
|
+
* receives an Action on a specific topic broadcast through the EventEmitterContext.
|
|
54
|
+
*/
|
|
43
55
|
export type EmitterUnsubscribeFunction = (action: Action) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Defines the context for an event emitter used throughout a front-end application to manage and dispatch events.
|
|
58
|
+
* This interface includes methods for managing the application's state, handling global actions, communicating with the back end,
|
|
59
|
+
* subscribing to and unsubscribing from events, and accessing a global hub for event publishing and subscription management.
|
|
60
|
+
* It serves as a central point for event-driven interactions within the application, facilitating communication between
|
|
61
|
+
* components and the back end, as well as among components themselves.
|
|
62
|
+
*/
|
|
44
63
|
export interface EventEmitterContextType {
|
|
45
64
|
/**
|
|
46
65
|
* The current state of the event emitter, containing the latest event data.
|
|
@@ -86,8 +105,22 @@ export interface EventEmitterContextType {
|
|
|
86
105
|
/**
|
|
87
106
|
* A global context for managing event emission and subscription.
|
|
88
107
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
108
|
+
* Creates a React context for the EventEmitter system, providing a structured way to manage events and data flow
|
|
109
|
+
* in a React application. It serves as a global event bus that components can subscribe to or emit events, allowing for
|
|
110
|
+
* a loosely coupled architecture. Additionally, it provides a mechanism for invoking backend functions and managing
|
|
111
|
+
* subscriptions, making it easier to integrate React components with backend services.
|
|
112
|
+
*
|
|
113
|
+
* The context includes several key functionalities:
|
|
114
|
+
* - `state`: Maintains the current state of subscriptions and their identifiers.
|
|
115
|
+
* - `dispatch`: Allows components to emit events with specific topics and payloads, which can be listened to by other components.
|
|
116
|
+
* - `subscribe`: Enables components to listen to specific topics and react to those events by providing a callback function.
|
|
117
|
+
* - `unsubscribe`: Provides a way for components to stop listening to events, helping prevent memory leaks and unnecessary updates.
|
|
118
|
+
* - `invoke`: Facilitates calling backend functions with specific arguments and handling their responses asynchronously.
|
|
119
|
+
* - `getSubscriptions`: Offers insight into current active subscriptions, useful for debugging purposes.
|
|
120
|
+
*
|
|
121
|
+
* This context is essential for applications that require a high degree of inter-component communication or need to
|
|
122
|
+
* interact with a backend efficiently.
|
|
123
|
+
*
|
|
91
124
|
* For more information, see [Additional Documentation](../additional-docs/GlobalEventEmitter.md).
|
|
92
125
|
*
|
|
93
126
|
* ## Usage
|
|
@@ -182,6 +215,13 @@ export interface EventEmitterContextType {
|
|
|
182
215
|
*
|
|
183
216
|
* ```
|
|
184
217
|
*
|
|
218
|
+
* For applications that need to access the instance of the hub, get the current instance
|
|
219
|
+
* from the EventEmitterContext:
|
|
220
|
+
*
|
|
221
|
+
* ```
|
|
222
|
+
* const {hub} = useContext(EventEmitterContext);
|
|
223
|
+
* * ```
|
|
224
|
+
*
|
|
185
225
|
*
|
|
186
226
|
*/
|
|
187
227
|
export declare const EventEmitterContext: React.Context<EventEmitterContextType>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common state for the indicator buttons, toggles or similar components.
|
|
3
|
+
*/
|
|
4
|
+
export interface IndicatorButtonState {
|
|
5
|
+
/**
|
|
6
|
+
* Current value/state of the button based on the subscribed topic.
|
|
7
|
+
*/
|
|
8
|
+
currentValue?: boolean | number | string;
|
|
9
|
+
/**
|
|
10
|
+
* Indicates whether the button is disabled.
|
|
11
|
+
*/
|
|
12
|
+
isDisabled?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Indicates whether the button is invisible.
|
|
15
|
+
*/
|
|
16
|
+
isInvisible?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The button is in the "down" state.
|
|
19
|
+
*/
|
|
20
|
+
isPressed: boolean;
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -3,26 +3,28 @@
|
|
|
3
3
|
--dark-hl-0: #9CDCFE;
|
|
4
4
|
--light-hl-1: #000000;
|
|
5
5
|
--dark-hl-1: #D4D4D4;
|
|
6
|
-
--light-hl-2: #
|
|
7
|
-
--dark-hl-2: #
|
|
8
|
-
--light-hl-3: #
|
|
9
|
-
--dark-hl-3: #
|
|
10
|
-
--light-hl-4: #
|
|
11
|
-
--dark-hl-4: #
|
|
12
|
-
--light-hl-5: #
|
|
13
|
-
--dark-hl-5: #
|
|
14
|
-
--light-hl-6: #
|
|
15
|
-
--dark-hl-6: #
|
|
16
|
-
--light-hl-7: #
|
|
17
|
-
--dark-hl-7: #
|
|
18
|
-
--light-hl-8: #
|
|
19
|
-
--dark-hl-8: #
|
|
20
|
-
--light-hl-9: #
|
|
21
|
-
--dark-hl-9: #
|
|
22
|
-
--light-hl-10: #
|
|
23
|
-
--dark-hl-10: #
|
|
6
|
+
--light-hl-2: #AF00DB;
|
|
7
|
+
--dark-hl-2: #C586C0;
|
|
8
|
+
--light-hl-3: #A31515;
|
|
9
|
+
--dark-hl-3: #CE9178;
|
|
10
|
+
--light-hl-4: #098658;
|
|
11
|
+
--dark-hl-4: #B5CEA8;
|
|
12
|
+
--light-hl-5: #008000;
|
|
13
|
+
--dark-hl-5: #6A9955;
|
|
14
|
+
--light-hl-6: #0000FF;
|
|
15
|
+
--dark-hl-6: #569CD6;
|
|
16
|
+
--light-hl-7: #000000;
|
|
17
|
+
--dark-hl-7: #C8C8C8;
|
|
18
|
+
--light-hl-8: #267F99;
|
|
19
|
+
--dark-hl-8: #4EC9B0;
|
|
20
|
+
--light-hl-9: #0070C1;
|
|
21
|
+
--dark-hl-9: #4FC1FF;
|
|
22
|
+
--light-hl-10: #795E26;
|
|
23
|
+
--dark-hl-10: #DCDCAA;
|
|
24
24
|
--light-hl-11: #CD3131;
|
|
25
25
|
--dark-hl-11: #F44747;
|
|
26
|
+
--light-hl-12: #811F3F;
|
|
27
|
+
--dark-hl-12: #D16969;
|
|
26
28
|
--light-code-background: #FFFFFF;
|
|
27
29
|
--dark-code-background: #1E1E1E;
|
|
28
30
|
}
|
|
@@ -40,6 +42,7 @@
|
|
|
40
42
|
--hl-9: var(--light-hl-9);
|
|
41
43
|
--hl-10: var(--light-hl-10);
|
|
42
44
|
--hl-11: var(--light-hl-11);
|
|
45
|
+
--hl-12: var(--light-hl-12);
|
|
43
46
|
--code-background: var(--light-code-background);
|
|
44
47
|
} }
|
|
45
48
|
|
|
@@ -56,6 +59,7 @@
|
|
|
56
59
|
--hl-9: var(--dark-hl-9);
|
|
57
60
|
--hl-10: var(--dark-hl-10);
|
|
58
61
|
--hl-11: var(--dark-hl-11);
|
|
62
|
+
--hl-12: var(--dark-hl-12);
|
|
59
63
|
--code-background: var(--dark-code-background);
|
|
60
64
|
} }
|
|
61
65
|
|
|
@@ -72,6 +76,7 @@
|
|
|
72
76
|
--hl-9: var(--light-hl-9);
|
|
73
77
|
--hl-10: var(--light-hl-10);
|
|
74
78
|
--hl-11: var(--light-hl-11);
|
|
79
|
+
--hl-12: var(--light-hl-12);
|
|
75
80
|
--code-background: var(--light-code-background);
|
|
76
81
|
}
|
|
77
82
|
|
|
@@ -88,6 +93,7 @@
|
|
|
88
93
|
--hl-9: var(--dark-hl-9);
|
|
89
94
|
--hl-10: var(--dark-hl-10);
|
|
90
95
|
--hl-11: var(--dark-hl-11);
|
|
96
|
+
--hl-12: var(--dark-hl-12);
|
|
91
97
|
--code-background: var(--dark-code-background);
|
|
92
98
|
}
|
|
93
99
|
|
|
@@ -103,4 +109,5 @@
|
|
|
103
109
|
.hl-9 { color: var(--hl-9); }
|
|
104
110
|
.hl-10 { color: var(--hl-10); }
|
|
105
111
|
.hl-11 { color: var(--hl-11); }
|
|
112
|
+
.hl-12 { color: var(--hl-12); }
|
|
106
113
|
pre, code { background: var(--code-background); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "data:application/octet-stream;base64,
|
|
1
|
+
window.navigationData = "data:application/octet-stream;base64,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"
|
package/docs/assets/search.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.searchData = "data:application/octet-stream;base64,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";
|
|
1
|
+
window.searchData = "data:application/octet-stream;base64,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";
|