@lvce-editor/status-bar-worker 3.26.2 → 3.28.0

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.
@@ -315,6 +315,321 @@ const diff2 = uid => {
315
315
  return result;
316
316
  };
317
317
 
318
+ const getComponentState = uid => {
319
+ return get$5(uid).newState;
320
+ };
321
+
322
+ const Status = 'status';
323
+
324
+ const MaskIcon = 'MaskIcon';
325
+
326
+ const Audio = 0;
327
+ const Button$1 = 1;
328
+ const Col = 2;
329
+ const ColGroup = 3;
330
+ const Div = 4;
331
+ const H1 = 5;
332
+ const Input = 6;
333
+ const Kbd = 7;
334
+ const Span = 8;
335
+ const Table = 9;
336
+ const TBody = 10;
337
+ const Td = 11;
338
+ const Text = 12;
339
+ const Th = 13;
340
+ const THead = 14;
341
+ const Tr = 15;
342
+ const I = 16;
343
+ const Img = 17;
344
+ const Root = 0;
345
+ const Ins = 20;
346
+ const Del = 21;
347
+ const H2 = 22;
348
+ const H3 = 23;
349
+ const H4 = 24;
350
+ const H5 = 25;
351
+ const H6 = 26;
352
+ const Article = 27;
353
+ const Aside = 28;
354
+ const Footer = 29;
355
+ const Header = 30;
356
+ const Nav = 40;
357
+ const Section = 41;
358
+ const Search = 42;
359
+ const Dd = 43;
360
+ const Dl = 44;
361
+ const Figcaption = 45;
362
+ const Figure = 46;
363
+ const Hr = 47;
364
+ const Li = 48;
365
+ const Ol = 49;
366
+ const P = 50;
367
+ const Pre = 51;
368
+ const A = 53;
369
+ const Abbr = 54;
370
+ const Br = 55;
371
+ const Cite = 56;
372
+ const Data = 57;
373
+ const Time = 58;
374
+ const Tfoot = 59;
375
+ const Ul = 60;
376
+ const Video = 61;
377
+ const TextArea = 62;
378
+ const Select = 63;
379
+ const Option = 64;
380
+ const Code = 65;
381
+ const Label = 66;
382
+ const Dt = 67;
383
+ const Iframe = 68;
384
+ const Main = 69;
385
+ const Strong = 70;
386
+ const Em = 71;
387
+ const Style = 72;
388
+ const Html = 73;
389
+ const Head = 74;
390
+ const Title = 75;
391
+ const Meta = 76;
392
+ const Canvas = 77;
393
+ const Form = 78;
394
+ const BlockQuote = 79;
395
+ const Quote = 80;
396
+ const Circle = 81;
397
+ const Defs = 82;
398
+ const Ellipse = 83;
399
+ const G = 84;
400
+ const Line = 85;
401
+ const Path = 86;
402
+ const Polygon = 87;
403
+ const Polyline = 88;
404
+ const Rect = 89;
405
+ const Svg = 90;
406
+ const Use = 91;
407
+ const Reference = 100;
408
+
409
+ const VirtualDomElements = {
410
+ __proto__: null,
411
+ A,
412
+ Abbr,
413
+ Article,
414
+ Aside,
415
+ Audio,
416
+ BlockQuote,
417
+ Br,
418
+ Button: Button$1,
419
+ Canvas,
420
+ Circle,
421
+ Cite,
422
+ Code,
423
+ Col,
424
+ ColGroup,
425
+ Data,
426
+ Dd,
427
+ Defs,
428
+ Del,
429
+ Div,
430
+ Dl,
431
+ Dt,
432
+ Ellipse,
433
+ Em,
434
+ Figcaption,
435
+ Figure,
436
+ Footer,
437
+ Form,
438
+ G,
439
+ H1,
440
+ H2,
441
+ H3,
442
+ H4,
443
+ H5,
444
+ H6,
445
+ Head,
446
+ Header,
447
+ Hr,
448
+ Html,
449
+ I,
450
+ Iframe,
451
+ Img,
452
+ Input,
453
+ Ins,
454
+ Kbd,
455
+ Label,
456
+ Li,
457
+ Line,
458
+ Main,
459
+ Meta,
460
+ Nav,
461
+ Ol,
462
+ Option,
463
+ P,
464
+ Path,
465
+ Polygon,
466
+ Polyline,
467
+ Pre,
468
+ Quote,
469
+ Rect,
470
+ Reference,
471
+ Root,
472
+ Search,
473
+ Section,
474
+ Select,
475
+ Span,
476
+ Strong,
477
+ Style,
478
+ Svg,
479
+ TBody,
480
+ THead,
481
+ Table,
482
+ Td,
483
+ Text,
484
+ TextArea,
485
+ Tfoot,
486
+ Th,
487
+ Time,
488
+ Title,
489
+ Tr,
490
+ Ul,
491
+ Use,
492
+ Video
493
+ };
494
+
495
+ const Button = 'event.button';
496
+ const ClientX = 'event.clientX';
497
+ const ClientY = 'event.clientY';
498
+ const TargetName = 'event.target.name';
499
+
500
+ const ExtensionManagementWorker = 9006;
501
+ const RendererProcess = 1670;
502
+ const RendererWorker = 1;
503
+
504
+ const SetDom2 = 'Viewlet.setDom2';
505
+ const SetFocusContext = 'Viewlet.setFocusContext';
506
+
507
+ const mergeClassNames = (...classNames) => {
508
+ return classNames.filter(Boolean).join(' ');
509
+ };
510
+
511
+ const text = data => {
512
+ return {
513
+ childCount: 0,
514
+ text: data,
515
+ type: Text
516
+ };
517
+ };
518
+
519
+ new Set(Object.values(VirtualDomElements));
520
+
521
+ const HandleContextMenu = 2;
522
+ const HandleClick = 11;
523
+
524
+ const ProblemsErrorIcon = 'ProblemsErrorIcon';
525
+ const ProblemsWarningIcon = 'ProblemsWarningIcon';
526
+ const StatusBarItem = 'StatusBarItem';
527
+ const StatusBarItemsLeft = 'StatusBarItemsLeft';
528
+ const StatusBarItemsRight = 'StatusBarItemsRight';
529
+
530
+ const getTextVirtualDom = (element, name) => {
531
+ return [{
532
+ childCount: 1,
533
+ className: 'StatusBarItemLabel',
534
+ name,
535
+ type: Span
536
+ }, text(element.value)];
537
+ };
538
+ const getIconVirtualDom = (element, name) => {
539
+ return [{
540
+ childCount: 0,
541
+ className: mergeClassNames(MaskIcon, 'StatusBarIcon', element.value, element.spinning ? 'Spinning' : ''),
542
+ name,
543
+ type: Div
544
+ }];
545
+ };
546
+ const getStatusBarItemElementVirtualDom = (element, name) => {
547
+ if (element.type === 'text') {
548
+ return getTextVirtualDom(element, name);
549
+ }
550
+ if (element.type === 'icon') {
551
+ return getIconVirtualDom(element, name);
552
+ }
553
+ return [];
554
+ };
555
+
556
+ const getStatusBarItemVirtualDom = statusBarItem => {
557
+ const {
558
+ ariaLabel,
559
+ elements,
560
+ name,
561
+ tooltip
562
+ } = statusBarItem;
563
+ const elementNodes = elements.flatMap(element => getStatusBarItemElementVirtualDom(element, name));
564
+ const buttonNode = {
565
+ ariaLabel,
566
+ childCount: elements.length,
567
+ className: StatusBarItem,
568
+ name,
569
+ tabIndex: -1,
570
+ title: tooltip,
571
+ type: Button$1
572
+ };
573
+ return [buttonNode, ...elementNodes];
574
+ };
575
+
576
+ const getStatusBarItemsVirtualDom = (items, className) => {
577
+ if (items.length === 0) {
578
+ return [];
579
+ }
580
+ return [{
581
+ childCount: items.length,
582
+ className,
583
+ type: Div
584
+ }, ...items.flatMap(getStatusBarItemVirtualDom)];
585
+ };
586
+
587
+ const emptyStatusBarItemsLeftDom = [{
588
+ childCount: 0,
589
+ className: StatusBarItemsLeft,
590
+ type: Div
591
+ }];
592
+ const getStatusBarItemsLeftDom = statusBarItemsLeft => {
593
+ if (statusBarItemsLeft.length === 0) {
594
+ return emptyStatusBarItemsLeftDom;
595
+ }
596
+ return getStatusBarItemsVirtualDom(statusBarItemsLeft, StatusBarItemsLeft);
597
+ };
598
+
599
+ const getStatusBarItemsRightDom = statusBarItemsRight => {
600
+ return getStatusBarItemsVirtualDom(statusBarItemsRight, StatusBarItemsRight);
601
+ };
602
+
603
+ const getChildCount = rightCount => {
604
+ return rightCount > 0 ? 2 : 1;
605
+ };
606
+ const getStatusBarVirtualDom = (statusBarItemsLeft, statusBarItemsRight) => {
607
+ const dom = [{
608
+ childCount: getChildCount(statusBarItemsRight.length),
609
+ className: 'StatusBar',
610
+ onClick: HandleClick,
611
+ onContextMenu: HandleContextMenu,
612
+ role: Status,
613
+ type: Div
614
+ }, ...getStatusBarItemsLeftDom(statusBarItemsLeft), ...getStatusBarItemsRightDom(statusBarItemsRight)];
615
+ return dom;
616
+ };
617
+
618
+ const renderItems = (oldState, newState) => {
619
+ const {
620
+ statusBarItemsLeft,
621
+ statusBarItemsRight,
622
+ uid
623
+ } = newState;
624
+ const dom = getStatusBarVirtualDom(statusBarItemsLeft, statusBarItemsRight);
625
+ return [SetDom2, uid, dom];
626
+ };
627
+
628
+ const getComponentDom = uid => {
629
+ const state = getComponentState(uid);
630
+ return renderItems(state, state)[2];
631
+ };
632
+
318
633
  const getMatchingItemInternal = (items, name) => {
319
634
  for (const item of items) {
320
635
  if (item.name === name) {
@@ -1251,373 +1566,188 @@ const registerPromise = map => {
1251
1566
  } = Promise.withResolvers();
1252
1567
  map[id] = resolve;
1253
1568
  return {
1254
- id,
1255
- promise
1256
- };
1257
- };
1258
-
1259
- const invokeHelper = async (callbacks, ipc, method, params, useSendAndTransfer) => {
1260
- const {
1261
- id,
1262
- promise
1263
- } = registerPromise(callbacks);
1264
- const message = create$4(id, method, params);
1265
- if (useSendAndTransfer && ipc.sendAndTransfer) {
1266
- ipc.sendAndTransfer(message);
1267
- } else {
1268
- ipc.send(message);
1269
- }
1270
- const responseMessage = await promise;
1271
- return unwrapJsonRpcResult(responseMessage);
1272
- };
1273
- const createRpc = ipc => {
1274
- const callbacks = Object.create(null);
1275
- ipc._resolve = (id, response) => {
1276
- const fn = callbacks[id];
1277
- if (!fn) {
1278
- console.warn(`callback ${id} may already be disposed`);
1279
- return;
1280
- }
1281
- fn(response);
1282
- delete callbacks[id];
1283
- };
1284
- const rpc = {
1285
- async dispose() {
1286
- await ipc?.dispose();
1287
- },
1288
- invoke(method, ...params) {
1289
- return invokeHelper(callbacks, ipc, method, params, false);
1290
- },
1291
- invokeAndTransfer(method, ...params) {
1292
- return invokeHelper(callbacks, ipc, method, params, true);
1293
- },
1294
- // @ts-ignore
1295
- ipc,
1296
- /**
1297
- * @deprecated
1298
- */
1299
- send(method, ...params) {
1300
- const message = create$5(method, params);
1301
- ipc.send(message);
1302
- }
1303
- };
1304
- return rpc;
1305
- };
1306
-
1307
- const requiresSocket = () => {
1308
- return false;
1309
- };
1310
- const preparePrettyError = error => {
1311
- return error;
1312
- };
1313
- const logError = () => {
1314
- // handled by renderer worker
1315
- };
1316
- const handleMessage = event => {
1317
- const actualRequiresSocket = event?.target?.requiresSocket || requiresSocket;
1318
- const actualExecute = event?.target?.execute || execute;
1319
- return handleJsonRpcMessage(event.target, event.data, actualExecute, event.target._resolve, preparePrettyError, logError, actualRequiresSocket);
1320
- };
1321
-
1322
- const handleIpc = ipc => {
1323
- if ('addEventListener' in ipc) {
1324
- ipc.addEventListener('message', handleMessage);
1325
- } else if ('on' in ipc) {
1326
- // deprecated
1327
- ipc.on('message', handleMessage);
1328
- }
1329
- };
1330
-
1331
- const listen$1 = async (module, options) => {
1332
- const rawIpc = await module.listen(options);
1333
- if (module.signal) {
1334
- module.signal(rawIpc);
1335
- }
1336
- const ipc = module.wrap(rawIpc);
1337
- return ipc;
1338
- };
1339
-
1340
- const create$2 = async ({
1341
- commandMap,
1342
- isMessagePortOpen = true,
1343
- messagePort
1344
- }) => {
1345
- // TODO create a commandMap per rpc instance
1346
- register(commandMap);
1347
- const rawIpc = await IpcParentWithMessagePort$1.create({
1348
- isMessagePortOpen,
1349
- messagePort
1350
- });
1351
- const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
1352
- handleIpc(ipc);
1353
- const rpc = createRpc(ipc);
1354
- messagePort.start();
1355
- return rpc;
1356
- };
1357
-
1358
- const create$1 = async ({
1359
- commandMap
1360
- }) => {
1361
- // TODO create a commandMap per rpc instance
1362
- register(commandMap);
1363
- const ipc = await listen$1(IpcChildWithModuleWorkerAndMessagePort$1);
1364
- handleIpc(ipc);
1365
- const rpc = createRpc(ipc);
1366
- return rpc;
1367
- };
1368
-
1369
- const createMockRpc = ({
1370
- commandMap
1371
- }) => {
1372
- const invocations = [];
1373
- const invoke = (method, ...params) => {
1374
- invocations.push([method, ...params]);
1375
- const command = commandMap[method];
1376
- if (!command) {
1377
- throw new Error(`command ${method} not found`);
1378
- }
1379
- return command(...params);
1380
- };
1381
- const mockRpc = {
1382
- invocations,
1383
- invoke,
1384
- invokeAndTransfer: invoke
1569
+ id,
1570
+ promise
1385
1571
  };
1386
- return mockRpc;
1387
1572
  };
1388
1573
 
1389
- const rpcs = Object.create(null);
1390
- const set$6 = (id, rpc) => {
1391
- rpcs[id] = rpc;
1392
- };
1393
- const get$3 = id => {
1394
- return rpcs[id];
1395
- };
1396
- const remove = id => {
1397
- delete rpcs[id];
1574
+ const invokeHelper = async (callbacks, ipc, method, params, useSendAndTransfer) => {
1575
+ const {
1576
+ id,
1577
+ promise
1578
+ } = registerPromise(callbacks);
1579
+ const message = create$4(id, method, params);
1580
+ if (useSendAndTransfer && ipc.sendAndTransfer) {
1581
+ ipc.sendAndTransfer(message);
1582
+ } else {
1583
+ ipc.send(message);
1584
+ }
1585
+ const responseMessage = await promise;
1586
+ return unwrapJsonRpcResult(responseMessage);
1398
1587
  };
1399
-
1400
- /* eslint-disable @typescript-eslint/explicit-function-return-type */
1401
- const create = rpcId => {
1402
- return {
1588
+ const createRpc = ipc => {
1589
+ const callbacks = Object.create(null);
1590
+ ipc._resolve = (id, response) => {
1591
+ const fn = callbacks[id];
1592
+ if (!fn) {
1593
+ console.warn(`callback ${id} may already be disposed`);
1594
+ return;
1595
+ }
1596
+ fn(response);
1597
+ delete callbacks[id];
1598
+ };
1599
+ const rpc = {
1403
1600
  async dispose() {
1404
- const rpc = get$3(rpcId);
1405
- await rpc.dispose();
1601
+ await ipc?.dispose();
1406
1602
  },
1407
- // @ts-ignore
1408
1603
  invoke(method, ...params) {
1409
- const rpc = get$3(rpcId);
1410
- // @ts-ignore
1411
- return rpc.invoke(method, ...params);
1604
+ return invokeHelper(callbacks, ipc, method, params, false);
1412
1605
  },
1413
- // @ts-ignore
1414
1606
  invokeAndTransfer(method, ...params) {
1415
- const rpc = get$3(rpcId);
1416
- // @ts-ignore
1417
- return rpc.invokeAndTransfer(method, ...params);
1418
- },
1419
- registerMockRpc(commandMap) {
1420
- const mockRpc = createMockRpc({
1421
- commandMap
1422
- });
1423
- set$6(rpcId, mockRpc);
1424
- // @ts-ignore
1425
- mockRpc[Symbol.dispose] = () => {
1426
- remove(rpcId);
1427
- };
1428
- // @ts-ignore
1429
- return mockRpc;
1607
+ return invokeHelper(callbacks, ipc, method, params, true);
1430
1608
  },
1431
- set(rpc) {
1432
- set$6(rpcId, rpc);
1609
+ // @ts-ignore
1610
+ ipc,
1611
+ /**
1612
+ * @deprecated
1613
+ */
1614
+ send(method, ...params) {
1615
+ const message = create$5(method, params);
1616
+ ipc.send(message);
1433
1617
  }
1434
1618
  };
1619
+ return rpc;
1435
1620
  };
1436
1621
 
1437
- const Status = 'status';
1438
-
1439
- const MaskIcon = 'MaskIcon';
1440
-
1441
- const Audio = 0;
1442
- const Button$1 = 1;
1443
- const Col = 2;
1444
- const ColGroup = 3;
1445
- const Div = 4;
1446
- const H1 = 5;
1447
- const Input = 6;
1448
- const Kbd = 7;
1449
- const Span = 8;
1450
- const Table = 9;
1451
- const TBody = 10;
1452
- const Td = 11;
1453
- const Text = 12;
1454
- const Th = 13;
1455
- const THead = 14;
1456
- const Tr = 15;
1457
- const I = 16;
1458
- const Img = 17;
1459
- const Root = 0;
1460
- const Ins = 20;
1461
- const Del = 21;
1462
- const H2 = 22;
1463
- const H3 = 23;
1464
- const H4 = 24;
1465
- const H5 = 25;
1466
- const H6 = 26;
1467
- const Article = 27;
1468
- const Aside = 28;
1469
- const Footer = 29;
1470
- const Header = 30;
1471
- const Nav = 40;
1472
- const Section = 41;
1473
- const Search = 42;
1474
- const Dd = 43;
1475
- const Dl = 44;
1476
- const Figcaption = 45;
1477
- const Figure = 46;
1478
- const Hr = 47;
1479
- const Li = 48;
1480
- const Ol = 49;
1481
- const P = 50;
1482
- const Pre = 51;
1483
- const A = 53;
1484
- const Abbr = 54;
1485
- const Br = 55;
1486
- const Cite = 56;
1487
- const Data = 57;
1488
- const Time = 58;
1489
- const Tfoot = 59;
1490
- const Ul = 60;
1491
- const Video = 61;
1492
- const TextArea = 62;
1493
- const Select = 63;
1494
- const Option = 64;
1495
- const Code = 65;
1496
- const Label = 66;
1497
- const Dt = 67;
1498
- const Iframe = 68;
1499
- const Main = 69;
1500
- const Strong = 70;
1501
- const Em = 71;
1502
- const Style = 72;
1503
- const Html = 73;
1504
- const Head = 74;
1505
- const Title = 75;
1506
- const Meta = 76;
1507
- const Canvas = 77;
1508
- const Form = 78;
1509
- const BlockQuote = 79;
1510
- const Quote = 80;
1511
- const Circle = 81;
1512
- const Defs = 82;
1513
- const Ellipse = 83;
1514
- const G = 84;
1515
- const Line = 85;
1516
- const Path = 86;
1517
- const Polygon = 87;
1518
- const Polyline = 88;
1519
- const Rect = 89;
1520
- const Svg = 90;
1521
- const Use = 91;
1522
- const Reference = 100;
1523
-
1524
- const VirtualDomElements = {
1525
- __proto__: null,
1526
- A,
1527
- Abbr,
1528
- Article,
1529
- Aside,
1530
- Audio,
1531
- BlockQuote,
1532
- Br,
1533
- Button: Button$1,
1534
- Canvas,
1535
- Circle,
1536
- Cite,
1537
- Code,
1538
- Col,
1539
- ColGroup,
1540
- Data,
1541
- Dd,
1542
- Defs,
1543
- Del,
1544
- Div,
1545
- Dl,
1546
- Dt,
1547
- Ellipse,
1548
- Em,
1549
- Figcaption,
1550
- Figure,
1551
- Footer,
1552
- Form,
1553
- G,
1554
- H1,
1555
- H2,
1556
- H3,
1557
- H4,
1558
- H5,
1559
- H6,
1560
- Head,
1561
- Header,
1562
- Hr,
1563
- Html,
1564
- I,
1565
- Iframe,
1566
- Img,
1567
- Input,
1568
- Ins,
1569
- Kbd,
1570
- Label,
1571
- Li,
1572
- Line,
1573
- Main,
1574
- Meta,
1575
- Nav,
1576
- Ol,
1577
- Option,
1578
- P,
1579
- Path,
1580
- Polygon,
1581
- Polyline,
1582
- Pre,
1583
- Quote,
1584
- Rect,
1585
- Reference,
1586
- Root,
1587
- Search,
1588
- Section,
1589
- Select,
1590
- Span,
1591
- Strong,
1592
- Style,
1593
- Svg,
1594
- TBody,
1595
- THead,
1596
- Table,
1597
- Td,
1598
- Text,
1599
- TextArea,
1600
- Tfoot,
1601
- Th,
1602
- Time,
1603
- Title,
1604
- Tr,
1605
- Ul,
1606
- Use,
1607
- Video
1622
+ const requiresSocket = () => {
1623
+ return false;
1624
+ };
1625
+ const preparePrettyError = error => {
1626
+ return error;
1627
+ };
1628
+ const logError = () => {
1629
+ // handled by renderer worker
1630
+ };
1631
+ const handleMessage = event => {
1632
+ const actualRequiresSocket = event?.target?.requiresSocket || requiresSocket;
1633
+ const actualExecute = event?.target?.execute || execute;
1634
+ return handleJsonRpcMessage(event.target, event.data, actualExecute, event.target._resolve, preparePrettyError, logError, actualRequiresSocket);
1608
1635
  };
1609
1636
 
1610
- const Button = 'event.button';
1611
- const ClientX = 'event.clientX';
1612
- const ClientY = 'event.clientY';
1613
- const TargetName = 'event.target.name';
1637
+ const handleIpc = ipc => {
1638
+ if ('addEventListener' in ipc) {
1639
+ ipc.addEventListener('message', handleMessage);
1640
+ } else if ('on' in ipc) {
1641
+ // deprecated
1642
+ ipc.on('message', handleMessage);
1643
+ }
1644
+ };
1614
1645
 
1615
- const ExtensionManagementWorker = 9006;
1616
- const RendererProcess = 1670;
1617
- const RendererWorker = 1;
1646
+ const listen$1 = async (module, options) => {
1647
+ const rawIpc = await module.listen(options);
1648
+ if (module.signal) {
1649
+ module.signal(rawIpc);
1650
+ }
1651
+ const ipc = module.wrap(rawIpc);
1652
+ return ipc;
1653
+ };
1618
1654
 
1619
- const SetDom2 = 'Viewlet.setDom2';
1620
- const SetFocusContext = 'Viewlet.setFocusContext';
1655
+ const create$2 = async ({
1656
+ commandMap,
1657
+ isMessagePortOpen = true,
1658
+ messagePort
1659
+ }) => {
1660
+ // TODO create a commandMap per rpc instance
1661
+ register(commandMap);
1662
+ const rawIpc = await IpcParentWithMessagePort$1.create({
1663
+ isMessagePortOpen,
1664
+ messagePort
1665
+ });
1666
+ const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
1667
+ handleIpc(ipc);
1668
+ const rpc = createRpc(ipc);
1669
+ messagePort.start();
1670
+ return rpc;
1671
+ };
1672
+
1673
+ const create$1 = async ({
1674
+ commandMap
1675
+ }) => {
1676
+ // TODO create a commandMap per rpc instance
1677
+ register(commandMap);
1678
+ const ipc = await listen$1(IpcChildWithModuleWorkerAndMessagePort$1);
1679
+ handleIpc(ipc);
1680
+ const rpc = createRpc(ipc);
1681
+ return rpc;
1682
+ };
1683
+
1684
+ const createMockRpc = ({
1685
+ commandMap
1686
+ }) => {
1687
+ const invocations = [];
1688
+ const invoke = (method, ...params) => {
1689
+ invocations.push([method, ...params]);
1690
+ const command = commandMap[method];
1691
+ if (!command) {
1692
+ throw new Error(`command ${method} not found`);
1693
+ }
1694
+ return command(...params);
1695
+ };
1696
+ const mockRpc = {
1697
+ invocations,
1698
+ invoke,
1699
+ invokeAndTransfer: invoke
1700
+ };
1701
+ return mockRpc;
1702
+ };
1703
+
1704
+ const rpcs = Object.create(null);
1705
+ const set$6 = (id, rpc) => {
1706
+ rpcs[id] = rpc;
1707
+ };
1708
+ const get$3 = id => {
1709
+ return rpcs[id];
1710
+ };
1711
+ const remove = id => {
1712
+ delete rpcs[id];
1713
+ };
1714
+
1715
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
1716
+ const create = rpcId => {
1717
+ return {
1718
+ async dispose() {
1719
+ const rpc = get$3(rpcId);
1720
+ await rpc.dispose();
1721
+ },
1722
+ // @ts-ignore
1723
+ invoke(method, ...params) {
1724
+ const rpc = get$3(rpcId);
1725
+ // @ts-ignore
1726
+ return rpc.invoke(method, ...params);
1727
+ },
1728
+ // @ts-ignore
1729
+ invokeAndTransfer(method, ...params) {
1730
+ const rpc = get$3(rpcId);
1731
+ // @ts-ignore
1732
+ return rpc.invokeAndTransfer(method, ...params);
1733
+ },
1734
+ registerMockRpc(commandMap) {
1735
+ const mockRpc = createMockRpc({
1736
+ commandMap
1737
+ });
1738
+ set$6(rpcId, mockRpc);
1739
+ // @ts-ignore
1740
+ mockRpc[Symbol.dispose] = () => {
1741
+ remove(rpcId);
1742
+ };
1743
+ // @ts-ignore
1744
+ return mockRpc;
1745
+ },
1746
+ set(rpc) {
1747
+ set$6(rpcId, rpc);
1748
+ }
1749
+ };
1750
+ };
1621
1751
 
1622
1752
  const {
1623
1753
  invoke: invoke$3,
@@ -1794,12 +1924,6 @@ const getNotificationsStatusBarItem = (enabled, count = 0) => {
1794
1924
  }];
1795
1925
  };
1796
1926
 
1797
- const ProblemsErrorIcon = 'ProblemsErrorIcon';
1798
- const ProblemsWarningIcon = 'ProblemsWarningIcon';
1799
- const StatusBarItem = 'StatusBarItem';
1800
- const StatusBarItemsLeft = 'StatusBarItemsLeft';
1801
- const StatusBarItemsRight = 'StatusBarItemsRight';
1802
-
1803
1927
  const getProblemsAriaLabel = (errorCount, warningCount) => {
1804
1928
  const parts = [];
1805
1929
  if (errorCount > 0) {
@@ -1981,121 +2105,6 @@ const handleItemsChanged = async state => {
1981
2105
  return handleExtensionsChanged(state);
1982
2106
  };
1983
2107
 
1984
- const mergeClassNames = (...classNames) => {
1985
- return classNames.filter(Boolean).join(' ');
1986
- };
1987
-
1988
- const text = data => {
1989
- return {
1990
- childCount: 0,
1991
- text: data,
1992
- type: Text
1993
- };
1994
- };
1995
-
1996
- new Set(Object.values(VirtualDomElements));
1997
-
1998
- const HandleContextMenu = 2;
1999
- const HandleClick = 11;
2000
-
2001
- const getTextVirtualDom = (element, name) => {
2002
- return [{
2003
- childCount: 1,
2004
- className: 'StatusBarItemLabel',
2005
- name,
2006
- type: Span
2007
- }, text(element.value)];
2008
- };
2009
- const getIconVirtualDom = (element, name) => {
2010
- return [{
2011
- childCount: 0,
2012
- className: mergeClassNames(MaskIcon, 'StatusBarIcon', element.value, element.spinning ? 'Spinning' : ''),
2013
- name,
2014
- type: Div
2015
- }];
2016
- };
2017
- const getStatusBarItemElementVirtualDom = (element, name) => {
2018
- if (element.type === 'text') {
2019
- return getTextVirtualDom(element, name);
2020
- }
2021
- if (element.type === 'icon') {
2022
- return getIconVirtualDom(element, name);
2023
- }
2024
- return [];
2025
- };
2026
-
2027
- const getStatusBarItemVirtualDom = statusBarItem => {
2028
- const {
2029
- ariaLabel,
2030
- elements,
2031
- name,
2032
- tooltip
2033
- } = statusBarItem;
2034
- const elementNodes = elements.flatMap(element => getStatusBarItemElementVirtualDom(element, name));
2035
- const buttonNode = {
2036
- ariaLabel,
2037
- childCount: elements.length,
2038
- className: StatusBarItem,
2039
- name,
2040
- tabIndex: -1,
2041
- title: tooltip,
2042
- type: Button$1
2043
- };
2044
- return [buttonNode, ...elementNodes];
2045
- };
2046
-
2047
- const getStatusBarItemsVirtualDom = (items, className) => {
2048
- if (items.length === 0) {
2049
- return [];
2050
- }
2051
- return [{
2052
- childCount: items.length,
2053
- className,
2054
- type: Div
2055
- }, ...items.flatMap(getStatusBarItemVirtualDom)];
2056
- };
2057
-
2058
- const emptyStatusBarItemsLeftDom = [{
2059
- childCount: 0,
2060
- className: StatusBarItemsLeft,
2061
- type: Div
2062
- }];
2063
- const getStatusBarItemsLeftDom = statusBarItemsLeft => {
2064
- if (statusBarItemsLeft.length === 0) {
2065
- return emptyStatusBarItemsLeftDom;
2066
- }
2067
- return getStatusBarItemsVirtualDom(statusBarItemsLeft, StatusBarItemsLeft);
2068
- };
2069
-
2070
- const getStatusBarItemsRightDom = statusBarItemsRight => {
2071
- return getStatusBarItemsVirtualDom(statusBarItemsRight, StatusBarItemsRight);
2072
- };
2073
-
2074
- const getChildCount = rightCount => {
2075
- return rightCount > 0 ? 2 : 1;
2076
- };
2077
- const getStatusBarVirtualDom = (statusBarItemsLeft, statusBarItemsRight) => {
2078
- const dom = [{
2079
- childCount: getChildCount(statusBarItemsRight.length),
2080
- className: 'StatusBar',
2081
- onClick: HandleClick,
2082
- onContextMenu: HandleContextMenu,
2083
- role: Status,
2084
- type: Div
2085
- }, ...getStatusBarItemsLeftDom(statusBarItemsLeft), ...getStatusBarItemsRightDom(statusBarItemsRight)];
2086
- return dom;
2087
- };
2088
-
2089
- const renderItems = (oldState, newState) => {
2090
- const {
2091
- statusBarItemsLeft,
2092
- statusBarItemsRight,
2093
- uid
2094
- } = newState;
2095
- const dom = getStatusBarVirtualDom(statusBarItemsLeft, statusBarItemsRight);
2096
- return [SetDom2, uid, dom];
2097
- };
2098
-
2099
2108
  const renderIncremental = (oldState, newState) => {
2100
2109
  return renderItems(oldState, newState);
2101
2110
  };
@@ -2489,6 +2498,23 @@ const saveState = state => {
2489
2498
  };
2490
2499
  };
2491
2500
 
2501
+ const applyComponentState = (currentState, state) => {
2502
+ if (!state || typeof state !== 'object' || Array.isArray(state)) {
2503
+ throw new TypeError('Status Bar state must be an object');
2504
+ }
2505
+ const {
2506
+ uid
2507
+ } = state;
2508
+ const {
2509
+ uid: currentUid
2510
+ } = currentState;
2511
+ if (uid !== currentUid) {
2512
+ throw new Error(`Status Bar state uid must remain ${currentUid}`);
2513
+ }
2514
+ return state;
2515
+ };
2516
+ const setComponentState = wrapCommand(applyComponentState);
2517
+
2492
2518
  const handleDirectMessagePort = (port, setAsRendererProcess = true) => handleMessagePort(port, commandMap, setAsRendererProcess);
2493
2519
  const activateOnWorkspaceChange = wrapCommand(handleWorkspaceChange);
2494
2520
  const refreshExtensionItems = wrapSerialCommand(handleItemsChanged);
@@ -2500,6 +2526,8 @@ const commandMap = {
2500
2526
  'StatusBar.create': create$7,
2501
2527
  'StatusBar.diff2': diff2,
2502
2528
  'StatusBar.getCommandIds': getCommandIds,
2529
+ 'StatusBar.getComponentDom': getComponentDom,
2530
+ 'StatusBar.getComponentState': getComponentState,
2503
2531
  'StatusBar.handleChange': wrapSerialCommand(handleItemsChanged),
2504
2532
  'StatusBar.handleClick': wrapCommand(handleClick),
2505
2533
  'StatusBar.handleContextMenu': wrapCommand(handleContextMenu),
@@ -2519,6 +2547,7 @@ const commandMap = {
2519
2547
  'StatusBar.renderEventListeners': renderEventListeners,
2520
2548
  'StatusBar.resize': wrapCommand(resize),
2521
2549
  'StatusBar.saveState': wrapGetter(saveState),
2550
+ 'StatusBar.setComponentState': setComponentState,
2522
2551
  'StatusBar.terminate': terminate
2523
2552
  };
2524
2553
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/status-bar-worker",
3
- "version": "3.26.2",
3
+ "version": "3.28.0",
4
4
  "description": "Status Bar Worker",
5
5
  "repository": {
6
6
  "type": "git",