@lvce-editor/panel-worker 2.13.2 → 2.13.4

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.
@@ -96,6 +96,12 @@ const object = value => {
96
96
  throw new AssertionError('expected value to be of type object');
97
97
  }
98
98
  };
99
+ const number = value => {
100
+ const type = getType(value);
101
+ if (type !== Number$1) {
102
+ throw new AssertionError('expected value to be of type number');
103
+ }
104
+ };
99
105
  const string = value => {
100
106
  const type = getType(value);
101
107
  if (type !== String$1) {
@@ -1111,12 +1117,12 @@ const create$2 = rpcId => {
1111
1117
  };
1112
1118
  };
1113
1119
 
1114
- const Tab = 'tab';
1120
+ const Tab$1 = 'tab';
1115
1121
  const TabList = 'tablist';
1116
1122
  const ToolBar = 'toolbar';
1117
1123
 
1118
1124
  const Audio = 0;
1119
- const Button = 1;
1125
+ const Button$1 = 1;
1120
1126
  const Col = 2;
1121
1127
  const ColGroup = 3;
1122
1128
  const Div = 4;
@@ -1207,7 +1213,7 @@ const VirtualDomElements = {
1207
1213
  Audio,
1208
1214
  BlockQuote,
1209
1215
  Br,
1210
- Button,
1216
+ Button: Button$1,
1211
1217
  Canvas,
1212
1218
  Circle,
1213
1219
  Cite,
@@ -1284,8 +1290,18 @@ const VirtualDomElements = {
1284
1290
  Video
1285
1291
  };
1286
1292
 
1293
+ const Button = 'event.button';
1294
+ const ClientX = 'event.clientX';
1295
+ const ClientY = 'event.clientY';
1287
1296
  const TargetName = 'event.target.name';
1288
1297
 
1298
+ const Tab = 13;
1299
+
1300
+ const Separator = 1;
1301
+ const None = 0;
1302
+ const Checked = 2;
1303
+ const Unchecked = 3;
1304
+
1289
1305
  const RendererProcess = 1670;
1290
1306
  const RendererWorker = 1;
1291
1307
 
@@ -1300,6 +1316,13 @@ const {
1300
1316
  invoke: invoke$1,
1301
1317
  set: set$2
1302
1318
  } = create$2(RendererWorker);
1319
+ const showContextMenu2 = async (uid, menuId, x, y, args) => {
1320
+ number(uid);
1321
+ number(menuId);
1322
+ number(x);
1323
+ number(y);
1324
+ await invoke$1('ContextMenu.show2', uid, menuId, x, y, args);
1325
+ };
1303
1326
 
1304
1327
  const toCommandId = key => {
1305
1328
  const dotIndex = key.indexOf('.');
@@ -1560,12 +1583,14 @@ const create = (uid, uri, x, y, width, height, platform, assetDir) => {
1560
1583
  const state = {
1561
1584
  actionsUid: 0,
1562
1585
  assetDir,
1586
+ availableViews: [],
1563
1587
  badgeCounts: {},
1564
1588
  childUid: 0,
1565
1589
  currentViewletId: '',
1566
1590
  errorCount: 0,
1567
1591
  headerHeight: 35,
1568
1592
  height,
1593
+ hiddenViews: [],
1569
1594
  initial: true,
1570
1595
  maximized: false,
1571
1596
  platform,
@@ -1632,6 +1657,57 @@ const getCurrentViewletId = state => {
1632
1657
  return currentViewletId;
1633
1658
  };
1634
1659
 
1660
+ const menuEntrySeparator = {
1661
+ command: '',
1662
+ flags: Separator,
1663
+ id: 'separator',
1664
+ label: ''
1665
+ };
1666
+
1667
+ const getViewMenuItemFlags = (state, view) => {
1668
+ const {
1669
+ views
1670
+ } = state;
1671
+ return views.includes(view) ? Checked : Unchecked;
1672
+ };
1673
+ const getViewMenuEntry = (state, view) => {
1674
+ return {
1675
+ args: [view],
1676
+ command: 'Panel.toggleViewVisibility',
1677
+ flags: getViewMenuItemFlags(state, view),
1678
+ id: `panelTab.${view}`,
1679
+ label: view
1680
+ };
1681
+ };
1682
+ const getTabMenuEntries = state => {
1683
+ const {
1684
+ availableViews
1685
+ } = state;
1686
+ return [...availableViews.map(view => getViewMenuEntry(state, view)), menuEntrySeparator, {
1687
+ command: 'Layout.maximizePanel',
1688
+ flags: None,
1689
+ id: 'panel.maximize',
1690
+ label: 'Maximize Panel'
1691
+ }, {
1692
+ command: 'Layout.hidePanel',
1693
+ flags: None,
1694
+ id: 'panel.hide',
1695
+ label: 'Hide Panel'
1696
+ }];
1697
+ };
1698
+ const getMenuEntries = (state, props) => {
1699
+ switch (props.menuId) {
1700
+ case Tab:
1701
+ return getTabMenuEntries(state);
1702
+ default:
1703
+ return [];
1704
+ }
1705
+ };
1706
+
1707
+ const getMenuIds = () => {
1708
+ return [Tab];
1709
+ };
1710
+
1635
1711
  const state = {
1636
1712
  connected: false
1637
1713
  };
@@ -1713,6 +1789,22 @@ const handleProblemsSummaryChange = (state, summary) => {
1713
1789
  return setBadgeCount(state, Problems, count);
1714
1790
  };
1715
1791
 
1792
+ const show2 = async (uid, menuId, x, y, args) => {
1793
+ await showContextMenu2(uid, menuId, x, y, args);
1794
+ };
1795
+
1796
+ const handleTabContextMenu = async (state, _button, x, y) => {
1797
+ number(x);
1798
+ number(y);
1799
+ const {
1800
+ uid
1801
+ } = state;
1802
+ await show2(uid, Tab, x, y, {
1803
+ menuId: Tab
1804
+ });
1805
+ return state;
1806
+ };
1807
+
1716
1808
  const handleClickClose = async state => {
1717
1809
  await invoke$1('Layout.hidePanel');
1718
1810
  return state;
@@ -1862,14 +1954,21 @@ const loadContent = (state, savedState, workspaceUri = '') => {
1862
1954
  currentViewletId: activeViewletId
1863
1955
  } = state;
1864
1956
  const savedViewletId = getSavedViewletId(savedState);
1865
- const views = getPanelViews(workspaceUri);
1957
+ const availableViews = getPanelViews(workspaceUri);
1958
+ const hiddenViews = (savedState?.hiddenViews || []).filter(view => availableViews.includes(view));
1959
+ let views = availableViews.filter(view => !hiddenViews.includes(view));
1960
+ if (views.length === 0 && availableViews.length > 0) {
1961
+ views = [availableViews[0]];
1962
+ }
1866
1963
  let currentViewletId = savedViewletId;
1867
1964
  if (!views.includes(currentViewletId)) {
1868
1965
  currentViewletId = views.includes(activeViewletId) ? activeViewletId : views[0];
1869
1966
  }
1870
1967
  const loaded = {
1871
1968
  ...state,
1969
+ availableViews,
1872
1970
  currentViewletId,
1971
+ hiddenViews: availableViews.filter(view => !views.includes(view)),
1873
1972
  views
1874
1973
  };
1875
1974
  return openViewlet(loaded, currentViewletId);
@@ -1891,13 +1990,24 @@ const selectRaw = async (state, rawIndex) => {
1891
1990
 
1892
1991
  const toggleView = async (state, name, uri = '') => {
1893
1992
  const {
1993
+ availableViews,
1894
1994
  currentViewletId,
1995
+ hiddenViews,
1895
1996
  views
1896
1997
  } = state;
1897
- const index = views.indexOf(name);
1898
- if (index === -1) {
1998
+ if (!availableViews.includes(name)) {
1899
1999
  return state;
1900
2000
  }
2001
+ if (!views.includes(name)) {
2002
+ const nextHiddenViews = hiddenViews.filter(view => view !== name);
2003
+ const nextViews = availableViews.filter(view => !nextHiddenViews.includes(view));
2004
+ return selectIndex({
2005
+ ...state,
2006
+ hiddenViews: nextHiddenViews,
2007
+ views: nextViews
2008
+ }, nextViews.indexOf(name), uri);
2009
+ }
2010
+ const index = views.indexOf(name);
1901
2011
  if (name === currentViewletId) {
1902
2012
  return state;
1903
2013
  }
@@ -2217,6 +2327,7 @@ const HandleClickMaximize = 'handleClickMaximize';
2217
2327
  const HandleClickUnmaximize = 'handleClickUnmaximize';
2218
2328
  const HandleClickSelectTab = 'HandleClickSelectTab';
2219
2329
  const HandleClickTab = 'HandleClickTab';
2330
+ const HandleTabContextMenu = 'HandleTabContextMenu';
2220
2331
 
2221
2332
  const emptyObject = {};
2222
2333
  const i18nString = (key, placeholders = emptyObject) => {
@@ -2268,7 +2379,7 @@ const getGlobalActionsDom = state => {
2268
2379
  className: IconButton,
2269
2380
  onClick: maximizeOnClick,
2270
2381
  title: maximizeLabel,
2271
- type: Button
2382
+ type: Button$1
2272
2383
  }, {
2273
2384
  childCount: 0,
2274
2385
  className: mergeClassNames(MaskIcon, maximizeIcon),
@@ -2279,7 +2390,7 @@ const getGlobalActionsDom = state => {
2279
2390
  className: IconButton,
2280
2391
  onClick: HandleClickClose,
2281
2392
  title: close(),
2282
- type: Button
2393
+ type: Button$1
2283
2394
  }, closeIconNode];
2284
2395
  };
2285
2396
 
@@ -2306,8 +2417,9 @@ const createPanelTab = (tab, badgeCount, isSelected) => {
2306
2417
  className,
2307
2418
  name: tab,
2308
2419
  onClick: HandleClickTab,
2309
- role: Tab,
2310
- type: Button
2420
+ onContextMenu: HandleTabContextMenu,
2421
+ role: Tab$1,
2422
+ type: Button$1
2311
2423
  };
2312
2424
  const dom = [tabDom, text(label)];
2313
2425
  if (badgeCount) {
@@ -2452,6 +2564,10 @@ const renderEventListeners = () => {
2452
2564
  }, {
2453
2565
  name: HandleClickTab,
2454
2566
  params: ['selectName', TargetName]
2567
+ }, {
2568
+ name: HandleTabContextMenu,
2569
+ params: ['handleTabContextMenu', Button, ClientX, ClientY],
2570
+ preventDefault: true
2455
2571
  }];
2456
2572
  };
2457
2573
 
@@ -2480,11 +2596,13 @@ const resize = async (state, dimensions) => {
2480
2596
  const saveState = async state => {
2481
2597
  const {
2482
2598
  childUid,
2483
- currentViewletId
2599
+ currentViewletId,
2600
+ hiddenViews
2484
2601
  } = state;
2485
2602
  await saveViewletState(childUid, currentViewletId);
2486
2603
  return {
2487
- currentViewletId
2604
+ currentViewletId,
2605
+ hiddenViews
2488
2606
  };
2489
2607
  };
2490
2608
 
@@ -2519,6 +2637,49 @@ const applyComponentState = (currentState, state) => {
2519
2637
  };
2520
2638
  const setComponentState = wrapCommand(applyComponentState);
2521
2639
 
2640
+ const toggleViewVisibility = async (state, name) => {
2641
+ const {
2642
+ availableViews,
2643
+ currentViewletId,
2644
+ hiddenViews,
2645
+ views
2646
+ } = state;
2647
+ if (!availableViews.includes(name)) {
2648
+ return state;
2649
+ }
2650
+ if (!views.includes(name)) {
2651
+ const nextHiddenViews = hiddenViews.filter(view => view !== name);
2652
+ const nextViews = availableViews.filter(view => !nextHiddenViews.includes(view));
2653
+ const nextState = {
2654
+ ...state,
2655
+ hiddenViews: nextHiddenViews,
2656
+ selectedIndex: nextViews.indexOf(currentViewletId),
2657
+ views: nextViews
2658
+ };
2659
+ if (views.length === 0) {
2660
+ return openViewlet(nextState, name);
2661
+ }
2662
+ return nextState;
2663
+ }
2664
+ if (views.length <= 1) {
2665
+ return state;
2666
+ }
2667
+ const nextViews = views.filter(view => view !== name);
2668
+ const nextHiddenViews = availableViews.filter(view => !nextViews.includes(view));
2669
+ const nextState = {
2670
+ ...state,
2671
+ hiddenViews: nextHiddenViews,
2672
+ selectedIndex: nextViews.indexOf(currentViewletId),
2673
+ views: nextViews
2674
+ };
2675
+ if (currentViewletId !== name) {
2676
+ return nextState;
2677
+ }
2678
+ const index = views.indexOf(name);
2679
+ const nextView = nextViews[Math.min(index, nextViews.length - 1)];
2680
+ return openViewlet(nextState, nextView);
2681
+ };
2682
+
2522
2683
  const handleDirectMessagePort = (port, setAsRendererProcess = true) => handleMessagePort(port, commandMap, setAsRendererProcess);
2523
2684
  const commandMap = {
2524
2685
  'Panel.create': create,
@@ -2526,6 +2687,9 @@ const commandMap = {
2526
2687
  'Panel.getCommandIds': getCommandIds,
2527
2688
  'Panel.getComponentState': getComponentState,
2528
2689
  'Panel.getCurrentViewletId': wrapGetter(getCurrentViewletId),
2690
+ 'Panel.getMenuEntries': wrapGetter(getMenuEntries),
2691
+ 'Panel.getMenuEntries2': wrapGetter(getMenuEntries),
2692
+ 'Panel.getMenuIds': getMenuIds,
2529
2693
  'Panel.handleBlur': wrapCommand(handleBlur),
2530
2694
  'Panel.handleClickClose': wrapCommand(handleClickClose),
2531
2695
  'Panel.handleClickMaximize': wrapCommand(handleClickMaximize),
@@ -2534,6 +2698,7 @@ const commandMap = {
2534
2698
  'Panel.handleMessagePort': handleDirectMessagePort,
2535
2699
  'Panel.handlePanelLayoutChanged': wrapCommand(handlePanelLayoutChanged),
2536
2700
  'Panel.handleProblemsSummaryChange': wrapCommand(handleProblemsSummaryChange),
2701
+ 'Panel.handleTabContextMenu': wrapCommand(handleTabContextMenu),
2537
2702
  'Panel.loadContent': wrapCommand(loadContent),
2538
2703
  'Panel.openViewlet': wrapCommand(openViewlet),
2539
2704
  'Panel.render2': render2,
@@ -2546,7 +2711,8 @@ const commandMap = {
2546
2711
  'Panel.setBadgeCount': wrapCommand(setBadgeCount),
2547
2712
  'Panel.setComponentState': setComponentState,
2548
2713
  'Panel.terminate': terminate,
2549
- 'Panel.toggleView': wrapCommand(toggleView)
2714
+ 'Panel.toggleView': wrapCommand(toggleView),
2715
+ 'Panel.toggleViewVisibility': wrapCommand(toggleViewVisibility)
2550
2716
  };
2551
2717
 
2552
2718
  const listen = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/panel-worker",
3
- "version": "2.13.2",
3
+ "version": "2.13.4",
4
4
  "description": "Panel Worker",
5
5
  "repository": {
6
6
  "type": "git",