@adcops/autocore-react 3.3.9 → 3.3.14

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.
Files changed (223) hide show
  1. package/LICENSE +58 -58
  2. package/additional-docs/AutoCoreTagContext.md +441 -441
  3. package/additional-docs/ButtonApiSpecs.md +48 -48
  4. package/additional-docs/GlobalEventEmitter.md +243 -243
  5. package/additional-docs/general_recommendations.md +22 -22
  6. package/additional-docs/react_performance_notes.md +94 -94
  7. package/dist/assets/svg/blockly_logo.svg +82 -82
  8. package/dist/assets/svg/distance.svg +40 -40
  9. package/dist/assets/svg/python_logo.svg +246 -246
  10. package/dist/assets/svg/rotation_ccw.svg +50 -50
  11. package/dist/assets/svg/rotation_ccw_a.svg +57 -57
  12. package/dist/assets/svg/rotation_ccw_b.svg +57 -57
  13. package/dist/assets/svg/rotation_ccw_c.svg +57 -57
  14. package/dist/assets/svg/rotation_cw.svg +49 -49
  15. package/dist/assets/svg/rotation_cw_a.svg +30 -30
  16. package/dist/assets/svg/rotation_cw_b.svg +30 -30
  17. package/dist/assets/svg/rotation_cw_c.svg +30 -30
  18. package/dist/assets/svg/speed.svg +39 -39
  19. package/dist/components/BlocklyEditor.css +93 -93
  20. package/dist/components/Indicator.js +1 -1
  21. package/dist/components/IndicatorRect.d.ts.map +1 -1
  22. package/dist/components/IndicatorRect.js +1 -1
  23. package/dist/components/JogPanel.css +41 -41
  24. package/dist/components/ProgressBarWithValue.css +27 -27
  25. package/dist/components/TextInput.js +1 -1
  26. package/dist/components/ToggleGroup.js +1 -1
  27. package/dist/components/ValueIndicator.css +29 -31
  28. package/dist/components/ValueInput.js +1 -1
  29. package/dist/components/osk.css +123 -123
  30. package/dist/core/AutoCoreTagContext.d.ts.map +1 -1
  31. package/dist/core/AutoCoreTagContext.js +1 -1
  32. package/dist/hub/HubBase.d.ts +3 -3
  33. package/dist/hub/HubBase.d.ts.map +1 -1
  34. package/dist/hub/HubBase.js +1 -1
  35. package/dist/themes/adc-dark/blue/theme.css +3 -0
  36. package/dist/themes/adc-dark/blue/theme.css.map +1 -1
  37. package/package.json +104 -104
  38. package/readme.md +343 -343
  39. package/src/assets/BlocklyLogo.tsx +27 -27
  40. package/src/assets/Distance.tsx +18 -18
  41. package/src/assets/JogLong.tsx +13 -13
  42. package/src/assets/JogMedium.tsx +13 -13
  43. package/src/assets/JogShort.tsx +13 -13
  44. package/src/assets/PythonLogo.tsx +83 -83
  45. package/src/assets/Rotation3D.tsx +13 -13
  46. package/src/assets/RotationCcw.tsx +33 -33
  47. package/src/assets/RotationCcwA.tsx +45 -45
  48. package/src/assets/RotationCcwB.tsx +45 -45
  49. package/src/assets/RotationCcwC.tsx +45 -45
  50. package/src/assets/RotationCw.tsx +31 -31
  51. package/src/assets/RotationCwA.tsx +42 -42
  52. package/src/assets/RotationCwB.tsx +42 -42
  53. package/src/assets/RotationCwC.tsx +42 -42
  54. package/src/assets/Run.tsx +13 -13
  55. package/src/assets/Speed.tsx +18 -18
  56. package/src/assets/SpeedFast.tsx +13 -13
  57. package/src/assets/SpeedMedium.tsx +13 -13
  58. package/src/assets/SpeedNone.tsx +13 -13
  59. package/src/assets/SpeedSlow.tsx +13 -13
  60. package/src/assets/Walk.tsx +13 -13
  61. package/src/assets/index.ts +22 -22
  62. package/src/assets/svg/blockly_logo.svg +82 -82
  63. package/src/assets/svg/distance.svg +40 -40
  64. package/src/assets/svg/python_logo.svg +246 -246
  65. package/src/assets/svg/rotation_ccw.svg +50 -50
  66. package/src/assets/svg/rotation_ccw_a.svg +57 -57
  67. package/src/assets/svg/rotation_ccw_b.svg +57 -57
  68. package/src/assets/svg/rotation_ccw_c.svg +57 -57
  69. package/src/assets/svg/rotation_cw.svg +49 -49
  70. package/src/assets/svg/rotation_cw_a.svg +30 -30
  71. package/src/assets/svg/rotation_cw_b.svg +30 -30
  72. package/src/assets/svg/rotation_cw_c.svg +30 -30
  73. package/src/assets/svg/speed.svg +39 -39
  74. package/src/components/AutoCoreDevPanel.tsx +414 -414
  75. package/src/components/BlocklyEditor.css +93 -93
  76. package/src/components/BlocklyEditor.tsx +609 -609
  77. package/src/components/CodeEditor.tsx +155 -155
  78. package/src/components/FileList.tsx +390 -390
  79. package/src/components/FileSelect.tsx +128 -128
  80. package/src/components/FitText.tsx +35 -35
  81. package/src/components/Indicator.tsx +188 -188
  82. package/src/components/IndicatorButton.tsx +214 -214
  83. package/src/components/IndicatorRect.tsx +170 -172
  84. package/src/components/JogPanel.css +41 -41
  85. package/src/components/JogPanel.tsx +461 -461
  86. package/src/components/Lamp.tsx +243 -243
  87. package/src/components/Osk.tsx +192 -192
  88. package/src/components/OskDialog.tsx +164 -164
  89. package/src/components/ProgressBarWithValue.css +27 -27
  90. package/src/components/ProgressBarWithValue.tsx +48 -48
  91. package/src/components/TextInput.tsx +195 -195
  92. package/src/components/ToggleGroup.tsx +322 -322
  93. package/src/components/ValueDisplay.tsx +236 -236
  94. package/src/components/ValueIndicator.css +29 -31
  95. package/src/components/ValueIndicator.tsx +135 -135
  96. package/src/components/ValueInput.tsx +368 -368
  97. package/src/components/osk.css +123 -123
  98. package/src/core/ActionMode.ts +19 -19
  99. package/src/core/AutoCoreTagContext.tsx +625 -614
  100. package/src/core/AutoCoreTagTypes.ts +334 -334
  101. package/src/core/CoreStreamTypes.ts +512 -512
  102. package/src/core/EventEmitterContext.tsx +434 -434
  103. package/src/core/IndicatorButtonState.ts +34 -34
  104. package/src/core/IndicatorColor.ts +35 -35
  105. package/src/core/MaskPatterns.ts +87 -87
  106. package/src/core/NumerableTypes.ts +80 -80
  107. package/src/core/PositionContext.ts +59 -59
  108. package/src/core/UniqueId.ts +41 -41
  109. package/src/core/ValueSimulator.ts +166 -166
  110. package/src/core/hoc.tsx +65 -65
  111. package/src/hooks/adsHooks.tsx +287 -287
  112. package/src/hooks/commandHooks.tsx +300 -300
  113. package/src/hooks/index.ts +12 -12
  114. package/src/hooks/useAutoCoreTag.ts +103 -103
  115. package/src/hooks/useScaledValue.tsx +99 -99
  116. package/src/hub/CommandMessage.ts +89 -89
  117. package/src/hub/DebugPanel.ts +307 -307
  118. package/src/hub/HubBase.ts +249 -236
  119. package/src/hub/HubSimulate.ts +124 -124
  120. package/src/hub/HubTauri.ts +140 -140
  121. package/src/hub/HubWebSocket.ts +250 -250
  122. package/src/hub/debug.ts +211 -211
  123. package/src/hub/index.ts +81 -81
  124. package/src/themes/adc-dark/_extensions.scss +166 -166
  125. package/src/themes/adc-dark/_variables.scss +913 -913
  126. package/src/themes/adc-dark/blue/_fonts.scss +23 -23
  127. package/src/themes/adc-dark/blue/adc_theme.scss +31 -31
  128. package/src/themes/adc-dark/blue/theme.scss +14 -14
  129. package/src/themes/theme-base/_colors.scss +17 -17
  130. package/src/themes/theme-base/_common.scss +78 -74
  131. package/src/themes/theme-base/_components.scss +111 -111
  132. package/src/themes/theme-base/_mixins.scss +243 -243
  133. package/src/themes/theme-base/components/button/_button.scss +644 -644
  134. package/src/themes/theme-base/components/button/_speeddial.scss +91 -91
  135. package/src/themes/theme-base/components/button/_splitbutton.scss +358 -358
  136. package/src/themes/theme-base/components/data/_carousel.scss +39 -39
  137. package/src/themes/theme-base/components/data/_datascroller.scss +47 -47
  138. package/src/themes/theme-base/components/data/_datatable.scss +388 -388
  139. package/src/themes/theme-base/components/data/_dataview.scss +47 -47
  140. package/src/themes/theme-base/components/data/_filter.scss +137 -137
  141. package/src/themes/theme-base/components/data/_orderlist.scss +86 -86
  142. package/src/themes/theme-base/components/data/_organizationchart.scss +50 -50
  143. package/src/themes/theme-base/components/data/_paginator.scss +91 -91
  144. package/src/themes/theme-base/components/data/_picklist.scss +73 -73
  145. package/src/themes/theme-base/components/data/_timeline.scss +38 -38
  146. package/src/themes/theme-base/components/data/_tree.scss +184 -184
  147. package/src/themes/theme-base/components/data/_treetable.scss +431 -431
  148. package/src/themes/theme-base/components/file/_fileupload.scss +41 -41
  149. package/src/themes/theme-base/components/input/_autocomplete.scss +94 -94
  150. package/src/themes/theme-base/components/input/_calendar.scss +251 -251
  151. package/src/themes/theme-base/components/input/_cascadeselect.scss +107 -107
  152. package/src/themes/theme-base/components/input/_checkbox.scss +181 -181
  153. package/src/themes/theme-base/components/input/_chips.scss +102 -102
  154. package/src/themes/theme-base/components/input/_colorpicker.scss +17 -17
  155. package/src/themes/theme-base/components/input/_dropdown.scss +252 -252
  156. package/src/themes/theme-base/components/input/_editor.scss +122 -122
  157. package/src/themes/theme-base/components/input/_iconfield.scss +9 -9
  158. package/src/themes/theme-base/components/input/_inputgroup.scss +74 -74
  159. package/src/themes/theme-base/components/input/_inputicon.scss +14 -14
  160. package/src/themes/theme-base/components/input/_inputnumber.scss +4 -4
  161. package/src/themes/theme-base/components/input/_inputotp.scss +10 -10
  162. package/src/themes/theme-base/components/input/_inputswitch.scss +99 -99
  163. package/src/themes/theme-base/components/input/_inputtext.scss +101 -101
  164. package/src/themes/theme-base/components/input/_listbox.scss +138 -138
  165. package/src/themes/theme-base/components/input/_mention.scss +30 -30
  166. package/src/themes/theme-base/components/input/_multiselect.scss +278 -278
  167. package/src/themes/theme-base/components/input/_password.scss +32 -32
  168. package/src/themes/theme-base/components/input/_radiobutton.scss +169 -169
  169. package/src/themes/theme-base/components/input/_rating.scss +80 -80
  170. package/src/themes/theme-base/components/input/_selectbutton.scss +49 -49
  171. package/src/themes/theme-base/components/input/_slider.scss +49 -49
  172. package/src/themes/theme-base/components/input/_togglebutton.scss +99 -99
  173. package/src/themes/theme-base/components/input/_treeselect.scss +151 -151
  174. package/src/themes/theme-base/components/input/_tristatecheckbox.scss +46 -46
  175. package/src/themes/theme-base/components/menu/_breadcrumb.scss +42 -42
  176. package/src/themes/theme-base/components/menu/_contextmenu.scss +39 -39
  177. package/src/themes/theme-base/components/menu/_dock.scss +109 -109
  178. package/src/themes/theme-base/components/menu/_megamenu.scss +141 -141
  179. package/src/themes/theme-base/components/menu/_menu.scss +33 -33
  180. package/src/themes/theme-base/components/menu/_menubar.scss +216 -216
  181. package/src/themes/theme-base/components/menu/_panelmenu.scss +153 -153
  182. package/src/themes/theme-base/components/menu/_slidemenu.scss +60 -60
  183. package/src/themes/theme-base/components/menu/_steps.scss +57 -57
  184. package/src/themes/theme-base/components/menu/_tabmenu.scss +50 -50
  185. package/src/themes/theme-base/components/menu/_tieredmenu.scss +43 -43
  186. package/src/themes/theme-base/components/messages/_inlinemessage.scss +69 -69
  187. package/src/themes/theme-base/components/messages/_message.scss +107 -107
  188. package/src/themes/theme-base/components/messages/_toast.scss +100 -100
  189. package/src/themes/theme-base/components/misc/_avatar.scss +33 -33
  190. package/src/themes/theme-base/components/misc/_badge.scss +76 -76
  191. package/src/themes/theme-base/components/misc/_chip.scss +38 -38
  192. package/src/themes/theme-base/components/misc/_inplace.scss +17 -17
  193. package/src/themes/theme-base/components/misc/_metergroup.scss +80 -80
  194. package/src/themes/theme-base/components/misc/_progressbar.scss +17 -17
  195. package/src/themes/theme-base/components/misc/_scrolltop.scss +24 -24
  196. package/src/themes/theme-base/components/misc/_skeleton.scss +7 -7
  197. package/src/themes/theme-base/components/misc/_tag.scss +39 -39
  198. package/src/themes/theme-base/components/misc/_terminal.scss +12 -12
  199. package/src/themes/theme-base/components/multimedia/_galleria.scss +153 -153
  200. package/src/themes/theme-base/components/multimedia/_image.scss +53 -53
  201. package/src/themes/theme-base/components/overlay/_confirmpopup.scss +72 -72
  202. package/src/themes/theme-base/components/overlay/_dialog.scss +78 -78
  203. package/src/themes/theme-base/components/overlay/_overlaypanel.scss +64 -64
  204. package/src/themes/theme-base/components/overlay/_sidebar.scss +23 -23
  205. package/src/themes/theme-base/components/overlay/_tooltip.scss +33 -33
  206. package/src/themes/theme-base/components/panel/_accordion.scss +118 -118
  207. package/src/themes/theme-base/components/panel/_card.scss +30 -30
  208. package/src/themes/theme-base/components/panel/_divider.scss +30 -30
  209. package/src/themes/theme-base/components/panel/_fieldset.scss +47 -47
  210. package/src/themes/theme-base/components/panel/_panel.scss +47 -47
  211. package/src/themes/theme-base/components/panel/_scrollpanel.scss +10 -10
  212. package/src/themes/theme-base/components/panel/_splitter.scss +23 -23
  213. package/src/themes/theme-base/components/panel/_stepper.scss +136 -136
  214. package/src/themes/theme-base/components/panel/_tabview.scss +147 -147
  215. package/src/themes/theme-base/components/panel/_toolbar.scss +11 -11
  216. package/terser.config.cjs +25 -25
  217. package/todo.md +18 -18
  218. package/tools/build-themes.cjs +65 -65
  219. package/tools/copy-distribution-files.cjs +77 -77
  220. package/tools/minify.cjs +55 -55
  221. package/tsconfig.json +48 -48
  222. package/typedoc.json +12 -12
  223. package/.claude/settings.local.json +0 -7
@@ -1,172 +1,170 @@
1
- /*
2
- * Copyright (C) 2025 Automated Design Corp.. All Rights Reserved.
3
- * Created Date: 2025-01-20 15:09:55
4
- * -----
5
- * Last Modified: 2025-09-05 14:51:58
6
- * -----
7
- *
8
- */
9
-
10
- import { Component } from 'react';
11
- import { EventEmitterContext, type EventEmitterContextType } from '../core/EventEmitterContext';
12
- import { IndicatorColor } from "../core/IndicatorColor";
13
- export { IndicatorColor };
14
-
15
- /**
16
- * Common properties for an indicator rectangle component.
17
- * This component is used for displaying states and is not interactive.
18
- * It is commonly used in industrial HMIs for visual indication purposes.
19
- *
20
- * These properties support displaying values of boolean, number, and string states.
21
- *
22
- * Available boolean states: **on**, **off**, and **not available**:
23
- *
24
- * * `true` is treated as **on**
25
- * * `false` is treated as **off**
26
- * * `undefined` is treated as **not available**
27
- *
28
- * Numeric values can be used. When there are 2 or fewer possible states,
29
- * 0 will be considered false (OFF), anything else will be considered true (ON).
30
- * Undefined will be treated as "not available."
31
- *
32
- * When the indicator contains more than 2 states, the number will be matched
33
- * to the available state, in order. More than two states requires usage of the
34
- * `options` field and declaring more than two states there.
35
- *
36
- * If a string state is used, it will be matched exactly to the corresponding
37
- * label in the `options` field.
38
- */
39
- export interface IndicatorRectProps {
40
-
41
- /**
42
- * Topic name to monitor for state indication.
43
- */
44
- topic?: string;
45
-
46
- /**
47
- * State to be displayed.
48
- */
49
- value?: boolean | number | string;
50
-
51
- /**
52
- * Color for the rectangle when the state is TRUE.
53
- */
54
- onColor?: IndicatorColor;
55
-
56
- /**
57
- * Color for the rectangle when the state is FALSE.
58
- */
59
- offColor?: IndicatorColor;
60
-
61
- /**
62
- * An array of string labels to display as the available options.
63
- *
64
- * For items with 2 states or less:
65
- * Index 0 is the label when value is OFF.
66
- * Index 1 is the label when value is ON.
67
- *
68
- * If only one value is given (Index 0), then that value is used for all states.
69
- */
70
- options?: string[];
71
-
72
- /**
73
- * Additional CSS class name to apply to the rectangle.
74
- */
75
- className?: string;
76
-
77
- /**
78
- * Additional inline styles to apply to the rectangle.
79
- */
80
- style?: React.CSSProperties;
81
-
82
- }
83
-
84
- interface IndicatorRectState {
85
- currentValue?: boolean | number | string;
86
- }
87
-
88
- export class IndicatorRect extends Component<IndicatorRectProps, IndicatorRectState> {
89
- static contextType = EventEmitterContext;
90
-
91
- // Define default props
92
- static defaultProps = {
93
- onColor: IndicatorColor.IndicatorGreen,
94
- offColor: "gray", // Default offColor
95
- };
96
-
97
- constructor(props: IndicatorRectProps) {
98
- super(props);
99
- this.state = {
100
- currentValue: undefined,
101
- };
102
- }
103
-
104
- componentDidMount() {
105
- this.setupSubscriptions();
106
- }
107
-
108
- componentWillUnmount() {
109
- // Unsubscribe logic if needed
110
- }
111
-
112
- /**
113
- * Sets up subscriptions based on the provided topic.
114
- */
115
- private setupSubscriptions() {
116
- const { topic } = this.props;
117
- const { subscribe } = this.context as EventEmitterContextType;
118
-
119
- if (topic) {
120
- subscribe(topic, this.handleTopicUpdate);
121
- }
122
- }
123
-
124
- /**
125
- * Handles updates for the main topic.
126
- */
127
- private handleTopicUpdate = (value: boolean | number | string) => {
128
- this.setState({ currentValue: value });
129
- };
130
-
131
- render() {
132
- const { currentValue } = this.state;
133
- const { className, style, value, onColor, offColor, options } = this.props;
134
-
135
- // Load the value from the proper source
136
- let displayValue = currentValue;
137
- if (value !== undefined) {
138
- displayValue = value;
139
- }
140
-
141
- // Determine the label and color based on the current state
142
- let rectLabel = undefined;
143
- if (options !== undefined && options.length > 0) {
144
- rectLabel = displayValue ? options[1] : options[0];
145
- }
146
-
147
- let color = displayValue ? onColor : offColor;
148
- if (displayValue === undefined) {
149
- color = IndicatorColor.IndicatorInvalid;
150
- }
151
-
152
- return (
153
- <div
154
- className={`indicator-rect ${className || ""}`}
155
- style={{
156
- backgroundColor: color,
157
- color: "white",
158
- width: "100px",
159
- height: "100px",
160
- display: "flex",
161
- alignItems: "center",
162
- justifyContent: "center",
163
- ...style,
164
- }}
165
- >
166
- {rectLabel}
167
- </div>
168
- );
169
- }
170
- }
171
-
172
- export default IndicatorRect;
1
+ /*
2
+ * Copyright (C) 2025 Automated Design Corp.. All Rights Reserved.
3
+ * Created Date: 2025-01-20 15:09:55
4
+ * -----
5
+ * Last Modified: 2025-09-05 14:51:58
6
+ * -----
7
+ *
8
+ */
9
+
10
+ import { Component } from 'react';
11
+ import { EventEmitterContext, type EventEmitterContextType } from '../core/EventEmitterContext';
12
+ import { IndicatorColor } from "../core/IndicatorColor";
13
+ export { IndicatorColor };
14
+
15
+ /**
16
+ * Common properties for an indicator rectangle component.
17
+ * This component is used for displaying states and is not interactive.
18
+ * It is commonly used in industrial HMIs for visual indication purposes.
19
+ *
20
+ * These properties support displaying values of boolean, number, and string states.
21
+ *
22
+ * Available boolean states: **on**, **off**, and **not available**:
23
+ *
24
+ * * `true` is treated as **on**
25
+ * * `false` is treated as **off**
26
+ * * `undefined` is treated as **not available**
27
+ *
28
+ * Numeric values can be used. When there are 2 or fewer possible states,
29
+ * 0 will be considered false (OFF), anything else will be considered true (ON).
30
+ * Undefined will be treated as "not available."
31
+ *
32
+ * When the indicator contains more than 2 states, the number will be matched
33
+ * to the available state, in order. More than two states requires usage of the
34
+ * `options` field and declaring more than two states there.
35
+ *
36
+ * If a string state is used, it will be matched exactly to the corresponding
37
+ * label in the `options` field.
38
+ */
39
+ export interface IndicatorRectProps {
40
+
41
+ /**
42
+ * Topic name to monitor for state indication.
43
+ */
44
+ topic?: string;
45
+
46
+ /**
47
+ * State to be displayed.
48
+ */
49
+ value?: boolean | number | string;
50
+
51
+ /**
52
+ * Color for the rectangle when the state is TRUE.
53
+ */
54
+ onColor?: IndicatorColor;
55
+
56
+ /**
57
+ * Color for the rectangle when the state is FALSE.
58
+ */
59
+ offColor?: IndicatorColor;
60
+
61
+ /**
62
+ * An array of string labels to display as the available options.
63
+ *
64
+ * For items with 2 states or less:
65
+ * Index 0 is the label when value is OFF.
66
+ * Index 1 is the label when value is ON.
67
+ *
68
+ * If only one value is given (Index 0), then that value is used for all states.
69
+ */
70
+ options?: string[];
71
+
72
+ /**
73
+ * Additional CSS class name to apply to the rectangle.
74
+ */
75
+ className?: string;
76
+
77
+ /**
78
+ * Additional inline styles to apply to the rectangle.
79
+ */
80
+ style?: React.CSSProperties;
81
+
82
+ }
83
+
84
+ interface IndicatorRectState {
85
+ currentValue?: boolean | number | string;
86
+ }
87
+
88
+ export class IndicatorRect extends Component<IndicatorRectProps, IndicatorRectState> {
89
+ static contextType = EventEmitterContext;
90
+
91
+ // Define default props
92
+ static defaultProps = {
93
+ onColor: IndicatorColor.IndicatorGreen,
94
+ offColor: "gray", // Default offColor
95
+ };
96
+
97
+ constructor(props: IndicatorRectProps) {
98
+ super(props);
99
+ this.state = {
100
+ currentValue: undefined,
101
+ };
102
+ }
103
+
104
+ componentDidMount() {
105
+ this.setupSubscriptions();
106
+ }
107
+
108
+ componentWillUnmount() {
109
+ // Unsubscribe logic if needed
110
+ }
111
+
112
+ /**
113
+ * Sets up subscriptions based on the provided topic.
114
+ */
115
+ private setupSubscriptions() {
116
+ const { topic } = this.props;
117
+ const { subscribe } = this.context as EventEmitterContextType;
118
+
119
+ if (topic) {
120
+ subscribe(topic, this.handleTopicUpdate);
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Handles updates for the main topic.
126
+ */
127
+ private handleTopicUpdate = (value: boolean | number | string) => {
128
+ this.setState({ currentValue: value });
129
+ };
130
+
131
+ render() {
132
+ const { currentValue } = this.state;
133
+ const { className, style, value, onColor, offColor, options } = this.props;
134
+
135
+ // Load the value from the proper source
136
+ let displayValue = currentValue;
137
+ if (value !== undefined) {
138
+ displayValue = value;
139
+ }
140
+
141
+ // Determine the label and color based on the current state
142
+ let rectLabel = undefined;
143
+ if (options !== undefined && options.length > 0) {
144
+ rectLabel = displayValue ? options[1] : options[0];
145
+ }
146
+
147
+ let color = displayValue ? onColor : offColor;
148
+ if (displayValue === undefined) {
149
+ color = IndicatorColor.IndicatorInvalid;
150
+ }
151
+
152
+ return (
153
+ <div
154
+ className={`indicator-rect ${className || ""}`}
155
+ style={{
156
+ backgroundColor: color,
157
+ color: "white",
158
+ display: "flex",
159
+ alignItems: "center",
160
+ justifyContent: "center",
161
+ ...style,
162
+ }}
163
+ >
164
+ {rectLabel}
165
+ </div>
166
+ );
167
+ }
168
+ }
169
+
170
+ export default IndicatorRect;
@@ -1,41 +1,41 @@
1
- /*
2
- * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
- * Created Date: 2024-01-16 13:17:33
4
- * -----
5
- * Last Modified: 2024-03-19 10:37:26
6
- * -----
7
- *
8
- */
9
-
10
- .jogpanel-container {
11
- margin: 2mm;
12
- display: flex;
13
- flex-direction: column; /* Stack children vertically */
14
- align-items: center; /* Center children horizontally within the container */
15
- }
16
-
17
- .grid-container {
18
- display: flex;
19
- flex-direction: column;
20
- gap: 10px; /* Adjust the gap between rows */
21
-
22
- }
23
-
24
- .grid-row {
25
- display: flex;
26
- justify-content: space-between;
27
- gap: 10px; /* Adjust the gap between buttons */
28
- }
29
-
30
- .button-item {
31
- flex: 1; /* Make buttons expand to fill the row */
32
- }
33
-
34
- .distance-selector {
35
- margin-top: 2mm; /* Gap between buttons and distance selector */
36
- margin-left: auto;
37
- margin-right: auto;
38
- width: -moz-fit-content;
39
- width: fit-content;
40
- }
41
-
1
+ /*
2
+ * Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
3
+ * Created Date: 2024-01-16 13:17:33
4
+ * -----
5
+ * Last Modified: 2024-03-19 10:37:26
6
+ * -----
7
+ *
8
+ */
9
+
10
+ .jogpanel-container {
11
+ margin: 2mm;
12
+ display: flex;
13
+ flex-direction: column; /* Stack children vertically */
14
+ align-items: center; /* Center children horizontally within the container */
15
+ }
16
+
17
+ .grid-container {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: 10px; /* Adjust the gap between rows */
21
+
22
+ }
23
+
24
+ .grid-row {
25
+ display: flex;
26
+ justify-content: space-between;
27
+ gap: 10px; /* Adjust the gap between buttons */
28
+ }
29
+
30
+ .button-item {
31
+ flex: 1; /* Make buttons expand to fill the row */
32
+ }
33
+
34
+ .distance-selector {
35
+ margin-top: 2mm; /* Gap between buttons and distance selector */
36
+ margin-left: auto;
37
+ margin-right: auto;
38
+ width: -moz-fit-content;
39
+ width: fit-content;
40
+ }
41
+