@atlaskit/editor-plugin-autocomplete 3.6.0 → 3.6.2
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/CANONICAL_FIX__DO_NOT_USE_ME_A/package.json +1 -8
- package/CANONICAL_FIX__DO_NOT_USE_ME_B/package.json +1 -8
- package/CANONICAL_FIX__DO_NOT_USE_ME_C/package.json +1 -8
- package/CHANGELOG.md +21 -0
- package/autocompletePlugin/package.json +1 -8
- package/autocompletePluginType/package.json +1 -8
- package/dist/cjs/pm-plugins/autocomplete-plugin.js +20 -2
- package/dist/cjs/pm-plugins/local-slow-lane-client.js +3 -1
- package/dist/cjs/pm-plugins/text-predictor.js +18 -4
- package/dist/es2019/pm-plugins/autocomplete-plugin.js +20 -2
- package/dist/es2019/pm-plugins/local-slow-lane-client.js +3 -1
- package/dist/es2019/pm-plugins/text-predictor.js +17 -3
- package/dist/esm/pm-plugins/autocomplete-plugin.js +20 -2
- package/dist/esm/pm-plugins/local-slow-lane-client.js +3 -1
- package/dist/esm/pm-plugins/text-predictor.js +18 -4
- package/dist/types/pm-plugins/local-slow-lane-client.d.ts +2 -2
- package/dist/types/pm-plugins/text-predictor.d.ts +4 -1
- package/package.json +2 -2
- package/src/pm-plugins/autocomplete-plugin/package.json +1 -8
- package/src/pm-plugins/autocomplete-plugin.ts +18 -2
- package/src/pm-plugins/local-slow-lane-client.ts +10 -17
- package/src/pm-plugins/slow-lane-client/package.json +1 -8
- package/src/pm-plugins/text-predictor/package.json +1 -8
- package/src/pm-plugins/text-predictor.ts +15 -6
- package/dist/types-ts4.5/analytics/ufo.d.ts +0 -38
- package/dist/types-ts4.5/autocompletePlugin.d.ts +0 -2
- package/dist/types-ts4.5/autocompletePluginType.d.ts +0 -10
- package/dist/types-ts4.5/entry-points/autocompletePlugin.d.ts +0 -1
- package/dist/types-ts4.5/entry-points/autocompletePluginType.d.ts +0 -1
- package/dist/types-ts4.5/entry-points/src-pm-plugins-autocomplete-plugin.d.ts +0 -2
- package/dist/types-ts4.5/entry-points/src-pm-plugins-slow-lane-client.d.ts +0 -2
- package/dist/types-ts4.5/entry-points/src-pm-plugins-text-predictor.d.ts +0 -2
- package/dist/types-ts4.5/index.d.ts +0 -2
- package/dist/types-ts4.5/pm-plugins/autocomplete-plugin.d.ts +0 -49
- package/dist/types-ts4.5/pm-plugins/debug-mode.d.ts +0 -27
- package/dist/types-ts4.5/pm-plugins/ghost-text-decoration.d.ts +0 -7
- package/dist/types-ts4.5/pm-plugins/local-slow-lane-client.d.ts +0 -241
- package/dist/types-ts4.5/pm-plugins/scoring-pipeline.d.ts +0 -43
- package/dist/types-ts4.5/pm-plugins/slow-lane-client.d.ts +0 -46
- package/dist/types-ts4.5/pm-plugins/text-predictor.d.ts +0 -88
|
@@ -4,12 +4,5 @@
|
|
|
4
4
|
"module": "../dist/esm/pm-plugins/autocomplete-plugin.js",
|
|
5
5
|
"module:es2019": "../dist/es2019/pm-plugins/autocomplete-plugin.js",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"types": "../dist/types/pm-plugins/autocomplete-plugin.d.ts"
|
|
8
|
-
"typesVersions": {
|
|
9
|
-
">=4.5 <5.9": {
|
|
10
|
-
"*": [
|
|
11
|
-
"../dist/types-ts4.5/pm-plugins/autocomplete-plugin.d.ts"
|
|
12
|
-
]
|
|
13
|
-
}
|
|
14
|
-
}
|
|
7
|
+
"types": "../dist/types/pm-plugins/autocomplete-plugin.d.ts"
|
|
15
8
|
}
|
|
@@ -4,12 +4,5 @@
|
|
|
4
4
|
"module": "../dist/esm/pm-plugins/slow-lane-client.js",
|
|
5
5
|
"module:es2019": "../dist/es2019/pm-plugins/slow-lane-client.js",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"types": "../dist/types/pm-plugins/slow-lane-client.d.ts"
|
|
8
|
-
"typesVersions": {
|
|
9
|
-
">=4.5 <5.9": {
|
|
10
|
-
"*": [
|
|
11
|
-
"../dist/types-ts4.5/pm-plugins/slow-lane-client.d.ts"
|
|
12
|
-
]
|
|
13
|
-
}
|
|
14
|
-
}
|
|
7
|
+
"types": "../dist/types/pm-plugins/slow-lane-client.d.ts"
|
|
15
8
|
}
|
|
@@ -4,12 +4,5 @@
|
|
|
4
4
|
"module": "../dist/esm/pm-plugins/text-predictor.js",
|
|
5
5
|
"module:es2019": "../dist/es2019/pm-plugins/text-predictor.js",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"types": "../dist/types/pm-plugins/text-predictor.d.ts"
|
|
8
|
-
"typesVersions": {
|
|
9
|
-
">=4.5 <5.9": {
|
|
10
|
-
"*": [
|
|
11
|
-
"../dist/types-ts4.5/pm-plugins/text-predictor.d.ts"
|
|
12
|
-
]
|
|
13
|
-
}
|
|
14
|
-
}
|
|
7
|
+
"types": "../dist/types/pm-plugins/text-predictor.d.ts"
|
|
15
8
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-autocomplete
|
|
2
2
|
|
|
3
|
+
## 3.6.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`8ed22a585196f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8ed22a585196f) -
|
|
8
|
+
[ux] Fixes a bug where autocomplete suggestions were shown when the cursor was positioned in the
|
|
9
|
+
middle of an existing word. Suggestions are now suppressed unless the cursor is at the trailing
|
|
10
|
+
edge of a token.
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
13
|
+
## 3.6.1
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- [`2d57d65205edd`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2d57d65205edd) -
|
|
18
|
+
[ASIMO] Add `isLocalLLM` attribute to `load-vectors` and `load-vocabulary` UFO experiences.
|
|
19
|
+
|
|
20
|
+
Both experiences now include an `isLocalLLM: boolean` attribute on every event (start, succeed,
|
|
21
|
+
fail) so analysts can segment loading performance and reliability by whether the user is on the
|
|
22
|
+
local on-device model setup vs the standard network-based slow-lane backend.
|
|
23
|
+
|
|
3
24
|
## 3.6.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
|
@@ -4,12 +4,5 @@
|
|
|
4
4
|
"module": "../dist/esm/entry-points/autocompletePlugin.js",
|
|
5
5
|
"module:es2019": "../dist/es2019/entry-points/autocompletePlugin.js",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"types": "../dist/types/entry-points/autocompletePlugin.d.ts"
|
|
8
|
-
"typesVersions": {
|
|
9
|
-
">=4.5 <5.9": {
|
|
10
|
-
"*": [
|
|
11
|
-
"../dist/types-ts4.5/entry-points/autocompletePlugin.d.ts"
|
|
12
|
-
]
|
|
13
|
-
}
|
|
14
|
-
}
|
|
7
|
+
"types": "../dist/types/entry-points/autocompletePlugin.d.ts"
|
|
15
8
|
}
|
|
@@ -4,12 +4,5 @@
|
|
|
4
4
|
"module": "../dist/esm/entry-points/autocompletePluginType.js",
|
|
5
5
|
"module:es2019": "../dist/es2019/entry-points/autocompletePluginType.js",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"types": "../dist/types/entry-points/autocompletePluginType.d.ts"
|
|
8
|
-
"typesVersions": {
|
|
9
|
-
">=4.5 <5.9": {
|
|
10
|
-
"*": [
|
|
11
|
-
"../dist/types-ts4.5/entry-points/autocompletePluginType.d.ts"
|
|
12
|
-
]
|
|
13
|
-
}
|
|
14
|
-
}
|
|
7
|
+
"types": "../dist/types/entry-points/autocompletePluginType.d.ts"
|
|
15
8
|
}
|
|
@@ -435,11 +435,25 @@ var createAutocompletePlugin = exports.createAutocompletePlugin = function creat
|
|
|
435
435
|
}
|
|
436
436
|
debounceTimer = setTimeout(function () {
|
|
437
437
|
try {
|
|
438
|
+
var _nodeAfter$text;
|
|
438
439
|
var state = view.state;
|
|
439
440
|
var selection = state.selection;
|
|
440
441
|
if (!selection.empty) {
|
|
441
442
|
return;
|
|
442
443
|
}
|
|
444
|
+
|
|
445
|
+
// Suppress suggestions when the cursor is mid-word — only offer
|
|
446
|
+
// completions when the cursor is at the trailing edge of a token.
|
|
447
|
+
// nodeAfter correctly handles inline atoms (mentions, emojis) where
|
|
448
|
+
// parentOffset and textContent indices diverge.
|
|
449
|
+
var nodeAfter = selection.$from.nodeAfter;
|
|
450
|
+
var charAfterCursor = nodeAfter !== null && nodeAfter !== void 0 && nodeAfter.isText ? (_nodeAfter$text = nodeAfter.text) === null || _nodeAfter$text === void 0 ? void 0 : _nodeAfter$text[0] : undefined;
|
|
451
|
+
// Only suppress for Unicode letters, digits, and underscore — hyphens,
|
|
452
|
+
// apostrophes, and similar punctuation are valid left-edge boundaries
|
|
453
|
+
// and should not block suggestions (e.g. cursor before '-' in compound-word).
|
|
454
|
+
if (charAfterCursor && /(?:[0-9A-Z_a-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088F\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5C\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDC-\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7DC\uA7F1-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD40-\uDD59\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDD40-\uDD65\uDD6F-\uDD85\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC7\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDED0-\uDEE3\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0\uDFF0-\uDFF9]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDDB0-\uDDDB\uDDE0-\uDDE9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D\uDD30-\uDD39]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDD70-\uDD79\uDE40-\uDE96\uDEA0-\uDEB8\uDEBB-\uDED3\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3\uDFF2-\uDFF6]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDDD0-\uDDED\uDDF0-\uDDFA\uDEC0-\uDEDE\uDEE0-\uDEE2\uDEE4\uDEE5\uDEE7-\uDEED\uDEF0-\uDEF4\uDEFE\uDEFF\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79])/.test(charAfterCursor)) {
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
443
457
|
var textBefore = getTextBeforeCursor(state);
|
|
444
458
|
|
|
445
459
|
// Suppress re-showing the same suggestion the user just dismissed.
|
|
@@ -583,13 +597,17 @@ var createAutocompletePlugin = exports.createAutocompletePlugin = function creat
|
|
|
583
597
|
return false;
|
|
584
598
|
},
|
|
585
599
|
focus: function focus() {
|
|
586
|
-
|
|
600
|
+
var _options$useLocalMode, _options$useLocalMode2;
|
|
601
|
+
(0, _textPredictor.loadDefaultVocabulary)({
|
|
602
|
+
isLocalLLM: (_options$useLocalMode = options === null || options === void 0 ? void 0 : options.useLocalModel) !== null && _options$useLocalMode !== void 0 ? _options$useLocalMode : false
|
|
603
|
+
}).catch(function (error) {
|
|
587
604
|
(0, _monitoring.logException)(error, {
|
|
588
605
|
location: 'editor-plugin-autocomplete/loadDefaultVocabulary'
|
|
589
606
|
});
|
|
590
607
|
});
|
|
591
608
|
(0, _textPredictor.loadVectorsAsync)({
|
|
592
|
-
getBinaryUrl: options === null || options === void 0 ? void 0 : options.getVectorsBinaryUrl
|
|
609
|
+
getBinaryUrl: options === null || options === void 0 ? void 0 : options.getVectorsBinaryUrl,
|
|
610
|
+
isLocalLLM: (_options$useLocalMode2 = options === null || options === void 0 ? void 0 : options.useLocalModel) !== null && _options$useLocalMode2 !== void 0 ? _options$useLocalMode2 : false
|
|
593
611
|
}).catch(function (error) {
|
|
594
612
|
(0, _monitoring.logException)(error, {
|
|
595
613
|
location: 'editor-plugin-autocomplete/loadVectorsAsync'
|
|
@@ -765,7 +765,9 @@ var createLocalSlowLaneClient = exports.createLocalSlowLaneClient = function cre
|
|
|
765
765
|
if (lower.includes('loading chunk') || lower.includes('dynamically imported module') || lower.includes('dynamic import')) {
|
|
766
766
|
return 'module_load_failed';
|
|
767
767
|
}
|
|
768
|
-
if (lower.includes('out of memory') ||
|
|
768
|
+
if (lower.includes('out of memory') ||
|
|
769
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
770
|
+
/\boom\b/.test(lower) || lower.includes('allocation') || lower.includes('exceeds') || lower.includes('buffer size') || lower.includes('not enough memory')) {
|
|
769
771
|
return 'insufficient_memory';
|
|
770
772
|
}
|
|
771
773
|
// Pre-flight already returns missing_shader_f16 when the feature is absent,
|
|
@@ -733,7 +733,8 @@ var unwrapJsonModule = function unwrapJsonModule(mod, shape) {
|
|
|
733
733
|
};
|
|
734
734
|
var loadVectorsAsync = exports.loadVectorsAsync = /*#__PURE__*/function () {
|
|
735
735
|
var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
|
|
736
|
-
var
|
|
736
|
+
var _options$isLocalLLM;
|
|
737
|
+
var isLocalLLM, url, _wordIndexOuter$index, res, buffer, float32, wordIndexModule, wordIndexOuter, wordIndex, nWords, dim, _t, _t2;
|
|
737
738
|
return _regenerator.default.wrap(function (_context) {
|
|
738
739
|
while (1) switch (_context.prev = _context.next) {
|
|
739
740
|
case 0:
|
|
@@ -751,8 +752,11 @@ var loadVectorsAsync = exports.loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
751
752
|
console.warn('[text-predictor] loadVectorsAsync called without a getBinaryUrl — vectors will not load. Pass getVectorsBinaryUrl via plugin options.');
|
|
752
753
|
return _context.abrupt("return");
|
|
753
754
|
case 2:
|
|
755
|
+
isLocalLLM = (_options$isLocalLLM = options === null || options === void 0 ? void 0 : options.isLocalLLM) !== null && _options$isLocalLLM !== void 0 ? _options$isLocalLLM : false;
|
|
754
756
|
vectorsLoadStarted = true;
|
|
755
|
-
(0, _ufo.startExp)(_ufo.EXPERIENCE_NAME.LOAD_VECTORS, 'singleton'
|
|
757
|
+
(0, _ufo.startExp)(_ufo.EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
758
|
+
isLocalLLM: isLocalLLM
|
|
759
|
+
});
|
|
756
760
|
_context.prev = 3;
|
|
757
761
|
_context.next = 4;
|
|
758
762
|
return options.getBinaryUrl();
|
|
@@ -765,6 +769,7 @@ var loadVectorsAsync = exports.loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
765
769
|
_t = _context["catch"](3);
|
|
766
770
|
vectorsLoadStarted = false;
|
|
767
771
|
(0, _ufo.failExp)(_ufo.EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
772
|
+
isLocalLLM: isLocalLLM,
|
|
768
773
|
errorType: 'resolve_url'
|
|
769
774
|
});
|
|
770
775
|
// eslint-disable-next-line no-console
|
|
@@ -782,6 +787,7 @@ var loadVectorsAsync = exports.loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
782
787
|
}
|
|
783
788
|
vectorsLoadStarted = false;
|
|
784
789
|
(0, _ufo.failExp)(_ufo.EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
790
|
+
isLocalLLM: isLocalLLM,
|
|
785
791
|
status: res.status,
|
|
786
792
|
errorType: 'http_error'
|
|
787
793
|
});
|
|
@@ -816,6 +822,7 @@ var loadVectorsAsync = exports.loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
816
822
|
dim: dim
|
|
817
823
|
};
|
|
818
824
|
(0, _ufo.succeedExp)(_ufo.EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
825
|
+
isLocalLLM: isLocalLLM,
|
|
819
826
|
wordCount: nWords,
|
|
820
827
|
dim: dim,
|
|
821
828
|
sizeBytes: float32.byteLength
|
|
@@ -835,6 +842,7 @@ var loadVectorsAsync = exports.loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
835
842
|
_t2 = _context["catch"](6);
|
|
836
843
|
vectorsLoadStarted = false;
|
|
837
844
|
(0, _ufo.failExp)(_ufo.EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
845
|
+
isLocalLLM: isLocalLLM,
|
|
838
846
|
errorType: 'network'
|
|
839
847
|
});
|
|
840
848
|
// eslint-disable-next-line no-console
|
|
@@ -853,19 +861,23 @@ var initVectors = exports.initVectors = function initVectors(store) {
|
|
|
853
861
|
vectorStore = store;
|
|
854
862
|
};
|
|
855
863
|
var vocabularyLoadPromise;
|
|
856
|
-
var loadDefaultVocabulary = exports.loadDefaultVocabulary = function loadDefaultVocabulary() {
|
|
864
|
+
var loadDefaultVocabulary = exports.loadDefaultVocabulary = function loadDefaultVocabulary(options) {
|
|
865
|
+
var _options$isLocalLLM2;
|
|
857
866
|
if (isInitialized) {
|
|
858
867
|
return Promise.resolve();
|
|
859
868
|
}
|
|
860
869
|
if (vocabularyLoadPromise) {
|
|
861
870
|
return vocabularyLoadPromise;
|
|
862
871
|
}
|
|
872
|
+
var isLocalLLM = (_options$isLocalLLM2 = options === null || options === void 0 ? void 0 : options.isLocalLLM) !== null && _options$isLocalLLM2 !== void 0 ? _options$isLocalLLM2 : false;
|
|
863
873
|
vocabularyLoadPromise = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
864
874
|
var _yield$Promise$all, _yield$Promise$all2, vocabularyModule, l3VocabularyModule, vocabularyData, l3VocabularyData, terms, _t3;
|
|
865
875
|
return _regenerator.default.wrap(function (_context2) {
|
|
866
876
|
while (1) switch (_context2.prev = _context2.next) {
|
|
867
877
|
case 0:
|
|
868
|
-
(0, _ufo.startExp)(_ufo.EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton'
|
|
878
|
+
(0, _ufo.startExp)(_ufo.EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
879
|
+
isLocalLLM: isLocalLLM
|
|
880
|
+
});
|
|
869
881
|
_context2.prev = 1;
|
|
870
882
|
_context2.next = 2;
|
|
871
883
|
return Promise.all([Promise.resolve().then(function () {
|
|
@@ -904,6 +916,7 @@ var loadDefaultVocabulary = exports.loadDefaultVocabulary = function loadDefault
|
|
|
904
916
|
terms: terms
|
|
905
917
|
});
|
|
906
918
|
(0, _ufo.succeedExp)(_ufo.EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
919
|
+
isLocalLLM: isLocalLLM,
|
|
907
920
|
l2WordCount: terms.length,
|
|
908
921
|
l3WordCount: l3VocabularyData.length
|
|
909
922
|
});
|
|
@@ -913,6 +926,7 @@ var loadDefaultVocabulary = exports.loadDefaultVocabulary = function loadDefault
|
|
|
913
926
|
_context2.prev = 4;
|
|
914
927
|
_t3 = _context2["catch"](1);
|
|
915
928
|
(0, _ufo.failExp)(_ufo.EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
929
|
+
isLocalLLM: isLocalLLM,
|
|
916
930
|
errorType: 'parse_error'
|
|
917
931
|
});
|
|
918
932
|
// Allow a later call to retry the load rather than caching the failure.
|
|
@@ -415,6 +415,7 @@ export const createAutocompletePlugin = (options, api) => {
|
|
|
415
415
|
}
|
|
416
416
|
debounceTimer = setTimeout(() => {
|
|
417
417
|
try {
|
|
418
|
+
var _nodeAfter$text;
|
|
418
419
|
const {
|
|
419
420
|
state
|
|
420
421
|
} = view;
|
|
@@ -424,6 +425,19 @@ export const createAutocompletePlugin = (options, api) => {
|
|
|
424
425
|
if (!selection.empty) {
|
|
425
426
|
return;
|
|
426
427
|
}
|
|
428
|
+
|
|
429
|
+
// Suppress suggestions when the cursor is mid-word — only offer
|
|
430
|
+
// completions when the cursor is at the trailing edge of a token.
|
|
431
|
+
// nodeAfter correctly handles inline atoms (mentions, emojis) where
|
|
432
|
+
// parentOffset and textContent indices diverge.
|
|
433
|
+
const nodeAfter = selection.$from.nodeAfter;
|
|
434
|
+
const charAfterCursor = nodeAfter !== null && nodeAfter !== void 0 && nodeAfter.isText ? (_nodeAfter$text = nodeAfter.text) === null || _nodeAfter$text === void 0 ? void 0 : _nodeAfter$text[0] : undefined;
|
|
435
|
+
// Only suppress for Unicode letters, digits, and underscore — hyphens,
|
|
436
|
+
// apostrophes, and similar punctuation are valid left-edge boundaries
|
|
437
|
+
// and should not block suggestions (e.g. cursor before '-' in compound-word).
|
|
438
|
+
if (charAfterCursor && /[\p{L}\p{N}_]/u.test(charAfterCursor)) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
427
441
|
const textBefore = getTextBeforeCursor(state);
|
|
428
442
|
|
|
429
443
|
// Suppress re-showing the same suggestion the user just dismissed.
|
|
@@ -570,13 +584,17 @@ export const createAutocompletePlugin = (options, api) => {
|
|
|
570
584
|
return false;
|
|
571
585
|
},
|
|
572
586
|
focus: () => {
|
|
573
|
-
|
|
587
|
+
var _options$useLocalMode, _options$useLocalMode2;
|
|
588
|
+
loadDefaultVocabulary({
|
|
589
|
+
isLocalLLM: (_options$useLocalMode = options === null || options === void 0 ? void 0 : options.useLocalModel) !== null && _options$useLocalMode !== void 0 ? _options$useLocalMode : false
|
|
590
|
+
}).catch(error => {
|
|
574
591
|
logException(error, {
|
|
575
592
|
location: 'editor-plugin-autocomplete/loadDefaultVocabulary'
|
|
576
593
|
});
|
|
577
594
|
});
|
|
578
595
|
loadVectorsAsync({
|
|
579
|
-
getBinaryUrl: options === null || options === void 0 ? void 0 : options.getVectorsBinaryUrl
|
|
596
|
+
getBinaryUrl: options === null || options === void 0 ? void 0 : options.getVectorsBinaryUrl,
|
|
597
|
+
isLocalLLM: (_options$useLocalMode2 = options === null || options === void 0 ? void 0 : options.useLocalModel) !== null && _options$useLocalMode2 !== void 0 ? _options$useLocalMode2 : false
|
|
580
598
|
}).catch(error => {
|
|
581
599
|
logException(error, {
|
|
582
600
|
location: 'editor-plugin-autocomplete/loadVectorsAsync'
|
|
@@ -586,7 +586,9 @@ export const createLocalSlowLaneClient = (config = {}) => {
|
|
|
586
586
|
if (lower.includes('loading chunk') || lower.includes('dynamically imported module') || lower.includes('dynamic import')) {
|
|
587
587
|
return 'module_load_failed';
|
|
588
588
|
}
|
|
589
|
-
if (lower.includes('out of memory') ||
|
|
589
|
+
if (lower.includes('out of memory') ||
|
|
590
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
591
|
+
/\boom\b/.test(lower) || lower.includes('allocation') || lower.includes('exceeds') || lower.includes('buffer size') || lower.includes('not enough memory')) {
|
|
590
592
|
return 'insufficient_memory';
|
|
591
593
|
}
|
|
592
594
|
// Pre-flight already returns missing_shader_f16 when the feature is absent,
|
|
@@ -587,6 +587,7 @@ const unwrapJsonModule = (mod, shape) => {
|
|
|
587
587
|
return null;
|
|
588
588
|
};
|
|
589
589
|
export const loadVectorsAsync = async options => {
|
|
590
|
+
var _options$isLocalLLM;
|
|
590
591
|
if (vectorStore || vectorsLoadStarted) {
|
|
591
592
|
return;
|
|
592
593
|
}
|
|
@@ -595,14 +596,18 @@ export const loadVectorsAsync = async options => {
|
|
|
595
596
|
console.warn('[text-predictor] loadVectorsAsync called without a getBinaryUrl — vectors will not load. Pass getVectorsBinaryUrl via plugin options.');
|
|
596
597
|
return;
|
|
597
598
|
}
|
|
599
|
+
const isLocalLLM = (_options$isLocalLLM = options === null || options === void 0 ? void 0 : options.isLocalLLM) !== null && _options$isLocalLLM !== void 0 ? _options$isLocalLLM : false;
|
|
598
600
|
vectorsLoadStarted = true;
|
|
599
|
-
startExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton'
|
|
601
|
+
startExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
602
|
+
isLocalLLM
|
|
603
|
+
});
|
|
600
604
|
let url;
|
|
601
605
|
try {
|
|
602
606
|
url = await options.getBinaryUrl();
|
|
603
607
|
} catch (e) {
|
|
604
608
|
vectorsLoadStarted = false;
|
|
605
609
|
failExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
610
|
+
isLocalLLM,
|
|
606
611
|
errorType: 'resolve_url'
|
|
607
612
|
});
|
|
608
613
|
// eslint-disable-next-line no-console
|
|
@@ -615,6 +620,7 @@ export const loadVectorsAsync = async options => {
|
|
|
615
620
|
if (!res.ok) {
|
|
616
621
|
vectorsLoadStarted = false;
|
|
617
622
|
failExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
623
|
+
isLocalLLM,
|
|
618
624
|
status: res.status,
|
|
619
625
|
errorType: 'http_error'
|
|
620
626
|
});
|
|
@@ -643,6 +649,7 @@ export const loadVectorsAsync = async options => {
|
|
|
643
649
|
dim
|
|
644
650
|
};
|
|
645
651
|
succeedExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
652
|
+
isLocalLLM,
|
|
646
653
|
wordCount: nWords,
|
|
647
654
|
dim,
|
|
648
655
|
sizeBytes: float32.byteLength
|
|
@@ -658,6 +665,7 @@ export const loadVectorsAsync = async options => {
|
|
|
658
665
|
} catch (e) {
|
|
659
666
|
vectorsLoadStarted = false;
|
|
660
667
|
failExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
668
|
+
isLocalLLM,
|
|
661
669
|
errorType: 'network'
|
|
662
670
|
});
|
|
663
671
|
// eslint-disable-next-line no-console
|
|
@@ -668,15 +676,19 @@ export const initVectors = store => {
|
|
|
668
676
|
vectorStore = store;
|
|
669
677
|
};
|
|
670
678
|
let vocabularyLoadPromise;
|
|
671
|
-
export const loadDefaultVocabulary =
|
|
679
|
+
export const loadDefaultVocabulary = options => {
|
|
680
|
+
var _options$isLocalLLM2;
|
|
672
681
|
if (isInitialized) {
|
|
673
682
|
return Promise.resolve();
|
|
674
683
|
}
|
|
675
684
|
if (vocabularyLoadPromise) {
|
|
676
685
|
return vocabularyLoadPromise;
|
|
677
686
|
}
|
|
687
|
+
const isLocalLLM = (_options$isLocalLLM2 = options === null || options === void 0 ? void 0 : options.isLocalLLM) !== null && _options$isLocalLLM2 !== void 0 ? _options$isLocalLLM2 : false;
|
|
678
688
|
vocabularyLoadPromise = (async () => {
|
|
679
|
-
startExp(EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton'
|
|
689
|
+
startExp(EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
690
|
+
isLocalLLM
|
|
691
|
+
});
|
|
680
692
|
try {
|
|
681
693
|
// The L2 vocabulary and L3 word list are code-split into their own async
|
|
682
694
|
// chunks so they stay out of the editor's main bundle.
|
|
@@ -701,11 +713,13 @@ export const loadDefaultVocabulary = () => {
|
|
|
701
713
|
terms
|
|
702
714
|
});
|
|
703
715
|
succeedExp(EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
716
|
+
isLocalLLM,
|
|
704
717
|
l2WordCount: terms.length,
|
|
705
718
|
l3WordCount: l3VocabularyData.length
|
|
706
719
|
});
|
|
707
720
|
} catch (e) {
|
|
708
721
|
failExp(EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
722
|
+
isLocalLLM,
|
|
709
723
|
errorType: 'parse_error'
|
|
710
724
|
});
|
|
711
725
|
// Allow a later call to retry the load rather than caching the failure.
|
|
@@ -428,11 +428,25 @@ export var createAutocompletePlugin = function createAutocompletePlugin(options,
|
|
|
428
428
|
}
|
|
429
429
|
debounceTimer = setTimeout(function () {
|
|
430
430
|
try {
|
|
431
|
+
var _nodeAfter$text;
|
|
431
432
|
var state = view.state;
|
|
432
433
|
var selection = state.selection;
|
|
433
434
|
if (!selection.empty) {
|
|
434
435
|
return;
|
|
435
436
|
}
|
|
437
|
+
|
|
438
|
+
// Suppress suggestions when the cursor is mid-word — only offer
|
|
439
|
+
// completions when the cursor is at the trailing edge of a token.
|
|
440
|
+
// nodeAfter correctly handles inline atoms (mentions, emojis) where
|
|
441
|
+
// parentOffset and textContent indices diverge.
|
|
442
|
+
var nodeAfter = selection.$from.nodeAfter;
|
|
443
|
+
var charAfterCursor = nodeAfter !== null && nodeAfter !== void 0 && nodeAfter.isText ? (_nodeAfter$text = nodeAfter.text) === null || _nodeAfter$text === void 0 ? void 0 : _nodeAfter$text[0] : undefined;
|
|
444
|
+
// Only suppress for Unicode letters, digits, and underscore — hyphens,
|
|
445
|
+
// apostrophes, and similar punctuation are valid left-edge boundaries
|
|
446
|
+
// and should not block suggestions (e.g. cursor before '-' in compound-word).
|
|
447
|
+
if (charAfterCursor && /(?:[0-9A-Z_a-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088F\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5C\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDC-\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7DC\uA7F1-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD40-\uDD59\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDD40-\uDD65\uDD6F-\uDD85\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC7\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDED0-\uDEE3\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0\uDFF0-\uDFF9]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDDB0-\uDDDB\uDDE0-\uDDE9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D\uDD30-\uDD39]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDD70-\uDD79\uDE40-\uDE96\uDEA0-\uDEB8\uDEBB-\uDED3\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3\uDFF2-\uDFF6]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDDD0-\uDDED\uDDF0-\uDDFA\uDEC0-\uDEDE\uDEE0-\uDEE2\uDEE4\uDEE5\uDEE7-\uDEED\uDEF0-\uDEF4\uDEFE\uDEFF\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79])/.test(charAfterCursor)) {
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
436
450
|
var textBefore = getTextBeforeCursor(state);
|
|
437
451
|
|
|
438
452
|
// Suppress re-showing the same suggestion the user just dismissed.
|
|
@@ -576,13 +590,17 @@ export var createAutocompletePlugin = function createAutocompletePlugin(options,
|
|
|
576
590
|
return false;
|
|
577
591
|
},
|
|
578
592
|
focus: function focus() {
|
|
579
|
-
|
|
593
|
+
var _options$useLocalMode, _options$useLocalMode2;
|
|
594
|
+
loadDefaultVocabulary({
|
|
595
|
+
isLocalLLM: (_options$useLocalMode = options === null || options === void 0 ? void 0 : options.useLocalModel) !== null && _options$useLocalMode !== void 0 ? _options$useLocalMode : false
|
|
596
|
+
}).catch(function (error) {
|
|
580
597
|
logException(error, {
|
|
581
598
|
location: 'editor-plugin-autocomplete/loadDefaultVocabulary'
|
|
582
599
|
});
|
|
583
600
|
});
|
|
584
601
|
loadVectorsAsync({
|
|
585
|
-
getBinaryUrl: options === null || options === void 0 ? void 0 : options.getVectorsBinaryUrl
|
|
602
|
+
getBinaryUrl: options === null || options === void 0 ? void 0 : options.getVectorsBinaryUrl,
|
|
603
|
+
isLocalLLM: (_options$useLocalMode2 = options === null || options === void 0 ? void 0 : options.useLocalModel) !== null && _options$useLocalMode2 !== void 0 ? _options$useLocalMode2 : false
|
|
586
604
|
}).catch(function (error) {
|
|
587
605
|
logException(error, {
|
|
588
606
|
location: 'editor-plugin-autocomplete/loadVectorsAsync'
|
|
@@ -755,7 +755,9 @@ export var createLocalSlowLaneClient = function createLocalSlowLaneClient() {
|
|
|
755
755
|
if (lower.includes('loading chunk') || lower.includes('dynamically imported module') || lower.includes('dynamic import')) {
|
|
756
756
|
return 'module_load_failed';
|
|
757
757
|
}
|
|
758
|
-
if (lower.includes('out of memory') ||
|
|
758
|
+
if (lower.includes('out of memory') ||
|
|
759
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
760
|
+
/\boom\b/.test(lower) || lower.includes('allocation') || lower.includes('exceeds') || lower.includes('buffer size') || lower.includes('not enough memory')) {
|
|
759
761
|
return 'insufficient_memory';
|
|
760
762
|
}
|
|
761
763
|
// Pre-flight already returns missing_shader_f16 when the feature is absent,
|
|
@@ -729,7 +729,8 @@ var unwrapJsonModule = function unwrapJsonModule(mod, shape) {
|
|
|
729
729
|
};
|
|
730
730
|
export var loadVectorsAsync = /*#__PURE__*/function () {
|
|
731
731
|
var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(options) {
|
|
732
|
-
var
|
|
732
|
+
var _options$isLocalLLM;
|
|
733
|
+
var isLocalLLM, url, _wordIndexOuter$index, res, buffer, float32, wordIndexModule, wordIndexOuter, wordIndex, nWords, dim, _t, _t2;
|
|
733
734
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
734
735
|
while (1) switch (_context.prev = _context.next) {
|
|
735
736
|
case 0:
|
|
@@ -747,8 +748,11 @@ export var loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
747
748
|
console.warn('[text-predictor] loadVectorsAsync called without a getBinaryUrl — vectors will not load. Pass getVectorsBinaryUrl via plugin options.');
|
|
748
749
|
return _context.abrupt("return");
|
|
749
750
|
case 2:
|
|
751
|
+
isLocalLLM = (_options$isLocalLLM = options === null || options === void 0 ? void 0 : options.isLocalLLM) !== null && _options$isLocalLLM !== void 0 ? _options$isLocalLLM : false;
|
|
750
752
|
vectorsLoadStarted = true;
|
|
751
|
-
startExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton'
|
|
753
|
+
startExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
754
|
+
isLocalLLM: isLocalLLM
|
|
755
|
+
});
|
|
752
756
|
_context.prev = 3;
|
|
753
757
|
_context.next = 4;
|
|
754
758
|
return options.getBinaryUrl();
|
|
@@ -761,6 +765,7 @@ export var loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
761
765
|
_t = _context["catch"](3);
|
|
762
766
|
vectorsLoadStarted = false;
|
|
763
767
|
failExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
768
|
+
isLocalLLM: isLocalLLM,
|
|
764
769
|
errorType: 'resolve_url'
|
|
765
770
|
});
|
|
766
771
|
// eslint-disable-next-line no-console
|
|
@@ -778,6 +783,7 @@ export var loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
778
783
|
}
|
|
779
784
|
vectorsLoadStarted = false;
|
|
780
785
|
failExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
786
|
+
isLocalLLM: isLocalLLM,
|
|
781
787
|
status: res.status,
|
|
782
788
|
errorType: 'http_error'
|
|
783
789
|
});
|
|
@@ -810,6 +816,7 @@ export var loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
810
816
|
dim: dim
|
|
811
817
|
};
|
|
812
818
|
succeedExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
819
|
+
isLocalLLM: isLocalLLM,
|
|
813
820
|
wordCount: nWords,
|
|
814
821
|
dim: dim,
|
|
815
822
|
sizeBytes: float32.byteLength
|
|
@@ -829,6 +836,7 @@ export var loadVectorsAsync = /*#__PURE__*/function () {
|
|
|
829
836
|
_t2 = _context["catch"](6);
|
|
830
837
|
vectorsLoadStarted = false;
|
|
831
838
|
failExp(EXPERIENCE_NAME.LOAD_VECTORS, 'singleton', {
|
|
839
|
+
isLocalLLM: isLocalLLM,
|
|
832
840
|
errorType: 'network'
|
|
833
841
|
});
|
|
834
842
|
// eslint-disable-next-line no-console
|
|
@@ -847,19 +855,23 @@ export var initVectors = function initVectors(store) {
|
|
|
847
855
|
vectorStore = store;
|
|
848
856
|
};
|
|
849
857
|
var vocabularyLoadPromise;
|
|
850
|
-
export var loadDefaultVocabulary = function loadDefaultVocabulary() {
|
|
858
|
+
export var loadDefaultVocabulary = function loadDefaultVocabulary(options) {
|
|
859
|
+
var _options$isLocalLLM2;
|
|
851
860
|
if (isInitialized) {
|
|
852
861
|
return Promise.resolve();
|
|
853
862
|
}
|
|
854
863
|
if (vocabularyLoadPromise) {
|
|
855
864
|
return vocabularyLoadPromise;
|
|
856
865
|
}
|
|
866
|
+
var isLocalLLM = (_options$isLocalLLM2 = options === null || options === void 0 ? void 0 : options.isLocalLLM) !== null && _options$isLocalLLM2 !== void 0 ? _options$isLocalLLM2 : false;
|
|
857
867
|
vocabularyLoadPromise = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
858
868
|
var _yield$Promise$all, _yield$Promise$all2, vocabularyModule, l3VocabularyModule, vocabularyData, l3VocabularyData, terms, _t3;
|
|
859
869
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
860
870
|
while (1) switch (_context2.prev = _context2.next) {
|
|
861
871
|
case 0:
|
|
862
|
-
startExp(EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton'
|
|
872
|
+
startExp(EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
873
|
+
isLocalLLM: isLocalLLM
|
|
874
|
+
});
|
|
863
875
|
_context2.prev = 1;
|
|
864
876
|
_context2.next = 2;
|
|
865
877
|
return Promise.all([import( /* webpackChunkName: "@atlaskit-internal_editor-plugin-autocomplete-vocabulary-10k" */'./data/vocabulary_10k.json'), import( /* webpackChunkName: "@atlaskit-internal_editor-plugin-autocomplete-l3-vocabulary" */'./data/l3_vocabulary.json')]);
|
|
@@ -894,6 +906,7 @@ export var loadDefaultVocabulary = function loadDefaultVocabulary() {
|
|
|
894
906
|
terms: terms
|
|
895
907
|
});
|
|
896
908
|
succeedExp(EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
909
|
+
isLocalLLM: isLocalLLM,
|
|
897
910
|
l2WordCount: terms.length,
|
|
898
911
|
l3WordCount: l3VocabularyData.length
|
|
899
912
|
});
|
|
@@ -903,6 +916,7 @@ export var loadDefaultVocabulary = function loadDefaultVocabulary() {
|
|
|
903
916
|
_context2.prev = 4;
|
|
904
917
|
_t3 = _context2["catch"](1);
|
|
905
918
|
failExp(EXPERIENCE_NAME.LOAD_VOCABULARY, 'singleton', {
|
|
919
|
+
isLocalLLM: isLocalLLM,
|
|
906
920
|
errorType: 'parse_error'
|
|
907
921
|
});
|
|
908
922
|
// Allow a later call to retry the load rather than caching the failure.
|
|
@@ -96,10 +96,10 @@ export interface LocalSlowLaneClient {
|
|
|
96
96
|
export type LocalSlowLaneLoadErrorReason = 'webgpu_unavailable' | 'webgpu_no_adapter' | 'missing_shader_f16' | 'insufficient_memory' | 'model_download_failed' | 'module_load_failed' | 'init_failed';
|
|
97
97
|
/** Snapshot of the machine's WebGPU support, used to explain hardware limits. */
|
|
98
98
|
export interface WebGpuCapabilities {
|
|
99
|
-
/** GPU architecture reported by the adapter (e.g. "metal-3", "rdna2"). */
|
|
100
|
-
architecture?: string;
|
|
101
99
|
/** Whether `navigator.gpu.requestAdapter()` returned a usable adapter. */
|
|
102
100
|
adapterAvailable?: boolean;
|
|
101
|
+
/** GPU architecture reported by the adapter (e.g. "metal-3", "rdna2"). */
|
|
102
|
+
architecture?: string;
|
|
103
103
|
/** Whether `navigator.gpu` exists at all. */
|
|
104
104
|
available: boolean;
|
|
105
105
|
/** Largest single GPU buffer the adapter allows, in MB. */
|
|
@@ -82,7 +82,10 @@ export declare const ingestDocumentPage: (pageContent: string | undefined) => vo
|
|
|
82
82
|
export declare const predict: (textBefore: string) => string | null;
|
|
83
83
|
export declare const loadVectorsAsync: (options?: {
|
|
84
84
|
getBinaryUrl?: () => Promise<string>;
|
|
85
|
+
isLocalLLM?: boolean;
|
|
85
86
|
}) => Promise<void>;
|
|
86
87
|
export declare const initVectors: (store: VectorStore) => void;
|
|
87
|
-
export declare const loadDefaultVocabulary: (
|
|
88
|
+
export declare const loadDefaultVocabulary: (options?: {
|
|
89
|
+
isLocalLLM?: boolean;
|
|
90
|
+
}) => Promise<void>;
|
|
88
91
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-autocomplete",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.2",
|
|
4
4
|
"description": "Client-side text autocomplete plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"wink-nlp": "^2.4.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@atlaskit/editor-common": "^115.
|
|
38
|
+
"@atlaskit/editor-common": "^115.16.0",
|
|
39
39
|
"@atlaskit/editor-plugin-analytics": "^11.0.0",
|
|
40
40
|
"react": "^18.2.0"
|
|
41
41
|
},
|