@lvce-editor/editor-worker 18.27.0 → 19.1.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.
@@ -13,13 +13,13 @@ const create$j = () => {
13
13
  },
14
14
  diff(uid, modules, numbers) {
15
15
  const {
16
- newState,
17
- oldState
16
+ oldState,
17
+ scheduledState
18
18
  } = states[uid];
19
19
  const diffResult = [];
20
20
  for (let i = 0; i < modules.length; i++) {
21
21
  const fn = modules[i];
22
- if (!fn(oldState, newState)) {
22
+ if (!fn(oldState, scheduledState)) {
23
23
  diffResult.push(numbers[i]);
24
24
  }
25
25
  }
@@ -37,17 +37,16 @@ const create$j = () => {
37
37
  return ids;
38
38
  },
39
39
  getKeys() {
40
- return Object.keys(states).map(key => {
41
- return Number.parseFloat(key);
42
- });
40
+ return Object.keys(states).map(Number);
43
41
  },
44
42
  registerCommands(commandMap) {
45
43
  Object.assign(commandMapRef, commandMap);
46
44
  },
47
- set(uid, oldState, newState) {
45
+ set(uid, oldState, newState, scheduledState) {
48
46
  states[uid] = {
49
47
  newState,
50
- oldState
48
+ oldState,
49
+ scheduledState: scheduledState ?? newState
51
50
  };
52
51
  },
53
52
  wrapCommand(fn) {
@@ -67,7 +66,8 @@ const create$j = () => {
67
66
  };
68
67
  states[uid] = {
69
68
  newState: latestNew,
70
- oldState: latestOld.oldState
69
+ oldState: latestOld.oldState,
70
+ scheduledState: latestNew
71
71
  };
72
72
  };
73
73
  return wrapped;
@@ -104,7 +104,8 @@ const create$j = () => {
104
104
  };
105
105
  states[uid] = {
106
106
  newState: latestNew,
107
- oldState: latestOld.oldState
107
+ oldState: latestOld.oldState,
108
+ scheduledState: latestNew
108
109
  };
109
110
  return {
110
111
  error
@@ -673,7 +674,7 @@ const execute$1 = (command, ...args) => {
673
674
 
674
675
  const Two$1 = '2.0';
675
676
  const callbacks = Object.create(null);
676
- const get$8 = id => {
677
+ const get$9 = id => {
677
678
  return callbacks[id];
678
679
  };
679
680
  const remove$9 = id => {
@@ -822,7 +823,7 @@ const warn$1 = (...args) => {
822
823
  console.warn(...args);
823
824
  };
824
825
  const resolve = (id, response) => {
825
- const fn = get$8(id);
826
+ const fn = get$9(id);
826
827
  if (!fn) {
827
828
  console.log(response);
828
829
  warn$1(`callback ${id} may already be disposed`);
@@ -1224,10 +1225,10 @@ const createMockRpc = ({
1224
1225
  };
1225
1226
 
1226
1227
  const rpcs = Object.create(null);
1227
- const set$e = (id, rpc) => {
1228
+ const set$f = (id, rpc) => {
1228
1229
  rpcs[id] = rpc;
1229
1230
  };
1230
- const get$7 = id => {
1231
+ const get$8 = id => {
1231
1232
  return rpcs[id];
1232
1233
  };
1233
1234
  const remove$8 = id => {
@@ -1238,18 +1239,18 @@ const remove$8 = id => {
1238
1239
  const create$9 = rpcId => {
1239
1240
  return {
1240
1241
  async dispose() {
1241
- const rpc = get$7(rpcId);
1242
+ const rpc = get$8(rpcId);
1242
1243
  await rpc.dispose();
1243
1244
  },
1244
1245
  // @ts-ignore
1245
1246
  invoke(method, ...params) {
1246
- const rpc = get$7(rpcId);
1247
+ const rpc = get$8(rpcId);
1247
1248
  // @ts-ignore
1248
1249
  return rpc.invoke(method, ...params);
1249
1250
  },
1250
1251
  // @ts-ignore
1251
1252
  invokeAndTransfer(method, ...params) {
1252
- const rpc = get$7(rpcId);
1253
+ const rpc = get$8(rpcId);
1253
1254
  // @ts-ignore
1254
1255
  return rpc.invokeAndTransfer(method, ...params);
1255
1256
  },
@@ -1257,7 +1258,7 @@ const create$9 = rpcId => {
1257
1258
  const mockRpc = createMockRpc({
1258
1259
  commandMap
1259
1260
  });
1260
- set$e(rpcId, mockRpc);
1261
+ set$f(rpcId, mockRpc);
1261
1262
  // @ts-ignore
1262
1263
  mockRpc[Symbol.dispose] = () => {
1263
1264
  remove$8(rpcId);
@@ -1266,7 +1267,7 @@ const create$9 = rpcId => {
1266
1267
  return mockRpc;
1267
1268
  },
1268
1269
  set(rpc) {
1269
- set$e(rpcId, rpc);
1270
+ set$f(rpcId, rpc);
1270
1271
  }
1271
1272
  };
1272
1273
  };
@@ -1352,18 +1353,18 @@ const FocusEditorText$1 = 12;
1352
1353
 
1353
1354
  const {
1354
1355
  invoke: invoke$f,
1355
- set: set$d
1356
+ set: set$e
1356
1357
  } = create$9(ExtensionHostWorker);
1357
1358
 
1358
1359
  const ExtensionHost = {
1359
1360
  __proto__: null,
1360
1361
  invoke: invoke$f,
1361
- set: set$d
1362
+ set: set$e
1362
1363
  };
1363
1364
 
1364
1365
  const {
1365
1366
  invoke: invoke$e,
1366
- set: set$c
1367
+ set: set$d
1367
1368
  } = create$9(ExtensionManagementWorker);
1368
1369
  const getLanguages$1 = (platform, assetDir) => {
1369
1370
  return invoke$e('Extensions.getLanguages', platform, assetDir);
@@ -1371,7 +1372,7 @@ const getLanguages$1 = (platform, assetDir) => {
1371
1372
 
1372
1373
  const {
1373
1374
  invoke: invoke$d,
1374
- set: set$b
1375
+ set: set$c
1375
1376
  } = create$9(OpenerWorker);
1376
1377
  const openUrl = async (url, platform) => {
1377
1378
  return invoke$d('Open.openUrl', url, platform);
@@ -1379,13 +1380,13 @@ const openUrl = async (url, platform) => {
1379
1380
 
1380
1381
  const {
1381
1382
  invoke: invoke$c,
1382
- set: set$a
1383
+ set: set$b
1383
1384
  } = create$9(IconThemeWorker);
1384
1385
 
1385
1386
  const {
1386
1387
  invoke: invoke$b,
1387
1388
  invokeAndTransfer,
1388
- set: set$9
1389
+ set: set$a
1389
1390
  } = create$9(RendererWorker$1);
1390
1391
  const showContextMenu2 = async (uid, menuId, x, y, args) => {
1391
1392
  number(uid);
@@ -1450,20 +1451,20 @@ const RendererWorker = {
1450
1451
  sendMessagePortToOpenerWorker,
1451
1452
  sendMessagePortToSyntaxHighlightingWorker: sendMessagePortToSyntaxHighlightingWorker$1,
1452
1453
  sendMessagePortToTextMeasurementWorker,
1453
- set: set$9,
1454
+ set: set$a,
1454
1455
  showContextMenu2,
1455
1456
  writeClipBoardText
1456
1457
  };
1457
1458
 
1458
1459
  const {
1459
1460
  invoke: invoke$a,
1460
- set: set$8
1461
+ set: set$9
1461
1462
  } = create$9(MarkdownWorker);
1462
1463
 
1463
1464
  const SyntaxHighlightingWorker = {
1464
1465
  __proto__: null,
1465
1466
  invoke: invoke$a,
1466
- set: set$8
1467
+ set: set$9
1467
1468
  };
1468
1469
 
1469
1470
  const createLazyRpc = rpcId => {
@@ -1471,7 +1472,7 @@ const createLazyRpc = rpcId => {
1471
1472
  let factory;
1472
1473
  const createRpc = async () => {
1473
1474
  const rpc = await factory();
1474
- set$e(rpcId, rpc);
1475
+ set$f(rpcId, rpc);
1475
1476
  };
1476
1477
  const ensureRpc = async () => {
1477
1478
  if (!rpcPromise) {
@@ -1482,12 +1483,12 @@ const createLazyRpc = rpcId => {
1482
1483
  return {
1483
1484
  async invoke(method, ...params) {
1484
1485
  await ensureRpc();
1485
- const rpc = get$7(rpcId);
1486
+ const rpc = get$8(rpcId);
1486
1487
  return rpc.invoke(method, ...params);
1487
1488
  },
1488
1489
  async invokeAndTransfer(method, ...params) {
1489
1490
  await ensureRpc();
1490
- const rpc = get$7(rpcId);
1491
+ const rpc = get$8(rpcId);
1491
1492
  return rpc.invokeAndTransfer(method, ...params);
1492
1493
  },
1493
1494
  setFactory(value) {
@@ -1573,14 +1574,14 @@ const {
1573
1574
  registerCommands,
1574
1575
  wrapGetter
1575
1576
  } = editorStates;
1576
- const get$6 = id => {
1577
+ const get$7 = id => {
1577
1578
  return editorStates.get(id);
1578
1579
  };
1579
1580
  const getKeys$2 = () => {
1580
1581
  const keys = editorStates.getKeys();
1581
1582
  return keys.map(String);
1582
1583
  };
1583
- const set$7 = (id, oldEditor, newEditor) => {
1584
+ const set$8 = (id, oldEditor, newEditor) => {
1584
1585
  editorStates.set(id, oldEditor, newEditor);
1585
1586
  };
1586
1587
 
@@ -1671,7 +1672,7 @@ const createEditor2 = (id, uri, x, y, width, height, platform, assetDir) => {
1671
1672
  x,
1672
1673
  y
1673
1674
  };
1674
- set$7(id, editor, editor);
1675
+ set$8(id, editor, editor);
1675
1676
  };
1676
1677
 
1677
1678
  // TODO use numeric enum
@@ -1694,15 +1695,15 @@ const Rename = 'rename';
1694
1695
  const ToggleBlockComment$1 = 'toggleBlockComment';
1695
1696
 
1696
1697
  const map$1 = Object.create(null);
1697
- const set$6 = (id, widget) => {
1698
+ const set$7 = (id, widget) => {
1698
1699
  map$1[id] = widget;
1699
1700
  };
1700
- const get$5 = id => {
1701
+ const get$6 = id => {
1701
1702
  return map$1[id];
1702
1703
  };
1703
1704
 
1704
1705
  const getModule = id => {
1705
- return get$5(id);
1706
+ return get$6(id);
1706
1707
  };
1707
1708
 
1708
1709
  const applyWidgetChange = async (editor, widget, changes) => {
@@ -1934,7 +1935,7 @@ const getEnabled$1 = () => {
1934
1935
 
1935
1936
  const {
1936
1937
  invoke: invoke$8,
1937
- set: set$5
1938
+ set: set$6
1938
1939
  } = SyntaxHighlightingWorker;
1939
1940
 
1940
1941
  const state$c = {
@@ -1945,10 +1946,10 @@ const state$c = {
1945
1946
  const has = languageId => {
1946
1947
  return Object.hasOwn(state$c.tokenizers, languageId);
1947
1948
  };
1948
- const set$4 = (languageId, tokenizer) => {
1949
+ const set$5 = (languageId, tokenizer) => {
1949
1950
  state$c.tokenizers[languageId] = tokenizer;
1950
1951
  };
1951
- const get$4 = languageId => {
1952
+ const get$5 = languageId => {
1952
1953
  return state$c.tokenizers[languageId];
1953
1954
  };
1954
1955
  const setTokenizePath = (languageId, tokenizePath) => {
@@ -1969,10 +1970,10 @@ const isPending = languageId => {
1969
1970
  };
1970
1971
 
1971
1972
  const tokenMaps = Object.create(null);
1972
- const set$3 = (languageId, tokenMap) => {
1973
+ const set$4 = (languageId, tokenMap) => {
1973
1974
  tokenMaps[languageId] = tokenMap;
1974
1975
  };
1975
- const get$3 = languageId => {
1976
+ const get$4 = languageId => {
1976
1977
  return tokenMaps[languageId] || {};
1977
1978
  };
1978
1979
 
@@ -1985,7 +1986,7 @@ const loadTokenizer = async (languageId, tokenizePath) => {
1985
1986
  if (getEnabled$1()) {
1986
1987
  // @ts-ignore
1987
1988
  const tokenMap = await invoke$8('Tokenizer.load', languageId, tokenizePath);
1988
- set$3(languageId, tokenMap);
1989
+ set$4(languageId, tokenMap);
1989
1990
  return;
1990
1991
  }
1991
1992
  try {
@@ -2001,8 +2002,8 @@ const loadTokenizer = async (languageId, tokenizePath) => {
2001
2002
  console.warn(`tokenizer.TokenMap should be an object in "${tokenizePath}"`);
2002
2003
  return;
2003
2004
  }
2004
- set$3(languageId, tokenizer.TokenMap);
2005
- set$4(languageId, tokenizer);
2005
+ set$4(languageId, tokenizer.TokenMap);
2006
+ set$5(languageId, tokenizer);
2006
2007
  } catch (error) {
2007
2008
  // TODO better error handling
2008
2009
  console.error(error);
@@ -2010,7 +2011,7 @@ const loadTokenizer = async (languageId, tokenizePath) => {
2010
2011
  };
2011
2012
  const getTokenizer = languageId => {
2012
2013
  if (has(languageId)) {
2013
- return get$4(languageId);
2014
+ return get$5(languageId);
2014
2015
  }
2015
2016
  if (isPending(languageId)) {
2016
2017
  return TokenizePlainText;
@@ -2019,10 +2020,10 @@ const getTokenizer = languageId => {
2019
2020
  };
2020
2021
 
2021
2022
  const tokenizers = Object.create(null);
2022
- const set$2 = (id, value) => {
2023
+ const set$3 = (id, value) => {
2023
2024
  tokenizers[id] = value;
2024
2025
  };
2025
- const get$2 = id => {
2026
+ const get$3 = id => {
2026
2027
  return tokenizers[id] || TokenizePlainText;
2027
2028
  };
2028
2029
 
@@ -2104,7 +2105,7 @@ const getTokensViewport = (editor, startLineIndex, endLineIndex) => {
2104
2105
  lines,
2105
2106
  tokenizerId
2106
2107
  } = editor;
2107
- const tokenizer = get$2(tokenizerId);
2108
+ const tokenizer = get$3(tokenizerId);
2108
2109
  const {
2109
2110
  hasArrayReturn,
2110
2111
  initialLineState,
@@ -2685,7 +2686,7 @@ const getLineInfosViewport = (editor, tokens, embeddedResults, minLineY, maxLine
2685
2686
  languageId,
2686
2687
  lines
2687
2688
  } = editor;
2688
- const tokenMap = get$3(languageId);
2689
+ const tokenMap = get$4(languageId);
2689
2690
  let offset = minLineOffset;
2690
2691
  const tabSize = 2;
2691
2692
  for (let i = minLineY; i < maxLineY; i++) {
@@ -3055,7 +3056,7 @@ const notifyListeners = async (listenerType, method, ...params) => {
3055
3056
  // Notify all listeners in parallel
3056
3057
  const notifications = rpcIds.map(async rpcId => {
3057
3058
  try {
3058
- const rpc = get$7(rpcId);
3059
+ const rpc = get$8(rpcId);
3059
3060
  if (rpc) {
3060
3061
  await rpc.invoke(method, ...params);
3061
3062
  }
@@ -3515,7 +3516,7 @@ const scheduleDocumentAndCursorsSelections = async (editor, changes, selectionCh
3515
3516
  ...newEditor,
3516
3517
  decorations: linkDecorations
3517
3518
  };
3518
- set$7(editor.uid, editor, newEditorWithDecorations);
3519
+ set$8(editor.uid, editor, newEditorWithDecorations);
3519
3520
 
3520
3521
  // Notify main-area-worker about modified status change
3521
3522
  if (!editor.modified) {
@@ -3721,7 +3722,7 @@ const TextDocumentSyncFull = 'ExtensionHostTextDocument.syncFull';
3721
3722
 
3722
3723
  const {
3723
3724
  invoke: invoke$6,
3724
- set: set$1
3725
+ set: set$2
3725
3726
  } = ExtensionHost;
3726
3727
 
3727
3728
  const getFileExtensionIndex = file => {
@@ -3787,7 +3788,7 @@ const measureCharacterWidth = async (fontWeight, fontSize, fontFamily, letterSpa
3787
3788
  return await measureTextWidth('a', fontWeight, fontSize, fontFamily, letterSpacing, false, 0);
3788
3789
  };
3789
3790
 
3790
- const get$1 = async key => {
3791
+ const get$2 = async key => {
3791
3792
  const value = await getPreference(key);
3792
3793
  return value;
3793
3794
  };
@@ -3932,7 +3933,7 @@ const updateDiagnostics = async newState => {
3932
3933
  // @ts-ignore
3933
3934
  await invoke$6(TextDocumentSyncFull, newState.uri, newState.id, newState.languageId, content);
3934
3935
  const diagnostics = await executeDiagnosticProvider(newState);
3935
- const latest = get$6(newState.id);
3936
+ const latest = get$7(newState.id);
3936
3937
  if (!latest) {
3937
3938
  return newState;
3938
3939
  }
@@ -3948,7 +3949,7 @@ const updateDiagnostics = async newState => {
3948
3949
  diagnostics,
3949
3950
  visualDecorations // Visual decorations (objects with x, y, width, height) for squiggly underlines
3950
3951
  };
3951
- set$7(newState.id, latest.oldState, newEditor);
3952
+ set$8(newState.id, latest.oldState, newEditor);
3952
3953
  // @ts-ignore
3953
3954
  await invoke$b('Editor.rerender', newState.id);
3954
3955
  return newEditor;
@@ -4101,7 +4102,7 @@ const createEditor = async ({
4101
4102
  focused: true,
4102
4103
  textInfos
4103
4104
  };
4104
- set$7(id, emptyEditor, newEditor4);
4105
+ set$8(id, emptyEditor, newEditor4);
4105
4106
 
4106
4107
  // TODO only sync when needed
4107
4108
  // e.g. it might not always be necessary to send text to extension host worker
@@ -4112,9 +4113,9 @@ const createEditor = async ({
4112
4113
  if (diagnosticsEnabled) {
4113
4114
  await updateDiagnostics(newEditor4);
4114
4115
  }
4115
- const completionsOnTypeRaw = await get$1('editor.completionsOnType');
4116
+ const completionsOnTypeRaw = await get$2('editor.completionsOnType');
4116
4117
  const completionsOnType = Boolean(completionsOnTypeRaw);
4117
- set$7(id, emptyEditor, {
4118
+ set$8(id, emptyEditor, {
4118
4119
  ...newEditor4,
4119
4120
  completionsOnType
4120
4121
  });
@@ -4158,7 +4159,7 @@ const diff2 = uid => {
4158
4159
  const {
4159
4160
  newState,
4160
4161
  oldState
4161
- } = get$6(uid);
4162
+ } = get$7(uid);
4162
4163
  const result = diff(oldState, newState);
4163
4164
  return result;
4164
4165
  };
@@ -4715,7 +4716,7 @@ const closeRename = async editor => {
4715
4716
  }
4716
4717
  const renameWidget = widgets[renameWidgetIndex];
4717
4718
  await invoke$5('Rename.close', renameWidget.newState.uid);
4718
- const latest = get$6(uid);
4719
+ const latest = get$7(uid);
4719
4720
  const {
4720
4721
  newState
4721
4722
  } = latest;
@@ -5065,6 +5066,8 @@ const editorCursorHorizontalLeft = (editor, getDelta) => {
5065
5066
  return scheduleSelections(editor, newSelections);
5066
5067
  };
5067
5068
 
5069
+ /* eslint-disable sonarjs/super-linear-regex */
5070
+
5068
5071
  const characterLeft = (line, columnIndex) => {
5069
5072
  if (!supported()) {
5070
5073
  return 1;
@@ -5594,6 +5597,8 @@ const format = async editor => {
5594
5597
  }
5595
5598
  };
5596
5599
 
5600
+ /* eslint-disable sonarjs/super-linear-regex */
5601
+
5597
5602
  const RE_WORD_START$1 = /^[\w\-]+/;
5598
5603
  const RE_WORD_END$1 = /[\w\-]+$/;
5599
5604
  const getWordAt$2 = (line, columnIndex) => {
@@ -6081,6 +6086,8 @@ const handleContextMenu = async (editor, button, x, y) => {
6081
6086
 
6082
6087
  // @ts-ignore
6083
6088
 
6089
+ /* eslint-disable sonarjs/super-linear-regex */
6090
+
6084
6091
  // match all words, including umlauts, see https://stackoverflow.com/questions/5436824/matching-accented-characters-with-javascript-regexes/#answer-11550799
6085
6092
  const RE_WORD_START = /^[a-zA-Z\u{C0}-\u{17F}\d]+/u;
6086
6093
  const RE_WORD_END = /[a-zA-Z\u{C0}-\u{17F}\d]+$/u;
@@ -6191,10 +6198,10 @@ const state$5 = {
6191
6198
  x: 0,
6192
6199
  y: 0
6193
6200
  };
6194
- const get = () => {
6201
+ const get$1 = () => {
6195
6202
  return state$5;
6196
6203
  };
6197
- const set = (editor, timeout, x, y) => {
6204
+ const set$1 = (editor, timeout, x, y) => {
6198
6205
  state$5.editor = editor;
6199
6206
  state$5.timeout = timeout;
6200
6207
  state$5.x = x;
@@ -6220,7 +6227,7 @@ const onHoverIdle = async () => {
6220
6227
  editor,
6221
6228
  x,
6222
6229
  y
6223
- } = get();
6230
+ } = get$1();
6224
6231
  await at(editor, x, y);
6225
6232
  await showHover$1();
6226
6233
  };
@@ -6231,12 +6238,12 @@ const handleMouseMove = (editor, x, y) => {
6231
6238
  if (!editor.hoverEnabled) {
6232
6239
  return editor;
6233
6240
  }
6234
- const oldState = get();
6241
+ const oldState = get$1();
6235
6242
  if (oldState.timeout !== -1) {
6236
6243
  clearTimeout(oldState.timeout);
6237
6244
  }
6238
6245
  const timeout = setTimeout(onHoverIdle, hoverDelay);
6239
- set(editor, timeout, x, y);
6246
+ set$1(editor, timeout, x, y);
6240
6247
  return editor;
6241
6248
  };
6242
6249
 
@@ -7076,7 +7083,7 @@ const newStateGenerator$4 = async (state, parentUid) => {
7076
7083
  } = state;
7077
7084
  const {
7078
7085
  newState
7079
- } = get$6(parentUid);
7086
+ } = get$7(parentUid);
7080
7087
  const {
7081
7088
  languageId
7082
7089
  } = newState;
@@ -7129,18 +7136,18 @@ const launchFindWidgetWorker = async () => {
7129
7136
  const rpcId = 9002;
7130
7137
  const launch = async () => {
7131
7138
  // TODO race condition
7132
- if (get$7(rpcId)) {
7139
+ if (get$8(rpcId)) {
7133
7140
  return;
7134
7141
  }
7135
7142
  const rpc = await launchFindWidgetWorker();
7136
- set$e(rpcId, rpc);
7143
+ set$f(rpcId, rpc);
7137
7144
  };
7138
7145
  const invoke$3 = async (method, ...params) => {
7139
- const rpc = get$7(rpcId);
7146
+ const rpc = get$8(rpcId);
7140
7147
  return await rpc.invoke(method, ...params);
7141
7148
  };
7142
7149
  const dispose = async () => {
7143
- const rpc = get$7(rpcId);
7150
+ const rpc = get$8(rpcId);
7144
7151
  remove$8(rpcId);
7145
7152
  if (rpc) {
7146
7153
  await rpc.dispose();
@@ -7152,7 +7159,7 @@ const dispose = async () => {
7152
7159
  };
7153
7160
 
7154
7161
  const getEditor = editorUid => {
7155
- const instance = get$6(editorUid);
7162
+ const instance = get$7(editorUid);
7156
7163
  if (!instance) {
7157
7164
  throw new Error(`editor ${editorUid} not found`);
7158
7165
  }
@@ -7246,7 +7253,7 @@ const newStateGenerator$2 = async (state, parentUid) => {
7246
7253
  } = state;
7247
7254
  const {
7248
7255
  newState
7249
- } = get$6(parentUid);
7256
+ } = get$7(parentUid);
7250
7257
  const {
7251
7258
  languageId
7252
7259
  } = newState;
@@ -7359,6 +7366,9 @@ const prepareErrorMessageWithCodeFrame = error => {
7359
7366
  stderr: error.stderr
7360
7367
  };
7361
7368
  };
7369
+
7370
+ /* eslint-disable sonarjs/super-linear-regex */
7371
+
7362
7372
  const RE_PATH_1 = /\((.*):(\d+):(\d+)\)$/;
7363
7373
  const RE_PATH_2 = /at (.*):(\d+):(\d+)$/;
7364
7374
 
@@ -8066,7 +8076,7 @@ const setLanguageId = async (editor, languageId, tokenizePath) => {
8066
8076
  await loadTokenizer(languageId, tokenizePath);
8067
8077
  const tokenizer = getTokenizer(languageId);
8068
8078
  const newTokenizerId = tokenizerId + 1;
8069
- set$2(newTokenizerId, tokenizer);
8079
+ set$3(newTokenizerId, tokenizer);
8070
8080
  const latest = getEditor(editor.uid);
8071
8081
  if (!latest) {
8072
8082
  return editor;
@@ -8221,7 +8231,7 @@ const newStateGenerator$1 = async (state, parentUid) => {
8221
8231
  } = state;
8222
8232
  const {
8223
8233
  newState
8224
- } = get$6(parentUid);
8234
+ } = get$7(parentUid);
8225
8235
  const {
8226
8236
  languageId
8227
8237
  } = newState;
@@ -8305,7 +8315,7 @@ const newStateGenerator = async (state, parentUid) => {
8305
8315
  } = state;
8306
8316
  const {
8307
8317
  newState
8308
- } = get$6(parentUid);
8318
+ } = get$7(parentUid);
8309
8319
  const {
8310
8320
  languageId
8311
8321
  } = newState;
@@ -8549,6 +8559,8 @@ const getBlockComment = async (editor, offset) => {
8549
8559
  return languageConfiguration.comments.blockComment;
8550
8560
  };
8551
8561
 
8562
+ /* eslint-disable sonarjs/super-linear-regex */
8563
+
8552
8564
  const RE_WHITESPACE_AT_START$1 = /^\s+/;
8553
8565
  const RE_WHITESPACE_AT_END = /\s+$/;
8554
8566
  const createDeleteEdit = (rowIndex, columnIndex, text) => {
@@ -9215,7 +9227,7 @@ const createFn = (key, name, widgetId) => {
9215
9227
  ...state,
9216
9228
  commands
9217
9229
  };
9218
- const latest = get$6(editor.uid).newState;
9230
+ const latest = get$7(editor.uid).newState;
9219
9231
  const newEditor = updateWidget(latest, widgetId, newState);
9220
9232
  return newEditor;
9221
9233
  };
@@ -9530,7 +9542,7 @@ const getHoverPositionXy = (editor, rowIndex, wordStart, documentationHeight) =>
9530
9542
  };
9531
9543
  const getEditorHoverInfo = async (editorUid, position) => {
9532
9544
  number(editorUid);
9533
- const instance = get$6(editorUid);
9545
+ const instance = get$7(editorUid);
9534
9546
  const editor = instance.newState;
9535
9547
  const {
9536
9548
  selections
@@ -9939,7 +9951,7 @@ const getEditorSourceActions = async editorId => {
9939
9951
  }
9940
9952
  const {
9941
9953
  newState
9942
- } = get$6(editorId);
9954
+ } = get$7(editorId);
9943
9955
  const {
9944
9956
  languageId
9945
9957
  } = newState;
@@ -9949,6 +9961,8 @@ const getEditorSourceActions = async editorId => {
9949
9961
  return filtered;
9950
9962
  };
9951
9963
 
9964
+ /* eslint-disable sonarjs/super-linear-regex */
9965
+
9952
9966
  const RE_WORD = /[\w\-]+$/;
9953
9967
  const getWordAtOffset = editor => {
9954
9968
  const {
@@ -10082,7 +10096,7 @@ const setSelections2 = async (editorUid, selections) => {
10082
10096
  selections
10083
10097
  };
10084
10098
  const newEditorWithDerivedState = await updateDerivedState(editor, newEditor);
10085
- set$7(editorUid, editor, newEditorWithDerivedState);
10099
+ set$8(editorUid, editor, newEditorWithDerivedState);
10086
10100
  };
10087
10101
  const closeWidget2 = async (editorUid, widgetId, widgetName, unsetAdditionalFocus$1) => {
10088
10102
  const editor = getEditor(editorUid);
@@ -10102,7 +10116,7 @@ const closeWidget2 = async (editorUid, widgetId, widgetName, unsetAdditionalFocu
10102
10116
  widgets: newWidgets
10103
10117
  };
10104
10118
  const newEditorWithDerivedState = await updateDerivedState(editor, newEditor);
10105
- set$7(editorUid, editor, newEditorWithDerivedState);
10119
+ set$8(editorUid, editor, newEditorWithDerivedState);
10106
10120
  await setFocus(FocusEditorText);
10107
10121
  if (unsetAdditionalFocus$1) {
10108
10122
  await unsetAdditionalFocus(unsetAdditionalFocus$1);
@@ -10115,7 +10129,7 @@ const applyEdits2 = async (editorUid, edits) => {
10115
10129
  const editor = getEditor(editorUid);
10116
10130
  const newEditor = await applyEdit(editor, edits);
10117
10131
  const newEditorWithDerivedState = await updateDerivedState(editor, newEditor);
10118
- set$7(editorUid, editor, newEditorWithDerivedState);
10132
+ set$8(editorUid, editor, newEditorWithDerivedState);
10119
10133
  };
10120
10134
  const getSourceActions = async editorUid => {
10121
10135
  const actions = await getEditorSourceActions(editorUid);
@@ -10578,7 +10592,7 @@ const getProblems = async () => {
10578
10592
  const keys = getKeys$2();
10579
10593
  const editors = keys.map(key => {
10580
10594
  const numericKey = parseInt(key);
10581
- const editor = get$6(numericKey);
10595
+ const editor = get$7(numericKey);
10582
10596
  return editor;
10583
10597
  });
10584
10598
  const newEditors = editors.map(editor => editor.newState);
@@ -10693,7 +10707,7 @@ const handleMessagePort = async (port, rpcId) => {
10693
10707
  messagePort: port
10694
10708
  });
10695
10709
  if (rpcId) {
10696
- set$e(rpcId, rpc);
10710
+ set$f(rpcId, rpc);
10697
10711
  }
10698
10712
  };
10699
10713
 
@@ -10726,7 +10740,7 @@ const getWidgetName = widgetId => {
10726
10740
  const saveWidgetState = async keys => {
10727
10741
  const savedStates = Object.create(null);
10728
10742
  for (const key of keys) {
10729
- const editor = get$6(parseInt(key));
10743
+ const editor = get$7(parseInt(key));
10730
10744
  const {
10731
10745
  widgets
10732
10746
  } = editor.newState;
@@ -10745,7 +10759,7 @@ const restoreWidgetState = async (keys, savedStates) => {
10745
10759
  const newEditors = [];
10746
10760
  for (const key of keys) {
10747
10761
  const editorUid = parseInt(key);
10748
- const editor = get$6(editorUid);
10762
+ const editor = get$7(editorUid);
10749
10763
  const {
10750
10764
  widgets
10751
10765
  } = editor.newState;
@@ -10794,7 +10808,7 @@ const hotReload = async () => {
10794
10808
  await relaunchWorkers();
10795
10809
  const newEditors = await restoreWidgetState(keys, savedStates);
10796
10810
  for (const editor of newEditors) {
10797
- set$7(editor.newState.uid, editor.oldState, editor.newState);
10811
+ set$8(editor.newState.uid, editor.oldState, editor.newState);
10798
10812
  }
10799
10813
 
10800
10814
  // TODO ask renderer worker to rerender all editors
@@ -10830,7 +10844,7 @@ const initializeSyntaxHighlighting = async (syntaxHighlightingEnabled, syncIncre
10830
10844
  if (syntaxHighlightingEnabled) {
10831
10845
  setEnabled$1(true);
10832
10846
  const syntaxRpc = await createSyntaxHighlightingWorkerRpc();
10833
- set$5(syntaxRpc);
10847
+ set$6(syntaxRpc);
10834
10848
  }
10835
10849
  if (syncIncremental) {
10836
10850
  setEnabled(true);
@@ -10862,46 +10876,46 @@ const kAutoClosingQuotes = 'editor.autoClosingQuotes';
10862
10876
  const kAutoClosingBrackets = 'editor.autoclosingBrackets';
10863
10877
  const kFontWeight = 'editor.fontWeight';
10864
10878
  const isAutoClosingBracketsEnabled = async () => {
10865
- return Boolean(await get$1(kAutoClosingBrackets));
10879
+ return Boolean(await get$2(kAutoClosingBrackets));
10866
10880
  };
10867
10881
  const isAutoClosingQuotesEnabled = async () => {
10868
- return Boolean(await get$1(kAutoClosingQuotes));
10882
+ return Boolean(await get$2(kAutoClosingQuotes));
10869
10883
  };
10870
10884
  const isQuickSuggestionsEnabled = async () => {
10871
- return Boolean(await get$1(kQuickSuggestions));
10885
+ return Boolean(await get$2(kQuickSuggestions));
10872
10886
  };
10873
10887
  const isAutoClosingTagsEnabled = async () => {
10874
10888
  return true;
10875
10889
  };
10876
10890
  const getRowHeight = async () => {
10877
- return (await get$1(kLineHeight)) || 20;
10891
+ return (await get$2(kLineHeight)) || 20;
10878
10892
  };
10879
10893
  const getFontSize = async () => {
10880
- return (await get$1(kFontSize)) || 15; // TODO find out if it is possible to use all numeric values for settings for efficiency, maybe settings could be an array
10894
+ return (await get$2(kFontSize)) || 15; // TODO find out if it is possible to use all numeric values for settings for efficiency, maybe settings could be an array
10881
10895
  };
10882
10896
  const getFontFamily = async () => {
10883
- return (await get$1(kFontFamily)) || 'Fira Code';
10897
+ return (await get$2(kFontFamily)) || 'Fira Code';
10884
10898
  };
10885
10899
  const getLetterSpacing = async () => {
10886
10900
  // if (!false) {
10887
10901
  // return 0
10888
10902
  // }
10889
- return (await get$1(kLetterSpacing)) ?? 0.5;
10903
+ return (await get$2(kLetterSpacing)) ?? 0.5;
10890
10904
  };
10891
10905
  const getTabSize = async () => {
10892
- return (await get$1(kTabSize)) || 2;
10906
+ return (await get$2(kTabSize)) || 2;
10893
10907
  };
10894
10908
  const getLineNumbers = async () => {
10895
- return (await get$1(kLineNumbers)) ?? false;
10909
+ return (await get$2(kLineNumbers)) ?? false;
10896
10910
  };
10897
10911
  const getCompletionTriggerCharacters = async () => {
10898
10912
  return ['.', '/'];
10899
10913
  };
10900
10914
  const diagnosticsEnabled = async () => {
10901
- return (await get$1(kDiagnostics)) ?? false;
10915
+ return (await get$2(kDiagnostics)) ?? false;
10902
10916
  };
10903
10917
  const getFontWeight = async () => {
10904
- return (await get$1(kFontWeight)) ?? 400;
10918
+ return (await get$2(kFontWeight)) ?? 400;
10905
10919
  };
10906
10920
 
10907
10921
  const getEditorPreferences = async () => {
@@ -10966,7 +10980,7 @@ const loadContent = async (state, savedState) => {
10966
10980
  await loadTokenizer(computedLanguageId, tokenizePath);
10967
10981
  const tokenizer = getTokenizer(computedLanguageId);
10968
10982
  const newTokenizerId = state.tokenizerId + 1;
10969
- set$2(newTokenizerId, tokenizer);
10983
+ set$3(newTokenizerId, tokenizer);
10970
10984
  const newEditor0 = {
10971
10985
  ...state,
10972
10986
  charWidth,
@@ -11021,7 +11035,7 @@ const loadContent = async (state, savedState) => {
11021
11035
  if (diagnosticsEnabled) {
11022
11036
  await updateDiagnostics(newEditor4);
11023
11037
  }
11024
- const completionsOnTypeRaw = await get$1('editor.completionsOnType');
11038
+ const completionsOnTypeRaw = await get$2('editor.completionsOnType');
11025
11039
  const completionsOnType = Boolean(completionsOnTypeRaw);
11026
11040
  const newEditor5 = {
11027
11041
  ...newEditor4,
@@ -11687,6 +11701,14 @@ const getEditorVirtualDom = ({
11687
11701
  })];
11688
11702
  };
11689
11703
 
11704
+ const renderedDoms = new Map();
11705
+ const get = uid => {
11706
+ return renderedDoms.get(uid);
11707
+ };
11708
+ const set = (uid, dom) => {
11709
+ renderedDoms.set(uid, dom);
11710
+ };
11711
+
11690
11712
  const getDom = state => {
11691
11713
  const {
11692
11714
  initial,
@@ -11697,13 +11719,24 @@ const getDom = state => {
11697
11719
  }
11698
11720
  return getEditorVirtualDom(state);
11699
11721
  };
11722
+ const isFastScroll = (oldState, newState) => {
11723
+ return Math.abs(newState.minLineY - oldState.minLineY) > 1;
11724
+ };
11700
11725
  const renderIncremental = (oldState, newState) => {
11701
- const oldDom = getDom(oldState);
11726
+ const oldDom = oldState.initial ? getDom(oldState) : get(newState.uid) || getDom(oldState);
11702
11727
  const newDom = getDom(newState);
11728
+ if (isFastScroll(oldState, newState)) {
11729
+ set(newState.uid, newDom);
11730
+ return [SetPatches, newState.uid, [{
11731
+ nodes: newDom,
11732
+ type: 6
11733
+ }]];
11734
+ }
11703
11735
  const patches = diffTree(oldDom, newDom);
11704
11736
  if (patches.length === 0) {
11705
11737
  return [];
11706
11738
  }
11739
+ set(newState.uid, newDom);
11707
11740
  return [SetPatches, newState.uid, patches];
11708
11741
  };
11709
11742
 
@@ -11738,28 +11771,28 @@ const render2 = (uid, diffResult) => {
11738
11771
  const {
11739
11772
  newState,
11740
11773
  oldState
11741
- } = get$6(uid);
11742
- set$7(uid, newState, newState);
11774
+ } = get$7(uid);
11775
+ set$8(uid, newState, newState);
11743
11776
  const commands = applyRender(oldState, newState, diffResult);
11744
11777
  return commands;
11745
11778
  };
11746
11779
 
11747
11780
  const addWidget = widget => {
11748
- const module = get$5(widget.id);
11781
+ const module = get$6(widget.id);
11749
11782
  if (!module) {
11750
11783
  throw new Error('unsupported widget');
11751
11784
  }
11752
11785
  return module.add(widget);
11753
11786
  };
11754
11787
  const renderWidget = widget => {
11755
- const module = get$5(widget.id);
11788
+ const module = get$6(widget.id);
11756
11789
  if (!module) {
11757
11790
  throw new Error('unsupported widget');
11758
11791
  }
11759
11792
  return module.render(widget);
11760
11793
  };
11761
11794
  const removeWidget = widget => {
11762
- const module = get$5(widget.id);
11795
+ const module = get$6(widget.id);
11763
11796
  if (!module) {
11764
11797
  throw new Error('unsupported widget');
11765
11798
  }
@@ -11917,7 +11950,7 @@ const renderWidgets = {
11917
11950
  };
11918
11951
  const render$6 = [renderLines, renderSelections, renderScrollBarX, renderScrollBarY, renderFocus$1, renderDecorations, renderGutterInfo, renderWidgets, renderFocusContext, renderAdditionalFocusContext];
11919
11952
  const renderEditor = async id => {
11920
- const instance = get$6(id);
11953
+ const instance = get$7(id);
11921
11954
  if (!instance) {
11922
11955
  return [];
11923
11956
  }
@@ -11926,7 +11959,7 @@ const renderEditor = async id => {
11926
11959
  oldState
11927
11960
  } = instance;
11928
11961
  const commands = [];
11929
- set$7(id, newState, newState);
11962
+ set$8(id, newState, newState);
11930
11963
  for (const item of render$6) {
11931
11964
  if (item.isEqual(oldState, newState)) {
11932
11965
  continue;
@@ -12051,7 +12084,7 @@ const unregisterListener = (listenerType, rpcId) => {
12051
12084
  };
12052
12085
 
12053
12086
  const invoke = async (method, ...params) => {
12054
- const worker = get$7(DebugWorker);
12087
+ const worker = get$8(DebugWorker);
12055
12088
  return worker.invoke(method, ...params);
12056
12089
  };
12057
12090
 
@@ -12067,7 +12100,7 @@ const getKey = () => {
12067
12100
  const updateDebugInfo = async debugId => {
12068
12101
  const newInfo = await getDebugHighlight(debugId);
12069
12102
  const key = getKey();
12070
- const instance = get$6(key);
12103
+ const instance = get$7(key);
12071
12104
  if (!instance) {
12072
12105
  return;
12073
12106
  }
@@ -12079,7 +12112,7 @@ const updateDebugInfo = async debugId => {
12079
12112
  ...newState,
12080
12113
  highlightedLine: newInfo.rowIndex
12081
12114
  };
12082
- set$7(key, oldState, newEditor);
12115
+ set$8(key, oldState, newEditor);
12083
12116
  // @ts-ignore
12084
12117
  await invoke$b('Editor.rerender', key);
12085
12118
  };
@@ -12088,7 +12121,7 @@ const updateDebugInfo = async debugId => {
12088
12121
  // TODO only store editor state in editor worker, not in renderer worker also
12089
12122
 
12090
12123
  const wrapCommand = fn => async (editorUid, ...args) => {
12091
- const oldInstance = get$6(editorUid);
12124
+ const oldInstance = get$7(editorUid);
12092
12125
  const state = oldInstance.newState;
12093
12126
  const newEditor = await fn(state, ...args);
12094
12127
  if (state === newEditor) {
@@ -12100,7 +12133,7 @@ const wrapCommand = fn => async (editorUid, ...args) => {
12100
12133
 
12101
12134
  // TODO combine neweditor with latest editor?
12102
12135
 
12103
- set$7(editorUid, state, newEditorWithDerivedState);
12136
+ set$8(editorUid, state, newEditorWithDerivedState);
12104
12137
  return newEditorWithDerivedState;
12105
12138
  };
12106
12139
 
@@ -12381,7 +12414,7 @@ const createExtensionHostRpc = async () => {
12381
12414
 
12382
12415
  const initializeExtensionHost = async () => {
12383
12416
  const extensionHostRpc = await createExtensionHostRpc();
12384
- set$1(extensionHostRpc);
12417
+ set$2(extensionHostRpc);
12385
12418
  };
12386
12419
 
12387
12420
  const createExtensionManagementWorkerRpc = async () => {
@@ -12397,7 +12430,7 @@ const createExtensionManagementWorkerRpc = async () => {
12397
12430
  const initializeExtensionManagementWorker = async () => {
12398
12431
  try {
12399
12432
  const rpc = await createExtensionManagementWorkerRpc();
12400
- set$c(rpc);
12433
+ set$d(rpc);
12401
12434
  } catch {
12402
12435
  // ignore
12403
12436
  }
@@ -12412,14 +12445,14 @@ const initializeOpenerWorker = async () => {
12412
12445
  commandMap: {},
12413
12446
  send: send$1
12414
12447
  });
12415
- set$b(rpc);
12448
+ set$c(rpc);
12416
12449
  };
12417
12450
 
12418
12451
  const initializeRendererWorker = async () => {
12419
12452
  const rpc = await create$a({
12420
12453
  commandMap: commandMap
12421
12454
  });
12422
- set$9(rpc);
12455
+ set$a(rpc);
12423
12456
  };
12424
12457
 
12425
12458
  const send = port => {
@@ -12430,7 +12463,7 @@ const initializeTextMeasurementWorker = async () => {
12430
12463
  commandMap: {},
12431
12464
  send
12432
12465
  });
12433
- set$a(rpc);
12466
+ set$b(rpc);
12434
12467
  };
12435
12468
 
12436
12469
  const listen = async () => {
@@ -12715,14 +12748,14 @@ const EditorHoverWidget = {
12715
12748
  };
12716
12749
 
12717
12750
  const registerWidgets = () => {
12718
- set$6(ColorPicker$1, EditorColorPickerWidget);
12719
- set$6(Completion, EditorCompletionWidget);
12720
- set$6(CompletionDetail, EditorCompletionDetailWidget);
12721
- set$6(Find, EditorFindWidget);
12722
- set$6(Hover, EditorHoverWidget);
12723
- set$6(Rename$1, EditorRenameWidget);
12724
- set$6(SourceAction$1, EditorSourceActionWidget);
12725
- set$6(CodeGenerator, EditorCodeGeneratorWidget);
12751
+ set$7(ColorPicker$1, EditorColorPickerWidget);
12752
+ set$7(Completion, EditorCompletionWidget);
12753
+ set$7(CompletionDetail, EditorCompletionDetailWidget);
12754
+ set$7(Find, EditorFindWidget);
12755
+ set$7(Hover, EditorHoverWidget);
12756
+ set$7(Rename$1, EditorRenameWidget);
12757
+ set$7(SourceAction$1, EditorSourceActionWidget);
12758
+ set$7(CodeGenerator, EditorCodeGeneratorWidget);
12726
12759
  };
12727
12760
 
12728
12761
  const handleUnhandledRejection = event => {