@lvce-editor/editor-worker 18.4.0 → 18.5.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.
@@ -1087,6 +1087,13 @@ const create$b = async ({
1087
1087
  const Text$1 = 12;
1088
1088
  const Reference = 100;
1089
1089
 
1090
+ const AltKey = 'event.altKey';
1091
+ const Button = 'event.button';
1092
+ const ClientX = 'event.clientX';
1093
+ const ClientY = 'event.clientY';
1094
+ const DeltaMode = 'event.deltaMode';
1095
+ const DeltaY = 'event.deltaY';
1096
+
1090
1097
  const Backspace = 1;
1091
1098
  const Tab$1 = 2;
1092
1099
  const Enter = 3;
@@ -1150,7 +1157,6 @@ const IconThemeWorker = 7009;
1150
1157
  const MarkdownWorker = 300;
1151
1158
  const OpenerWorker = 4561;
1152
1159
  const RendererWorker$1 = 1;
1153
- const TextMeasurementWorker = 7011;
1154
1160
 
1155
1161
  const FocusSelector = 'Viewlet.focusSelector';
1156
1162
  const SetCss$1 = 'Viewlet.setCss';
@@ -1269,6 +1275,9 @@ const {
1269
1275
  invoke: invoke$e,
1270
1276
  set: set$d
1271
1277
  } = create$a(ExtensionManagementWorker);
1278
+ const getLanguages$1 = (platform, assetDir) => {
1279
+ return invoke$e('Extensions.getLanguages', platform, assetDir);
1280
+ };
1272
1281
 
1273
1282
  const {
1274
1283
  dispose: dispose$2,
@@ -1562,7 +1571,7 @@ const setExtensionsSearchValue = async searchValue => {
1562
1571
  const openExternal$1 = async uri => {
1563
1572
  await invoke$d('Open.openExternal', uri);
1564
1573
  };
1565
- const openUrl = async uri => {
1574
+ const openUrl$1 = async uri => {
1566
1575
  await invoke$d('Open.openUrl', uri);
1567
1576
  };
1568
1577
  const getAllPreferences = async () => {
@@ -1632,7 +1641,7 @@ const RendererWorker = {
1632
1641
  openExternal: openExternal$1,
1633
1642
  openNativeFolder,
1634
1643
  openUri,
1635
- openUrl,
1644
+ openUrl: openUrl$1,
1636
1645
  openWidget,
1637
1646
  readClipBoardText,
1638
1647
  readFile,
@@ -1686,14 +1695,18 @@ const {
1686
1695
  invoke: invoke$c,
1687
1696
  set: set$b
1688
1697
  } = create$a(OpenerWorker);
1698
+ const openUrl = async (url, platform) => {
1699
+ return invoke$c('Open.openUrl', url, platform);
1700
+ };
1689
1701
 
1690
1702
  const {
1703
+ invoke: invoke$b,
1691
1704
  set: set$a
1692
1705
  } = create$a(IconThemeWorker);
1693
1706
 
1694
1707
  const {
1695
1708
  dispose: dispose$1,
1696
- invoke: invoke$b,
1709
+ invoke: invoke$a,
1697
1710
  invokeAndTransfer,
1698
1711
  set: set$9
1699
1712
  } = create$a(MarkdownWorker);
@@ -1701,7 +1714,7 @@ const {
1701
1714
  const SyntaxHighlightingWorker = {
1702
1715
  __proto__: null,
1703
1716
  dispose: dispose$1,
1704
- invoke: invoke$b,
1717
+ invoke: invoke$a,
1705
1718
  invokeAndTransfer,
1706
1719
  set: set$9
1707
1720
  };
@@ -1830,7 +1843,7 @@ const activateByEvent = async (event, assetDir, platform) => {
1830
1843
  string(event);
1831
1844
  // Assert.string(assetDir)
1832
1845
  // Assert.number(platform)
1833
- await invoke$d('ExtensionHostManagement.activateByEvent', event, assetDir, platform);
1846
+ await activateByEvent$1(event, assetDir, platform);
1834
1847
  };
1835
1848
 
1836
1849
  const codeGeneratorAccept = state => {
@@ -1873,7 +1886,7 @@ const getOrCreate$3 = () => {
1873
1886
  }
1874
1887
  return workerPromise$3;
1875
1888
  };
1876
- const invoke$a = async (method, ...params) => {
1889
+ const invoke$9 = async (method, ...params) => {
1877
1890
  const worker = await getOrCreate$3();
1878
1891
  return await worker.invoke(method, ...params);
1879
1892
  };
@@ -1886,10 +1899,10 @@ const loadContent$3 = async (state, parentUid) => {
1886
1899
  x,
1887
1900
  y
1888
1901
  } = state;
1889
- await invoke$a('ColorPicker.create', uid, x, y, width, height, parentUid);
1890
- await invoke$a('ColorPicker.loadContent', uid);
1891
- const diff = await invoke$a('ColorPicker.diff2', uid);
1892
- const commands = await invoke$a('ColorPicker.render2', uid, diff);
1902
+ await invoke$9('ColorPicker.create', uid, x, y, width, height, parentUid);
1903
+ await invoke$9('ColorPicker.loadContent', uid);
1904
+ const diff = await invoke$9('ColorPicker.diff2', uid);
1905
+ const commands = await invoke$9('ColorPicker.render2', uid, diff);
1893
1906
  return {
1894
1907
  ...state,
1895
1908
  commands
@@ -1899,6 +1912,7 @@ const loadContent$3 = async (state, parentUid) => {
1899
1912
  const {
1900
1913
  get: get$7,
1901
1914
  getCommandIds,
1915
+ registerCommands,
1902
1916
  set: set$8,
1903
1917
  wrapCommand: wrapCommand$1,
1904
1918
  wrapGetter
@@ -2264,7 +2278,7 @@ const getEnabled$1 = () => {
2264
2278
  };
2265
2279
 
2266
2280
  const {
2267
- invoke: invoke$9,
2281
+ invoke: invoke$8,
2268
2282
  set: set$5
2269
2283
  } = SyntaxHighlightingWorker;
2270
2284
 
@@ -2300,7 +2314,7 @@ const loadTokenizer = async (languageId, tokenizePath) => {
2300
2314
  }
2301
2315
  if (getEnabled$1()) {
2302
2316
  // @ts-ignore
2303
- const tokenMap = await invoke$9('Tokenizer.load', languageId, tokenizePath);
2317
+ const tokenMap = await invoke$8('Tokenizer.load', languageId, tokenizePath);
2304
2318
  set$3(languageId, tokenMap);
2305
2319
  return;
2306
2320
  }
@@ -2476,13 +2490,13 @@ const getTokensViewport2 = async (editor, startLineIndex, endLineIndex, syncIncr
2476
2490
  invalidStartIndex,
2477
2491
  languageId
2478
2492
  };
2479
- return invoke$9('GetTokensViewport.getTokensViewport', slimEditor,
2493
+ return invoke$8('GetTokensViewport.getTokensViewport', slimEditor,
2480
2494
  // @ts-ignore
2481
2495
  startLineIndex, endLineIndex, hasLinesToSend, id, linesToSend);
2482
2496
  }
2483
2497
  // TODO only send needed lines of text
2484
2498
  // @ts-ignore
2485
- return invoke$9('GetTokensViewport.getTokensViewport', editor, startLineIndex, endLineIndex, true, editor.id, editor.lines);
2499
+ return invoke$8('GetTokensViewport.getTokensViewport', editor, startLineIndex, endLineIndex, true, editor.id, editor.lines);
2486
2500
  }
2487
2501
  return getTokensViewport(editor, startLineIndex, endLineIndex);
2488
2502
  };
@@ -3186,7 +3200,7 @@ const getIncrementalEdits = async (oldState, newState) => {
3186
3200
  const oldLine = oldState.lines[rowIndex];
3187
3201
  const newLine = lines[rowIndex];
3188
3202
  // @ts-ignore
3189
- const incrementalEdits = await invoke$9(
3203
+ const incrementalEdits = await invoke$8(
3190
3204
  // @ts-ignore
3191
3205
  'TokenizeIncremental.tokenizeIncremental', newState.uid,
3192
3206
  // @ts-ignore
@@ -3385,11 +3399,11 @@ const splitLines = lines => {
3385
3399
  };
3386
3400
 
3387
3401
  const {
3388
- invoke: invoke$8} = RendererWorker;
3402
+ invoke: invoke$7} = RendererWorker;
3389
3403
 
3390
3404
  const notifyTabModifiedStatusChange = async uri => {
3391
3405
  try {
3392
- await invoke$8('Main.handleModifiedStatusChange', uri, true);
3406
+ await invoke$7('Main.handleModifiedStatusChange', uri, true);
3393
3407
  } catch {
3394
3408
  // ignore
3395
3409
  }
@@ -3425,13 +3439,8 @@ const measureTextWidthFast = async (text, charWidth) => {
3425
3439
  return text.length * charWidth;
3426
3440
  };
3427
3441
 
3428
- const {
3429
- invoke: invoke$7,
3430
- setFactory: setFactory$1
3431
- } = createLazyRpc(TextMeasurementWorker);
3432
-
3433
3442
  const measureTextWidthSlow = async (text, fontWeight, fontSize, fontFamily, letterSpacing, isMonoSpaceFont, charWidth) => {
3434
- const width = await invoke$7('TextMeasurement.measureTextWidth', text, fontWeight, fontSize, fontFamily, letterSpacing, isMonoSpaceFont, charWidth);
3443
+ const width = await invoke$b('TextMeasurement.measureTextWidth', text, fontWeight, fontSize, fontFamily, letterSpacing, isMonoSpaceFont, charWidth);
3435
3444
  return width;
3436
3445
  };
3437
3446
 
@@ -4082,7 +4091,7 @@ const getLanguageId$1 = (uri, languages) => {
4082
4091
  const getLanguages = async (platform, assetDir) => {
4083
4092
  number(platform);
4084
4093
  string(assetDir);
4085
- const languages = await invoke$e('Extensions.getLanguages', platform, assetDir);
4094
+ const languages = await getLanguages$1(platform, assetDir);
4086
4095
  return languages;
4087
4096
  };
4088
4097
 
@@ -4091,7 +4100,7 @@ const measureCharacterWidth = async (fontWeight, fontSize, fontFamily, letterSpa
4091
4100
  };
4092
4101
 
4093
4102
  const get$1 = async key => {
4094
- const value = await invoke$d('Preferences.get', key);
4103
+ const value = await getPreference(key);
4095
4104
  return value;
4096
4105
  };
4097
4106
 
@@ -5145,7 +5154,7 @@ const compositionEnd = (editor, data) => {
5145
5154
  const writeText = async text => {
5146
5155
  try {
5147
5156
  string(text);
5148
- await invoke$d('ClipBoard.writeText', /* text */text);
5157
+ await writeClipBoardText(text);
5149
5158
  } catch (error) {
5150
5159
  throw new VError(error, 'Failed to write text to clipboard');
5151
5160
  }
@@ -6105,7 +6114,7 @@ const goTo = async ({
6105
6114
  startColumnIndex: definition.startColumnIndex,
6106
6115
  startRowIndex: definition.startRowIndex
6107
6116
  };
6108
- await invoke$d(/* Main.openUri */'Main.openUri', /* uri */uri, /* focus */true, context);
6117
+ await openUri(uri, true, context);
6109
6118
  return editor;
6110
6119
  } catch (error) {
6111
6120
  // TODO if editor is already disposed at this point, do nothing
@@ -6255,8 +6264,7 @@ const setPosition$1 = position => {
6255
6264
  };
6256
6265
 
6257
6266
  const openExternal = async (url, platform) => {
6258
- // @ts-ignore
6259
- await invoke$c('Open.openUrl', url, platform);
6267
+ await openUrl(url, platform);
6260
6268
  };
6261
6269
 
6262
6270
  // TODO first change cursor position, then run go to definition
@@ -7545,8 +7553,7 @@ const pasteText = (editor, text) => {
7545
7553
  };
7546
7554
 
7547
7555
  const paste = async editor => {
7548
- // @ts-ignore
7549
- const text = await invoke$d('ClipBoard.readText');
7556
+ const text = await readClipBoardText();
7550
7557
  string(text);
7551
7558
  return pasteText(editor, text);
7552
7559
  };
@@ -7706,7 +7713,7 @@ const saveUntitledFile = async (uri, content, platform) => {
7706
7713
  return;
7707
7714
  }
7708
7715
  await invoke$d('FileSystem.writeFile', filePath, content);
7709
- await invoke$d('Layout.handleWorkspaceRefresh');
7716
+ await handleWorkspaceRefresh();
7710
7717
  await invoke$d('Main.handleUriChange', uri, filePath);
7711
7718
  return filePath;
7712
7719
  };
@@ -9422,7 +9429,7 @@ const addWidget$1 = (widget, id, render) => {
9422
9429
  const getWidgetInvoke = widgetId => {
9423
9430
  switch (widgetId) {
9424
9431
  case ColorPicker$1:
9425
- return invoke$a;
9432
+ return invoke$9;
9426
9433
  case Completion:
9427
9434
  return invoke$4;
9428
9435
  case Find:
@@ -10328,7 +10335,7 @@ const getDiagnostics$1 = async editorUid => {
10328
10335
  };
10329
10336
 
10330
10337
  const ensure = async (fontName, fontUrl) => {
10331
- await invoke$7('TextMeasurement.ensureFont', fontName, fontUrl);
10338
+ await invoke$b('TextMeasurement.ensureFont', fontName, fontUrl);
10332
10339
  };
10333
10340
 
10334
10341
  const getKeyBindings = () => {
@@ -11000,7 +11007,7 @@ const hotReload = async () => {
11000
11007
  };
11001
11008
 
11002
11009
  const sendMessagePortToExtensionHostWorker2 = async (port, initialCommand, rpcId) => {
11003
- await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, initialCommand, rpcId);
11010
+ await sendMessagePortToExtensionHostWorker(port, rpcId);
11004
11011
  };
11005
11012
 
11006
11013
  const createExtensionHostRpc = async () => {
@@ -11046,7 +11053,7 @@ const initializeExtensionManagementWorker = async () => {
11046
11053
  }
11047
11054
  };
11048
11055
 
11049
- const send$2 = port => {
11056
+ const send$1 = port => {
11050
11057
  // @ts-ignore
11051
11058
  return sendMessagePortToOpenerWorker(port);
11052
11059
  };
@@ -11054,7 +11061,7 @@ const initializeOpenerWorker = async () => {
11054
11061
  try {
11055
11062
  const rpc = await create$f({
11056
11063
  commandMap: {},
11057
- send: send$2
11064
+ send: send$1
11058
11065
  });
11059
11066
  set$b(rpc);
11060
11067
  } catch {
@@ -11064,10 +11071,9 @@ const initializeOpenerWorker = async () => {
11064
11071
 
11065
11072
  const sendMessagePortToSyntaxHighlightingWorker = async port => {
11066
11073
  try {
11067
- await invokeAndTransfer$1(
11068
- // @ts-ignore
11069
- 'SendMessagePortToSyntaxHighlightingWorker.sendMessagePortToSyntaxHighlightingWorker', port, 'HandleMessagePort.handleMessagePort2');
11074
+ await sendMessagePortToSyntaxHighlightingWorker$1(port);
11070
11075
  } catch {
11076
+ // deprecated
11071
11077
  await invokeAndTransfer$1(
11072
11078
  // @ts-ignore
11073
11079
  'SendMessagePortToSyntaxHighlightingWorker.sendMessagePortToSyntaxHighlightingWorker', port, 'HandleMessagePort.handleMessagePort');
@@ -11097,19 +11103,15 @@ const initializeSyntaxHighlighting = async (syntaxHighlightingEnabled, syncIncre
11097
11103
  }
11098
11104
  };
11099
11105
 
11100
- const send$1 = port => {
11106
+ const send = port => {
11101
11107
  return sendMessagePortToTextMeasurementWorker(port);
11102
11108
  };
11103
11109
  const initializeTextMeasurementWorker = async () => {
11104
- try {
11105
- const rpc = await create$f({
11106
- commandMap: {},
11107
- send: send$1
11108
- });
11109
- set$a(rpc);
11110
- } catch {
11111
- // ignore
11112
- }
11110
+ const rpc = await create$f({
11111
+ commandMap: {},
11112
+ send
11113
+ });
11114
+ set$a(rpc);
11113
11115
  };
11114
11116
 
11115
11117
  const launchCompletionWorker = async () => {
@@ -11196,6 +11198,14 @@ const getEditorPreferences = async () => {
11196
11198
  };
11197
11199
  };
11198
11200
 
11201
+ const getTokenizePath = (languages, languageId) => {
11202
+ for (const language of languages) {
11203
+ if (language?.id === languageId) {
11204
+ return language.tokenize || '';
11205
+ }
11206
+ }
11207
+ return '';
11208
+ };
11199
11209
  const loadContent = async (state, savedState) => {
11200
11210
  const {
11201
11211
  assetDir,
@@ -11225,7 +11235,12 @@ const loadContent = async (state, savedState) => {
11225
11235
  // TODO support overwriting language id by setting it explicitly or via settings
11226
11236
  const charWidth = await measureCharacterWidth(fontWeight, fontSize, fontFamily, letterSpacing);
11227
11237
  const languages = await getLanguages(platform, assetDir);
11228
- const computedlanguageId = getLanguageId$1(uri, languages);
11238
+ const computedLanguageId = getLanguageId$1(uri, languages);
11239
+ const tokenizePath = getTokenizePath(languages, computedLanguageId);
11240
+ await loadTokenizer(computedLanguageId, tokenizePath);
11241
+ const tokenizer = getTokenizer(computedLanguageId);
11242
+ const newTokenizerId = state.tokenizerId + 1;
11243
+ set$2(newTokenizerId, tokenizer);
11229
11244
  const newEditor0 = {
11230
11245
  ...state,
11231
11246
  charWidth,
@@ -11238,11 +11253,12 @@ const loadContent = async (state, savedState) => {
11238
11253
  isAutoClosingQuotesEnabled,
11239
11254
  isAutoClosingTagsEnabled,
11240
11255
  isQuickSuggestionsEnabled,
11241
- languageId: computedlanguageId,
11256
+ languageId: computedLanguageId,
11242
11257
  letterSpacing,
11243
11258
  lineNumbers,
11244
11259
  rowHeight,
11245
- tabSize
11260
+ tabSize,
11261
+ tokenizerId: newTokenizerId
11246
11262
  };
11247
11263
  const content = await readFile(uri);
11248
11264
 
@@ -11273,7 +11289,7 @@ const loadContent = async (state, savedState) => {
11273
11289
  // TODO only sync when needed
11274
11290
  // e.g. it might not always be necessary to send text to extension host worker
11275
11291
  // @ts-ignore
11276
- await invoke$6(TextDocumentSyncFull, uri, id, computedlanguageId, content);
11292
+ await invoke$6(TextDocumentSyncFull, uri, id, computedLanguageId, content);
11277
11293
 
11278
11294
  // TODO await promise
11279
11295
  if (diagnosticsEnabled) {
@@ -11861,7 +11877,7 @@ const getEditorVirtualDom = ({
11861
11877
  };
11862
11878
 
11863
11879
  const getDom = state => {
11864
- if (state.initial) {
11880
+ if (state.initial && state.textInfos.length === 0) {
11865
11881
  return [];
11866
11882
  }
11867
11883
  return getEditorVirtualDom(state);
@@ -12137,7 +12153,7 @@ const renderEventListeners = () => {
12137
12153
  params: ['handleFocus']
12138
12154
  }, {
12139
12155
  name: HandleMouseMove,
12140
- params: ['handleInput', 'event.clientX', 'event.clientY', 'event.altKey']
12156
+ params: ['handleInput', ClientX, ClientY, AltKey]
12141
12157
  }, {
12142
12158
  name: HandleBlur,
12143
12159
  params: ['handleBlur']
@@ -12159,11 +12175,11 @@ const renderEventListeners = () => {
12159
12175
  preventDefault: true
12160
12176
  }, {
12161
12177
  name: HandleWheel,
12162
- params: ['setDelta', 'event.deltaMode', 'event.deltaY'],
12163
- preventDefault: true
12178
+ params: ['setDelta', DeltaMode, DeltaY],
12179
+ passive: true
12164
12180
  }, {
12165
12181
  name: HandleContextMenu,
12166
- params: ['handleContextMenu', 'event.button', 'event.clientX', 'event.clientY'],
12182
+ params: ['handleContextMenu', Button, ClientX, ClientY],
12167
12183
  preventDefault: true
12168
12184
  }];
12169
12185
  };
@@ -12499,25 +12515,15 @@ const commandMap = {
12499
12515
  'Listener.unregister': unregisterListener,
12500
12516
  'SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker': sendMessagePortToExtensionHostWorker2
12501
12517
  };
12502
-
12503
- const send = port => {
12504
- // @ts-ignore
12505
- return sendMessagePortToTextMeasurementWorker(port);
12506
- };
12507
- const createTextMeasurementWorkerRpc = async () => {
12508
- try {
12509
- const rpc = await create$c({
12510
- commandMap: {},
12511
- send
12512
- });
12513
- return rpc;
12514
- } catch (error) {
12515
- throw new VError(error, `Failed to create text measurement worker rpc`);
12518
+ for (const [key, value] of Object.entries(commandMap)) {
12519
+ if (key.startsWith('Editor.')) {
12520
+ // @ts-ignore
12521
+ commandMap['EditorText' + key.slice('Editor'.length)] = value;
12516
12522
  }
12517
- };
12523
+ }
12518
12524
 
12519
12525
  const listen = async () => {
12520
- setFactory$1(createTextMeasurementWorkerRpc);
12526
+ registerCommands(commandMap);
12521
12527
  const rpc = await create$b({
12522
12528
  commandMap: commandMap
12523
12529
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/editor-worker",
3
- "version": "18.4.0",
3
+ "version": "18.5.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@github.com:lvce-editor/editor-worker.git"