@searpent/react-image-annotate 2.0.82-cand → 2.0.82-cand-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/mj_smaz_hist.log +20015 -0
- package/package.json +1 -1
- package/utils/spellcheck-nspell.js +144 -62
package/package.json
CHANGED
|
@@ -18,9 +18,14 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
18
18
|
* 4. Default fallback (en-US)
|
|
19
19
|
*
|
|
20
20
|
* Usage:
|
|
21
|
+
* - setSpellcheckEnabled(true) // Enable spellchecking (disabled by default for performance)
|
|
21
22
|
* - setSpellcheckLanguage('cs-CZ') // Set explicit language
|
|
22
23
|
* - setSpellcheckLanguage(null) // Clear setting (use auto-detection)
|
|
23
24
|
* - highlightMisspellingsInHtml(html, 'auto') // Auto-detect with priority
|
|
25
|
+
*
|
|
26
|
+
* Configuration:
|
|
27
|
+
* - Set REACT_APP_SPELLCHECK_ENABLED=true in .env file to enable spellchecking (default: disabled)
|
|
28
|
+
* - Or call setSpellcheckEnabled(true) programmatically at app startup to enable
|
|
24
29
|
*/
|
|
25
30
|
// Simple nspell loader usable in the browser. It lazy-loads the aff/dic
|
|
26
31
|
// and exposes a singleton spell instance plus a helper to check words.
|
|
@@ -34,6 +39,7 @@ export function getSpell() {
|
|
|
34
39
|
function _getSpell() {
|
|
35
40
|
_getSpell = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
36
41
|
var lang,
|
|
42
|
+
result,
|
|
37
43
|
promise,
|
|
38
44
|
_args2 = arguments;
|
|
39
45
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
@@ -43,40 +49,47 @@ function _getSpell() {
|
|
|
43
49
|
lang = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : 'en-US';
|
|
44
50
|
|
|
45
51
|
if (AVAILABLE_DICTIONARIES[lang]) {
|
|
46
|
-
_context2.next =
|
|
52
|
+
_context2.next = 4;
|
|
47
53
|
break;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
|
-
|
|
56
|
+
console.warn("Dictionary not available for language: ".concat(lang));
|
|
57
|
+
return _context2.abrupt("return", null);
|
|
51
58
|
|
|
52
|
-
case
|
|
59
|
+
case 4:
|
|
53
60
|
if (!spellInstances.has(lang)) {
|
|
54
|
-
_context2.next =
|
|
61
|
+
_context2.next = 6;
|
|
55
62
|
break;
|
|
56
63
|
}
|
|
57
64
|
|
|
58
65
|
return _context2.abrupt("return", spellInstances.get(lang));
|
|
59
66
|
|
|
60
|
-
case
|
|
67
|
+
case 6:
|
|
61
68
|
if (!loadPromises.has(lang)) {
|
|
62
|
-
_context2.next =
|
|
69
|
+
_context2.next = 11;
|
|
63
70
|
break;
|
|
64
71
|
}
|
|
65
72
|
|
|
66
|
-
|
|
73
|
+
_context2.next = 9;
|
|
74
|
+
return loadPromises.get(lang);
|
|
75
|
+
|
|
76
|
+
case 9:
|
|
77
|
+
result = _context2.sent;
|
|
78
|
+
return _context2.abrupt("return", result);
|
|
67
79
|
|
|
68
|
-
case
|
|
80
|
+
case 11:
|
|
69
81
|
promise = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
70
|
-
var _yield$import, nspell, dictName, affUrl, dicUrl, _yield$Promise$all, _yield$Promise$all2, affRes, dicRes, _yield$Promise$all3, _yield$Promise$all4, affBuf, dicBuf, utf8Decoder, affUtf8, enc, setMatch, raw, map, mapped, decoder, aff, dic, spellInstance;
|
|
82
|
+
var _yield$import, nspell, dictName, affUrl, dicUrl, _yield$Promise$all, _yield$Promise$all2, affRes, dicRes, errorMsg, _yield$Promise$all3, _yield$Promise$all4, affBuf, dicBuf, utf8Decoder, affUtf8, enc, setMatch, raw, map, mapped, decoder, aff, dic, spellInstance;
|
|
71
83
|
|
|
72
84
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
73
85
|
while (1) {
|
|
74
86
|
switch (_context.prev = _context.next) {
|
|
75
87
|
case 0:
|
|
76
|
-
_context.
|
|
88
|
+
_context.prev = 0;
|
|
89
|
+
_context.next = 3;
|
|
77
90
|
return import('nspell');
|
|
78
91
|
|
|
79
|
-
case
|
|
92
|
+
case 3:
|
|
80
93
|
_yield$import = _context.sent;
|
|
81
94
|
nspell = _yield$import.default;
|
|
82
95
|
// Use the mapped dictionary name
|
|
@@ -84,14 +97,14 @@ function _getSpell() {
|
|
|
84
97
|
affUrl = "/dicts/".concat(dictName, ".aff");
|
|
85
98
|
dicUrl = "/dicts/".concat(dictName, ".dic");
|
|
86
99
|
console.log('Loading dictionary files:', affUrl, dicUrl);
|
|
87
|
-
_context.next =
|
|
100
|
+
_context.next = 11;
|
|
88
101
|
return Promise.all([fetch(affUrl, {
|
|
89
102
|
mode: 'cors'
|
|
90
103
|
}), fetch(dicUrl, {
|
|
91
104
|
mode: 'cors'
|
|
92
105
|
})]);
|
|
93
106
|
|
|
94
|
-
case
|
|
107
|
+
case 11:
|
|
95
108
|
_yield$Promise$all = _context.sent;
|
|
96
109
|
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
|
|
97
110
|
affRes = _yield$Promise$all2[0];
|
|
@@ -99,17 +112,21 @@ function _getSpell() {
|
|
|
99
112
|
console.log('Fetch responses:', affRes.status, dicRes.status);
|
|
100
113
|
|
|
101
114
|
if (!(!affRes.ok || !dicRes.ok)) {
|
|
102
|
-
_context.next =
|
|
115
|
+
_context.next = 22;
|
|
103
116
|
break;
|
|
104
117
|
}
|
|
105
118
|
|
|
106
|
-
|
|
119
|
+
errorMsg = "Failed to load dictionary files: ".concat(affUrl, " (").concat(affRes.status, "), ").concat(dicUrl, " (").concat(dicRes.status, ")");
|
|
120
|
+
console.error("[Spellcheck Error] ".concat(errorMsg));
|
|
121
|
+
console.error("[Spellcheck Error] Make sure dictionary files are served from /dicts/ path");
|
|
122
|
+
console.error("[Spellcheck Error] Check that public/dicts/ files are copied during build");
|
|
123
|
+
return _context.abrupt("return", null);
|
|
107
124
|
|
|
108
|
-
case
|
|
109
|
-
_context.next =
|
|
125
|
+
case 22:
|
|
126
|
+
_context.next = 24;
|
|
110
127
|
return Promise.all([affRes.arrayBuffer(), dicRes.arrayBuffer()]);
|
|
111
128
|
|
|
112
|
-
case
|
|
129
|
+
case 24:
|
|
113
130
|
_yield$Promise$all3 = _context.sent;
|
|
114
131
|
_yield$Promise$all4 = _slicedToArray(_yield$Promise$all3, 2);
|
|
115
132
|
affBuf = _yield$Promise$all4[0];
|
|
@@ -162,17 +179,23 @@ function _getSpell() {
|
|
|
162
179
|
console.log("Dictionary loaded successfully for ".concat(lang));
|
|
163
180
|
return _context.abrupt("return", spellInstance);
|
|
164
181
|
|
|
165
|
-
case
|
|
182
|
+
case 42:
|
|
183
|
+
_context.prev = 42;
|
|
184
|
+
_context.t0 = _context["catch"](0);
|
|
185
|
+
console.error("[Spellcheck Error] Failed to load dictionary for ".concat(lang, ":"), _context.t0);
|
|
186
|
+
return _context.abrupt("return", null);
|
|
187
|
+
|
|
188
|
+
case 46:
|
|
166
189
|
case "end":
|
|
167
190
|
return _context.stop();
|
|
168
191
|
}
|
|
169
192
|
}
|
|
170
|
-
}, _callee);
|
|
193
|
+
}, _callee, null, [[0, 42]]);
|
|
171
194
|
}))();
|
|
172
195
|
loadPromises.set(lang, promise);
|
|
173
196
|
return _context2.abrupt("return", promise);
|
|
174
197
|
|
|
175
|
-
case
|
|
198
|
+
case 14:
|
|
176
199
|
case "end":
|
|
177
200
|
return _context2.stop();
|
|
178
201
|
}
|
|
@@ -196,7 +219,38 @@ var AVAILABLE_DICTIONARIES = {
|
|
|
196
219
|
'mk': 'mk_MK'
|
|
197
220
|
}; // Spellcheck language setting (can be set by user)
|
|
198
221
|
|
|
199
|
-
var spellcheckLanguageSetting = null; //
|
|
222
|
+
var spellcheckLanguageSetting = null; // Spellcheck enabled/disabled flag
|
|
223
|
+
// Defaults to false (disabled) for performance. Enable via REACT_APP_SPELLCHECK_ENABLED=true or setSpellcheckEnabled()
|
|
224
|
+
|
|
225
|
+
var spellcheckEnabled = function () {
|
|
226
|
+
try {
|
|
227
|
+
// Check for environment variable (works in Create React App, Storybook, etc.)
|
|
228
|
+
if (typeof process !== 'undefined' && process.env && process.env.REACT_APP_SPELLCHECK_ENABLED !== undefined) {
|
|
229
|
+
var envValue = process.env.REACT_APP_SPELLCHECK_ENABLED;
|
|
230
|
+
console.log('[Spellcheck] REACT_APP_SPELLCHECK_ENABLED from env:', envValue);
|
|
231
|
+
var enabledFromEnv = envValue === 'true' || envValue === '1';
|
|
232
|
+
console.log('[Spellcheck] Initial spellcheckEnabled from env:', enabledFromEnv);
|
|
233
|
+
return enabledFromEnv;
|
|
234
|
+
}
|
|
235
|
+
} catch (e) {
|
|
236
|
+
// Ignore errors accessing process.env
|
|
237
|
+
console.warn('[Spellcheck] Failed to read REACT_APP_SPELLCHECK_ENABLED from process.env:', e);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
console.log('[Spellcheck] REACT_APP_SPELLCHECK_ENABLED not set, defaulting spellcheckEnabled=false');
|
|
241
|
+
return false; // Default to disabled for performance
|
|
242
|
+
}(); // Function to enable/disable spellchecking
|
|
243
|
+
// Call this from your application to control spellchecking at runtime
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
export function setSpellcheckEnabled(enabled) {
|
|
247
|
+
spellcheckEnabled = Boolean(enabled);
|
|
248
|
+
console.log("Spellcheck ".concat(spellcheckEnabled ? 'enabled' : 'disabled'));
|
|
249
|
+
} // Function to check if spellchecking is enabled
|
|
250
|
+
|
|
251
|
+
export function isSpellcheckEnabled() {
|
|
252
|
+
return spellcheckEnabled;
|
|
253
|
+
} // Function to set spellcheck language preference
|
|
200
254
|
|
|
201
255
|
export function setSpellcheckLanguage(lang) {
|
|
202
256
|
if (lang && AVAILABLE_DICTIONARIES[lang]) {
|
|
@@ -348,7 +402,16 @@ function _findMisspellings() {
|
|
|
348
402
|
switch (_context3.prev = _context3.next) {
|
|
349
403
|
case 0:
|
|
350
404
|
lang = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 'auto';
|
|
351
|
-
|
|
405
|
+
|
|
406
|
+
if (spellcheckEnabled) {
|
|
407
|
+
_context3.next = 3;
|
|
408
|
+
break;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
return _context3.abrupt("return", []);
|
|
412
|
+
|
|
413
|
+
case 3:
|
|
414
|
+
_context3.prev = 3;
|
|
352
415
|
// Get browser language preferences
|
|
353
416
|
browserLang = getBrowserSpellcheckLanguage(); // Get spellcheck language setting
|
|
354
417
|
|
|
@@ -357,32 +420,42 @@ function _findMisspellings() {
|
|
|
357
420
|
detectedLang = lang === 'auto' ? detectLanguage(text, browserLang, spellcheckLang) : lang; // Check if dictionary is available
|
|
358
421
|
|
|
359
422
|
if (AVAILABLE_DICTIONARIES[detectedLang]) {
|
|
360
|
-
_context3.next =
|
|
423
|
+
_context3.next = 10;
|
|
361
424
|
break;
|
|
362
425
|
}
|
|
363
426
|
|
|
364
427
|
console.warn("Dictionary not available for ".concat(detectedLang, ", skipping spellcheck"));
|
|
365
428
|
return _context3.abrupt("return", []);
|
|
366
429
|
|
|
367
|
-
case
|
|
368
|
-
_context3.next =
|
|
430
|
+
case 10:
|
|
431
|
+
_context3.next = 12;
|
|
369
432
|
return getSpell(detectedLang);
|
|
370
433
|
|
|
371
|
-
case
|
|
434
|
+
case 12:
|
|
372
435
|
spell = _context3.sent;
|
|
436
|
+
|
|
437
|
+
if (spell) {
|
|
438
|
+
_context3.next = 16;
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
console.warn("[Spellcheck] Dictionary not available for ".concat(detectedLang, ", skipping spellcheck"));
|
|
443
|
+
return _context3.abrupt("return", []);
|
|
444
|
+
|
|
445
|
+
case 16:
|
|
373
446
|
// Unicode-aware word extraction across scripts (Latin, Cyrillic, etc.)
|
|
374
447
|
// Matches sequences of letters, allowing internal apostrophes/dashes.
|
|
375
448
|
wordRegex = /(?:[A-Za-z\xAA\xB5\xBA\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\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\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\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\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\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\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\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\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\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\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\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\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]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\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]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])(?:['\x2DA-Za-z\xAA\xB5\xBA\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\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\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\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\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\u2019\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\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\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\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\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\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\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\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]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\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]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])*/g;
|
|
376
449
|
words = text.match(wordRegex) || [];
|
|
377
450
|
miss = new Set();
|
|
378
451
|
_iterator2 = _createForOfIteratorHelper(words);
|
|
379
|
-
_context3.prev =
|
|
452
|
+
_context3.prev = 20;
|
|
380
453
|
|
|
381
454
|
_iterator2.s();
|
|
382
455
|
|
|
383
|
-
case
|
|
456
|
+
case 22:
|
|
384
457
|
if ((_step2 = _iterator2.n()).done) {
|
|
385
|
-
_context3.next =
|
|
458
|
+
_context3.next = 30;
|
|
386
459
|
break;
|
|
387
460
|
}
|
|
388
461
|
|
|
@@ -390,51 +463,52 @@ function _findMisspellings() {
|
|
|
390
463
|
word = w.replace(/^'+|'+$/g, '');
|
|
391
464
|
|
|
392
465
|
if (word) {
|
|
393
|
-
_context3.next =
|
|
466
|
+
_context3.next = 27;
|
|
394
467
|
break;
|
|
395
468
|
}
|
|
396
469
|
|
|
397
|
-
return _context3.abrupt("continue",
|
|
470
|
+
return _context3.abrupt("continue", 28);
|
|
398
471
|
|
|
399
|
-
case
|
|
472
|
+
case 27:
|
|
400
473
|
if (!spell.correct(word)) miss.add(word);
|
|
401
474
|
|
|
402
|
-
case
|
|
403
|
-
_context3.next =
|
|
475
|
+
case 28:
|
|
476
|
+
_context3.next = 22;
|
|
404
477
|
break;
|
|
405
478
|
|
|
406
|
-
case
|
|
407
|
-
_context3.next =
|
|
479
|
+
case 30:
|
|
480
|
+
_context3.next = 35;
|
|
408
481
|
break;
|
|
409
482
|
|
|
410
|
-
case
|
|
411
|
-
_context3.prev =
|
|
412
|
-
_context3.t0 = _context3["catch"](
|
|
483
|
+
case 32:
|
|
484
|
+
_context3.prev = 32;
|
|
485
|
+
_context3.t0 = _context3["catch"](20);
|
|
413
486
|
|
|
414
487
|
_iterator2.e(_context3.t0);
|
|
415
488
|
|
|
416
|
-
case
|
|
417
|
-
_context3.prev =
|
|
489
|
+
case 35:
|
|
490
|
+
_context3.prev = 35;
|
|
418
491
|
|
|
419
492
|
_iterator2.f();
|
|
420
493
|
|
|
421
|
-
return _context3.finish(
|
|
494
|
+
return _context3.finish(35);
|
|
422
495
|
|
|
423
|
-
case
|
|
496
|
+
case 38:
|
|
424
497
|
return _context3.abrupt("return", Array.from(miss));
|
|
425
498
|
|
|
426
|
-
case
|
|
427
|
-
_context3.prev =
|
|
428
|
-
_context3.t1 = _context3["catch"](
|
|
429
|
-
console.
|
|
499
|
+
case 41:
|
|
500
|
+
_context3.prev = 41;
|
|
501
|
+
_context3.t1 = _context3["catch"](3);
|
|
502
|
+
console.error("[Spellcheck Error] Spellcheck failed for language ".concat(lang, ":"), _context3.t1);
|
|
503
|
+
console.error("[Spellcheck Error] Stack:", _context3.t1.stack);
|
|
430
504
|
return _context3.abrupt("return", []);
|
|
431
505
|
|
|
432
|
-
case
|
|
506
|
+
case 46:
|
|
433
507
|
case "end":
|
|
434
508
|
return _context3.stop();
|
|
435
509
|
}
|
|
436
510
|
}
|
|
437
|
-
}, _callee3, null, [[
|
|
511
|
+
}, _callee3, null, [[3, 41], [20, 32, 35, 38]]);
|
|
438
512
|
}));
|
|
439
513
|
return _findMisspellings.apply(this, arguments);
|
|
440
514
|
}
|
|
@@ -468,7 +542,15 @@ function _highlightMisspellingsInHtml() {
|
|
|
468
542
|
return _context4.abrupt("return", html);
|
|
469
543
|
|
|
470
544
|
case 3:
|
|
471
|
-
|
|
545
|
+
if (spellcheckEnabled) {
|
|
546
|
+
_context4.next = 5;
|
|
547
|
+
break;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
return _context4.abrupt("return", html);
|
|
551
|
+
|
|
552
|
+
case 5:
|
|
553
|
+
_context4.prev = 5;
|
|
472
554
|
// Decode HTML entities for spellchecking, but preserve original HTML
|
|
473
555
|
textForSpellcheck = html.replace(/<[^>]+>/g, ' ') // strip tags
|
|
474
556
|
.replace(/ /g, ' ') // convert non-breaking spaces to regular spaces
|
|
@@ -480,28 +562,28 @@ function _highlightMisspellingsInHtml() {
|
|
|
480
562
|
detectedLang = lang === 'auto' ? detectLanguage(textForSpellcheck, browserLang, spellcheckLang) : lang; // Check if dictionary is available
|
|
481
563
|
|
|
482
564
|
if (AVAILABLE_DICTIONARIES[detectedLang]) {
|
|
483
|
-
_context4.next =
|
|
565
|
+
_context4.next = 13;
|
|
484
566
|
break;
|
|
485
567
|
}
|
|
486
568
|
|
|
487
569
|
console.warn("Dictionary not available for ".concat(detectedLang, ", skipping spellcheck"));
|
|
488
570
|
return _context4.abrupt("return", html);
|
|
489
571
|
|
|
490
|
-
case
|
|
491
|
-
_context4.next =
|
|
572
|
+
case 13:
|
|
573
|
+
_context4.next = 15;
|
|
492
574
|
return findMisspellings(textForSpellcheck, detectedLang);
|
|
493
575
|
|
|
494
|
-
case
|
|
576
|
+
case 15:
|
|
495
577
|
miss = _context4.sent;
|
|
496
578
|
|
|
497
579
|
if (!(miss.length === 0)) {
|
|
498
|
-
_context4.next =
|
|
580
|
+
_context4.next = 18;
|
|
499
581
|
break;
|
|
500
582
|
}
|
|
501
583
|
|
|
502
584
|
return _context4.abrupt("return", html);
|
|
503
585
|
|
|
504
|
-
case
|
|
586
|
+
case 18:
|
|
505
587
|
// Replace whole-word occurrences with span wrapper. Do not touch inside tags or HTML entities
|
|
506
588
|
// We split on tags and HTML entities, only operate on text segments.
|
|
507
589
|
segments = html.split(/(<[^>]+>|&[a-zA-Z0-9#]+;)/g);
|
|
@@ -532,18 +614,18 @@ function _highlightMisspellingsInHtml() {
|
|
|
532
614
|
});
|
|
533
615
|
return _context4.abrupt("return", wrapped.join(''));
|
|
534
616
|
|
|
535
|
-
case
|
|
536
|
-
_context4.prev =
|
|
537
|
-
_context4.t0 = _context4["catch"](
|
|
617
|
+
case 23:
|
|
618
|
+
_context4.prev = 23;
|
|
619
|
+
_context4.t0 = _context4["catch"](5);
|
|
538
620
|
console.warn('Spellcheck failed, returning original HTML:', _context4.t0);
|
|
539
621
|
return _context4.abrupt("return", html);
|
|
540
622
|
|
|
541
|
-
case
|
|
623
|
+
case 27:
|
|
542
624
|
case "end":
|
|
543
625
|
return _context4.stop();
|
|
544
626
|
}
|
|
545
627
|
}
|
|
546
|
-
}, _callee4, null, [[
|
|
628
|
+
}, _callee4, null, [[5, 23]]);
|
|
547
629
|
}));
|
|
548
630
|
return _highlightMisspellingsInHtml.apply(this, arguments);
|
|
549
631
|
}
|