@lvce-editor/title-bar-worker 1.3.0 → 1.4.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.
package/README.md CHANGED
@@ -1,3 +1,16 @@
1
1
  # Title Bar Worker
2
2
 
3
3
  Webworker for the title bar functionality in LVCE Editor.
4
+
5
+ ## Contributing
6
+
7
+ ```sh
8
+ git clone git@github.com:lvce-editor/title-bar-worker.git &&
9
+ cd text-search-worker &&
10
+ npm ci &&
11
+ npm test
12
+ ```
13
+
14
+ ## Gitpod
15
+
16
+ [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/lvce-editor/title-bar-worker)
@@ -868,6 +868,7 @@ const Menu$1 = 'menu';
868
868
  const MenuBar = 'menubar';
869
869
  const MenuItem$1 = 'menuitem';
870
870
  const MenuItemCheckBox = 'menuitemcheckbox';
871
+ const None$1 = 'none';
871
872
  const Separator$1 = 'separator';
872
873
 
873
874
  const Menu = 'Menu';
@@ -1184,9 +1185,12 @@ const parseKey = rawKey => {
1184
1185
  };
1185
1186
  };
1186
1187
 
1188
+ const Button = 1;
1187
1189
  const Div = 4;
1188
1190
  const Span = 8;
1189
1191
  const Text = 12;
1192
+ const I = 16;
1193
+ const Img = 17;
1190
1194
 
1191
1195
  const text = data => {
1192
1196
  return {
@@ -1637,98 +1641,6 @@ const getKeyBindings = () => {
1637
1641
  }];
1638
1642
  };
1639
1643
 
1640
- const getFontString = (fontWeight, fontSize, fontFamily) => {
1641
- return `${fontWeight} ${fontSize}px ${fontFamily}`;
1642
- };
1643
-
1644
- const state$1 = {
1645
- ctx: undefined
1646
- };
1647
- const getOrCreate = createCtx => {
1648
- if (state$1.ctx) {
1649
- return state$1.ctx;
1650
- }
1651
- state$1.ctx = createCtx();
1652
- return state$1.ctx;
1653
- };
1654
-
1655
- const createCtx = () => {
1656
- const canvas = new OffscreenCanvas(0, 0);
1657
- const ctx = /** @type {OffscreenCanvasRenderingContext2D} */canvas.getContext('2d');
1658
- if (!ctx) {
1659
- throw new Error('Failed to get canvas context 2d');
1660
- }
1661
- return ctx;
1662
- };
1663
- const getContext = () => {
1664
- const ctx = getOrCreate(createCtx);
1665
- return ctx;
1666
- };
1667
-
1668
- const px = value => {
1669
- return `${value}px`;
1670
- };
1671
-
1672
- const getLetterSpacingString = letterSpacing => {
1673
- return px(letterSpacing);
1674
- };
1675
- const measureTextWidth = (text, fontWeight, fontSize, fontFamily, letterSpacing, isMonoSpaceFont, charWidth) => {
1676
- string(text);
1677
- number(fontWeight);
1678
- number(fontSize);
1679
- string(fontFamily);
1680
- boolean(isMonoSpaceFont);
1681
- number(charWidth);
1682
- if (typeof letterSpacing !== 'number') {
1683
- throw new TypeError('letterSpacing must be of type number');
1684
- }
1685
- const letterSpacingString = getLetterSpacingString(letterSpacing);
1686
- const fontString = getFontString(fontWeight, fontSize, fontFamily);
1687
- const ctx = getContext();
1688
- // @ts-ignore
1689
- ctx.letterSpacing = letterSpacingString;
1690
- ctx.font = fontString;
1691
- const metrics = ctx.measureText(text);
1692
- const {
1693
- width
1694
- } = metrics;
1695
- return width;
1696
- };
1697
-
1698
- const measureTitleBarEntryWidth = (label, fontWeight, fontSize, fontFamily, letterSpacing) => {
1699
- const isMonospaceFont = false;
1700
- const charWidth = 0;
1701
- return measureTextWidth(label, fontWeight, fontSize, fontFamily, letterSpacing, isMonospaceFont, charWidth);
1702
- };
1703
-
1704
- const addWidths = (entries, labelPadding, fontWeight, fontSize, fontFamily, letterSpacing) => {
1705
- const withWidths = [];
1706
- for (const entry of entries) {
1707
- const textWidth = measureTitleBarEntryWidth(entry.label, fontWeight, fontSize, fontFamily, letterSpacing);
1708
- const width = textWidth + labelPadding * 2;
1709
- withWidths.push({
1710
- ...entry,
1711
- width
1712
- });
1713
- }
1714
- return withWidths;
1715
- };
1716
-
1717
- const loadContent = async (state, titleBarEntries) => {
1718
- const {
1719
- labelFontFamily,
1720
- labelFontSize,
1721
- labelFontWeight,
1722
- labelLetterSpacing,
1723
- labelPadding
1724
- } = state;
1725
- const withWidths = addWidths(titleBarEntries, labelPadding, labelFontWeight, labelFontSize, labelFontFamily, labelLetterSpacing);
1726
- return {
1727
- ...state,
1728
- titleBarEntries: withWidths
1729
- };
1730
- };
1731
-
1732
1644
  /**
1733
1645
  * @enum {string}
1734
1646
  */
@@ -1801,7 +1713,7 @@ const menuEntrySeparator = {
1801
1713
  };
1802
1714
 
1803
1715
  const id$9 = Edit;
1804
- const getMenuEntries$c = () => {
1716
+ const getMenuEntries$d = () => {
1805
1717
  return [{
1806
1718
  id: 'undo',
1807
1719
  label: undo(),
@@ -1842,7 +1754,7 @@ const getMenuEntries$c = () => {
1842
1754
 
1843
1755
  const MenuEntriesEdit = {
1844
1756
  __proto__: null,
1845
- getMenuEntries: getMenuEntries$c,
1757
+ getMenuEntries: getMenuEntries$d,
1846
1758
  id: id$9
1847
1759
  };
1848
1760
 
@@ -1885,7 +1797,7 @@ const platform = 1;
1885
1797
  const Web = 1;
1886
1798
 
1887
1799
  const id$8 = File;
1888
- const getMenuEntries$b = () => {
1800
+ const getMenuEntries$c = () => {
1889
1801
  const entries = [{
1890
1802
  id: 'newFile',
1891
1803
  label: newFile(),
@@ -1927,18 +1839,18 @@ const getMenuEntries$b = () => {
1927
1839
 
1928
1840
  const MenuEntriesFile = {
1929
1841
  __proto__: null,
1930
- getMenuEntries: getMenuEntries$b,
1842
+ getMenuEntries: getMenuEntries$c,
1931
1843
  id: id$8
1932
1844
  };
1933
1845
 
1934
1846
  const id$7 = Go;
1935
- const getMenuEntries$a = () => {
1847
+ const getMenuEntries$b = () => {
1936
1848
  return [];
1937
1849
  };
1938
1850
 
1939
1851
  const MenuEntriesGo = {
1940
1852
  __proto__: null,
1941
- getMenuEntries: getMenuEntries$a,
1853
+ getMenuEntries: getMenuEntries$b,
1942
1854
  id: id$7
1943
1855
  };
1944
1856
 
@@ -1956,7 +1868,7 @@ const isAutoUpdateSupported = () => {
1956
1868
  };
1957
1869
 
1958
1870
  const id$6 = Help;
1959
- const getMenuEntries$9 = async () => {
1871
+ const getMenuEntries$a = async () => {
1960
1872
  const autoUpdateSupported = isAutoUpdateSupported();
1961
1873
  const entries = [];
1962
1874
  if (autoUpdateSupported) {
@@ -1981,22 +1893,26 @@ const getMenuEntries$9 = async () => {
1981
1893
 
1982
1894
  const MenuEntriesHelp = {
1983
1895
  __proto__: null,
1984
- getMenuEntries: getMenuEntries$9,
1896
+ getMenuEntries: getMenuEntries$a,
1985
1897
  id: id$6
1986
1898
  };
1987
1899
 
1988
- const state = {
1900
+ const state$1 = {
1989
1901
  rpc: undefined
1990
1902
  };
1991
1903
  const invoke = (method, ...params) => {
1992
1904
  const {
1993
1905
  rpc
1994
- } = state;
1906
+ } = state$1;
1995
1907
  // @ts-ignore
1996
1908
  return rpc.invoke(method, ...params);
1997
1909
  };
1998
1910
  const setRpc = rpc => {
1999
- state.rpc = rpc;
1911
+ state$1.rpc = rpc;
1912
+ };
1913
+
1914
+ const getRecentlyOpened = () => {
1915
+ return invoke(/* RecentlyOpened.getRecentlyOpened */'RecentlyOpened.getRecentlyOpened');
2000
1916
  };
2001
1917
 
2002
1918
  const getTitle = uri => {
@@ -2016,11 +1932,8 @@ const toMenuItem = folder => {
2016
1932
  args: [folder]
2017
1933
  };
2018
1934
  };
2019
- const getRecentlyOpened = () => {
2020
- return invoke(/* RecentlyOpened.getRecentlyOpened */'RecentlyOpened.getRecentlyOpened');
2021
- };
2022
1935
  const id$5 = OpenRecent;
2023
- const getMenuEntries$8 = async () => {
1936
+ const getMenuEntries$9 = async () => {
2024
1937
  const allItems = await getRecentlyOpened();
2025
1938
  const itemsToShow = allItems.slice(0, MAX_MENU_RECENT_ENTRIES);
2026
1939
  const items = [];
@@ -2043,23 +1956,23 @@ const getMenuEntries$8 = async () => {
2043
1956
 
2044
1957
  const MenuEntriesOpenRecent = {
2045
1958
  __proto__: null,
2046
- getMenuEntries: getMenuEntries$8,
1959
+ getMenuEntries: getMenuEntries$9,
2047
1960
  id: id$5
2048
1961
  };
2049
1962
 
2050
1963
  const id$4 = Run;
2051
- const getMenuEntries$7 = () => {
1964
+ const getMenuEntries$8 = () => {
2052
1965
  return [];
2053
1966
  };
2054
1967
 
2055
1968
  const MenuEntriesRun = {
2056
1969
  __proto__: null,
2057
- getMenuEntries: getMenuEntries$7,
1970
+ getMenuEntries: getMenuEntries$8,
2058
1971
  id: id$4
2059
1972
  };
2060
1973
 
2061
1974
  const id$3 = Selection;
2062
- const getMenuEntries$6 = () => {
1975
+ const getMenuEntries$7 = () => {
2063
1976
  return [{
2064
1977
  id: 'selectAll',
2065
1978
  label: selectAll(),
@@ -2090,7 +2003,7 @@ const getMenuEntries$6 = () => {
2090
2003
 
2091
2004
  const MenuEntriesSelection = {
2092
2005
  __proto__: null,
2093
- getMenuEntries: getMenuEntries$6,
2006
+ getMenuEntries: getMenuEntries$7,
2094
2007
  id: id$3
2095
2008
  };
2096
2009
 
@@ -2105,7 +2018,7 @@ const newTerminal = () => {
2105
2018
  };
2106
2019
 
2107
2020
  const id$2 = Terminal;
2108
- const getMenuEntries$5 = () => {
2021
+ const getMenuEntries$6 = () => {
2109
2022
  return [{
2110
2023
  id: 'newTerminal',
2111
2024
  label: newTerminal(),
@@ -2117,7 +2030,7 @@ const getMenuEntries$5 = () => {
2117
2030
 
2118
2031
  const MenuEntriesTerminal = {
2119
2032
  __proto__: null,
2120
- getMenuEntries: getMenuEntries$5,
2033
+ getMenuEntries: getMenuEntries$6,
2121
2034
  id: id$2
2122
2035
  };
2123
2036
 
@@ -2146,7 +2059,7 @@ const help = () => {
2146
2059
  return i18nString(Help$1);
2147
2060
  };
2148
2061
 
2149
- const getMenuEntries$4 = () => {
2062
+ const getMenuEntries$5 = () => {
2150
2063
  return [{
2151
2064
  id: File,
2152
2065
  label: file(),
@@ -2185,7 +2098,7 @@ const getMenuEntries$4 = () => {
2185
2098
  }];
2186
2099
  };
2187
2100
 
2188
- const getMenuEntries$3 = () => {
2101
+ const getMenuEntries$4 = () => {
2189
2102
  return [{
2190
2103
  id: File,
2191
2104
  label: file(),
@@ -2216,34 +2129,219 @@ const getMenuEntries$3 = () => {
2216
2129
  const getFn = () => {
2217
2130
  switch (platform) {
2218
2131
  case Web:
2219
- return getMenuEntries$3;
2220
- default:
2221
2132
  return getMenuEntries$4;
2133
+ default:
2134
+ return getMenuEntries$5;
2222
2135
  }
2223
2136
  };
2224
2137
  const id$1 = TitleBar;
2225
- const getMenuEntries$2 = async () => {
2138
+ const getMenuEntries$3 = async () => {
2226
2139
  const fn = getFn();
2227
2140
  return fn();
2228
2141
  };
2229
2142
 
2230
2143
  const MenuEntriesTitleBar = {
2231
2144
  __proto__: null,
2232
- getMenuEntries: getMenuEntries$2,
2145
+ getMenuEntries: getMenuEntries$3,
2233
2146
  id: id$1
2234
2147
  };
2235
2148
 
2236
2149
  const id = View;
2237
- const getMenuEntries$1 = () => {
2150
+ const getMenuEntries$2 = () => {
2238
2151
  return [];
2239
2152
  };
2240
2153
 
2241
2154
  const MenuEntriesView = {
2242
2155
  __proto__: null,
2243
- getMenuEntries: getMenuEntries$1,
2156
+ getMenuEntries: getMenuEntries$2,
2244
2157
  id
2245
2158
  };
2246
2159
 
2160
+ const menus$1 = [MenuEntriesEdit, MenuEntriesFile, MenuEntriesGo, MenuEntriesHelp, MenuEntriesRun, MenuEntriesSelection, MenuEntriesTerminal, MenuEntriesTitleBar, MenuEntriesView, MenuEntriesOpenRecent];
2161
+ const getMenuIds = () => {
2162
+ return menus$1.map(menu => menu.id);
2163
+ };
2164
+ const getMenuEntries$1 = id => {
2165
+ const menu = menus$1.find(item => item.id === id);
2166
+ if (!menu) {
2167
+ return [];
2168
+ }
2169
+ return menu.getMenuEntries();
2170
+ };
2171
+
2172
+ const getIconVirtualDom = (icon, type = Div) => {
2173
+ return {
2174
+ type,
2175
+ className: `MaskIcon MaskIcon${icon}`,
2176
+ role: None$1,
2177
+ childCount: 0
2178
+ };
2179
+ };
2180
+
2181
+ const createTitleBarButton = button => {
2182
+ const {
2183
+ id,
2184
+ icon,
2185
+ label,
2186
+ onClick
2187
+ } = button;
2188
+ const dom = [{
2189
+ type: Button,
2190
+ className: `TitleBarButton TitleBarButton${id}`,
2191
+ ariaLabel: label,
2192
+ childCount: 1,
2193
+ onClick
2194
+ }, getIconVirtualDom(icon, I)];
2195
+ return dom;
2196
+ };
2197
+
2198
+ const getTitleBarButtonsVirtualDom = buttons => {
2199
+ const dom = [{
2200
+ type: Div,
2201
+ className: 'Viewlet TitleBarButtons',
2202
+ childCount: buttons.length
2203
+ }, ...buttons.flatMap(createTitleBarButton)];
2204
+ return dom;
2205
+ };
2206
+
2207
+ const getTitleBarIconVirtualDom = iconSrc => {
2208
+ return [{
2209
+ type: Div,
2210
+ className: 'Viewlet TitleBarIcon',
2211
+ childCount: 1
2212
+ }, {
2213
+ type: Img,
2214
+ className: 'TitleBarIconIcon',
2215
+ src: iconSrc,
2216
+ alt: '',
2217
+ childCount: 0
2218
+ }];
2219
+ };
2220
+
2221
+ const getTitleVirtualDom = title => {
2222
+ return [text(title)];
2223
+ };
2224
+
2225
+ const handleClickClose = async state => {
2226
+ await invoke('ElectronWindow.close');
2227
+ return state;
2228
+ };
2229
+
2230
+ const handleClickMinimize = async state => {
2231
+ await invoke('ElectronWindow.minimize');
2232
+ return state;
2233
+ };
2234
+
2235
+ const handleClickToggleMaximize = async state => {
2236
+ await (invoke('ElectronWindow.maximize'));
2237
+ return state;
2238
+ };
2239
+
2240
+ const handleClick$1 = (state, className) => {
2241
+ if (className.includes('Minimize')) {
2242
+ return handleClickMinimize(state);
2243
+ }
2244
+ if (className.includes('Maximize') || className.includes('Restore')) {
2245
+ return handleClickToggleMaximize(state);
2246
+ }
2247
+ if (className.includes('Close')) {
2248
+ return handleClickClose(state);
2249
+ }
2250
+ return state;
2251
+ };
2252
+
2253
+ const getFontString = (fontWeight, fontSize, fontFamily) => {
2254
+ return `${fontWeight} ${fontSize}px ${fontFamily}`;
2255
+ };
2256
+
2257
+ const state = {
2258
+ ctx: undefined
2259
+ };
2260
+ const getOrCreate = createCtx => {
2261
+ if (state.ctx) {
2262
+ return state.ctx;
2263
+ }
2264
+ state.ctx = createCtx();
2265
+ return state.ctx;
2266
+ };
2267
+
2268
+ const createCtx = () => {
2269
+ const canvas = new OffscreenCanvas(0, 0);
2270
+ const ctx = /** @type {OffscreenCanvasRenderingContext2D} */canvas.getContext('2d');
2271
+ if (!ctx) {
2272
+ throw new Error('Failed to get canvas context 2d');
2273
+ }
2274
+ return ctx;
2275
+ };
2276
+ const getContext = () => {
2277
+ const ctx = getOrCreate(createCtx);
2278
+ return ctx;
2279
+ };
2280
+
2281
+ const px = value => {
2282
+ return `${value}px`;
2283
+ };
2284
+
2285
+ const getLetterSpacingString = letterSpacing => {
2286
+ return px(letterSpacing);
2287
+ };
2288
+ const measureTextWidth = (text, fontWeight, fontSize, fontFamily, letterSpacing, isMonoSpaceFont, charWidth) => {
2289
+ string(text);
2290
+ number(fontWeight);
2291
+ number(fontSize);
2292
+ string(fontFamily);
2293
+ boolean(isMonoSpaceFont);
2294
+ number(charWidth);
2295
+ if (typeof letterSpacing !== 'number') {
2296
+ throw new TypeError('letterSpacing must be of type number');
2297
+ }
2298
+ const letterSpacingString = getLetterSpacingString(letterSpacing);
2299
+ const fontString = getFontString(fontWeight, fontSize, fontFamily);
2300
+ const ctx = getContext();
2301
+ // @ts-ignore
2302
+ ctx.letterSpacing = letterSpacingString;
2303
+ ctx.font = fontString;
2304
+ const metrics = ctx.measureText(text);
2305
+ const {
2306
+ width
2307
+ } = metrics;
2308
+ return width;
2309
+ };
2310
+
2311
+ const measureTitleBarEntryWidth = (label, fontWeight, fontSize, fontFamily, letterSpacing) => {
2312
+ const isMonospaceFont = false;
2313
+ const charWidth = 0;
2314
+ return measureTextWidth(label, fontWeight, fontSize, fontFamily, letterSpacing, isMonospaceFont, charWidth);
2315
+ };
2316
+
2317
+ const addWidths = (entries, labelPadding, fontWeight, fontSize, fontFamily, letterSpacing) => {
2318
+ const withWidths = [];
2319
+ for (const entry of entries) {
2320
+ const textWidth = measureTitleBarEntryWidth(entry.label, fontWeight, fontSize, fontFamily, letterSpacing);
2321
+ const width = textWidth + labelPadding * 2;
2322
+ withWidths.push({
2323
+ ...entry,
2324
+ width
2325
+ });
2326
+ }
2327
+ return withWidths;
2328
+ };
2329
+
2330
+ const loadContent = async (state, titleBarEntries) => {
2331
+ const {
2332
+ labelFontFamily,
2333
+ labelFontSize,
2334
+ labelFontWeight,
2335
+ labelLetterSpacing,
2336
+ labelPadding
2337
+ } = state;
2338
+ const withWidths = addWidths(titleBarEntries, labelPadding, labelFontWeight, labelFontSize, labelFontFamily, labelLetterSpacing);
2339
+ return {
2340
+ ...state,
2341
+ titleBarEntries: withWidths
2342
+ };
2343
+ };
2344
+
2247
2345
  const menus = [MenuEntriesEdit, MenuEntriesFile, MenuEntriesGo, MenuEntriesHelp, MenuEntriesRun, MenuEntriesSelection, MenuEntriesTerminal, MenuEntriesTitleBar, MenuEntriesView, MenuEntriesOpenRecent];
2248
2346
  const getMenus = () => {
2249
2347
  return menus;
@@ -2268,6 +2366,19 @@ const getMenuEntries = async (id, ...args) => {
2268
2366
  }
2269
2367
  };
2270
2368
 
2369
+ const renderEventListeners = () => {
2370
+ return [{
2371
+ name: 'handleClickMinimize',
2372
+ params: ['handleClickMinimize']
2373
+ }, {
2374
+ name: 'handleClickClose',
2375
+ params: ['handleClickClose']
2376
+ }, {
2377
+ name: 'handleClickToggleMaximize',
2378
+ params: ['handleClickToggleMaximize']
2379
+ }];
2380
+ };
2381
+
2271
2382
  const saveState = uid => {
2272
2383
  return {};
2273
2384
  };
@@ -2336,14 +2447,9 @@ const getTotalWidth = entries => {
2336
2447
  };
2337
2448
 
2338
2449
  // TODO lazyload menuEntries and use Command.execute (maybe)
2339
- const MENU_WIDTH = 150;
2340
2450
  const CONTEXT_MENU_ITEM_HEIGHT = 26;
2341
2451
  const CONTEXT_MENU_SEPARATOR_HEIGHT = 11;
2342
2452
  const CONTEXT_MENU_PADDING = 8;
2343
- const CONTEXT_MENU_WIDTH = 250;
2344
- const getMenuWidth = () => {
2345
- return CONTEXT_MENU_WIDTH;
2346
- };
2347
2453
  const getMenuHeight = items => {
2348
2454
  let height = CONTEXT_MENU_PADDING;
2349
2455
  for (const item of items) {
@@ -2359,6 +2465,13 @@ const getMenuHeight = items => {
2359
2465
  return height;
2360
2466
  };
2361
2467
 
2468
+ // TODO lazyload menuEntries and use Command.execute (maybe)
2469
+ const MENU_WIDTH = 150;
2470
+ const CONTEXT_MENU_WIDTH = 250;
2471
+ const getMenuWidth = () => {
2472
+ return CONTEXT_MENU_WIDTH;
2473
+ };
2474
+
2362
2475
  // TODO difference between focusing with mouse or keyboard
2363
2476
  // with mouse -> open submenu
2364
2477
  // with keyboard -> don't open submenu, only focus
@@ -2955,6 +3068,13 @@ const wrapCommand = fn => {
2955
3068
  };
2956
3069
 
2957
3070
  const commandMap = {
3071
+ 'TitleBar.getButtonsVirtualDom': getTitleBarButtonsVirtualDom,
3072
+ 'TitleBar.getIconVirtualDom': getTitleBarIconVirtualDom,
3073
+ 'TitleBar.getMenuEntries': getMenuEntries$1,
3074
+ 'TitleBar.getMenuIds': getMenuIds,
3075
+ 'TitleBar.getTitleVirtualDom': getTitleVirtualDom,
3076
+ 'TitleBar.handleButtonsClick': handleClick$1,
3077
+ 'TitleBar.renderEventListeners': renderEventListeners,
2958
3078
  'TitleBarMenuBar.closeMenu': closeMenu,
2959
3079
  'TitleBarMenuBar.create': create,
2960
3080
  'TitleBarMenuBar.focus': wrapCommand(focus),
@@ -2976,7 +3096,6 @@ const commandMap = {
2976
3096
  'TitleBarMenuBar.handleKeyEnd': wrapCommand(handleKeyEnd),
2977
3097
  'TitleBarMenuBar.handleKeyEnter': wrapCommand(handleKeyEnter),
2978
3098
  'TitleBarMenuBar.handleKeyEscape': wrapCommand(handleKeyEscape),
2979
- 'TitleBarMenuBar.saveState': saveState,
2980
3099
  'TitleBarMenuBar.handleKeyHome': wrapCommand(handleKeyHome),
2981
3100
  'TitleBarMenuBar.handleKeySpace': wrapCommand(handleKeySpace),
2982
3101
  'TitleBarMenuBar.handleMenuClick': wrapCommand(handleMenuClick),
@@ -2985,9 +3104,10 @@ const commandMap = {
2985
3104
  'TitleBarMenuBar.handleMouseOver': wrapCommand(handleMouseOver),
2986
3105
  'TitleBarMenuBar.loadContent': wrapCommand(loadContent),
2987
3106
  'TitleBarMenuBar.render': doRender,
3107
+ 'TitleBarMenuBar.saveState': saveState,
3108
+ 'TitleBarMenuBar.terminate': terminate,
2988
3109
  'TitleBarMenuBar.toggleIndex': wrapCommand(toggleIndex),
2989
- 'TitleBarMenuBar.toggleMenu': wrapCommand(toggleMenu),
2990
- 'TitleBarMenuBar.terminate': terminate
3110
+ 'TitleBarMenuBar.toggleMenu': wrapCommand(toggleMenu)
2991
3111
  };
2992
3112
 
2993
3113
  const listen = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/title-bar-worker",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Title Bar Worker",
5
5
  "repository": {
6
6
  "type": "git",