@imperosoft/cris-webui-components 1.1.2-beta.0 → 1.1.2-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +61 -3
- package/dist/index.d.ts +61 -3
- package/dist/index.js +203 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +213 -19
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { ReactNode } from 'react';
|
|
2
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
3
3
|
|
|
4
4
|
interface CrisButtonProps {
|
|
5
5
|
/** Digital join for press action */
|
|
@@ -36,12 +36,18 @@ interface CrisButtonProps {
|
|
|
36
36
|
iconClassActive?: string;
|
|
37
37
|
/** Icon inline style when active (merged with iconStyle when button is active) */
|
|
38
38
|
iconStyleActive?: React.CSSProperties;
|
|
39
|
+
/** External selected/active state (for controlled mode without joins) */
|
|
40
|
+
selected?: boolean;
|
|
39
41
|
/** Show controller feedback styling */
|
|
40
42
|
showControlFeedback?: boolean;
|
|
41
43
|
/** Show local press feedback styling */
|
|
42
44
|
showLocalFeedback?: boolean;
|
|
43
45
|
/** Suppress click actions (display only) */
|
|
44
46
|
suppressKeyClicks?: boolean;
|
|
47
|
+
/** External visible state (for controlled mode without joinVisible) */
|
|
48
|
+
visible?: boolean;
|
|
49
|
+
/** External enabled state (for controlled mode without joinEnable) */
|
|
50
|
+
enabled?: boolean;
|
|
45
51
|
/** Smart object ID (for smarts instead of joins) */
|
|
46
52
|
smartId?: number;
|
|
47
53
|
/** Custom class names */
|
|
@@ -61,7 +67,7 @@ interface CrisButtonProps {
|
|
|
61
67
|
/** Enable debug logging for this button */
|
|
62
68
|
debug?: boolean;
|
|
63
69
|
}
|
|
64
|
-
declare function CrisButton({ join, joinFeedback, joinEnable, joinVisible, text, textPressed, textSelected, icon, iconName, iconClass, iconSize, iconContainerSize, iconStyle, iconPosition, iconNameActive, iconClassActive, iconStyleActive, showControlFeedback, showLocalFeedback, suppressKeyClicks, smartId, className, classActive, classPressed, classDisabled, children, onPress, onRelease, debug, }: CrisButtonProps): react_jsx_runtime.JSX.Element | null;
|
|
70
|
+
declare function CrisButton({ join, joinFeedback, joinEnable, joinVisible, text, textPressed, textSelected, icon, iconName, iconClass, iconSize, iconContainerSize, iconStyle, iconPosition, iconNameActive, iconClassActive, iconStyleActive, selected, showControlFeedback, showLocalFeedback, suppressKeyClicks, visible, enabled, smartId, className, classActive, classPressed, classDisabled, children, onPress, onRelease, debug, }: CrisButtonProps): react_jsx_runtime.JSX.Element | null;
|
|
65
71
|
|
|
66
72
|
interface CrisTextProps {
|
|
67
73
|
/** Serial join for indirect text */
|
|
@@ -256,6 +262,58 @@ interface CrisOfflinePageProps {
|
|
|
256
262
|
}
|
|
257
263
|
declare function CrisOfflinePage({ processorHost: processorHostProp, hasAuthToken, isDevMode, isVC4, isDeployedOnProcessor, wsPort, showDebugInfo, loginRedirectDelay, loginPath, retryCountdown: retryCountdownInit, className, }: CrisOfflinePageProps): react_jsx_runtime.JSX.Element;
|
|
258
264
|
|
|
265
|
+
/** Shape of a single module from the backend */
|
|
266
|
+
interface DebugModule {
|
|
267
|
+
id: string;
|
|
268
|
+
lb: string;
|
|
269
|
+
tp: string;
|
|
270
|
+
md: {
|
|
271
|
+
vs: boolean;
|
|
272
|
+
on: boolean;
|
|
273
|
+
};
|
|
274
|
+
cm: {
|
|
275
|
+
vs: boolean;
|
|
276
|
+
on: boolean;
|
|
277
|
+
};
|
|
278
|
+
et: {
|
|
279
|
+
vs: boolean;
|
|
280
|
+
on: boolean;
|
|
281
|
+
};
|
|
282
|
+
rs: {
|
|
283
|
+
vs: boolean;
|
|
284
|
+
on: boolean;
|
|
285
|
+
};
|
|
286
|
+
vs: boolean;
|
|
287
|
+
en: boolean;
|
|
288
|
+
}
|
|
289
|
+
interface CrisCoDebugProps {
|
|
290
|
+
/** Custom object ID (default: "__DBG__") */
|
|
291
|
+
oid?: string;
|
|
292
|
+
/** Optional title */
|
|
293
|
+
title?: string;
|
|
294
|
+
/** Container className */
|
|
295
|
+
className?: string;
|
|
296
|
+
/** Container style */
|
|
297
|
+
style?: CSSProperties;
|
|
298
|
+
/** Item className */
|
|
299
|
+
itemClassName?: string;
|
|
300
|
+
/** Item style */
|
|
301
|
+
itemStyle?: CSSProperties;
|
|
302
|
+
/** Button className for Mod/Com buttons */
|
|
303
|
+
buttonClassName?: string;
|
|
304
|
+
/** Button active className for Mod/Com buttons */
|
|
305
|
+
buttonActiveClassName?: string;
|
|
306
|
+
/** Custom icon for Ethernet connected */
|
|
307
|
+
iconEthOn?: ReactNode;
|
|
308
|
+
/** Custom icon for Ethernet disconnected */
|
|
309
|
+
iconEthOff?: ReactNode;
|
|
310
|
+
/** Custom icon for RS232 connected */
|
|
311
|
+
iconRs232On?: ReactNode;
|
|
312
|
+
/** Custom icon for RS232 disconnected */
|
|
313
|
+
iconRs232Off?: ReactNode;
|
|
314
|
+
}
|
|
315
|
+
declare function CrisCoDebug({ oid, title, className, style, itemClassName, itemStyle, buttonClassName, buttonActiveClassName, iconEthOn, iconEthOff, iconRs232On, iconRs232Off, }: CrisCoDebugProps): react_jsx_runtime.JSX.Element | null;
|
|
316
|
+
|
|
259
317
|
/**
|
|
260
318
|
* Icon configuration and utilities for CRIS components
|
|
261
319
|
*
|
|
@@ -306,4 +364,4 @@ declare function getIconUrl(name: string): string;
|
|
|
306
364
|
*/
|
|
307
365
|
declare function getIconFilter(active: boolean): string | undefined;
|
|
308
366
|
|
|
309
|
-
export { CrisButton, type CrisButtonProps, CrisGauge, type CrisGaugeProps, CrisOfflinePage, type CrisOfflinePageProps, CrisSlider, type CrisSliderProps, CrisSpinner, type CrisSpinnerProps, CrisText, type CrisTextProps, type IconConfig, type SpinnerSpeed, configureIcons, getIconConfig, getIconFilter, getIconUrl };
|
|
367
|
+
export { CrisButton, type CrisButtonProps, CrisCoDebug, type CrisCoDebugProps, CrisGauge, type CrisGaugeProps, CrisOfflinePage, type CrisOfflinePageProps, CrisSlider, type CrisSliderProps, CrisSpinner, type CrisSpinnerProps, CrisText, type CrisTextProps, type DebugModule, type IconConfig, type SpinnerSpeed, configureIcons, getIconConfig, getIconFilter, getIconUrl };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { ReactNode } from 'react';
|
|
2
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
3
3
|
|
|
4
4
|
interface CrisButtonProps {
|
|
5
5
|
/** Digital join for press action */
|
|
@@ -36,12 +36,18 @@ interface CrisButtonProps {
|
|
|
36
36
|
iconClassActive?: string;
|
|
37
37
|
/** Icon inline style when active (merged with iconStyle when button is active) */
|
|
38
38
|
iconStyleActive?: React.CSSProperties;
|
|
39
|
+
/** External selected/active state (for controlled mode without joins) */
|
|
40
|
+
selected?: boolean;
|
|
39
41
|
/** Show controller feedback styling */
|
|
40
42
|
showControlFeedback?: boolean;
|
|
41
43
|
/** Show local press feedback styling */
|
|
42
44
|
showLocalFeedback?: boolean;
|
|
43
45
|
/** Suppress click actions (display only) */
|
|
44
46
|
suppressKeyClicks?: boolean;
|
|
47
|
+
/** External visible state (for controlled mode without joinVisible) */
|
|
48
|
+
visible?: boolean;
|
|
49
|
+
/** External enabled state (for controlled mode without joinEnable) */
|
|
50
|
+
enabled?: boolean;
|
|
45
51
|
/** Smart object ID (for smarts instead of joins) */
|
|
46
52
|
smartId?: number;
|
|
47
53
|
/** Custom class names */
|
|
@@ -61,7 +67,7 @@ interface CrisButtonProps {
|
|
|
61
67
|
/** Enable debug logging for this button */
|
|
62
68
|
debug?: boolean;
|
|
63
69
|
}
|
|
64
|
-
declare function CrisButton({ join, joinFeedback, joinEnable, joinVisible, text, textPressed, textSelected, icon, iconName, iconClass, iconSize, iconContainerSize, iconStyle, iconPosition, iconNameActive, iconClassActive, iconStyleActive, showControlFeedback, showLocalFeedback, suppressKeyClicks, smartId, className, classActive, classPressed, classDisabled, children, onPress, onRelease, debug, }: CrisButtonProps): react_jsx_runtime.JSX.Element | null;
|
|
70
|
+
declare function CrisButton({ join, joinFeedback, joinEnable, joinVisible, text, textPressed, textSelected, icon, iconName, iconClass, iconSize, iconContainerSize, iconStyle, iconPosition, iconNameActive, iconClassActive, iconStyleActive, selected, showControlFeedback, showLocalFeedback, suppressKeyClicks, visible, enabled, smartId, className, classActive, classPressed, classDisabled, children, onPress, onRelease, debug, }: CrisButtonProps): react_jsx_runtime.JSX.Element | null;
|
|
65
71
|
|
|
66
72
|
interface CrisTextProps {
|
|
67
73
|
/** Serial join for indirect text */
|
|
@@ -256,6 +262,58 @@ interface CrisOfflinePageProps {
|
|
|
256
262
|
}
|
|
257
263
|
declare function CrisOfflinePage({ processorHost: processorHostProp, hasAuthToken, isDevMode, isVC4, isDeployedOnProcessor, wsPort, showDebugInfo, loginRedirectDelay, loginPath, retryCountdown: retryCountdownInit, className, }: CrisOfflinePageProps): react_jsx_runtime.JSX.Element;
|
|
258
264
|
|
|
265
|
+
/** Shape of a single module from the backend */
|
|
266
|
+
interface DebugModule {
|
|
267
|
+
id: string;
|
|
268
|
+
lb: string;
|
|
269
|
+
tp: string;
|
|
270
|
+
md: {
|
|
271
|
+
vs: boolean;
|
|
272
|
+
on: boolean;
|
|
273
|
+
};
|
|
274
|
+
cm: {
|
|
275
|
+
vs: boolean;
|
|
276
|
+
on: boolean;
|
|
277
|
+
};
|
|
278
|
+
et: {
|
|
279
|
+
vs: boolean;
|
|
280
|
+
on: boolean;
|
|
281
|
+
};
|
|
282
|
+
rs: {
|
|
283
|
+
vs: boolean;
|
|
284
|
+
on: boolean;
|
|
285
|
+
};
|
|
286
|
+
vs: boolean;
|
|
287
|
+
en: boolean;
|
|
288
|
+
}
|
|
289
|
+
interface CrisCoDebugProps {
|
|
290
|
+
/** Custom object ID (default: "__DBG__") */
|
|
291
|
+
oid?: string;
|
|
292
|
+
/** Optional title */
|
|
293
|
+
title?: string;
|
|
294
|
+
/** Container className */
|
|
295
|
+
className?: string;
|
|
296
|
+
/** Container style */
|
|
297
|
+
style?: CSSProperties;
|
|
298
|
+
/** Item className */
|
|
299
|
+
itemClassName?: string;
|
|
300
|
+
/** Item style */
|
|
301
|
+
itemStyle?: CSSProperties;
|
|
302
|
+
/** Button className for Mod/Com buttons */
|
|
303
|
+
buttonClassName?: string;
|
|
304
|
+
/** Button active className for Mod/Com buttons */
|
|
305
|
+
buttonActiveClassName?: string;
|
|
306
|
+
/** Custom icon for Ethernet connected */
|
|
307
|
+
iconEthOn?: ReactNode;
|
|
308
|
+
/** Custom icon for Ethernet disconnected */
|
|
309
|
+
iconEthOff?: ReactNode;
|
|
310
|
+
/** Custom icon for RS232 connected */
|
|
311
|
+
iconRs232On?: ReactNode;
|
|
312
|
+
/** Custom icon for RS232 disconnected */
|
|
313
|
+
iconRs232Off?: ReactNode;
|
|
314
|
+
}
|
|
315
|
+
declare function CrisCoDebug({ oid, title, className, style, itemClassName, itemStyle, buttonClassName, buttonActiveClassName, iconEthOn, iconEthOff, iconRs232On, iconRs232Off, }: CrisCoDebugProps): react_jsx_runtime.JSX.Element | null;
|
|
316
|
+
|
|
259
317
|
/**
|
|
260
318
|
* Icon configuration and utilities for CRIS components
|
|
261
319
|
*
|
|
@@ -306,4 +364,4 @@ declare function getIconUrl(name: string): string;
|
|
|
306
364
|
*/
|
|
307
365
|
declare function getIconFilter(active: boolean): string | undefined;
|
|
308
366
|
|
|
309
|
-
export { CrisButton, type CrisButtonProps, CrisGauge, type CrisGaugeProps, CrisOfflinePage, type CrisOfflinePageProps, CrisSlider, type CrisSliderProps, CrisSpinner, type CrisSpinnerProps, CrisText, type CrisTextProps, type IconConfig, type SpinnerSpeed, configureIcons, getIconConfig, getIconFilter, getIconUrl };
|
|
367
|
+
export { CrisButton, type CrisButtonProps, CrisCoDebug, type CrisCoDebugProps, CrisGauge, type CrisGaugeProps, CrisOfflinePage, type CrisOfflinePageProps, CrisSlider, type CrisSliderProps, CrisSpinner, type CrisSpinnerProps, CrisText, type CrisTextProps, type DebugModule, type IconConfig, type SpinnerSpeed, configureIcons, getIconConfig, getIconFilter, getIconUrl };
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
CrisButton: () => CrisButton,
|
|
24
|
+
CrisCoDebug: () => CrisCoDebug,
|
|
24
25
|
CrisGauge: () => CrisGauge,
|
|
25
26
|
CrisOfflinePage: () => CrisOfflinePage,
|
|
26
27
|
CrisSlider: () => CrisSlider,
|
|
@@ -108,9 +109,12 @@ function CrisButton({
|
|
|
108
109
|
iconNameActive,
|
|
109
110
|
iconClassActive,
|
|
110
111
|
iconStyleActive,
|
|
112
|
+
selected,
|
|
111
113
|
showControlFeedback = true,
|
|
112
114
|
showLocalFeedback = true,
|
|
113
115
|
suppressKeyClicks = false,
|
|
116
|
+
visible,
|
|
117
|
+
enabled,
|
|
114
118
|
smartId,
|
|
115
119
|
className = "",
|
|
116
120
|
classActive = "",
|
|
@@ -121,19 +125,24 @@ function CrisButton({
|
|
|
121
125
|
onRelease,
|
|
122
126
|
debug = false
|
|
123
127
|
}) {
|
|
124
|
-
const
|
|
125
|
-
|
|
128
|
+
const debugRef = (0, import_react.useRef)(debug);
|
|
129
|
+
debugRef.current = debug;
|
|
130
|
+
const joinRef = (0, import_react.useRef)(join);
|
|
131
|
+
joinRef.current = join;
|
|
132
|
+
const log = (0, import_react.useCallback)((msg, data) => {
|
|
133
|
+
if (debugRef.current) console.log(`[CrisButton:${joinRef.current}] ${msg}`, data ?? "");
|
|
134
|
+
}, []);
|
|
126
135
|
const [pressed, setPressed] = (0, import_react.useState)(false);
|
|
127
136
|
const pressedRef = (0, import_react.useRef)(false);
|
|
128
137
|
const touchingRef = (0, import_react.useRef)(false);
|
|
129
138
|
const touchStartedHereRef = (0, import_react.useRef)(false);
|
|
130
139
|
const feedbackJoin = joinFeedback ?? join;
|
|
131
140
|
const feedback = (0, import_cris_webui_ch5_core.useDigital)(feedbackJoin ?? 0);
|
|
132
|
-
const
|
|
133
|
-
const
|
|
141
|
+
const enabledJoin = (0, import_cris_webui_ch5_core.useDigital)(joinEnable ?? 0);
|
|
142
|
+
const visibleJoin = (0, import_cris_webui_ch5_core.useDigital)(joinVisible ?? 0);
|
|
134
143
|
const dSet = (0, import_cris_webui_ch5_core.useJoinsStore)((state) => state.dSet);
|
|
135
|
-
const isEnabled = joinEnable == null ? true :
|
|
136
|
-
const isVisible = joinVisible == null ? true :
|
|
144
|
+
const isEnabled = enabled ?? (joinEnable == null ? true : enabledJoin);
|
|
145
|
+
const isVisible = visible ?? (joinVisible == null ? true : visibleJoin);
|
|
137
146
|
(0, import_react.useEffect)(() => {
|
|
138
147
|
log("visibility effect", { isVisible, pressedRef: pressedRef.current });
|
|
139
148
|
if (!isVisible && pressedRef.current) {
|
|
@@ -147,7 +156,7 @@ function CrisButton({
|
|
|
147
156
|
dSet(join, false);
|
|
148
157
|
}
|
|
149
158
|
}
|
|
150
|
-
}, [isVisible, join, smartId, dSet
|
|
159
|
+
}, [isVisible, join, smartId, dSet]);
|
|
151
160
|
(0, import_react.useEffect)(() => {
|
|
152
161
|
return () => {
|
|
153
162
|
if (pressedRef.current && join != null && smartId == null) {
|
|
@@ -156,7 +165,7 @@ function CrisButton({
|
|
|
156
165
|
}
|
|
157
166
|
};
|
|
158
167
|
}, [join, smartId, dSet, log]);
|
|
159
|
-
const hasControlFeedback = showControlFeedback && feedbackJoin != null && feedback;
|
|
168
|
+
const hasControlFeedback = showControlFeedback && (feedbackJoin != null && feedback || selected === true);
|
|
160
169
|
const hasPressedFeedback = showLocalFeedback && pressed && isEnabled;
|
|
161
170
|
const isActive = hasControlFeedback || hasPressedFeedback;
|
|
162
171
|
let currentText = text ?? "";
|
|
@@ -1133,9 +1142,195 @@ function CrisOfflinePage({
|
|
|
1133
1142
|
] })
|
|
1134
1143
|
] }) });
|
|
1135
1144
|
}
|
|
1145
|
+
|
|
1146
|
+
// src/components/CrisCoDebug.tsx
|
|
1147
|
+
var import_cris_webui_ch5_core7 = require("@imperosoft/cris-webui-ch5-core");
|
|
1148
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1149
|
+
var defaultStyles = {
|
|
1150
|
+
container: {
|
|
1151
|
+
display: "flex",
|
|
1152
|
+
flexDirection: "column",
|
|
1153
|
+
overflow: "auto",
|
|
1154
|
+
gap: 2
|
|
1155
|
+
},
|
|
1156
|
+
title: {
|
|
1157
|
+
fontSize: 14,
|
|
1158
|
+
fontWeight: 600,
|
|
1159
|
+
padding: "8px 12px",
|
|
1160
|
+
opacity: 0.7
|
|
1161
|
+
},
|
|
1162
|
+
item: {
|
|
1163
|
+
display: "flex",
|
|
1164
|
+
alignItems: "center",
|
|
1165
|
+
padding: "8px 12px",
|
|
1166
|
+
gap: 8,
|
|
1167
|
+
minHeight: 48
|
|
1168
|
+
},
|
|
1169
|
+
info: {
|
|
1170
|
+
flex: 1,
|
|
1171
|
+
minWidth: 0,
|
|
1172
|
+
overflow: "hidden"
|
|
1173
|
+
},
|
|
1174
|
+
moduleName: {
|
|
1175
|
+
fontSize: 14,
|
|
1176
|
+
fontWeight: 600,
|
|
1177
|
+
whiteSpace: "nowrap",
|
|
1178
|
+
overflow: "hidden",
|
|
1179
|
+
textOverflow: "ellipsis"
|
|
1180
|
+
},
|
|
1181
|
+
moduleType: {
|
|
1182
|
+
fontSize: 11,
|
|
1183
|
+
opacity: 0.5
|
|
1184
|
+
},
|
|
1185
|
+
icons: {
|
|
1186
|
+
display: "flex",
|
|
1187
|
+
gap: 4,
|
|
1188
|
+
alignItems: "center",
|
|
1189
|
+
minWidth: 56,
|
|
1190
|
+
justifyContent: "center"
|
|
1191
|
+
},
|
|
1192
|
+
buttons: {
|
|
1193
|
+
display: "flex",
|
|
1194
|
+
gap: 4,
|
|
1195
|
+
alignItems: "center"
|
|
1196
|
+
},
|
|
1197
|
+
iconBox: {
|
|
1198
|
+
width: 24,
|
|
1199
|
+
height: 24,
|
|
1200
|
+
display: "flex",
|
|
1201
|
+
alignItems: "center",
|
|
1202
|
+
justifyContent: "center",
|
|
1203
|
+
position: "relative"
|
|
1204
|
+
}
|
|
1205
|
+
};
|
|
1206
|
+
function ConnectionIcon({ on, type }) {
|
|
1207
|
+
const label = type === "eth" ? "ETH" : "RS";
|
|
1208
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1209
|
+
"div",
|
|
1210
|
+
{
|
|
1211
|
+
style: {
|
|
1212
|
+
...defaultStyles.iconBox,
|
|
1213
|
+
opacity: on ? 1 : 0.4
|
|
1214
|
+
},
|
|
1215
|
+
title: `${type === "eth" ? "Ethernet" : "RS232"}: ${on ? "Connected" : "Disconnected"}`,
|
|
1216
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { width: "20", height: "20", viewBox: "0 0 20 20", children: [
|
|
1217
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("rect", { x: "1", y: "4", width: "18", height: "12", rx: "2", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }),
|
|
1218
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("text", { x: "10", y: "12.5", textAnchor: "middle", fontSize: "7", fontWeight: "bold", fill: "currentColor", children: label }),
|
|
1219
|
+
on ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("circle", { cx: "16", cy: "5", r: "3.5", fill: "#4caf50", stroke: "none" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
1220
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("circle", { cx: "16", cy: "5", r: "3.5", fill: "#f44336", stroke: "none" }),
|
|
1221
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "14", y1: "3", x2: "18", y2: "7", stroke: "white", strokeWidth: "1.5" })
|
|
1222
|
+
] })
|
|
1223
|
+
] })
|
|
1224
|
+
}
|
|
1225
|
+
);
|
|
1226
|
+
}
|
|
1227
|
+
function DebugModuleItem({
|
|
1228
|
+
module: module2,
|
|
1229
|
+
onAction,
|
|
1230
|
+
itemClassName,
|
|
1231
|
+
itemStyle,
|
|
1232
|
+
buttonClassName,
|
|
1233
|
+
buttonActiveClassName,
|
|
1234
|
+
iconEthOn,
|
|
1235
|
+
iconEthOff,
|
|
1236
|
+
iconRs232On,
|
|
1237
|
+
iconRs232Off
|
|
1238
|
+
}) {
|
|
1239
|
+
const name = module2.lb ? `${module2.id} (${module2.lb})` : module2.id;
|
|
1240
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
1241
|
+
"div",
|
|
1242
|
+
{
|
|
1243
|
+
className: itemClassName,
|
|
1244
|
+
style: itemClassName ? itemStyle : { ...defaultStyles.item, ...itemStyle },
|
|
1245
|
+
children: [
|
|
1246
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: defaultStyles.info, children: [
|
|
1247
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: defaultStyles.moduleName, children: name }),
|
|
1248
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: defaultStyles.moduleType, children: module2.tp })
|
|
1249
|
+
] }),
|
|
1250
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: defaultStyles.icons, children: [
|
|
1251
|
+
module2.et.vs && (iconEthOn && iconEthOff ? module2.et.on ? iconEthOn : iconEthOff : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ConnectionIcon, { on: module2.et.on, type: "eth" })),
|
|
1252
|
+
module2.rs.vs && (iconRs232On && iconRs232Off ? module2.rs.on ? iconRs232On : iconRs232Off : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ConnectionIcon, { on: module2.rs.on, type: "rs232" }))
|
|
1253
|
+
] }),
|
|
1254
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: defaultStyles.buttons, children: [
|
|
1255
|
+
module2.md.vs && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1256
|
+
CrisButton,
|
|
1257
|
+
{
|
|
1258
|
+
selected: module2.md.on,
|
|
1259
|
+
text: "Mod",
|
|
1260
|
+
className: buttonClassName,
|
|
1261
|
+
classActive: buttonActiveClassName,
|
|
1262
|
+
onPress: () => onAction("toggleMod", module2.id)
|
|
1263
|
+
}
|
|
1264
|
+
),
|
|
1265
|
+
module2.cm.vs && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1266
|
+
CrisButton,
|
|
1267
|
+
{
|
|
1268
|
+
selected: module2.cm.on,
|
|
1269
|
+
text: "Com",
|
|
1270
|
+
className: buttonClassName,
|
|
1271
|
+
classActive: buttonActiveClassName,
|
|
1272
|
+
onPress: () => onAction("toggleCom", module2.id)
|
|
1273
|
+
}
|
|
1274
|
+
)
|
|
1275
|
+
] })
|
|
1276
|
+
]
|
|
1277
|
+
}
|
|
1278
|
+
);
|
|
1279
|
+
}
|
|
1280
|
+
function CrisCoDebug({
|
|
1281
|
+
oid = "__DBG__",
|
|
1282
|
+
title,
|
|
1283
|
+
className,
|
|
1284
|
+
style,
|
|
1285
|
+
itemClassName,
|
|
1286
|
+
itemStyle,
|
|
1287
|
+
buttonClassName,
|
|
1288
|
+
buttonActiveClassName,
|
|
1289
|
+
iconEthOn,
|
|
1290
|
+
iconEthOff,
|
|
1291
|
+
iconRs232On,
|
|
1292
|
+
iconRs232Off
|
|
1293
|
+
}) {
|
|
1294
|
+
const modules = (0, import_cris_webui_ch5_core7.useCustomObject)(oid);
|
|
1295
|
+
const send = (0, import_cris_webui_ch5_core7.useCustomObjectSend)();
|
|
1296
|
+
const handleAction = (action, id) => {
|
|
1297
|
+
send(oid, { action, id });
|
|
1298
|
+
};
|
|
1299
|
+
if (!modules || modules.length === 0) {
|
|
1300
|
+
return null;
|
|
1301
|
+
}
|
|
1302
|
+
const visibleModules = modules.filter((m) => m.vs);
|
|
1303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
1304
|
+
"div",
|
|
1305
|
+
{
|
|
1306
|
+
className,
|
|
1307
|
+
style: className ? style : { ...defaultStyles.container, ...style },
|
|
1308
|
+
children: [
|
|
1309
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: defaultStyles.title, children: title }),
|
|
1310
|
+
visibleModules.map((module2) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1311
|
+
DebugModuleItem,
|
|
1312
|
+
{
|
|
1313
|
+
module: module2,
|
|
1314
|
+
onAction: handleAction,
|
|
1315
|
+
itemClassName,
|
|
1316
|
+
itemStyle,
|
|
1317
|
+
buttonClassName,
|
|
1318
|
+
buttonActiveClassName,
|
|
1319
|
+
iconEthOn,
|
|
1320
|
+
iconEthOff,
|
|
1321
|
+
iconRs232On,
|
|
1322
|
+
iconRs232Off
|
|
1323
|
+
},
|
|
1324
|
+
module2.id
|
|
1325
|
+
))
|
|
1326
|
+
]
|
|
1327
|
+
}
|
|
1328
|
+
);
|
|
1329
|
+
}
|
|
1136
1330
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1137
1331
|
0 && (module.exports = {
|
|
1138
1332
|
CrisButton,
|
|
1333
|
+
CrisCoDebug,
|
|
1139
1334
|
CrisGauge,
|
|
1140
1335
|
CrisOfflinePage,
|
|
1141
1336
|
CrisSlider,
|