@lvce-editor/editor-worker 18.24.0 → 18.26.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.
@@ -1537,12 +1537,12 @@ const launchColorPickerWorker = async () => {
1537
1537
  return launchWorker(name, url);
1538
1538
  };
1539
1539
 
1540
- let workerPromise$3;
1540
+ const state$f = {};
1541
1541
  const getOrCreate$3 = () => {
1542
- if (!workerPromise$3) {
1543
- workerPromise$3 = launchColorPickerWorker();
1542
+ if (!state$f.workerPromise) {
1543
+ state$f.workerPromise = launchColorPickerWorker();
1544
1544
  }
1545
- return workerPromise$3;
1545
+ return state$f.workerPromise;
1546
1546
  };
1547
1547
  const invoke$9 = async (method, ...params) => {
1548
1548
  const worker = await getOrCreate$3();
@@ -1845,7 +1845,7 @@ const getInitialLineState = initialLineState => {
1845
1845
  return deepCopy(initialLineState);
1846
1846
  };
1847
1847
 
1848
- const state$8 = {
1848
+ const state$e = {
1849
1849
  warned: []
1850
1850
  };
1851
1851
  const flattenTokensArray = tokens => {
@@ -1857,10 +1857,10 @@ const flattenTokensArray = tokens => {
1857
1857
  return flattened;
1858
1858
  };
1859
1859
  const warnDeprecatedArrayReturn = (languageId, fn) => {
1860
- if (state$8.warned.includes(fn)) {
1860
+ if (state$e.warned.includes(fn)) {
1861
1861
  return;
1862
1862
  }
1863
- state$8.warned.push(fn);
1863
+ state$e.warned.push(fn);
1864
1864
  console.warn(`tokenizers without hasArrayReturn=false are deprecated (language ${languageId})`);
1865
1865
  };
1866
1866
  const safeTokenizeLine = (languageId, tokenizeLine, line, lineStateAtStart, hasArrayReturn) => {
@@ -1921,12 +1921,14 @@ const TokenizePlainText = {
1921
1921
  tokenizeLine
1922
1922
  };
1923
1923
 
1924
- let enabled$1 = false;
1924
+ const state$d = {
1925
+ enabled: false
1926
+ };
1925
1927
  const setEnabled$1 = value => {
1926
- enabled$1 = value;
1928
+ state$d.enabled = value;
1927
1929
  };
1928
1930
  const getEnabled$1 = () => {
1929
- return enabled$1;
1931
+ return state$d.enabled;
1930
1932
  };
1931
1933
 
1932
1934
  const {
@@ -1934,21 +1936,35 @@ const {
1934
1936
  set: set$5
1935
1937
  } = SyntaxHighlightingWorker;
1936
1938
 
1937
- const state$7 = {
1939
+ const state$c = {
1938
1940
  pending: Object.create(null),
1941
+ tokenizePaths: Object.create(null),
1939
1942
  tokenizers: Object.create(null)
1940
1943
  };
1941
1944
  const has = languageId => {
1942
- return Object.hasOwn(state$7.tokenizers, languageId);
1945
+ return Object.hasOwn(state$c.tokenizers, languageId);
1943
1946
  };
1944
1947
  const set$4 = (languageId, tokenizer) => {
1945
- state$7.tokenizers[languageId] = tokenizer;
1948
+ state$c.tokenizers[languageId] = tokenizer;
1946
1949
  };
1947
1950
  const get$4 = languageId => {
1948
- return state$7.tokenizers[languageId];
1951
+ return state$c.tokenizers[languageId];
1952
+ };
1953
+ const setTokenizePath = (languageId, tokenizePath) => {
1954
+ state$c.tokenizePaths[languageId] = tokenizePath;
1955
+ };
1956
+ const getTokenizePath$1 = languageId => {
1957
+ return state$c.tokenizePaths[languageId] || '';
1958
+ };
1959
+ const setTokenizePaths = languages => {
1960
+ for (const language of languages) {
1961
+ if (language && language.id && language.tokenize) {
1962
+ setTokenizePath(language.id, language.tokenize);
1963
+ }
1964
+ }
1949
1965
  };
1950
1966
  const isPending = languageId => {
1951
- return Object.hasOwn(state$7.pending, languageId);
1967
+ return Object.hasOwn(state$c.pending, languageId);
1952
1968
  };
1953
1969
 
1954
1970
  const tokenMaps = Object.create(null);
@@ -1964,6 +1980,7 @@ const loadTokenizer = async (languageId, tokenizePath) => {
1964
1980
  if (!tokenizePath) {
1965
1981
  return;
1966
1982
  }
1983
+ setTokenizePath(languageId, tokenizePath);
1967
1984
  if (getEnabled$1()) {
1968
1985
  // @ts-ignore
1969
1986
  const tokenMap = await invoke$8('Tokenizer.load', languageId, tokenizePath);
@@ -2008,10 +2025,37 @@ const get$2 = id => {
2008
2025
  return tokenizers[id] || TokenizePlainText;
2009
2026
  };
2010
2027
 
2028
+ const getEmbeddedTokenization = (langageId, line, embeddedLanguage, embeddedLanguageStart, embeddedLanguageEnd, topContexts, tokenizersToLoad) => {
2029
+ const embeddedTokenizer = getTokenizer(embeddedLanguage);
2030
+ if (embeddedLanguageStart !== line.length && embeddedTokenizer && embeddedTokenizer !== TokenizePlainText) {
2031
+ const isFull = embeddedLanguageStart === 0 && embeddedLanguageEnd === line.length;
2032
+ const partialLine = line.slice(embeddedLanguageStart, embeddedLanguageEnd);
2033
+ const embedResult = safeTokenizeLine(langageId, embeddedTokenizer.tokenizeLine, partialLine, topContexts[embeddedLanguage] || getInitialLineState(embeddedTokenizer.initialLineState), embeddedTokenizer.hasArrayReturn);
2034
+ topContexts[embeddedLanguage] = embedResult;
2035
+ if (embedResult.embeddedLanguage) {
2036
+ const nested = getEmbeddedTokenization(langageId, partialLine, embedResult.embeddedLanguage, embedResult.embeddedLanguageStart, embedResult.embeddedLanguageEnd, topContexts, tokenizersToLoad);
2037
+ if (nested?.isFull) {
2038
+ return nested;
2039
+ }
2040
+ }
2041
+ return {
2042
+ isFull,
2043
+ result: embedResult,
2044
+ TokenMap: embeddedTokenizer.TokenMap
2045
+ };
2046
+ }
2047
+ tokenizersToLoad.push(embeddedLanguage);
2048
+ topContexts[embeddedLanguage] = undefined;
2049
+ return {
2050
+ isFull: false,
2051
+ result: {},
2052
+ TokenMap: []
2053
+ };
2054
+ };
2011
2055
  const getTokensViewportEmbedded = (langageId, lines, lineCache, linesWithEmbed) => {
2012
2056
  const tokenizersToLoad = [];
2013
2057
  const embeddedResults = [];
2014
- let topContext;
2058
+ const topContexts = Object.create(null);
2015
2059
  for (const index of linesWithEmbed) {
2016
2060
  const result = lineCache[index + 1];
2017
2061
  const line = lines[index];
@@ -2021,19 +2065,7 @@ const getTokensViewportEmbedded = (langageId, lines, lineCache, linesWithEmbed)
2021
2065
  embeddedLanguageEnd,
2022
2066
  embeddedLanguageStart
2023
2067
  } = result;
2024
- const embeddedTokenizer = getTokenizer(embeddedLanguage);
2025
- if (embeddedLanguageStart !== line.length && embeddedTokenizer && embeddedTokenizer !== TokenizePlainText) {
2026
- const isFull = embeddedLanguageStart === 0 && embeddedLanguageEnd === line.length;
2027
- const partialLine = line.slice(embeddedLanguageStart, embeddedLanguageEnd);
2028
- const embedResult = safeTokenizeLine(langageId, embeddedTokenizer.tokenizeLine, partialLine, topContext || getInitialLineState(embeddedTokenizer.initialLineState), embeddedTokenizer.hasArrayReturn);
2029
- topContext = embedResult;
2030
- result.embeddedResultIndex = embeddedResults.length;
2031
- embeddedResults.push({
2032
- isFull,
2033
- result: embedResult,
2034
- TokenMap: embeddedTokenizer.TokenMap
2035
- });
2036
- } else if (line.length === 0) {
2068
+ if (line.length === 0) {
2037
2069
  const embedResult = {
2038
2070
  tokens: []
2039
2071
  };
@@ -2044,16 +2076,13 @@ const getTokensViewportEmbedded = (langageId, lines, lineCache, linesWithEmbed)
2044
2076
  TokenMap: []
2045
2077
  });
2046
2078
  } else {
2047
- tokenizersToLoad.push(embeddedLanguage);
2048
- embeddedResults.push({
2049
- isFull: false,
2050
- result: {},
2051
- TokenMap: []
2052
- });
2053
- topContext = undefined;
2079
+ result.embeddedResultIndex = embeddedResults.length;
2080
+ embeddedResults.push(getEmbeddedTokenization(langageId, line, embeddedLanguage, embeddedLanguageStart, embeddedLanguageEnd, topContexts, tokenizersToLoad));
2054
2081
  }
2055
2082
  } else {
2056
- topContext = undefined;
2083
+ for (const embeddedLanguage of Object.keys(topContexts)) {
2084
+ topContexts[embeddedLanguage] = undefined;
2085
+ }
2057
2086
  }
2058
2087
  }
2059
2088
  return {
@@ -2155,8 +2184,8 @@ const getTokensViewport2 = async (editor, startLineIndex, endLineIndex, syncIncr
2155
2184
 
2156
2185
  const loadTokenizers = async languageIds => {
2157
2186
  for (const languageId of languageIds) {
2158
- // @ts-ignore
2159
- await loadTokenizer(languageId);
2187
+ const tokenizePath = getTokenizePath$1(languageId);
2188
+ await loadTokenizer(languageId, tokenizePath);
2160
2189
  }
2161
2190
  };
2162
2191
 
@@ -2360,6 +2389,8 @@ const positionAt = (textDocument, offset) => {
2360
2389
  };
2361
2390
  };
2362
2391
 
2392
+ const maxTokenizerLoadPasses = 10;
2393
+
2363
2394
  // const getTokensIncremental = (editor, min, max) => {
2364
2395
  // const currentLength = editor.lineStateCache.length
2365
2396
  // const tokens = []
@@ -2706,20 +2737,27 @@ const getVisible$1 = async (editor, syncIncremental) => {
2706
2737
  } = editor;
2707
2738
  const maxLineY = Math.min(minLineY + numberOfVisibleLines, lines.length);
2708
2739
  // @ts-ignore
2709
- const {
2740
+ let {
2710
2741
  embeddedResults,
2711
2742
  tokenizersToLoad,
2712
2743
  tokens
2713
2744
  } = await getTokensViewport2(editor, minLineY, maxLineY, syncIncremental);
2745
+ for (let i = 0; tokenizersToLoad.length > 0 && i < maxTokenizerLoadPasses; i++) {
2746
+ await loadTokenizers(tokenizersToLoad);
2747
+ // @ts-ignore
2748
+ const refreshed = await getTokensViewport2(editor, minLineY, maxLineY, syncIncremental);
2749
+ ({
2750
+ embeddedResults,
2751
+ tokenizersToLoad,
2752
+ tokens
2753
+ } = refreshed);
2754
+ }
2714
2755
  const minLineOffset = await offsetAtSync(editor, minLineY, 0);
2715
2756
  const averageCharWidth = charWidth;
2716
2757
  const {
2717
2758
  differences,
2718
2759
  result
2719
2760
  } = getLineInfosViewport(editor, tokens, embeddedResults, minLineY, maxLineY, minLineOffset, width, deltaX, averageCharWidth);
2720
- if (tokenizersToLoad.length > 0) {
2721
- loadTokenizers(tokenizersToLoad);
2722
- }
2723
2761
  return {
2724
2762
  differences,
2725
2763
  textInfos: result
@@ -2772,12 +2810,14 @@ const getNewDeltaPercent = (height, scrollBarHeight, relativeY) => {
2772
2810
  };
2773
2811
  };
2774
2812
 
2775
- let enabled = false;
2813
+ const state$b = {
2814
+ enabled: false
2815
+ };
2776
2816
  const setEnabled = value => {
2777
- enabled = value;
2817
+ state$b.enabled = value;
2778
2818
  };
2779
2819
  const getEnabled = () => {
2780
- return enabled;
2820
+ return state$b.enabled;
2781
2821
  };
2782
2822
 
2783
2823
  // TODO this should be in a separate scrolling module
@@ -2957,7 +2997,7 @@ const getUrlAtOffset = (editor, offset) => {
2957
2997
 
2958
2998
  const EditorChange = 1;
2959
2999
 
2960
- const state$6 = Object.create(null);
3000
+ const state$a = Object.create(null);
2961
3001
 
2962
3002
  /**
2963
3003
  * Register a listener for a specific event type
@@ -2967,13 +3007,13 @@ const state$6 = Object.create(null);
2967
3007
  const registerListener$1 = (listenerType, rpcId) => {
2968
3008
  number(listenerType);
2969
3009
  number(rpcId);
2970
- if (!Object.hasOwn(state$6, listenerType)) {
2971
- state$6[listenerType] = [];
3010
+ if (!Object.hasOwn(state$a, listenerType)) {
3011
+ state$a[listenerType] = [];
2972
3012
  }
2973
3013
 
2974
3014
  // Avoid duplicate registrations
2975
- if (!state$6[listenerType].includes(rpcId)) {
2976
- state$6[listenerType].push(rpcId);
3015
+ if (!state$a[listenerType].includes(rpcId)) {
3016
+ state$a[listenerType].push(rpcId);
2977
3017
  }
2978
3018
  };
2979
3019
 
@@ -2985,10 +3025,10 @@ const registerListener$1 = (listenerType, rpcId) => {
2985
3025
  const unregisterListener$1 = (listenerType, rpcId) => {
2986
3026
  number(listenerType);
2987
3027
  number(rpcId);
2988
- if (Object.hasOwn(state$6, listenerType)) {
2989
- const index = state$6[listenerType].indexOf(rpcId);
3028
+ if (Object.hasOwn(state$a, listenerType)) {
3029
+ const index = state$a[listenerType].indexOf(rpcId);
2990
3030
  if (index !== -1) {
2991
- state$6[listenerType].splice(index, 1);
3031
+ state$a[listenerType].splice(index, 1);
2992
3032
  }
2993
3033
  }
2994
3034
  };
@@ -3000,7 +3040,7 @@ const unregisterListener$1 = (listenerType, rpcId) => {
3000
3040
  */
3001
3041
  const getListeners = listenerType => {
3002
3042
  number(listenerType);
3003
- return state$6[listenerType] || [];
3043
+ return state$a[listenerType] || [];
3004
3044
  };
3005
3045
 
3006
3046
  /**
@@ -3228,16 +3268,6 @@ const from = (array, getSelection) => {
3228
3268
  }
3229
3269
  return newSelections;
3230
3270
  };
3231
- const push = (selections, startRowIndex, startColumnIndex, endRowIndex, endColumnIndex) => {
3232
- const oldLength = selections.length;
3233
- const newSelections = alloc(oldLength + 4);
3234
- newSelections.set(selections);
3235
- newSelections[oldLength + 1] = startRowIndex;
3236
- newSelections[oldLength + 2] = startColumnIndex;
3237
- newSelections[oldLength + 3] = endRowIndex;
3238
- newSelections[oldLength + 4] = endColumnIndex;
3239
- return newSelections;
3240
- };
3241
3271
 
3242
3272
  // TODO maybe only accept sorted selection edits in the first place
3243
3273
 
@@ -4488,7 +4518,7 @@ const y = (editor, rowIndex) => {
4488
4518
  return offsetY;
4489
4519
  };
4490
4520
 
4491
- const state$5 = {
4521
+ const state$9 = {
4492
4522
  timeout: -1
4493
4523
  };
4494
4524
 
@@ -4519,7 +4549,7 @@ const editorShowMessage = async (editor, rowIndex, columnIndex, message, isError
4519
4549
 
4520
4550
  // TODO use wrapper timing module instead of this
4521
4551
  // @ts-ignore
4522
- state$5.timeout = setTimeout(handleTimeout, 3000);
4552
+ state$9.timeout = setTimeout(handleTimeout, 3000);
4523
4553
  }
4524
4554
  return editor;
4525
4555
  };
@@ -4539,8 +4569,8 @@ const showErrorMessage = async (editor, rowIndex, columnIndex, message) => {
4539
4569
 
4540
4570
  // @ts-ignore
4541
4571
  const editorHideMessage = async editor => {
4542
- clearTimeout(state$5.timeout);
4543
- state$5.timeout = -1;
4572
+ clearTimeout(state$9.timeout);
4573
+ state$9.timeout = -1;
4544
4574
  // await RendererProcess.invoke(/* Viewlet.send */ 'Viewlet.send', /* id */ editor.uid, /* method */ 'hideOverlayMessage')
4545
4575
  return editor;
4546
4576
  };
@@ -4656,12 +4686,12 @@ const launchRenameWorker = async () => {
4656
4686
  return rpc;
4657
4687
  };
4658
4688
 
4659
- let workerPromise$2;
4689
+ const state$8 = {};
4660
4690
  const getOrCreate$2 = () => {
4661
- if (!workerPromise$2) {
4662
- workerPromise$2 = launchRenameWorker();
4691
+ if (!state$8.workerPromise) {
4692
+ state$8.workerPromise = launchRenameWorker();
4663
4693
  }
4664
- return workerPromise$2;
4694
+ return state$8.workerPromise;
4665
4695
  };
4666
4696
  const invoke$5 = async (method, ...params) => {
4667
4697
  const worker = await getOrCreate$2();
@@ -4781,12 +4811,12 @@ const openColorPicker = async editor => {
4781
4811
  return addWidgetToEditor(ColorPicker$1, ColorPicker, editor, create$6, newStateGenerator$6);
4782
4812
  };
4783
4813
 
4784
- const state$4 = {
4814
+ const state$7 = {
4785
4815
  compositionText: '',
4786
4816
  isComposing: false
4787
4817
  };
4788
4818
  const compositionStart = (editor, event) => {
4789
- state$4.isComposing = true;
4819
+ state$7.isComposing = true;
4790
4820
  return editor;
4791
4821
  };
4792
4822
  const getCompositionChanges = (selections, data) => {
@@ -4796,9 +4826,9 @@ const getCompositionChanges = (selections, data) => {
4796
4826
  const selectionStartColumn = selections[i + 1];
4797
4827
  const selectionEndRow = selections[i + 2];
4798
4828
  const selectionEndColumn = selections[i + 3];
4799
- const startColumnIndex = selectionStartColumn - state$4.compositionText.length;
4829
+ const startColumnIndex = selectionStartColumn - state$7.compositionText.length;
4800
4830
  changes.push({
4801
- deleted: [state$4.compositionText],
4831
+ deleted: [state$7.compositionText],
4802
4832
  end: {
4803
4833
  columnIndex: selectionEndColumn,
4804
4834
  rowIndex: selectionEndRow
@@ -4818,7 +4848,7 @@ const compositionUpdate = (editor, data) => {
4818
4848
  selections
4819
4849
  } = editor;
4820
4850
  const changes = getCompositionChanges(selections, data);
4821
- state$4.compositionText = data;
4851
+ state$7.compositionText = data;
4822
4852
  return scheduleDocumentAndCursorsSelections(editor, changes);
4823
4853
  };
4824
4854
  const compositionEnd = (editor, data) => {
@@ -4826,8 +4856,8 @@ const compositionEnd = (editor, data) => {
4826
4856
  selections
4827
4857
  } = editor;
4828
4858
  const changes = getCompositionChanges(selections, data);
4829
- state$4.isComposing = false;
4830
- state$4.compositionText = '';
4859
+ state$7.isComposing = false;
4860
+ state$7.compositionText = '';
4831
4861
  return scheduleDocumentAndCursorsSelections(editor, changes);
4832
4862
  };
4833
4863
 
@@ -5903,19 +5933,19 @@ const closeWidgetsMaybe = widgets => {
5903
5933
  return widgets.filter(isPersistentWidget);
5904
5934
  };
5905
5935
 
5906
- const state$3 = {
5936
+ const state$6 = {
5907
5937
  position: {
5908
5938
  columnIndex: 0,
5909
5939
  rowIndex: 0
5910
5940
  }
5911
5941
  };
5912
5942
  const getPosition$1 = () => {
5913
- return state$3.position;
5943
+ return state$6.position;
5914
5944
  };
5915
5945
 
5916
5946
  // @ts-ignore
5917
5947
  const setPosition$1 = position => {
5918
- state$3.position = position;
5948
+ state$6.position = position;
5919
5949
  };
5920
5950
 
5921
5951
  const openExternal = async (url, platform) => {
@@ -6133,20 +6163,20 @@ const handleMouseDown = (state, button, altKey, ctrlKey, x, y, detail) => {
6133
6163
  }
6134
6164
  };
6135
6165
 
6136
- const state$2 = {
6166
+ const state$5 = {
6137
6167
  editor: undefined,
6138
6168
  timeout: -1,
6139
6169
  x: 0,
6140
6170
  y: 0
6141
6171
  };
6142
6172
  const get = () => {
6143
- return state$2;
6173
+ return state$5;
6144
6174
  };
6145
6175
  const set = (editor, timeout, x, y) => {
6146
- state$2.editor = editor;
6147
- state$2.timeout = timeout;
6148
- state$2.x = x;
6149
- state$2.y = y;
6176
+ state$5.editor = editor;
6177
+ state$5.timeout = timeout;
6178
+ state$5.x = x;
6179
+ state$5.y = y;
6150
6180
  };
6151
6181
 
6152
6182
  const showHover$1 = async (editor, position) => {
@@ -6287,7 +6317,7 @@ const editorHandleNativeSelectionChange = (editor, range) => {
6287
6317
  return scheduleSelections(editor, selections);
6288
6318
  };
6289
6319
 
6290
- const state$1 = {
6320
+ const state$4 = {
6291
6321
  /**
6292
6322
  * @type {any}
6293
6323
  */
@@ -6302,33 +6332,33 @@ const state$1 = {
6302
6332
 
6303
6333
  // @ts-ignore
6304
6334
  const setEditor = editor => {
6305
- state$1.currentEditor = editor;
6306
- state$1.hasListener = true;
6335
+ state$4.currentEditor = editor;
6336
+ state$4.hasListener = true;
6307
6337
  };
6308
6338
  const clearEditor = () => {
6309
- state$1.currentEditor = undefined;
6310
- state$1.hasListener = false;
6311
- state$1.isSelecting = false;
6339
+ state$4.currentEditor = undefined;
6340
+ state$4.hasListener = false;
6341
+ state$4.isSelecting = false;
6312
6342
  };
6313
6343
  const startSelecting = () => {
6314
- state$1.isSelecting = true;
6344
+ state$4.isSelecting = true;
6315
6345
  };
6316
6346
  const isSelecting = () => {
6317
- return state$1.isSelecting;
6347
+ return state$4.isSelecting;
6318
6348
  };
6319
6349
 
6320
6350
  // @ts-ignore
6321
6351
  const setPosition = position => {
6322
- state$1.position = position;
6352
+ state$4.position = position;
6323
6353
  };
6324
6354
  const getEditor$1 = () => {
6325
- return state$1.currentEditor;
6355
+ return state$4.currentEditor;
6326
6356
  };
6327
6357
  const getPosition = () => {
6328
- return state$1.position;
6358
+ return state$4.position;
6329
6359
  };
6330
6360
  const hasListener = () => {
6331
- return state$1.hasListener;
6361
+ return state$4.hasListener;
6332
6362
  };
6333
6363
 
6334
6364
  // @ts-ignore
@@ -6708,7 +6738,7 @@ const handleTouchEnd = (editor, touchEvent) => {
6708
6738
  // }
6709
6739
  };
6710
6740
 
6711
- const state = {
6741
+ const state$3 = {
6712
6742
  deltaY: 0,
6713
6743
  touchOffsetY: 0
6714
6744
  };
@@ -6719,8 +6749,8 @@ const handleTouchStart = (editor, touchEvent) => {
6719
6749
  return;
6720
6750
  }
6721
6751
  const firstTouch = touchEvent.touches[0];
6722
- state.touchOffsetY = firstTouch.y;
6723
- state.deltaY = editor.deltaY;
6752
+ state$3.touchOffsetY = firstTouch.y;
6753
+ state$3.deltaY = editor.deltaY;
6724
6754
  // const position = EditorPosition.at(editor, firstTouch.x, firstTouch.y)
6725
6755
  // EditorMoveSelection.state.position = position
6726
6756
  // state.date = Date.now()
@@ -6761,7 +6791,7 @@ const handleTouchMove = (editor, touchEvent) => {
6761
6791
  return;
6762
6792
  }
6763
6793
  const firstTouch = touchEvent.touches[0];
6764
- const offsetY = state.deltaY + (state.touchOffsetY - firstTouch.y);
6794
+ const offsetY = state$3.deltaY + (state$3.touchOffsetY - firstTouch.y);
6765
6795
  setDeltaYFixedValue(editor, offsetY);
6766
6796
  };
6767
6797
 
@@ -7783,7 +7813,13 @@ const getSelectionEditsSingleLineWord = (lines, selections) => {
7783
7813
  const columnIndexAfter = line.indexOf(word, lastSelectionEndColumnIndex);
7784
7814
  if (columnIndexAfter !== -1) {
7785
7815
  const columnIndexAfterEnd = columnIndexAfter + word.length;
7786
- const newSelections = push(selections, rowIndex, columnIndexAfter, rowIndex, columnIndexAfterEnd);
7816
+ const newSelections = new Uint32Array(selections.length + 4);
7817
+ newSelections.set(selections, 0);
7818
+ const insertIndex = selections.length;
7819
+ newSelections[insertIndex] = rowIndex;
7820
+ newSelections[insertIndex + 1] = columnIndexAfter;
7821
+ newSelections[insertIndex + 2] = rowIndex;
7822
+ newSelections[insertIndex + 3] = columnIndexAfterEnd;
7787
7823
  return {
7788
7824
  revealRange: newSelections.length - 4,
7789
7825
  selectionEdits: newSelections
@@ -7988,6 +8024,7 @@ const setLanguageId = async (editor, languageId, tokenizePath) => {
7988
8024
  const {
7989
8025
  tokenizerId
7990
8026
  } = editor;
8027
+ setTokenizePath(languageId, tokenizePath);
7991
8028
  // TODO move tokenizer to syntax highlighting worker
7992
8029
  // TODO only load tokenizer if not already loaded
7993
8030
  // if already loaded just set tokenizer and rerender text
@@ -8128,12 +8165,12 @@ const launchHoverWorker = async () => {
8128
8165
  return rpc;
8129
8166
  };
8130
8167
 
8131
- let workerPromise$1;
8168
+ const state$2 = {};
8132
8169
  const getOrCreate$1 = () => {
8133
- if (!workerPromise$1) {
8134
- workerPromise$1 = launchHoverWorker();
8170
+ if (!state$2.workerPromise) {
8171
+ state$2.workerPromise = launchHoverWorker();
8135
8172
  }
8136
- return workerPromise$1;
8173
+ return state$2.workerPromise;
8137
8174
  };
8138
8175
  const invoke$2 = async (method, ...params) => {
8139
8176
  const worker = await getOrCreate$1();
@@ -8212,12 +8249,12 @@ const launchSourceActionWorker = async () => {
8212
8249
  return rpc;
8213
8250
  };
8214
8251
 
8215
- let workerPromise;
8252
+ const state$1 = {};
8216
8253
  const getOrCreate = () => {
8217
- if (!workerPromise) {
8218
- workerPromise = launchSourceActionWorker();
8254
+ if (!state$1.workerPromise) {
8255
+ state$1.workerPromise = launchSourceActionWorker();
8219
8256
  }
8220
- return workerPromise;
8257
+ return state$1.workerPromise;
8221
8258
  };
8222
8259
  const invoke$1 = async (method, ...params) => {
8223
8260
  const worker = await getOrCreate();
@@ -10704,12 +10741,14 @@ const restoreWidgetState = async (keys, savedStates) => {
10704
10741
  return newEditors;
10705
10742
  };
10706
10743
 
10707
- let isReloading = false;
10744
+ const state = {
10745
+ isReloading: false
10746
+ };
10708
10747
  const hotReload = async () => {
10709
- if (isReloading) {
10748
+ if (state.isReloading) {
10710
10749
  return;
10711
10750
  }
10712
- isReloading = true;
10751
+ state.isReloading = true;
10713
10752
 
10714
10753
  // TODO use getEditors
10715
10754
  const keys = getKeys$2();
@@ -10723,7 +10762,7 @@ const hotReload = async () => {
10723
10762
  // TODO ask renderer worker to rerender all editors
10724
10763
  // @ts-ignore
10725
10764
  await invoke$b(`Editor.rerender`);
10726
- isReloading = false;
10765
+ state.isReloading = false;
10727
10766
  };
10728
10767
 
10729
10768
  const sendMessagePortToSyntaxHighlightingWorker = async port => {
@@ -10883,6 +10922,7 @@ const loadContent = async (state, savedState) => {
10883
10922
  // TODO support overwriting language id by setting it explicitly or via settings
10884
10923
  const charWidth = await measureCharacterWidth(fontWeight, fontSize, fontFamily, letterSpacing);
10885
10924
  const languages = await getLanguages(platform, assetDir);
10925
+ setTokenizePaths(languages);
10886
10926
  const computedLanguageId = getLanguageId$1(uri, languages);
10887
10927
  const tokenizePath = getTokenizePath(languages, computedLanguageId);
10888
10928
  await loadTokenizer(computedLanguageId, tokenizePath);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/editor-worker",
3
- "version": "18.24.0",
3
+ "version": "18.26.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@github.com:lvce-editor/editor-worker.git"