@rkmodules/rules 0.0.94 → 0.0.95

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.
@@ -195,7 +195,6 @@
195
195
  .Ports_fVs5I {
196
196
  display: grid;
197
197
  grid-template-columns: auto 1fr;
198
- grid-auto-rows: 26px;
199
198
  }
200
199
 
201
200
  .Body_ptEZP {
package/dist/index.esm.js CHANGED
@@ -140,18 +140,19 @@ var DISCARD = Symbol("DISCARD");
140
140
  */
141
141
  function simplifyTree$1(tree) {
142
142
  var keys = Object.keys(tree);
143
- if (keys.length <= 1)
144
- return tree; // ✅ Don't simplify if only one path
145
143
  // Parse all paths into number arrays
146
144
  var parsedPaths = keys.map(function (path) { return path.split(";").map(Number); });
147
145
  // Find common prefix
148
- var prefixLength = parsedPaths[0].length;
149
- for (var i = 1; i < parsedPaths.length; i++) {
150
- var path = parsedPaths[i];
151
- for (var j = 0; j < prefixLength; j++) {
152
- if (path[j] !== parsedPaths[0][j]) {
153
- prefixLength = j;
154
- break;
146
+ var prefixLength = 1;
147
+ if (keys.length > 1) {
148
+ prefixLength = parsedPaths[0].length;
149
+ for (var i = 1; i < parsedPaths.length; i++) {
150
+ var path = parsedPaths[i];
151
+ for (var j = 0; j < prefixLength; j++) {
152
+ if (path[j] !== parsedPaths[0][j]) {
153
+ prefixLength = j;
154
+ break;
155
+ }
155
156
  }
156
157
  }
157
158
  }
@@ -633,17 +634,17 @@ var value = {
633
634
  }); },
634
635
  };
635
636
 
636
- var _a$7;
637
- var primitives$7 = (_a$7 = {},
638
- _a$7[getValue.name] = getValue,
639
- _a$7[log.name] = log,
640
- _a$7[value.name] = value,
641
- _a$7);
637
+ var _a$8;
638
+ var primitives$8 = (_a$8 = {},
639
+ _a$8[getValue.name] = getValue,
640
+ _a$8[log.name] = log,
641
+ _a$8[value.name] = value,
642
+ _a$8);
642
643
 
643
644
  var add$1 = {
644
645
  name: "add",
645
646
  label: "Add",
646
- description: "Add two numbers",
647
+ description: "Add two numbers or strings",
647
648
  inputs: {
648
649
  a: { type: "number", default: 0 },
649
650
  b: { type: "number", default: 0 },
@@ -1136,16 +1137,21 @@ var ceil = {
1136
1137
  inputs: {
1137
1138
  x: { type: "number", default: 0 },
1138
1139
  },
1140
+ params: {
1141
+ decimals: { type: "number", default: 0 },
1142
+ },
1139
1143
  outputs: {
1140
1144
  ceil: "number",
1141
1145
  },
1142
- impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1146
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1147
+ var f;
1143
1148
  return __generator(this, function (_a) {
1149
+ f = Math.pow(10, params.decimals || 0);
1144
1150
  return [2 /*return*/, {
1145
1151
  ceil: mapTree(inputs.x, function (x) {
1146
1152
  if (x === undefined)
1147
1153
  return DISCARD;
1148
- return Math.ceil(x);
1154
+ return Math.ceil(f * x) / f;
1149
1155
  }),
1150
1156
  }];
1151
1157
  });
@@ -1159,16 +1165,21 @@ var floor = {
1159
1165
  inputs: {
1160
1166
  x: { type: "number", default: 0 },
1161
1167
  },
1168
+ params: {
1169
+ decimals: { type: "number", default: 0 },
1170
+ },
1162
1171
  outputs: {
1163
1172
  floor: "number",
1164
1173
  },
1165
- impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1174
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1175
+ var f;
1166
1176
  return __generator(this, function (_a) {
1177
+ f = Math.pow(10, params.decimals || 0);
1167
1178
  return [2 /*return*/, {
1168
1179
  floor: mapTree(inputs.x, function (x) {
1169
1180
  if (x === undefined)
1170
1181
  return DISCARD;
1171
- return Math.floor(x);
1182
+ return Math.floor(f * x) / f;
1172
1183
  }),
1173
1184
  }];
1174
1185
  });
@@ -1182,16 +1193,122 @@ var round = {
1182
1193
  inputs: {
1183
1194
  x: { type: "number", default: 0 },
1184
1195
  },
1196
+ params: {
1197
+ decimals: { type: "number", default: 0 },
1198
+ },
1185
1199
  outputs: {
1186
1200
  round: "number",
1187
1201
  },
1188
- impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1202
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1203
+ var f;
1189
1204
  return __generator(this, function (_a) {
1205
+ f = Math.pow(10, params.decimals || 0);
1190
1206
  return [2 /*return*/, {
1191
1207
  round: mapTree(inputs.x, function (x) {
1192
1208
  if (x === undefined)
1193
1209
  return DISCARD;
1194
- return Math.round(x);
1210
+ return Math.round(f * x) / f;
1211
+ }),
1212
+ }];
1213
+ });
1214
+ }); },
1215
+ };
1216
+
1217
+ var sum = {
1218
+ name: "sum",
1219
+ label: "Sum",
1220
+ description: "Sum of all items in a group",
1221
+ inputs: {
1222
+ tree: { type: "number", default: 0 },
1223
+ },
1224
+ outputs: {
1225
+ sum: "number",
1226
+ },
1227
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1228
+ return __generator(this, function (_a) {
1229
+ return [2 /*return*/, {
1230
+ sum: mapTreeBranch(inputs.tree, function (branch) {
1231
+ if (!branch || branch.length === 0)
1232
+ return DISCARD;
1233
+ var total = branch.reduce(function (acc, item) {
1234
+ if (item === undefined)
1235
+ return acc;
1236
+ return acc + item;
1237
+ });
1238
+ return [total];
1239
+ }),
1240
+ }];
1241
+ });
1242
+ }); },
1243
+ };
1244
+
1245
+ var _a$7;
1246
+ var primitives$7 = (_a$7 = {},
1247
+ _a$7[calc.name] = calc,
1248
+ _a$7[equalTo.name] = equalTo,
1249
+ _a$7[lessThan.name] = lessThan,
1250
+ _a$7[greaterThan.name] = greaterThan,
1251
+ _a$7[add$1.name] = add$1,
1252
+ _a$7[subtract$1.name] = subtract$1,
1253
+ _a$7[multiply.name] = multiply,
1254
+ _a$7[divide.name] = divide,
1255
+ _a$7[modulo.name] = modulo,
1256
+ _a$7[sinDeg.name] = sinDeg,
1257
+ _a$7[cosDeg.name] = cosDeg,
1258
+ _a$7[tanDeg.name] = tanDeg,
1259
+ _a$7[sqrt.name] = sqrt,
1260
+ _a$7[pow.name] = pow,
1261
+ _a$7[round.name] = round,
1262
+ _a$7[ceil.name] = ceil,
1263
+ _a$7[floor.name] = floor,
1264
+ _a$7[sum.name] = sum,
1265
+ _a$7);
1266
+
1267
+ var joinStrings = {
1268
+ name: "joinStrings",
1269
+ label: "Join Strings",
1270
+ description: "Join all strings in a group",
1271
+ inputs: {
1272
+ tree: { type: "string", default: "" },
1273
+ },
1274
+ params: {
1275
+ separator: { type: "string", default: "" },
1276
+ },
1277
+ outputs: {
1278
+ joined: "string",
1279
+ },
1280
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1281
+ var sep;
1282
+ return __generator(this, function (_a) {
1283
+ sep = params.separator || "";
1284
+ return [2 /*return*/, {
1285
+ joined: mapTreeBranch(inputs.tree, function (branch) {
1286
+ if (!branch || branch.length === 0)
1287
+ return DISCARD;
1288
+ return [branch.join(sep)];
1289
+ }),
1290
+ }];
1291
+ });
1292
+ }); },
1293
+ };
1294
+
1295
+ var toString = {
1296
+ name: "toString",
1297
+ label: "To String",
1298
+ description: "convert to string",
1299
+ inputs: {
1300
+ tree: { type: "any", default: 0 },
1301
+ },
1302
+ outputs: {
1303
+ string: "string",
1304
+ },
1305
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1306
+ return __generator(this, function (_a) {
1307
+ return [2 /*return*/, {
1308
+ string: mapTree(inputs.tree || {}, function (item) {
1309
+ if (item === undefined)
1310
+ return DISCARD;
1311
+ return String(item);
1195
1312
  }),
1196
1313
  }];
1197
1314
  });
@@ -1200,23 +1317,8 @@ var round = {
1200
1317
 
1201
1318
  var _a$6;
1202
1319
  var primitives$6 = (_a$6 = {},
1203
- _a$6[calc.name] = calc,
1204
- _a$6[equalTo.name] = equalTo,
1205
- _a$6[lessThan.name] = lessThan,
1206
- _a$6[greaterThan.name] = greaterThan,
1207
- _a$6[add$1.name] = add$1,
1208
- _a$6[subtract$1.name] = subtract$1,
1209
- _a$6[multiply.name] = multiply,
1210
- _a$6[divide.name] = divide,
1211
- _a$6[modulo.name] = modulo,
1212
- _a$6[sinDeg.name] = sinDeg,
1213
- _a$6[cosDeg.name] = cosDeg,
1214
- _a$6[tanDeg.name] = tanDeg,
1215
- _a$6[sqrt.name] = sqrt,
1216
- _a$6[pow.name] = pow,
1217
- _a$6[round.name] = round,
1218
- _a$6[ceil.name] = ceil,
1219
- _a$6[floor.name] = floor,
1320
+ _a$6[toString.name] = toString,
1321
+ _a$6[joinStrings.name] = joinStrings,
1220
1322
  _a$6);
1221
1323
 
1222
1324
  var filterList = {
@@ -1262,25 +1364,6 @@ var filterList = {
1262
1364
  }); },
1263
1365
  };
1264
1366
 
1265
- var splitGroup = {
1266
- name: "splitGroup",
1267
- label: "Split Group",
1268
- description: "Splits every item of a group into its own group",
1269
- inputs: {
1270
- tree: "any",
1271
- },
1272
- outputs: {
1273
- tree: "any", // Return the grafted nodes
1274
- },
1275
- impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1276
- return __generator(this, function (_a) {
1277
- return [2 /*return*/, {
1278
- tree: graftTree(inputs.tree || {}),
1279
- }];
1280
- });
1281
- }); },
1282
- };
1283
-
1284
1367
  var listItem = {
1285
1368
  name: "listItem",
1286
1369
  label: "List Item",
@@ -1350,73 +1433,9 @@ var listLength = {
1350
1433
  }); },
1351
1434
  };
1352
1435
 
1353
- var mergeGroup = {
1354
- name: "mergeGroup",
1355
- label: "Merge Group",
1356
- description: "Merge the deepest groups into their parent.",
1357
- inputs: {
1358
- tree: "any",
1359
- },
1360
- params: {
1361
- depth: { type: "number", default: 1 }, // Optional depth to trim the tree
1362
- },
1363
- outputs: {
1364
- tree: "any", // Return the trimed nodes
1365
- },
1366
- impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1367
- var depth;
1368
- var _a;
1369
- return __generator(this, function (_b) {
1370
- depth = (_a = params.depth) !== null && _a !== void 0 ? _a : 1;
1371
- return [2 /*return*/, {
1372
- tree: trimTree(inputs.tree, depth),
1373
- }];
1374
- });
1375
- }); },
1376
- };
1377
-
1378
- var cartesianGroups = {
1379
- name: "cartesianGroups",
1380
- label: "Cartesian Groups",
1381
- description: "Duplicate groups such that all pairings are created.",
1382
- inputs: {
1383
- treeA: "any",
1384
- treeB: "any",
1385
- },
1386
- params: {},
1387
- outputs: {
1388
- treeA: "any",
1389
- treeB: "any",
1390
- },
1391
- impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1392
- var pathsA, pathsB, treeA, treeB;
1393
- return __generator(this, function (_a) {
1394
- if (!inputs.treeA || !inputs.treeB) {
1395
- return [2 /*return*/, {}];
1396
- }
1397
- pathsA = getPaths(inputs.treeA);
1398
- pathsB = getPaths(inputs.treeB);
1399
- treeA = {};
1400
- treeB = {};
1401
- pathsB.forEach(function (pathB, ib) {
1402
- pathsA.forEach(function (pathA, ia) {
1403
- var pa = "".concat(ib, ";").concat(pathA);
1404
- treeA[pa] = inputs.treeA[pathA];
1405
- var pb = "".concat(pathB, ";").concat(ia);
1406
- treeB[pb] = inputs.treeB[pathB];
1407
- });
1408
- });
1409
- return [2 /*return*/, {
1410
- treeA: treeA,
1411
- treeB: treeB,
1412
- }];
1413
- });
1414
- }); },
1415
- };
1416
-
1417
1436
  var concat = {
1418
1437
  name: "concat",
1419
- label: "Concat",
1438
+ label: "Concat Lists",
1420
1439
  description: "Concatenates two lists back to back",
1421
1440
  inputs: {
1422
1441
  treeA: "any",
@@ -1517,59 +1536,135 @@ var relativeItems = {
1517
1536
  }); },
1518
1537
  };
1519
1538
 
1539
+ function isBoolStr(str) {
1540
+ return str.toLowerCase() === "true" || str.toLowerCase() === "false";
1541
+ }
1542
+ function isNumStr(str) {
1543
+ return !isNaN(Number(str));
1544
+ }
1545
+ var listInput = {
1546
+ name: "listInput",
1547
+ label: "List Input",
1548
+ description: "Input a list",
1549
+ inputs: {
1550
+ list: { type: "text", default: "" },
1551
+ },
1552
+ outputs: {
1553
+ tree: "string",
1554
+ },
1555
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1556
+ return __generator(this, function (_a) {
1557
+ return [2 /*return*/, {
1558
+ tree: mapTreeBranch(inputs.list || {}, function (branch) {
1559
+ if (!branch || branch.length === 0)
1560
+ return DISCARD;
1561
+ var allLines = branch.flatMap(function (text) { return text.split("\n"); });
1562
+ if (allLines.every(function (line) { return isBoolStr(line); })) {
1563
+ allLines = allLines.map(function (line) { return line.toLowerCase() === "true"; });
1564
+ }
1565
+ else if (allLines.every(function (line) { return isNumStr(line); })) {
1566
+ allLines = allLines.map(function (line) { return Number(line); });
1567
+ }
1568
+ return allLines;
1569
+ }),
1570
+ }];
1571
+ });
1572
+ }); },
1573
+ };
1574
+
1520
1575
  var _a$5;
1521
1576
  var primitives$5 = (_a$5 = {},
1522
- _a$5[splitGroup.name] = splitGroup,
1523
- _a$5[mergeGroup.name] = mergeGroup,
1524
1577
  _a$5[listItem.name] = listItem,
1525
1578
  _a$5[listLength.name] = listLength,
1526
1579
  _a$5[filterList.name] = filterList,
1527
- // [shiftList.name]: shiftList,
1528
1580
  _a$5[relativeItem.name] = relativeItem,
1529
1581
  _a$5[relativeItems.name] = relativeItems,
1530
- _a$5[cartesianGroups.name] = cartesianGroups,
1531
1582
  _a$5[concat.name] = concat,
1583
+ _a$5[listInput.name] = listInput,
1532
1584
  _a$5);
1533
1585
 
1534
- var series = {
1535
- name: "series",
1536
- label: "Series",
1537
- description: "Create a series of numbers.",
1586
+ var splitGroup = {
1587
+ name: "splitGroup",
1588
+ label: "Split Group",
1589
+ description: "Splits every item of a group into its own group",
1538
1590
  inputs: {
1539
- start: { type: "number", default: 0 },
1540
- step: { type: "number", default: 1 },
1541
- count: { type: "number", default: 10 },
1591
+ tree: "any",
1542
1592
  },
1543
1593
  outputs: {
1544
- series: "number",
1594
+ tree: "any", // Return the grafted nodes
1545
1595
  },
1546
1596
  impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1547
1597
  return __generator(this, function (_a) {
1548
1598
  return [2 /*return*/, {
1549
- series: nAryOnTreeBranch([
1550
- graftTree(inputs.start),
1551
- graftTree(inputs.step),
1552
- graftTree(inputs.count),
1553
- ], function (_a) {
1554
- var _b = __read(_a, 3), _c = _b[0], starts = _c === void 0 ? [] : _c, _d = _b[1], steps = _d === void 0 ? [] : _d, _e = _b[2], counts = _e === void 0 ? [] : _e;
1555
- var start = starts[0];
1556
- var step = steps[0];
1557
- var count = counts[0];
1558
- var series = [];
1559
- for (var i = 0; i < count; i++) {
1560
- series.push(start + i * step);
1561
- }
1562
- return series;
1563
- }),
1599
+ tree: graftTree(inputs.tree || {}),
1564
1600
  }];
1565
1601
  });
1566
1602
  }); },
1567
1603
  };
1568
1604
 
1569
- var _a$4;
1570
- var primitives$4 = (_a$4 = {},
1571
- _a$4[series.name] = series,
1572
- _a$4);
1605
+ var mergeGroup = {
1606
+ name: "mergeGroup",
1607
+ label: "Merge Group",
1608
+ description: "Merge the deepest groups into their parent.",
1609
+ inputs: {
1610
+ tree: "any",
1611
+ },
1612
+ params: {
1613
+ depth: { type: "number", default: 1 }, // Optional depth to trim the tree
1614
+ },
1615
+ outputs: {
1616
+ tree: "any", // Return the trimed nodes
1617
+ },
1618
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1619
+ var depth;
1620
+ var _a;
1621
+ return __generator(this, function (_b) {
1622
+ depth = (_a = params.depth) !== null && _a !== void 0 ? _a : 1;
1623
+ return [2 /*return*/, {
1624
+ tree: trimTree(inputs.tree, depth),
1625
+ }];
1626
+ });
1627
+ }); },
1628
+ };
1629
+
1630
+ var cartesianGroups = {
1631
+ name: "cartesianGroups",
1632
+ label: "Cartesian Groups",
1633
+ description: "Duplicate groups such that all pairings are created.",
1634
+ inputs: {
1635
+ treeA: "any",
1636
+ treeB: "any",
1637
+ },
1638
+ params: {},
1639
+ outputs: {
1640
+ treeA: "any",
1641
+ treeB: "any",
1642
+ },
1643
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1644
+ var pathsA, pathsB, treeA, treeB;
1645
+ return __generator(this, function (_a) {
1646
+ if (!inputs.treeA || !inputs.treeB) {
1647
+ return [2 /*return*/, {}];
1648
+ }
1649
+ pathsA = getPaths(inputs.treeA);
1650
+ pathsB = getPaths(inputs.treeB);
1651
+ treeA = {};
1652
+ treeB = {};
1653
+ pathsB.forEach(function (pathB, ib) {
1654
+ pathsA.forEach(function (pathA, ia) {
1655
+ var pa = "".concat(ib, ";").concat(pathA);
1656
+ treeA[pa] = inputs.treeA[pathA];
1657
+ var pb = "".concat(pathB, ";").concat(ia);
1658
+ treeB[pb] = inputs.treeB[pathB];
1659
+ });
1660
+ });
1661
+ return [2 /*return*/, {
1662
+ treeA: treeA,
1663
+ treeB: treeB,
1664
+ }];
1665
+ });
1666
+ }); },
1667
+ };
1573
1668
 
1574
1669
  var mergeTree = {
1575
1670
  name: "mergeTree",
@@ -1602,7 +1697,7 @@ var mergeTree = {
1602
1697
 
1603
1698
  var simplifyTree = {
1604
1699
  name: "simplifyTree",
1605
- label: "Simplify Tree",
1700
+ label: "Simplify Groups",
1606
1701
  description: "Simplify a tree by removing redundant groups.",
1607
1702
  inputs: {
1608
1703
  tree: "any",
@@ -1622,10 +1717,78 @@ var simplifyTree = {
1622
1717
  }); },
1623
1718
  };
1624
1719
 
1720
+ var groupAll = {
1721
+ name: "groupAll",
1722
+ label: "Group All",
1723
+ description: "Adds a group around all groups in the input tree",
1724
+ inputs: {
1725
+ tree: "any",
1726
+ },
1727
+ outputs: {
1728
+ tree: "any",
1729
+ },
1730
+ impl: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
1731
+ var paths, newPaths, newTree;
1732
+ var _c = _b.tree, tree = _c === void 0 ? {} : _c;
1733
+ return __generator(this, function (_d) {
1734
+ paths = getPaths(tree);
1735
+ newPaths = paths.map(function (p) { return "0;".concat(p); });
1736
+ newTree = Object.fromEntries(newPaths.map(function (p, i) { return [p, tree[paths[i]]]; }));
1737
+ return [2 /*return*/, {
1738
+ tree: newTree,
1739
+ }];
1740
+ });
1741
+ }); },
1742
+ };
1743
+
1744
+ var _a$4;
1745
+ var primitives$4 = (_a$4 = {},
1746
+ _a$4[splitGroup.name] = splitGroup,
1747
+ _a$4[mergeGroup.name] = mergeGroup,
1748
+ _a$4[groupAll.name] = groupAll,
1749
+ _a$4[simplifyTree.name] = simplifyTree,
1750
+ _a$4[cartesianGroups.name] = cartesianGroups,
1751
+ _a$4[mergeTree.name] = mergeTree,
1752
+ _a$4);
1753
+
1754
+ var series = {
1755
+ name: "series",
1756
+ label: "Series",
1757
+ description: "Create a series of numbers.",
1758
+ inputs: {
1759
+ start: { type: "number", default: 0 },
1760
+ step: { type: "number", default: 1 },
1761
+ count: { type: "number", default: 10 },
1762
+ },
1763
+ outputs: {
1764
+ series: "number",
1765
+ },
1766
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1767
+ return __generator(this, function (_a) {
1768
+ return [2 /*return*/, {
1769
+ series: nAryOnTreeBranch([
1770
+ graftTree(inputs.start),
1771
+ graftTree(inputs.step),
1772
+ graftTree(inputs.count),
1773
+ ], function (_a) {
1774
+ var _b = __read(_a, 3), _c = _b[0], starts = _c === void 0 ? [] : _c, _d = _b[1], steps = _d === void 0 ? [] : _d, _e = _b[2], counts = _e === void 0 ? [] : _e;
1775
+ var start = starts[0];
1776
+ var step = steps[0];
1777
+ var count = counts[0];
1778
+ var series = [];
1779
+ for (var i = 0; i < count; i++) {
1780
+ series.push(start + i * step);
1781
+ }
1782
+ return series;
1783
+ }),
1784
+ }];
1785
+ });
1786
+ }); },
1787
+ };
1788
+
1625
1789
  var _a$3;
1626
1790
  var primitives$3 = (_a$3 = {},
1627
- _a$3[mergeTree.name] = mergeTree,
1628
- _a$3[simplifyTree.name] = simplifyTree,
1791
+ _a$3[series.name] = series,
1629
1792
  _a$3);
1630
1793
 
1631
1794
  var groupAnd = {
@@ -1710,8 +1873,8 @@ var primitives$1 = (_a$1 = {},
1710
1873
  _a$1[output.name] = output,
1711
1874
  _a$1);
1712
1875
 
1713
- var Lib = { Util: primitives$7, Math: primitives$6, List: primitives$5, Sequence: primitives$4, Tree: primitives$3, Logic: primitives$2, IO: primitives$1 };
1714
- var primitives = __assign(__assign(__assign(__assign(__assign(__assign(__assign({}, primitives$1), primitives$7), primitives$6), primitives$5), primitives$4), primitives$3), primitives$2);
1876
+ var Lib = { Util: primitives$8, Math: primitives$7, String: primitives$6, List: primitives$5, Group: primitives$4, Sequence: primitives$3, Logic: primitives$2, IO: primitives$1 };
1877
+ var primitives = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, primitives$1), primitives$8), primitives$7), primitives$6), primitives$5), primitives$4), primitives$3), primitives$2);
1715
1878
 
1716
1879
  function isPrimitive(node) {
1717
1880
  return node.impl !== undefined;
@@ -4994,7 +5157,25 @@ var InputString = React.memo(function (_a) {
4994
5157
  setInner(value);
4995
5158
  }
4996
5159
  }, [inner, value, onChange]);
4997
- return (React.createElement("input", { type: "text", value: inner, onChange: function (e) { return setInner(e.target.value); }, onBlur: handleBlur, onKeyDown: handleKey }));
5160
+ return (React.createElement("input", { type: "text", value: inner, onChange: function (e) { return setInner(e.target.value); }, onBlur: handleBlur, onKeyDown: handleKey, onMouseDown: function (e) { return e.stopPropagation(); } }));
5161
+ });
5162
+ var InputText = React.memo(function (_a) {
5163
+ var value = _a.value, onChange = _a.onChange;
5164
+ var _b = __read(useInner(value), 2), inner = _b[0], setInner = _b[1];
5165
+ var handleBlur = React.useCallback(function () {
5166
+ if (inner !== value) {
5167
+ onChange === null || onChange === void 0 ? void 0 : onChange(inner);
5168
+ }
5169
+ }, [inner, value, onChange]);
5170
+ var handleKey = React.useCallback(function (e) {
5171
+ if (e.key === "Enter" && inner !== value) {
5172
+ onChange === null || onChange === void 0 ? void 0 : onChange(inner);
5173
+ }
5174
+ if (e.key === "Escape") {
5175
+ setInner(value);
5176
+ }
5177
+ }, [inner, value, onChange]);
5178
+ return (React.createElement("textarea", { value: inner, onChange: function (e) { return setInner(e.target.value); }, onBlur: handleBlur, onKeyDown: handleKey, onMouseDown: function (e) { return e.stopPropagation(); }, rows: 4 }));
4998
5179
  });
4999
5180
  function Control(_a) {
5000
5181
  var value = _a.value, vardef = _a.vardef, onChange = _a.onChange;
@@ -5009,8 +5190,10 @@ function Control(_a) {
5009
5190
  switch (vardef.type) {
5010
5191
  case "string":
5011
5192
  return React.createElement(InputString, { value: value !== null && value !== void 0 ? value : "", onChange: onChange });
5193
+ case "text":
5194
+ return React.createElement(InputText, { value: value !== null && value !== void 0 ? value : "", onChange: onChange });
5012
5195
  case "number":
5013
- return (React.createElement(InputNumber, { value: Number(value) || 0, onChange: onChange, step: vardef.step, min: vardef.min, max: vardef.max, inputMode: "numeric" }));
5196
+ return (React.createElement(InputNumber, { value: Number(value) || 0, onChange: onChange, step: vardef.step, min: vardef.min, max: vardef.max, inputMode: "numeric", onMouseDown: function (e) { return e.stopPropagation(); } }));
5014
5197
  case "boolean":
5015
5198
  return (React.createElement("input", { type: "checkbox", checked: Boolean(value), onChange: function (e) { return onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked); } }));
5016
5199
  default: