@lvce-editor/editor-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/dist/editorWorkerMain.js +64 -53
- package/package.json +1 -1
package/dist/editorWorkerMain.js
CHANGED
|
@@ -966,11 +966,11 @@ const setText = (editor, text) => {
|
|
|
966
966
|
};
|
|
967
967
|
|
|
968
968
|
const editors = Object.create(null);
|
|
969
|
-
const get$
|
|
969
|
+
const get$6 = id => {
|
|
970
970
|
number$1(id);
|
|
971
971
|
return editors[id];
|
|
972
972
|
};
|
|
973
|
-
const set$
|
|
973
|
+
const set$6 = (id, oldEditor, newEditor) => {
|
|
974
974
|
number$1(id);
|
|
975
975
|
object(oldEditor);
|
|
976
976
|
object(newEditor);
|
|
@@ -1046,10 +1046,10 @@ const number = value => {
|
|
|
1046
1046
|
const state$1$1 = {
|
|
1047
1047
|
callbacks: Object.create(null)
|
|
1048
1048
|
};
|
|
1049
|
-
const set$
|
|
1049
|
+
const set$5 = (id, fn) => {
|
|
1050
1050
|
state$1$1.callbacks[id] = fn;
|
|
1051
1051
|
};
|
|
1052
|
-
const get$
|
|
1052
|
+
const get$5 = id => {
|
|
1053
1053
|
return state$1$1.callbacks[id];
|
|
1054
1054
|
};
|
|
1055
1055
|
const remove = id => {
|
|
@@ -1083,7 +1083,7 @@ const registerPromise = () => {
|
|
|
1083
1083
|
resolve,
|
|
1084
1084
|
promise
|
|
1085
1085
|
} = withResolvers$2();
|
|
1086
|
-
set$
|
|
1086
|
+
set$5(id, resolve);
|
|
1087
1087
|
return {
|
|
1088
1088
|
id,
|
|
1089
1089
|
promise
|
|
@@ -1091,7 +1091,7 @@ const registerPromise = () => {
|
|
|
1091
1091
|
};
|
|
1092
1092
|
const resolve = (id, args) => {
|
|
1093
1093
|
number(id);
|
|
1094
|
-
const fn = get$
|
|
1094
|
+
const fn = get$5(id);
|
|
1095
1095
|
if (!fn) {
|
|
1096
1096
|
console.log(args);
|
|
1097
1097
|
warn$1(`callback ${id} may already be disposed`);
|
|
@@ -1431,23 +1431,23 @@ const state$8 = {
|
|
|
1431
1431
|
*/
|
|
1432
1432
|
ipc: undefined
|
|
1433
1433
|
};
|
|
1434
|
-
const get$
|
|
1434
|
+
const get$4 = () => {
|
|
1435
1435
|
return state$8.ipc;
|
|
1436
1436
|
};
|
|
1437
|
-
const set$
|
|
1437
|
+
const set$4 = ipc => {
|
|
1438
1438
|
state$8.ipc = ipc;
|
|
1439
1439
|
};
|
|
1440
1440
|
|
|
1441
1441
|
const invoke$4 = (method, ...params) => {
|
|
1442
|
-
const ipc = get$
|
|
1442
|
+
const ipc = get$4();
|
|
1443
1443
|
return invoke$5(ipc, method, ...params);
|
|
1444
1444
|
};
|
|
1445
1445
|
const invokeAndTransfer$1 = async (transfer, method, ...params) => {
|
|
1446
|
-
const ipc = get$
|
|
1446
|
+
const ipc = get$4();
|
|
1447
1447
|
return invokeAndTransfer$2(ipc, transfer, method, ...params);
|
|
1448
1448
|
};
|
|
1449
1449
|
const listen$8 = ipc => {
|
|
1450
|
-
set$
|
|
1450
|
+
set$4(ipc);
|
|
1451
1451
|
};
|
|
1452
1452
|
|
|
1453
1453
|
const invoke$3 = async (method, ...params) => {
|
|
@@ -1821,7 +1821,7 @@ const createEditor = async ({
|
|
|
1821
1821
|
focused: true
|
|
1822
1822
|
};
|
|
1823
1823
|
// console.log({ newEditor })
|
|
1824
|
-
set$
|
|
1824
|
+
set$6(id, emptyEditor, newEditor4);
|
|
1825
1825
|
await invoke$2(TextDocumentSyncFull, uri, id, languageId, content);
|
|
1826
1826
|
};
|
|
1827
1827
|
|
|
@@ -3661,10 +3661,10 @@ const state$4 = {
|
|
|
3661
3661
|
y: 0,
|
|
3662
3662
|
editor: undefined
|
|
3663
3663
|
};
|
|
3664
|
-
const get$
|
|
3664
|
+
const get$3 = () => {
|
|
3665
3665
|
return state$4;
|
|
3666
3666
|
};
|
|
3667
|
-
const set$
|
|
3667
|
+
const set$3 = (editor, timeout, x, y) => {
|
|
3668
3668
|
state$4.editor = editor;
|
|
3669
3669
|
state$4.timeout = timeout;
|
|
3670
3670
|
state$4.x = x;
|
|
@@ -3690,7 +3690,7 @@ const onHoverIdle = async () => {
|
|
|
3690
3690
|
x,
|
|
3691
3691
|
y,
|
|
3692
3692
|
editor
|
|
3693
|
-
} = get$
|
|
3693
|
+
} = get$3();
|
|
3694
3694
|
at(editor, x, y);
|
|
3695
3695
|
await showHover$1();
|
|
3696
3696
|
};
|
|
@@ -3701,12 +3701,12 @@ const handleMouseMove = (editor, x, y) => {
|
|
|
3701
3701
|
if (!editor.hoverEnabled) {
|
|
3702
3702
|
return editor;
|
|
3703
3703
|
}
|
|
3704
|
-
const oldState = get$
|
|
3704
|
+
const oldState = get$3();
|
|
3705
3705
|
if (oldState.timeout !== -1) {
|
|
3706
3706
|
clearTimeout(oldState.timeout);
|
|
3707
3707
|
}
|
|
3708
3708
|
const timeout = setTimeout(onHoverIdle, hoverDelay);
|
|
3709
|
-
set$
|
|
3709
|
+
set$3(editor, timeout, x, y);
|
|
3710
3710
|
return editor;
|
|
3711
3711
|
};
|
|
3712
3712
|
|
|
@@ -5176,7 +5176,7 @@ const setDecorations = (editor, decorations, diagnostics) => {
|
|
|
5176
5176
|
};
|
|
5177
5177
|
|
|
5178
5178
|
const getEditor = editorUid => {
|
|
5179
|
-
const instance = get$
|
|
5179
|
+
const instance = get$6(editorUid);
|
|
5180
5180
|
if (!instance) {
|
|
5181
5181
|
throw new Error(`editor ${editorUid} not found`);
|
|
5182
5182
|
}
|
|
@@ -5236,21 +5236,47 @@ const state$1 = {
|
|
|
5236
5236
|
const has = languageId => {
|
|
5237
5237
|
return languageId in state$1.tokenizers;
|
|
5238
5238
|
};
|
|
5239
|
-
const set$
|
|
5239
|
+
const set$2 = (languageId, tokenizer) => {
|
|
5240
5240
|
state$1.tokenizers[languageId] = tokenizer;
|
|
5241
5241
|
};
|
|
5242
|
-
const get$
|
|
5242
|
+
const get$2 = languageId => {
|
|
5243
5243
|
return state$1.tokenizers[languageId];
|
|
5244
5244
|
};
|
|
5245
5245
|
const isPending = languageId => {
|
|
5246
5246
|
return languageId in state$1.pending;
|
|
5247
5247
|
};
|
|
5248
5248
|
|
|
5249
|
+
let enabled = false;
|
|
5250
|
+
const setEnabled = value => {
|
|
5251
|
+
enabled = value;
|
|
5252
|
+
};
|
|
5253
|
+
const getEnabled = () => {
|
|
5254
|
+
return enabled;
|
|
5255
|
+
};
|
|
5256
|
+
|
|
5257
|
+
const {
|
|
5258
|
+
listen: listen$6,
|
|
5259
|
+
invoke: invoke$1
|
|
5260
|
+
} = createRpc(SyntaxHighlightingWorker);
|
|
5261
|
+
|
|
5262
|
+
const tokenMaps = Object.create(null);
|
|
5263
|
+
const set$1 = (languageId, tokenMap) => {
|
|
5264
|
+
tokenMaps[languageId] = tokenMap;
|
|
5265
|
+
};
|
|
5266
|
+
const get$1 = languageId => {
|
|
5267
|
+
return tokenMaps[languageId] || {};
|
|
5268
|
+
};
|
|
5269
|
+
|
|
5249
5270
|
// TODO loadTokenizer should be invoked from renderer worker
|
|
5250
5271
|
const loadTokenizer = async (languageId, tokenizePath) => {
|
|
5251
5272
|
if (!tokenizePath) {
|
|
5252
5273
|
return;
|
|
5253
5274
|
}
|
|
5275
|
+
if (getEnabled()) {
|
|
5276
|
+
const tokenMap = await invoke$1('Tokenizer.load', languageId, tokenizePath);
|
|
5277
|
+
set$1(languageId, tokenMap);
|
|
5278
|
+
return;
|
|
5279
|
+
}
|
|
5254
5280
|
try {
|
|
5255
5281
|
// TODO check that tokenizer is valid
|
|
5256
5282
|
// 1. tokenizeLine should be of type function
|
|
@@ -5264,7 +5290,8 @@ const loadTokenizer = async (languageId, tokenizePath) => {
|
|
|
5264
5290
|
console.warn(`tokenizer.TokenMap should be an object in "${tokenizePath}"`);
|
|
5265
5291
|
return;
|
|
5266
5292
|
}
|
|
5267
|
-
set$1(languageId, tokenizer);
|
|
5293
|
+
set$1(languageId, tokenizer.TokenMap);
|
|
5294
|
+
set$2(languageId, tokenizer);
|
|
5268
5295
|
} catch (error) {
|
|
5269
5296
|
// TODO better error handling
|
|
5270
5297
|
console.error(error);
|
|
@@ -5273,7 +5300,7 @@ const loadTokenizer = async (languageId, tokenizePath) => {
|
|
|
5273
5300
|
};
|
|
5274
5301
|
const getTokenizer = languageId => {
|
|
5275
5302
|
if (has(languageId)) {
|
|
5276
|
-
return get$
|
|
5303
|
+
return get$2(languageId);
|
|
5277
5304
|
}
|
|
5278
5305
|
if (isPending(languageId)) {
|
|
5279
5306
|
return TokenizePlainText;
|
|
@@ -6391,19 +6418,19 @@ const getHover = async (editor, offset) => {
|
|
|
6391
6418
|
};
|
|
6392
6419
|
|
|
6393
6420
|
let _ipc;
|
|
6394
|
-
const listen$
|
|
6421
|
+
const listen$5 = async () => {
|
|
6395
6422
|
const ipc = await create$1({
|
|
6396
6423
|
method: RendererProcess
|
|
6397
6424
|
});
|
|
6398
6425
|
handleIpc(ipc);
|
|
6399
6426
|
_ipc = ipc;
|
|
6400
6427
|
};
|
|
6401
|
-
const invoke
|
|
6428
|
+
const invoke = async (method, ...args) => {
|
|
6402
6429
|
return invoke$5(_ipc, method, ...args);
|
|
6403
6430
|
};
|
|
6404
6431
|
|
|
6405
6432
|
const measureTextBlockHeight = (text, fontFamily, fontSize, lineHeight, width) => {
|
|
6406
|
-
return invoke
|
|
6433
|
+
return invoke('MeasureTextBlockHeight.measureTextBlockHeight', text, fontSize, fontFamily, lineHeight, width);
|
|
6407
6434
|
};
|
|
6408
6435
|
|
|
6409
6436
|
const deepCopy = value => {
|
|
@@ -6541,7 +6568,7 @@ const getHoverPositionXy = (editor, rowIndex, wordStart, documentationHeight) =>
|
|
|
6541
6568
|
};
|
|
6542
6569
|
const getEditorHoverInfo = async (editorUid, position) => {
|
|
6543
6570
|
number$1(editorUid);
|
|
6544
|
-
const instance = get$
|
|
6571
|
+
const instance = get$6(editorUid);
|
|
6545
6572
|
const editor = instance.newState;
|
|
6546
6573
|
const {
|
|
6547
6574
|
selections
|
|
@@ -6591,24 +6618,11 @@ const handleBeforeInput = (editor, inputType, data) => {
|
|
|
6591
6618
|
}
|
|
6592
6619
|
};
|
|
6593
6620
|
|
|
6594
|
-
const {
|
|
6595
|
-
listen: listen$5,
|
|
6596
|
-
invoke
|
|
6597
|
-
} = createRpc(SyntaxHighlightingWorker);
|
|
6598
|
-
|
|
6599
|
-
let enabled = false;
|
|
6600
|
-
const setEnabled = value => {
|
|
6601
|
-
enabled = value;
|
|
6602
|
-
};
|
|
6603
|
-
const getEnabled = () => {
|
|
6604
|
-
return enabled;
|
|
6605
|
-
};
|
|
6606
|
-
|
|
6607
6621
|
const intialize = async syntaxHighlightingEnabled => {
|
|
6608
|
-
await listen$
|
|
6622
|
+
await listen$5();
|
|
6609
6623
|
if (syntaxHighlightingEnabled) {
|
|
6610
6624
|
setEnabled(true);
|
|
6611
|
-
await listen$
|
|
6625
|
+
await listen$6();
|
|
6612
6626
|
}
|
|
6613
6627
|
await listen$7();
|
|
6614
6628
|
};
|
|
@@ -6873,7 +6887,7 @@ const getTokensViewport = (editor, startLineIndex, endLineIndex) => {
|
|
|
6873
6887
|
const getTokensViewport2 = (editor, startLineIndex, endLineIndex) => {
|
|
6874
6888
|
if (getEnabled()) {
|
|
6875
6889
|
// TODO only send needed lines of text
|
|
6876
|
-
return invoke('GetTokensViewport.getTokensViewport', editor, startLineIndex, endLineIndex);
|
|
6890
|
+
return invoke$1('GetTokensViewport.getTokensViewport', editor, startLineIndex, endLineIndex);
|
|
6877
6891
|
}
|
|
6878
6892
|
return getTokensViewport(editor, startLineIndex, endLineIndex);
|
|
6879
6893
|
};
|
|
@@ -7063,13 +7077,10 @@ const getLineInfosViewport = (editor, tokens, embeddedResults, minLineY, maxLine
|
|
|
7063
7077
|
const differences = [];
|
|
7064
7078
|
const {
|
|
7065
7079
|
lines,
|
|
7066
|
-
|
|
7067
|
-
|
|
7080
|
+
decorations,
|
|
7081
|
+
languageId
|
|
7068
7082
|
} = editor;
|
|
7069
|
-
const
|
|
7070
|
-
const {
|
|
7071
|
-
TokenMap
|
|
7072
|
-
} = tokenizer;
|
|
7083
|
+
const tokenMap = get$1(languageId);
|
|
7073
7084
|
let offset = minLineOffset;
|
|
7074
7085
|
const tabSize = 2;
|
|
7075
7086
|
for (let i = minLineY; i < maxLineY; i++) {
|
|
@@ -7078,7 +7089,7 @@ const getLineInfosViewport = (editor, tokens, embeddedResults, minLineY, maxLine
|
|
|
7078
7089
|
const {
|
|
7079
7090
|
lineInfo,
|
|
7080
7091
|
difference
|
|
7081
|
-
} = getLineInfo(line, tokens[i - minLineY], embeddedResults, decorations,
|
|
7092
|
+
} = getLineInfo(line, tokens[i - minLineY], embeddedResults, decorations, tokenMap, offset, normalize, tabSize, width, deltaX, averageCharWidth);
|
|
7082
7093
|
result.push(lineInfo);
|
|
7083
7094
|
differences.push(difference);
|
|
7084
7095
|
offset += line.length + 1;
|
|
@@ -7395,7 +7406,7 @@ const renderGutterInfo = {
|
|
|
7395
7406
|
};
|
|
7396
7407
|
const render = [renderLines, renderSelections, renderScrollBarX, renderScrollBarY, renderFocus, renderDecorations, renderGutterInfo];
|
|
7397
7408
|
const renderEditor = async id => {
|
|
7398
|
-
const instance = get$
|
|
7409
|
+
const instance = get$6(id);
|
|
7399
7410
|
if (!instance) {
|
|
7400
7411
|
return [];
|
|
7401
7412
|
}
|
|
@@ -7409,7 +7420,7 @@ const renderEditor = async id => {
|
|
|
7409
7420
|
commands.push(await item.apply(oldState, newState));
|
|
7410
7421
|
}
|
|
7411
7422
|
}
|
|
7412
|
-
set$
|
|
7423
|
+
set$6(id, newState, newState);
|
|
7413
7424
|
return commands;
|
|
7414
7425
|
};
|
|
7415
7426
|
|
|
@@ -7418,9 +7429,9 @@ const keep = ['ColorPicker.handleSliderPointerDown', 'ColorPicker.handleSliderPo
|
|
|
7418
7429
|
// TODO wrap commands globally, not per editor
|
|
7419
7430
|
// TODO only store editor state in editor worker, not in renderer worker also
|
|
7420
7431
|
const wrapCommand = fn => async (editorUid, ...args) => {
|
|
7421
|
-
const oldInstance = get$
|
|
7432
|
+
const oldInstance = get$6(editorUid);
|
|
7422
7433
|
const newEditor = await fn(oldInstance.newState, ...args);
|
|
7423
|
-
set$
|
|
7434
|
+
set$6(editorUid, oldInstance.newState, newEditor);
|
|
7424
7435
|
// TODO if possible, rendering should be sync
|
|
7425
7436
|
const commands = await renderEditor(editorUid);
|
|
7426
7437
|
newEditor.commands = commands;
|