@imperosoft/cris-webui-components 1.1.2-beta.8 → 1.1.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 +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +180 -41
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +180 -41
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -100,6 +100,8 @@ function CrisButton({
|
|
|
100
100
|
const pressedRef = useRef(false);
|
|
101
101
|
const touchingRef = useRef(false);
|
|
102
102
|
const touchStartedHereRef = useRef(false);
|
|
103
|
+
const touchStartYRef = useRef(0);
|
|
104
|
+
const touchMovedRef = useRef(false);
|
|
103
105
|
const feedbackJoin = joinFeedback ?? join;
|
|
104
106
|
const feedback = useDigital(feedbackJoin ?? 0);
|
|
105
107
|
const enabledJoin = useDigital(joinEnable ?? 0);
|
|
@@ -182,30 +184,42 @@ function CrisButton({
|
|
|
182
184
|
dSet(join, false);
|
|
183
185
|
}
|
|
184
186
|
};
|
|
185
|
-
const
|
|
187
|
+
const SCROLL_THRESHOLD = 8;
|
|
188
|
+
const handleTouchStart = (e) => {
|
|
186
189
|
log("handleTouchStart");
|
|
187
190
|
touchStart();
|
|
188
191
|
touchingRef.current = true;
|
|
189
192
|
touchStartedHereRef.current = true;
|
|
190
|
-
|
|
193
|
+
touchMovedRef.current = false;
|
|
194
|
+
touchStartYRef.current = e.touches[0]?.clientY ?? 0;
|
|
195
|
+
};
|
|
196
|
+
const handleTouchMove = (e) => {
|
|
197
|
+
if (touchMovedRef.current) return;
|
|
198
|
+
const dy = Math.abs((e.touches[0]?.clientY ?? 0) - touchStartYRef.current);
|
|
199
|
+
if (dy > SCROLL_THRESHOLD) {
|
|
200
|
+
touchMovedRef.current = true;
|
|
201
|
+
log("touchMove: scroll detected, dy:", dy);
|
|
202
|
+
}
|
|
191
203
|
};
|
|
192
204
|
const handleTouchEnd = () => {
|
|
193
|
-
log("handleTouchEnd", {
|
|
205
|
+
log("handleTouchEnd", { touchStartedHere: touchStartedHereRef.current, moved: touchMovedRef.current });
|
|
194
206
|
touchEnd();
|
|
195
207
|
touchingRef.current = true;
|
|
196
|
-
if (touchStartedHereRef.current) {
|
|
208
|
+
if (touchStartedHereRef.current && !touchMovedRef.current) {
|
|
197
209
|
touchStartedHereRef.current = false;
|
|
210
|
+
handlePress();
|
|
198
211
|
handleRelease();
|
|
199
212
|
} else {
|
|
200
|
-
|
|
213
|
+
touchStartedHereRef.current = false;
|
|
214
|
+
log("SKIPPED: touch moved or did not start here");
|
|
201
215
|
}
|
|
202
216
|
};
|
|
203
217
|
const handleTouchCancel = () => {
|
|
204
|
-
log("handleTouchCancel");
|
|
218
|
+
log("handleTouchCancel (scroll detected)");
|
|
205
219
|
touchEnd();
|
|
206
220
|
touchingRef.current = true;
|
|
207
221
|
touchStartedHereRef.current = false;
|
|
208
|
-
|
|
222
|
+
touchMovedRef.current = false;
|
|
209
223
|
};
|
|
210
224
|
const handleMouseDown = () => {
|
|
211
225
|
if (isTouchActive() || touchingRef.current) return;
|
|
@@ -306,7 +320,7 @@ function CrisButton({
|
|
|
306
320
|
cursor: suppressKeyClicks ? "default" : "pointer",
|
|
307
321
|
position: isFreePositioned ? void 0 : "relative",
|
|
308
322
|
overflow: isFreePositioned ? void 0 : "hidden",
|
|
309
|
-
touchAction: "
|
|
323
|
+
touchAction: "pan-x pan-y",
|
|
310
324
|
userSelect: "none",
|
|
311
325
|
WebkitUserSelect: "none"
|
|
312
326
|
},
|
|
@@ -314,6 +328,7 @@ function CrisButton({
|
|
|
314
328
|
onMouseUp: handleMouseUp,
|
|
315
329
|
onMouseLeave: handleMouseLeave,
|
|
316
330
|
onTouchStart: handleTouchStart,
|
|
331
|
+
onTouchMove: handleTouchMove,
|
|
317
332
|
onTouchEnd: handleTouchEnd,
|
|
318
333
|
onTouchCancel: handleTouchCancel,
|
|
319
334
|
children: [
|
|
@@ -1295,12 +1310,25 @@ function CrisCoDebug({
|
|
|
1295
1310
|
// src/components/CrisCoMatrixListsTie.tsx
|
|
1296
1311
|
import { useCustomObject as useCustomObject2, useCustomObjectSend as useCustomObjectSend2 } from "@imperosoft/cris-webui-ch5-core";
|
|
1297
1312
|
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1313
|
+
var colors = {
|
|
1314
|
+
itemBg: "#4f5152",
|
|
1315
|
+
itemActiveBg: "#007ca0",
|
|
1316
|
+
vmActiveBg: "#dc2626",
|
|
1317
|
+
text: "#ffffff",
|
|
1318
|
+
headerText: "#6b7280",
|
|
1319
|
+
ioOn: "#4caf50",
|
|
1320
|
+
ioOff: "#f44336",
|
|
1321
|
+
sgOn: "#2196f3",
|
|
1322
|
+
sgOff: "#666666"
|
|
1323
|
+
};
|
|
1298
1324
|
var defaults = {
|
|
1299
1325
|
container: {
|
|
1300
1326
|
display: "flex",
|
|
1301
1327
|
flexDirection: "row",
|
|
1302
|
-
gap:
|
|
1303
|
-
|
|
1328
|
+
gap: "1.5rem",
|
|
1329
|
+
padding: "1rem 2rem",
|
|
1330
|
+
height: "100%",
|
|
1331
|
+
width: "100%"
|
|
1304
1332
|
},
|
|
1305
1333
|
list: {
|
|
1306
1334
|
flex: 1,
|
|
@@ -1310,57 +1338,129 @@ var defaults = {
|
|
|
1310
1338
|
minHeight: 0
|
|
1311
1339
|
},
|
|
1312
1340
|
header: {
|
|
1313
|
-
fontSize:
|
|
1314
|
-
fontWeight:
|
|
1315
|
-
padding: "
|
|
1341
|
+
fontSize: "1.5em",
|
|
1342
|
+
fontWeight: 700,
|
|
1343
|
+
padding: "0.5rem 0.75rem",
|
|
1316
1344
|
textTransform: "uppercase",
|
|
1317
|
-
|
|
1318
|
-
|
|
1345
|
+
letterSpacing: "0.05em",
|
|
1346
|
+
color: colors.headerText,
|
|
1347
|
+
flexShrink: 0,
|
|
1348
|
+
textAlign: "center"
|
|
1319
1349
|
},
|
|
1320
1350
|
scroll: {
|
|
1321
1351
|
flex: 1,
|
|
1322
1352
|
minHeight: 0,
|
|
1323
1353
|
overflow: "auto",
|
|
1354
|
+
scrollbarWidth: "none",
|
|
1324
1355
|
WebkitOverflowScrolling: "touch",
|
|
1325
1356
|
display: "flex",
|
|
1326
1357
|
flexDirection: "column",
|
|
1327
|
-
gap:
|
|
1358
|
+
gap: "0.15rem"
|
|
1328
1359
|
},
|
|
1329
1360
|
item: {
|
|
1330
1361
|
display: "flex",
|
|
1331
|
-
alignItems: "
|
|
1332
|
-
gap:
|
|
1333
|
-
padding: "
|
|
1334
|
-
minHeight:
|
|
1362
|
+
alignItems: "stretch",
|
|
1363
|
+
gap: "0.5rem",
|
|
1364
|
+
padding: "0 0.4rem 0 0",
|
|
1365
|
+
minHeight: "3.7rem",
|
|
1335
1366
|
cursor: "pointer",
|
|
1336
|
-
userSelect: "none"
|
|
1367
|
+
userSelect: "none",
|
|
1368
|
+
background: colors.itemBg,
|
|
1369
|
+
borderRadius: "0.5rem",
|
|
1370
|
+
transition: "background 0.15s"
|
|
1371
|
+
},
|
|
1372
|
+
itemActive: {
|
|
1373
|
+
background: colors.itemActiveBg
|
|
1374
|
+
},
|
|
1375
|
+
itemBtn: {
|
|
1376
|
+
flex: 1,
|
|
1377
|
+
minWidth: 0,
|
|
1378
|
+
display: "flex",
|
|
1379
|
+
alignItems: "stretch",
|
|
1380
|
+
background: "transparent",
|
|
1381
|
+
border: "none",
|
|
1382
|
+
textAlign: "left",
|
|
1383
|
+
color: colors.text,
|
|
1384
|
+
height: "100%",
|
|
1385
|
+
borderRadius: "0.5rem",
|
|
1386
|
+
cursor: "pointer"
|
|
1387
|
+
},
|
|
1388
|
+
itemBtnInner: {
|
|
1389
|
+
display: "flex",
|
|
1390
|
+
alignItems: "center",
|
|
1391
|
+
gap: "0.4rem",
|
|
1392
|
+
width: "100%",
|
|
1393
|
+
flex: 1,
|
|
1394
|
+
padding: "0.5rem 0.9rem"
|
|
1395
|
+
},
|
|
1396
|
+
channelNum: {
|
|
1397
|
+
flexShrink: 0,
|
|
1398
|
+
opacity: 0.6,
|
|
1399
|
+
minWidth: "1.7em",
|
|
1400
|
+
textAlign: "right",
|
|
1401
|
+
fontWeight: 400,
|
|
1402
|
+
marginRight: "0.4em"
|
|
1337
1403
|
},
|
|
1338
1404
|
itemLabel: {
|
|
1339
1405
|
flex: 1,
|
|
1340
|
-
fontSize:
|
|
1406
|
+
fontSize: "1.4em",
|
|
1407
|
+
fontWeight: 700,
|
|
1341
1408
|
whiteSpace: "nowrap",
|
|
1342
1409
|
overflow: "hidden",
|
|
1343
|
-
textOverflow: "ellipsis"
|
|
1410
|
+
textOverflow: "ellipsis",
|
|
1411
|
+
color: colors.text
|
|
1344
1412
|
},
|
|
1345
1413
|
indicators: {
|
|
1346
1414
|
display: "flex",
|
|
1347
|
-
gap:
|
|
1415
|
+
gap: "0.25rem",
|
|
1348
1416
|
alignItems: "center"
|
|
1349
1417
|
},
|
|
1350
1418
|
indicator: {
|
|
1351
|
-
width:
|
|
1352
|
-
height:
|
|
1419
|
+
width: "1rem",
|
|
1420
|
+
height: "1rem",
|
|
1353
1421
|
borderRadius: "50%",
|
|
1354
1422
|
flexShrink: 0
|
|
1423
|
+
},
|
|
1424
|
+
vmBtn: {
|
|
1425
|
+
flexShrink: 0,
|
|
1426
|
+
alignSelf: "stretch",
|
|
1427
|
+
display: "flex",
|
|
1428
|
+
alignItems: "center",
|
|
1429
|
+
background: colors.itemBg,
|
|
1430
|
+
color: colors.text,
|
|
1431
|
+
border: "none",
|
|
1432
|
+
borderRadius: "0.4rem",
|
|
1433
|
+
padding: "0 0.6rem",
|
|
1434
|
+
margin: "0.3rem 0.3rem 0.3rem 0",
|
|
1435
|
+
fontSize: "0.85em",
|
|
1436
|
+
fontWeight: 700,
|
|
1437
|
+
cursor: "pointer",
|
|
1438
|
+
transition: "background 0.15s"
|
|
1439
|
+
},
|
|
1440
|
+
vmBtnActive: {
|
|
1441
|
+
background: colors.vmActiveBg,
|
|
1442
|
+
color: colors.text
|
|
1355
1443
|
}
|
|
1356
1444
|
};
|
|
1445
|
+
var INJECTED_CSS = `
|
|
1446
|
+
.cris-co-matrix-scroll::-webkit-scrollbar { display: none; }
|
|
1447
|
+
.cris-co-matrix-item > div:first-child > .cris-button { width: 100%; height: 100%; }
|
|
1448
|
+
`;
|
|
1449
|
+
var scrollbarStyleInjected = false;
|
|
1450
|
+
function injectScrollbarStyle() {
|
|
1451
|
+
if (scrollbarStyleInjected) return;
|
|
1452
|
+
scrollbarStyleInjected = true;
|
|
1453
|
+
const style = document.createElement("style");
|
|
1454
|
+
style.textContent = INJECTED_CSS;
|
|
1455
|
+
document.head.appendChild(style);
|
|
1456
|
+
}
|
|
1357
1457
|
function DefaultIoIndicator({ on }) {
|
|
1358
1458
|
return /* @__PURE__ */ jsx8(
|
|
1359
1459
|
"div",
|
|
1360
1460
|
{
|
|
1361
1461
|
style: {
|
|
1362
1462
|
...defaults.indicator,
|
|
1363
|
-
backgroundColor: on ?
|
|
1463
|
+
backgroundColor: on ? colors.ioOn : colors.ioOff
|
|
1364
1464
|
},
|
|
1365
1465
|
title: on ? "Online" : "Offline"
|
|
1366
1466
|
}
|
|
@@ -1372,7 +1472,7 @@ function DefaultSignalIndicator({ on }) {
|
|
|
1372
1472
|
{
|
|
1373
1473
|
style: {
|
|
1374
1474
|
...defaults.indicator,
|
|
1375
|
-
backgroundColor: on ?
|
|
1475
|
+
backgroundColor: on ? colors.sgOn : colors.sgOff
|
|
1376
1476
|
},
|
|
1377
1477
|
title: on ? "Signal detected" : "No signal"
|
|
1378
1478
|
}
|
|
@@ -1381,7 +1481,9 @@ function DefaultSignalIndicator({ on }) {
|
|
|
1381
1481
|
function MatrixItemRow({
|
|
1382
1482
|
item,
|
|
1383
1483
|
type,
|
|
1484
|
+
active,
|
|
1384
1485
|
showChannels,
|
|
1486
|
+
vmText,
|
|
1385
1487
|
onSelect,
|
|
1386
1488
|
onToggleVideoMute,
|
|
1387
1489
|
itemClassName,
|
|
@@ -1394,22 +1496,39 @@ function MatrixItemRow({
|
|
|
1394
1496
|
renderIoIndicator,
|
|
1395
1497
|
renderSignalIndicator
|
|
1396
1498
|
}) {
|
|
1397
|
-
const isActive =
|
|
1499
|
+
const isActive = active;
|
|
1398
1500
|
const isEnabled = item.sl.en;
|
|
1501
|
+
const useDefaults = !itemClassName;
|
|
1399
1502
|
const classes = [
|
|
1400
1503
|
"cris-co-matrix-item",
|
|
1401
1504
|
itemClassName,
|
|
1402
1505
|
isActive && (itemActiveClassName || "active"),
|
|
1403
1506
|
!isEnabled && (itemDisabledClassName || "disabled")
|
|
1404
1507
|
].filter(Boolean).join(" ");
|
|
1405
|
-
const computedStyle =
|
|
1508
|
+
const computedStyle = useDefaults ? {
|
|
1406
1509
|
...defaults.item,
|
|
1407
1510
|
...itemStyleProp,
|
|
1408
|
-
...isActive ? itemActiveStyle : void 0,
|
|
1511
|
+
...isActive ? { ...defaults.itemActive, ...itemActiveStyle } : void 0,
|
|
1409
1512
|
opacity: isEnabled ? 1 : 0.4
|
|
1410
|
-
};
|
|
1513
|
+
} : { ...itemStyleProp };
|
|
1411
1514
|
return /* @__PURE__ */ jsxs7("div", { className: classes, style: computedStyle, children: [
|
|
1412
|
-
/* @__PURE__ */ jsx8(
|
|
1515
|
+
useDefaults ? /* @__PURE__ */ jsx8("div", { style: defaults.itemBtn, children: /* @__PURE__ */ jsx8(
|
|
1516
|
+
CrisButton,
|
|
1517
|
+
{
|
|
1518
|
+
selected: isActive,
|
|
1519
|
+
enabled: isEnabled,
|
|
1520
|
+
onPress: onSelect,
|
|
1521
|
+
showLocalFeedback: false,
|
|
1522
|
+
children: /* @__PURE__ */ jsxs7("div", { style: defaults.itemBtnInner, children: [
|
|
1523
|
+
showChannels && /* @__PURE__ */ jsx8("span", { className: "cris-co-matrix-ch", style: defaults.channelNum, children: item.id }),
|
|
1524
|
+
/* @__PURE__ */ jsx8("span", { style: defaults.itemLabel, children: item.lb || `${type === "input" ? "Input" : "Output"} ${item.id}` }),
|
|
1525
|
+
/* @__PURE__ */ jsxs7("div", { style: defaults.indicators, children: [
|
|
1526
|
+
item.io.vs && (renderIoIndicator ? renderIoIndicator(item.io.on) : /* @__PURE__ */ jsx8(DefaultIoIndicator, { on: item.io.on })),
|
|
1527
|
+
item.sg.vs && (renderSignalIndicator ? renderSignalIndicator(item.sg.on) : /* @__PURE__ */ jsx8(DefaultSignalIndicator, { on: item.sg.on }))
|
|
1528
|
+
] })
|
|
1529
|
+
] })
|
|
1530
|
+
}
|
|
1531
|
+
) }) : /* @__PURE__ */ jsx8(
|
|
1413
1532
|
CrisButton,
|
|
1414
1533
|
{
|
|
1415
1534
|
selected: isActive,
|
|
@@ -1417,9 +1536,9 @@ function MatrixItemRow({
|
|
|
1417
1536
|
onPress: onSelect,
|
|
1418
1537
|
className: `cris-co-matrix-item-btn ${itemActiveClassName ?? ""}`,
|
|
1419
1538
|
classActive: itemActiveClassName,
|
|
1420
|
-
children: /* @__PURE__ */ jsxs7("div", { style: { display: "flex", alignItems: "center", gap:
|
|
1539
|
+
children: /* @__PURE__ */ jsxs7("div", { style: { display: "flex", alignItems: "center", gap: "0.4rem", width: "100%" }, children: [
|
|
1421
1540
|
showChannels && /* @__PURE__ */ jsx8("span", { className: "cris-co-matrix-ch", style: { flexShrink: 0, opacity: 0.6 }, children: item.id }),
|
|
1422
|
-
/* @__PURE__ */ jsx8("span", { style:
|
|
1541
|
+
/* @__PURE__ */ jsx8("span", { style: { flex: 1, whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }, children: item.lb || `${type === "input" ? "Input" : "Output"} ${item.id}` }),
|
|
1423
1542
|
/* @__PURE__ */ jsxs7("div", { style: defaults.indicators, children: [
|
|
1424
1543
|
item.io.vs && (renderIoIndicator ? renderIoIndicator(item.io.on) : /* @__PURE__ */ jsx8(DefaultIoIndicator, { on: item.io.on })),
|
|
1425
1544
|
item.sg.vs && (renderSignalIndicator ? renderSignalIndicator(item.sg.on) : /* @__PURE__ */ jsx8(DefaultSignalIndicator, { on: item.sg.on }))
|
|
@@ -1427,17 +1546,31 @@ function MatrixItemRow({
|
|
|
1427
1546
|
] })
|
|
1428
1547
|
}
|
|
1429
1548
|
),
|
|
1430
|
-
item.vm.vs && /* @__PURE__ */ jsx8(
|
|
1549
|
+
item.vm.vs && (useDefaults && !vmButtonClassName ? /* @__PURE__ */ jsx8("div", { style: {
|
|
1550
|
+
...defaults.vmBtn,
|
|
1551
|
+
...item.vm.on ? defaults.vmBtnActive : void 0,
|
|
1552
|
+
opacity: item.vm.en ? 1 : 0.4,
|
|
1553
|
+
pointerEvents: item.vm.en ? "auto" : "none"
|
|
1554
|
+
}, children: /* @__PURE__ */ jsx8(
|
|
1555
|
+
CrisButton,
|
|
1556
|
+
{
|
|
1557
|
+
selected: item.vm.on,
|
|
1558
|
+
enabled: item.vm.en,
|
|
1559
|
+
text: vmText,
|
|
1560
|
+
onPress: onToggleVideoMute,
|
|
1561
|
+
showLocalFeedback: false
|
|
1562
|
+
}
|
|
1563
|
+
) }) : /* @__PURE__ */ jsx8(
|
|
1431
1564
|
CrisButton,
|
|
1432
1565
|
{
|
|
1433
1566
|
selected: item.vm.on,
|
|
1434
1567
|
enabled: item.vm.en,
|
|
1435
|
-
text:
|
|
1568
|
+
text: vmText,
|
|
1436
1569
|
onPress: onToggleVideoMute,
|
|
1437
1570
|
className: vmButtonClassName,
|
|
1438
1571
|
classActive: vmButtonActiveClassName
|
|
1439
1572
|
}
|
|
1440
|
-
)
|
|
1573
|
+
))
|
|
1441
1574
|
] });
|
|
1442
1575
|
}
|
|
1443
1576
|
function CrisCoMatrixListsTie({
|
|
@@ -1456,6 +1589,7 @@ function CrisCoMatrixListsTie({
|
|
|
1456
1589
|
itemActiveClassName,
|
|
1457
1590
|
itemActiveStyle,
|
|
1458
1591
|
itemDisabledClassName,
|
|
1592
|
+
vmText = "Mute",
|
|
1459
1593
|
vmButtonClassName,
|
|
1460
1594
|
vmButtonActiveClassName,
|
|
1461
1595
|
renderIoIndicator,
|
|
@@ -1463,8 +1597,9 @@ function CrisCoMatrixListsTie({
|
|
|
1463
1597
|
}) {
|
|
1464
1598
|
const matrix = useCustomObject2(oid);
|
|
1465
1599
|
const send = useCustomObjectSend2();
|
|
1600
|
+
injectScrollbarStyle();
|
|
1466
1601
|
if (!matrix) return null;
|
|
1467
|
-
const { ip: inputs, op: outputs } = matrix;
|
|
1602
|
+
const { si, ip: inputs, op: outputs } = matrix;
|
|
1468
1603
|
const handleSelectInput = (id) => {
|
|
1469
1604
|
send(oid, { action: "selectInput", id });
|
|
1470
1605
|
};
|
|
@@ -1494,12 +1629,14 @@ function CrisCoMatrixListsTie({
|
|
|
1494
1629
|
children: inputTitle
|
|
1495
1630
|
}
|
|
1496
1631
|
),
|
|
1497
|
-
/* @__PURE__ */ jsx8("div", { style: defaults.scroll, children: inputs?.map((item) => /* @__PURE__ */ jsx8(
|
|
1632
|
+
/* @__PURE__ */ jsx8("div", { className: "cris-co-matrix-scroll", style: defaults.scroll, children: inputs?.map((item) => /* @__PURE__ */ jsx8(
|
|
1498
1633
|
MatrixItemRow,
|
|
1499
1634
|
{
|
|
1500
1635
|
item,
|
|
1501
1636
|
type: "input",
|
|
1637
|
+
active: si === item.id,
|
|
1502
1638
|
showChannels,
|
|
1639
|
+
vmText,
|
|
1503
1640
|
onSelect: () => handleSelectInput(item.id),
|
|
1504
1641
|
onToggleVideoMute: () => handleToggleVideoMute("input", item.id),
|
|
1505
1642
|
itemClassName,
|
|
@@ -1531,12 +1668,14 @@ function CrisCoMatrixListsTie({
|
|
|
1531
1668
|
children: outputTitle
|
|
1532
1669
|
}
|
|
1533
1670
|
),
|
|
1534
|
-
/* @__PURE__ */ jsx8("div", { style: defaults.scroll, children: outputs?.map((item) => /* @__PURE__ */ jsx8(
|
|
1671
|
+
/* @__PURE__ */ jsx8("div", { className: "cris-co-matrix-scroll", style: defaults.scroll, children: outputs?.map((item) => /* @__PURE__ */ jsx8(
|
|
1535
1672
|
MatrixItemRow,
|
|
1536
1673
|
{
|
|
1537
1674
|
item,
|
|
1538
1675
|
type: "output",
|
|
1676
|
+
active: item.ti === si,
|
|
1539
1677
|
showChannels,
|
|
1678
|
+
vmText,
|
|
1540
1679
|
onSelect: () => handleTie(item.id),
|
|
1541
1680
|
onToggleVideoMute: () => handleToggleVideoMute("output", item.id),
|
|
1542
1681
|
itemClassName,
|