react-mentions 3.1.0 → 3.3.1
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/README.md +11 -10
- package/dist/react-mentions.cjs.dev.js +409 -52
- package/dist/react-mentions.cjs.prod.js +410 -41
- package/dist/react-mentions.esm.js +407 -50
- package/package.json +3 -2
@@ -1,6 +1,5 @@
|
|
1
1
|
import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';
|
2
2
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
3
|
-
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread';
|
4
3
|
import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
|
5
4
|
import _createClass from '@babel/runtime/helpers/esm/createClass';
|
6
5
|
import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';
|
@@ -8,17 +7,17 @@ import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
|
|
8
7
|
import _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';
|
9
8
|
import _inherits from '@babel/runtime/helpers/esm/inherits';
|
10
9
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
10
|
+
import React, { Children, Component } from 'react';
|
11
|
+
import invariant from 'invariant';
|
12
|
+
import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
|
13
|
+
import PropTypes from 'prop-types';
|
14
|
+
import substyle, { defaultStyle } from 'substyle';
|
11
15
|
import isEqual from 'lodash/isEqual';
|
12
16
|
import isNumber from 'lodash/isNumber';
|
13
|
-
import
|
17
|
+
import ReactDOM from 'react-dom';
|
14
18
|
import omit from 'lodash/omit';
|
19
|
+
import keys from 'lodash/keys';
|
15
20
|
import values from 'lodash/values';
|
16
|
-
import PropTypes from 'prop-types';
|
17
|
-
import React, { Children, Component } from 'react';
|
18
|
-
import ReactDOM from 'react-dom';
|
19
|
-
import substyle, { defaultStyle } from 'substyle';
|
20
|
-
import invariant from 'invariant';
|
21
|
-
import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
|
22
21
|
|
23
22
|
// escape RegExp special characters https://stackoverflow.com/a/9310752/5142490
|
24
23
|
var escapeRegex = function escapeRegex(str) {
|
@@ -328,6 +327,304 @@ var makeMentionsMarkup = function makeMentionsMarkup(markup, id, display) {
|
|
328
327
|
return markup.replace(PLACEHOLDERS.id, id).replace(PLACEHOLDERS.display, display);
|
329
328
|
};
|
330
329
|
|
330
|
+
// This contains all the latin letters and the regex that match these letters with diacritics
|
331
|
+
// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript
|
332
|
+
var lettersDiacritics = [{
|
333
|
+
base: 'A',
|
334
|
+
letters: /(A|Ⓐ|A|À|Á|Â|Ầ|Ấ|Ẫ|Ẩ|Ã|Ā|Ă|Ằ|Ắ|Ẵ|Ẳ|Ȧ|Ǡ|Ä|Ǟ|Ả|Å|Ǻ|Ǎ|Ȁ|Ȃ|Ạ|Ậ|Ặ|Ḁ|Ą|Ⱥ|Ɐ|[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F])/g
|
335
|
+
}, {
|
336
|
+
base: 'AA',
|
337
|
+
letters: /(Ꜳ|[\uA732])/g
|
338
|
+
}, {
|
339
|
+
base: 'AE',
|
340
|
+
letters: /(Æ|Ǽ|Ǣ|[\u00C6\u01FC\u01E2])/g
|
341
|
+
}, {
|
342
|
+
base: 'AO',
|
343
|
+
letters: /(Ꜵ|[\uA734])/g
|
344
|
+
}, {
|
345
|
+
base: 'AU',
|
346
|
+
letters: /(Ꜷ|[\uA736])/g
|
347
|
+
}, {
|
348
|
+
base: 'AV',
|
349
|
+
letters: /(Ꜹ|Ꜻ|[\uA738\uA73A])/g
|
350
|
+
}, {
|
351
|
+
base: 'AY',
|
352
|
+
letters: /(Ꜽ|[\uA73C])/g
|
353
|
+
}, {
|
354
|
+
base: 'B',
|
355
|
+
letters: /(B|Ⓑ|B|Ḃ|Ḅ|Ḇ|Ƀ|Ƃ|Ɓ|[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181])/g
|
356
|
+
}, {
|
357
|
+
base: 'C',
|
358
|
+
letters: /(C|Ⓒ|C|Ć|Ĉ|Ċ|Č|Ç|Ḉ|Ƈ|Ȼ|Ꜿ|[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E])/g
|
359
|
+
}, {
|
360
|
+
base: 'D',
|
361
|
+
letters: /(D|Ⓓ|D|Ḋ|Ď|Ḍ|Ḑ|Ḓ|Ḏ|Đ|Ƌ|Ɗ|Ɖ|Ꝺ|Ð|[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779\u00D0])/g
|
362
|
+
}, {
|
363
|
+
base: 'DZ',
|
364
|
+
letters: /(DZ|DŽ|[\u01F1\u01C4])/g
|
365
|
+
}, {
|
366
|
+
base: 'Dz',
|
367
|
+
letters: /(Dz|Dž|[\u01F2\u01C5])/g
|
368
|
+
}, {
|
369
|
+
base: 'E',
|
370
|
+
letters: /(E|Ⓔ|E|È|É|Ê|Ề|Ế|Ễ|Ể|Ẽ|Ē|Ḕ|Ḗ|Ĕ|Ė|Ë|Ẻ|Ě|Ȅ|Ȇ|Ẹ|Ệ|Ȩ|Ḝ|Ę|Ḙ|Ḛ|Ɛ|Ǝ|[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E])/g
|
371
|
+
}, {
|
372
|
+
base: 'F',
|
373
|
+
letters: /(F|Ⓕ|F|Ḟ|Ƒ|Ꝼ|[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B])/g
|
374
|
+
}, {
|
375
|
+
base: 'G',
|
376
|
+
letters: /(G|Ⓖ|G|Ǵ|Ĝ|Ḡ|Ğ|Ġ|Ǧ|Ģ|Ǥ|Ɠ|Ꞡ|Ᵹ|Ꝿ|[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E])/g
|
377
|
+
}, {
|
378
|
+
base: 'H',
|
379
|
+
letters: /(H|Ⓗ|H|Ĥ|Ḣ|Ḧ|Ȟ|Ḥ|Ḩ|Ḫ|Ħ|Ⱨ|Ⱶ|Ɥ|[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D])/g
|
380
|
+
}, {
|
381
|
+
base: 'I',
|
382
|
+
letters: /(I|Ⓘ|I|Ì|Í|Î|Ĩ|Ī|Ĭ|İ|Ï|Ḯ|Ỉ|Ǐ|Ȉ|Ȋ|Ị|Į|Ḭ|Ɨ|[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197])/g
|
383
|
+
}, {
|
384
|
+
base: 'J',
|
385
|
+
letters: /(J|Ⓙ|J|Ĵ|Ɉ|[\u004A\u24BF\uFF2A\u0134\u0248])/g
|
386
|
+
}, {
|
387
|
+
base: 'K',
|
388
|
+
letters: /(K|Ⓚ|K|Ḱ|Ǩ|Ḳ|Ķ|Ḵ|Ƙ|Ⱪ|Ꝁ|Ꝃ|Ꝅ|Ꞣ|[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2])/g
|
389
|
+
}, {
|
390
|
+
base: 'L',
|
391
|
+
letters: /(L|Ⓛ|L|Ŀ|Ĺ|Ľ|Ḷ|Ḹ|Ļ|Ḽ|Ḻ|Ł|Ƚ|Ɫ|Ⱡ|Ꝉ|Ꝇ|Ꞁ|[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780])/g
|
392
|
+
}, {
|
393
|
+
base: 'LJ',
|
394
|
+
letters: /(LJ|[\u01C7])/g
|
395
|
+
}, {
|
396
|
+
base: 'Lj',
|
397
|
+
letters: /(Lj|[\u01C8])/g
|
398
|
+
}, {
|
399
|
+
base: 'M',
|
400
|
+
letters: /(M|Ⓜ|M|Ḿ|Ṁ|Ṃ|Ɱ|Ɯ|[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C])/g
|
401
|
+
}, {
|
402
|
+
base: 'N',
|
403
|
+
letters: /(N|Ⓝ|N|Ǹ|Ń|Ñ|Ṅ|Ň|Ṇ|Ņ|Ṋ|Ṉ|Ƞ|Ɲ|Ꞑ|Ꞥ|Ŋ|[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4\u014A])/g
|
404
|
+
}, {
|
405
|
+
base: 'NJ',
|
406
|
+
letters: /(NJ|[\u01CA])/g
|
407
|
+
}, {
|
408
|
+
base: 'Nj',
|
409
|
+
letters: /(Nj|[\u01CB])/g
|
410
|
+
}, {
|
411
|
+
base: 'O',
|
412
|
+
letters: /(O|Ⓞ|O|Ò|Ó|Ô|Ồ|Ố|Ỗ|Ổ|Õ|Ṍ|Ȭ|Ṏ|Ō|Ṑ|Ṓ|Ŏ|Ȯ|Ȱ|Ö|Ȫ|Ỏ|Ő|Ǒ|Ȍ|Ȏ|Ơ|Ờ|Ớ|Ỡ|Ở|Ợ|Ọ|Ộ|Ǫ|Ǭ|Ø|Ǿ|Ɔ|Ɵ|Ꝋ|Ꝍ|[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C])/g
|
413
|
+
}, {
|
414
|
+
base: 'OE',
|
415
|
+
letters: /(Œ|[\u0152])/g
|
416
|
+
}, {
|
417
|
+
base: 'OI',
|
418
|
+
letters: /(Ƣ|[\u01A2])/g
|
419
|
+
}, {
|
420
|
+
base: 'OO',
|
421
|
+
letters: /(Ꝏ|[\uA74E])/g
|
422
|
+
}, {
|
423
|
+
base: 'OU',
|
424
|
+
letters: /(Ȣ|[\u0222])/g
|
425
|
+
}, {
|
426
|
+
base: 'P',
|
427
|
+
letters: /(P|Ⓟ|P|Ṕ|Ṗ|Ƥ|Ᵽ|Ꝑ|Ꝓ|Ꝕ|[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754])/g
|
428
|
+
}, {
|
429
|
+
base: 'Q',
|
430
|
+
letters: /(Q|Ⓠ|Q|Ꝗ|Ꝙ|Ɋ|[\u0051\u24C6\uFF31\uA756\uA758\u024A])/g
|
431
|
+
}, {
|
432
|
+
base: 'R',
|
433
|
+
letters: /(R|Ⓡ|R|Ŕ|Ṙ|Ř|Ȑ|Ȓ|Ṛ|Ṝ|Ŗ|Ṟ|Ɍ|Ɽ|Ꝛ|Ꞧ|Ꞃ|[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782])/g
|
434
|
+
}, {
|
435
|
+
base: 'S',
|
436
|
+
letters: /(S|Ⓢ|S|ẞ|Ś|Ṥ|Ŝ|Ṡ|Š|Ṧ|Ṣ|Ṩ|Ș|Ş|Ȿ|Ꞩ|Ꞅ|[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784])/g
|
437
|
+
}, {
|
438
|
+
base: 'T',
|
439
|
+
letters: /(T|Ⓣ|T|Ṫ|Ť|Ṭ|Ț|Ţ|Ṱ|Ṯ|Ŧ|Ƭ|Ʈ|Ⱦ|Ꞇ|[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786])/g
|
440
|
+
}, {
|
441
|
+
base: 'TH',
|
442
|
+
letters: /(Þ|[\u00DE])/g
|
443
|
+
}, {
|
444
|
+
base: 'TZ',
|
445
|
+
letters: /(Ꜩ|[\uA728])/g
|
446
|
+
}, {
|
447
|
+
base: 'U',
|
448
|
+
letters: /(U|Ⓤ|U|Ù|Ú|Û|Ũ|Ṹ|Ū|Ṻ|Ŭ|Ü|Ǜ|Ǘ|Ǖ|Ǚ|Ủ|Ů|Ű|Ǔ|Ȕ|Ȗ|Ư|Ừ|Ứ|Ữ|Ử|Ự|Ụ|Ṳ|Ų|Ṷ|Ṵ|Ʉ|[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244])/g
|
449
|
+
}, {
|
450
|
+
base: 'V',
|
451
|
+
letters: /(V|Ⓥ|V|Ṽ|Ṿ|Ʋ|Ꝟ|Ʌ|[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245])/g
|
452
|
+
}, {
|
453
|
+
base: 'VY',
|
454
|
+
letters: /(Ꝡ|[\uA760])/g
|
455
|
+
}, {
|
456
|
+
base: 'W',
|
457
|
+
letters: /(W|Ⓦ|W|Ẁ|Ẃ|Ŵ|Ẇ|Ẅ|Ẉ|Ⱳ|[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72])/g
|
458
|
+
}, {
|
459
|
+
base: 'X',
|
460
|
+
letters: /(X|Ⓧ|X|Ẋ|Ẍ|[\u0058\u24CD\uFF38\u1E8A\u1E8C])/g
|
461
|
+
}, {
|
462
|
+
base: 'Y',
|
463
|
+
letters: /(Y|Ⓨ|Y|Ỳ|Ý|Ŷ|Ỹ|Ȳ|Ẏ|Ÿ|Ỷ|Ỵ|Ƴ|Ɏ|Ỿ|[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE])/g
|
464
|
+
}, {
|
465
|
+
base: 'Z',
|
466
|
+
letters: /(Z|Ⓩ|Z|Ź|Ẑ|Ż|Ž|Ẓ|Ẕ|Ƶ|Ȥ|Ɀ|Ⱬ|Ꝣ|[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762])/g
|
467
|
+
}, {
|
468
|
+
base: 'a',
|
469
|
+
letters: /(a|ⓐ|a|ẚ|à|á|â|ầ|ấ|ẫ|ẩ|ã|ā|ă|ằ|ắ|ẵ|ẳ|ȧ|ǡ|ä|ǟ|ả|å|ǻ|ǎ|ȁ|ȃ|ạ|ậ|ặ|ḁ|ą|ⱥ|ɐ|[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250])/g
|
470
|
+
}, {
|
471
|
+
base: 'aa',
|
472
|
+
letters: /(ꜳ|[\uA733])/g
|
473
|
+
}, {
|
474
|
+
base: 'ae',
|
475
|
+
letters: /(æ|ǽ|ǣ|[\u00E6\u01FD\u01E3])/g
|
476
|
+
}, {
|
477
|
+
base: 'ao',
|
478
|
+
letters: /(ꜵ|[\uA735])/g
|
479
|
+
}, {
|
480
|
+
base: 'au',
|
481
|
+
letters: /(ꜷ|[\uA737])/g
|
482
|
+
}, {
|
483
|
+
base: 'av',
|
484
|
+
letters: /(ꜹ|ꜻ|[\uA739\uA73B])/g
|
485
|
+
}, {
|
486
|
+
base: 'ay',
|
487
|
+
letters: /(ꜽ|[\uA73D])/g
|
488
|
+
}, {
|
489
|
+
base: 'b',
|
490
|
+
letters: /(b|ⓑ|b|ḃ|ḅ|ḇ|ƀ|ƃ|ɓ|[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253])/g
|
491
|
+
}, {
|
492
|
+
base: 'c',
|
493
|
+
letters: /(c|ⓒ|c|ć|ĉ|ċ|č|ç|ḉ|ƈ|ȼ|ꜿ|ↄ|[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184])/g
|
494
|
+
}, {
|
495
|
+
base: 'd',
|
496
|
+
letters: /(d|ⓓ|d|ḋ|ď|ḍ|ḑ|ḓ|ḏ|đ|ƌ|ɖ|ɗ|ꝺ|ð|[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A\u00F0])/g
|
497
|
+
}, {
|
498
|
+
base: 'dz',
|
499
|
+
letters: /(dz|dž|[\u01F3\u01C6])/g
|
500
|
+
}, {
|
501
|
+
base: 'e',
|
502
|
+
letters: /(e|ⓔ|e|è|é|ê|ề|ế|ễ|ể|ẽ|ē|ḕ|ḗ|ĕ|ė|ë|ẻ|ě|ȅ|ȇ|ẹ|ệ|ȩ|ḝ|ę|ḙ|ḛ|ɇ|ɛ|ǝ|[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD])/g
|
503
|
+
}, {
|
504
|
+
base: 'f',
|
505
|
+
letters: /(f|ⓕ|f|ḟ|ƒ|ꝼ|[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C])/g
|
506
|
+
}, {
|
507
|
+
base: 'g',
|
508
|
+
letters: /(g|ⓖ|g|ǵ|ĝ|ḡ|ğ|ġ|ǧ|ģ|ǥ|ɠ|ꞡ|ᵹ|ꝿ|[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F])/g
|
509
|
+
}, {
|
510
|
+
base: 'h',
|
511
|
+
letters: /(h|ⓗ|h|ĥ|ḣ|ḧ|ȟ|ḥ|ḩ|ḫ|ẖ|ħ|ⱨ|ⱶ|ɥ|[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265])/g
|
512
|
+
}, {
|
513
|
+
base: 'hv',
|
514
|
+
letters: /(ƕ|[\u0195])/g
|
515
|
+
}, {
|
516
|
+
base: 'i',
|
517
|
+
letters: /(i|ⓘ|i|ì|í|î|ĩ|ī|ĭ|ï|ḯ|ỉ|ǐ|ȉ|ȋ|ị|į|ḭ|ɨ|ı|[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131])/g
|
518
|
+
}, {
|
519
|
+
base: 'ij',
|
520
|
+
letters: /(ij|[\u0133])/g
|
521
|
+
}, {
|
522
|
+
base: 'j',
|
523
|
+
letters: /(j|ⓙ|j|ĵ|ǰ|ɉ|[\u006A\u24D9\uFF4A\u0135\u01F0\u0249])/g
|
524
|
+
}, {
|
525
|
+
base: 'k',
|
526
|
+
letters: /(k|ⓚ|k|ḱ|ǩ|ḳ|ķ|ḵ|ƙ|ⱪ|ꝁ|ꝃ|ꝅ|ꞣ|[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3])/g
|
527
|
+
}, {
|
528
|
+
base: 'l',
|
529
|
+
letters: /(l|ⓛ|l|ŀ|ĺ|ľ|ḷ|ḹ|ļ|ḽ|ḻ|ł|ƚ|ɫ|ⱡ|ꝉ|ꞁ|ꝇ|[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u0142\u019A\u026B\u2C61\uA749\uA781\uA747])/g
|
530
|
+
}, {
|
531
|
+
base: 'lj',
|
532
|
+
letters: /(lj|[\u01C9])/g
|
533
|
+
}, {
|
534
|
+
base: 'm',
|
535
|
+
letters: /(m|ⓜ|m|ḿ|ṁ|ṃ|ɱ|ɯ|[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F])/g
|
536
|
+
}, {
|
537
|
+
base: 'n',
|
538
|
+
letters: /(n|ⓝ|n|ǹ|ń|ñ|ṅ|ň|ṇ|ņ|ṋ|ṉ|ƞ|ɲ|ʼn|ꞑ|ꞥ|ŋ|[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u014B])/g
|
539
|
+
}, {
|
540
|
+
base: 'nj',
|
541
|
+
letters: /(nj|[\u01CC])/g
|
542
|
+
}, {
|
543
|
+
base: 'o',
|
544
|
+
letters: /(o|ⓞ|o|ò|ó|ô|ồ|ố|ỗ|ổ|õ|ṍ|ȭ|ṏ|ō|ṑ|ṓ|ŏ|ȯ|ȱ|ö|ȫ|ỏ|ő|ǒ|ȍ|ȏ|ơ|ờ|ớ|ỡ|ở|ợ|ọ|ộ|ǫ|ǭ|ø|ǿ|ɔ|ꝋ|ꝍ|ɵ|[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275])/g
|
545
|
+
}, {
|
546
|
+
base: 'oe',
|
547
|
+
letters: /(œ|[\u0153])/g
|
548
|
+
}, {
|
549
|
+
base: 'oi',
|
550
|
+
letters: /(ƣ|[\u01A3])/g
|
551
|
+
}, {
|
552
|
+
base: 'ou',
|
553
|
+
letters: /(ȣ|[\u0223])/g
|
554
|
+
}, {
|
555
|
+
base: 'oo',
|
556
|
+
letters: /(ꝏ|[\uA74F])/g
|
557
|
+
}, {
|
558
|
+
base: 'p',
|
559
|
+
letters: /(p|ⓟ|p|ṕ|ṗ|ƥ|ᵽ|ꝑ|ꝓ|ꝕ|[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755])/g
|
560
|
+
}, {
|
561
|
+
base: 'q',
|
562
|
+
letters: /(q|ⓠ|q|ɋ|ꝗ|ꝙ|[\u0071\u24E0\uFF51\u024B\uA757\uA759])/g
|
563
|
+
}, {
|
564
|
+
base: 'r',
|
565
|
+
letters: /(r|ⓡ|r|ŕ|ṙ|ř|ȑ|ȓ|ṛ|ṝ|ŗ|ṟ|ɍ|ɽ|ꝛ|ꞧ|ꞃ|[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783])/g
|
566
|
+
}, {
|
567
|
+
base: 's',
|
568
|
+
letters: /(s|ⓢ|s|ś|ṥ|ŝ|ṡ|š|ṧ|ṣ|ṩ|ș|ş|ȿ|ꞩ|ꞅ|ẛ|ſ|[\u0073\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u017F])/g
|
569
|
+
}, {
|
570
|
+
base: 'ss',
|
571
|
+
letters: /(ß|[\u00DF])/g
|
572
|
+
}, {
|
573
|
+
base: 't',
|
574
|
+
letters: /(t|ⓣ|t|ṫ|ẗ|ť|ṭ|ț|ţ|ṱ|ṯ|ŧ|ƭ|ʈ|ⱦ|ꞇ|[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787])/g
|
575
|
+
}, {
|
576
|
+
base: 'th',
|
577
|
+
letters: /(þ|[\u00FE])/g
|
578
|
+
}, {
|
579
|
+
base: 'tz',
|
580
|
+
letters: /(ꜩ|[\uA729])/g
|
581
|
+
}, {
|
582
|
+
base: 'u',
|
583
|
+
letters: /(u|ⓤ|u|ù|ú|û|ũ|ṹ|ū|ṻ|ŭ|ü|ǜ|ǘ|ǖ|ǚ|ủ|ů|ű|ǔ|ȕ|ȗ|ư|ừ|ứ|ữ|ử|ự|ụ|ṳ|ų|ṷ|ṵ|ʉ|[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289])/g
|
584
|
+
}, {
|
585
|
+
base: 'v',
|
586
|
+
letters: /(v|ⓥ|v|ṽ|ṿ|ʋ|ꝟ|ʌ|[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C])/g
|
587
|
+
}, {
|
588
|
+
base: 'vy',
|
589
|
+
letters: /(ꝡ|[\uA761])/g
|
590
|
+
}, {
|
591
|
+
base: 'w',
|
592
|
+
letters: /(w|ⓦ|w|ẁ|ẃ|ŵ|ẇ|ẅ|ẘ|ẉ|ⱳ|[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73])/g
|
593
|
+
}, {
|
594
|
+
base: 'x',
|
595
|
+
letters: /(x|ⓧ|x|ẋ|ẍ|[\u0078\u24E7\uFF58\u1E8B\u1E8D])/g
|
596
|
+
}, {
|
597
|
+
base: 'y',
|
598
|
+
letters: /(y|ⓨ|y|ỳ|ý|ŷ|ỹ|ȳ|ẏ|ÿ|ỷ|ẙ|ỵ|ƴ|ɏ|ỿ|[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF])/g
|
599
|
+
}, {
|
600
|
+
base: 'z',
|
601
|
+
letters: /(z|ⓩ|z|ź|ẑ|ż|ž|ẓ|ẕ|ƶ|ȥ|ɀ|ⱬ|ꝣ|[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763])/g
|
602
|
+
}];
|
603
|
+
|
604
|
+
var removeAccents = function removeAccents(str) {
|
605
|
+
var formattedStr = str;
|
606
|
+
lettersDiacritics.forEach(function (letterDiacritics) {
|
607
|
+
formattedStr = formattedStr.replace(letterDiacritics.letters, letterDiacritics.base);
|
608
|
+
});
|
609
|
+
return formattedStr;
|
610
|
+
};
|
611
|
+
|
612
|
+
var normalizeString = function normalizeString(str) {
|
613
|
+
return removeAccents(str).toLowerCase();
|
614
|
+
};
|
615
|
+
|
616
|
+
var getSubstringIndex = function getSubstringIndex(str, substr, ignoreAccents) {
|
617
|
+
if (!ignoreAccents) {
|
618
|
+
return str.toLowerCase().indexOf(substr.toLowerCase());
|
619
|
+
}
|
620
|
+
|
621
|
+
return normalizeString(str).indexOf(normalizeString(substr));
|
622
|
+
};
|
623
|
+
|
624
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
625
|
+
|
626
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
627
|
+
|
331
628
|
var _generateComponentKey = function _generateComponentKey(usedKeys, id) {
|
332
629
|
if (!usedKeys.hasOwnProperty(id)) {
|
333
630
|
usedKeys[id] = 0;
|
@@ -445,7 +742,7 @@ function (_Component) {
|
|
445
742
|
}
|
446
743
|
|
447
744
|
return React.createElement("div", _extends({}, style, {
|
448
|
-
style: _objectSpread({}, inputStyle, style.style)
|
745
|
+
style: _objectSpread({}, inputStyle, {}, style.style)
|
449
746
|
}), resultComponents);
|
450
747
|
}
|
451
748
|
}, {
|
@@ -580,9 +877,10 @@ function (_Component) {
|
|
580
877
|
key: "renderHighlightedDisplay",
|
581
878
|
value: function renderHighlightedDisplay(display) {
|
582
879
|
var _this$props2 = this.props,
|
880
|
+
ignoreAccents = _this$props2.ignoreAccents,
|
583
881
|
query = _this$props2.query,
|
584
882
|
style = _this$props2.style;
|
585
|
-
var i = display
|
883
|
+
var i = getSubstringIndex(display, query, ignoreAccents);
|
586
884
|
|
587
885
|
if (i === -1) {
|
588
886
|
return React.createElement("span", style('display'), display);
|
@@ -599,6 +897,7 @@ _defineProperty(Suggestion, "propTypes", {
|
|
599
897
|
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
600
898
|
query: PropTypes.string.isRequired,
|
601
899
|
index: PropTypes.number.isRequired,
|
900
|
+
ignoreAccents: PropTypes.bool,
|
602
901
|
suggestion: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
|
603
902
|
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
604
903
|
display: PropTypes.string
|
@@ -624,6 +923,10 @@ function LoadingIndicator(_ref) {
|
|
624
923
|
|
625
924
|
var LoadingIndicator$1 = substyle(LoadingIndicator);
|
626
925
|
|
926
|
+
function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
927
|
+
|
928
|
+
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
929
|
+
|
627
930
|
var SuggestionsOverlay =
|
628
931
|
/*#__PURE__*/
|
629
932
|
function (_Component) {
|
@@ -706,12 +1009,14 @@ function (_Component) {
|
|
706
1009
|
var childIndex = queryInfo.childIndex,
|
707
1010
|
query = queryInfo.query;
|
708
1011
|
var renderSuggestion = Children.toArray(this.props.children)[childIndex].props.renderSuggestion;
|
1012
|
+
var ignoreAccents = this.props.ignoreAccents;
|
709
1013
|
return React.createElement(Suggestion$1, {
|
710
1014
|
style: this.props.style('item'),
|
711
1015
|
key: "".concat(childIndex, "-").concat(id),
|
712
1016
|
id: id,
|
713
1017
|
query: query,
|
714
1018
|
index: index,
|
1019
|
+
ignoreAccents: ignoreAccents,
|
715
1020
|
renderSuggestion: renderSuggestion,
|
716
1021
|
suggestion: result,
|
717
1022
|
focused: isFocused,
|
@@ -766,6 +1071,7 @@ _defineProperty(SuggestionsOverlay, "propTypes", {
|
|
766
1071
|
scrollFocusedIntoView: PropTypes.bool,
|
767
1072
|
isLoading: PropTypes.bool,
|
768
1073
|
onSelect: PropTypes.func,
|
1074
|
+
ignoreAccents: PropTypes.bool,
|
769
1075
|
children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired
|
770
1076
|
});
|
771
1077
|
|
@@ -778,7 +1084,7 @@ _defineProperty(SuggestionsOverlay, "defaultProps", {
|
|
778
1084
|
|
779
1085
|
var styled$2 = defaultStyle(function (_ref2) {
|
780
1086
|
var position = _ref2.position;
|
781
|
-
return _objectSpread({
|
1087
|
+
return _objectSpread$1({
|
782
1088
|
position: 'absolute',
|
783
1089
|
zIndex: 1,
|
784
1090
|
backgroundColor: 'white',
|
@@ -794,6 +1100,9 @@ var styled$2 = defaultStyle(function (_ref2) {
|
|
794
1100
|
});
|
795
1101
|
var SuggestionsOverlay$1 = styled$2(SuggestionsOverlay);
|
796
1102
|
|
1103
|
+
function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
1104
|
+
|
1105
|
+
function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
797
1106
|
var makeTriggerRegex = function makeTriggerRegex(trigger) {
|
798
1107
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
799
1108
|
|
@@ -808,7 +1117,7 @@ var makeTriggerRegex = function makeTriggerRegex(trigger) {
|
|
808
1117
|
}
|
809
1118
|
};
|
810
1119
|
|
811
|
-
var getDataProvider = function getDataProvider(data) {
|
1120
|
+
var getDataProvider = function getDataProvider(data, ignoreAccents) {
|
812
1121
|
if (data instanceof Array) {
|
813
1122
|
// if data is an array, create a function to query that
|
814
1123
|
return function (query, callback) {
|
@@ -817,7 +1126,7 @@ var getDataProvider = function getDataProvider(data) {
|
|
817
1126
|
for (var i = 0, l = data.length; i < l; ++i) {
|
818
1127
|
var display = data[i].display || data[i].id;
|
819
1128
|
|
820
|
-
if (display
|
1129
|
+
if (getSubstringIndex(display, query, ignoreAccents) >= 0) {
|
821
1130
|
results.push(data[i]);
|
822
1131
|
}
|
823
1132
|
}
|
@@ -846,6 +1155,8 @@ var propTypes = {
|
|
846
1155
|
singleLine: PropTypes.bool,
|
847
1156
|
allowSpaceInQuery: PropTypes.bool,
|
848
1157
|
EXPERIMENTAL_cutCopyPaste: PropTypes.bool,
|
1158
|
+
allowSuggestionsAboveCursor: PropTypes.bool,
|
1159
|
+
ignoreAccents: PropTypes.bool,
|
849
1160
|
value: PropTypes.string,
|
850
1161
|
onKeyDown: PropTypes.func,
|
851
1162
|
onSelect: PropTypes.func,
|
@@ -877,7 +1188,7 @@ function (_React$Component) {
|
|
877
1188
|
style = _this$props.style; // pass all props that we don't use through to the input control
|
878
1189
|
|
879
1190
|
var props = omit(_this.props, 'style', keys(propTypes));
|
880
|
-
return _objectSpread({}, props, style('input'), {
|
1191
|
+
return _objectSpread$2({}, props, {}, style('input'), {
|
881
1192
|
value: _this.getPlainText()
|
882
1193
|
}, !readOnly && !disabled && {
|
883
1194
|
onChange: _this.handleChange,
|
@@ -947,7 +1258,8 @@ function (_React$Component) {
|
|
947
1258
|
scrollFocusedIntoView: false
|
948
1259
|
});
|
949
1260
|
},
|
950
|
-
isLoading: _this.isLoading()
|
1261
|
+
isLoading: _this.isLoading(),
|
1262
|
+
ignoreAccents: _this.props.ignoreAccents
|
951
1263
|
}, _this.props.children);
|
952
1264
|
|
953
1265
|
if (_this.props.suggestionsPortalHost) {
|
@@ -1055,9 +1367,8 @@ function (_React$Component) {
|
|
1055
1367
|
var eventMock = {
|
1056
1368
|
target: {
|
1057
1369
|
value: newValue
|
1058
|
-
}
|
1059
|
-
|
1060
|
-
};
|
1370
|
+
}
|
1371
|
+
}; // this.props.onChange.call(this, eventMock, newValue, newPlainTextValue, mentions);
|
1061
1372
|
|
1062
1373
|
_this.executeOnChange(eventMock, newValue, newPlainTextValue, mentions);
|
1063
1374
|
});
|
@@ -1202,13 +1513,24 @@ function (_React$Component) {
|
|
1202
1513
|
|
1203
1514
|
_defineProperty(_assertThisInitialized(_this), "updateSuggestionsPosition", function () {
|
1204
1515
|
var caretPosition = _this.state.caretPosition;
|
1516
|
+
var _this$props5 = _this.props,
|
1517
|
+
suggestionsPortalHost = _this$props5.suggestionsPortalHost,
|
1518
|
+
allowSuggestionsAboveCursor = _this$props5.allowSuggestionsAboveCursor;
|
1205
1519
|
|
1206
1520
|
if (!caretPosition || !_this.suggestionsRef) {
|
1207
1521
|
return;
|
1208
1522
|
}
|
1209
1523
|
|
1210
1524
|
var suggestions = ReactDOM.findDOMNode(_this.suggestionsRef);
|
1211
|
-
var highlighter = ReactDOM.findDOMNode(_this.highlighterRef);
|
1525
|
+
var highlighter = ReactDOM.findDOMNode(_this.highlighterRef); // first get viewport-relative position (highlighter is offsetParent of caret):
|
1526
|
+
|
1527
|
+
var caretOffsetParentRect = highlighter.getBoundingClientRect();
|
1528
|
+
var caretHeight = getComputedStyleLengthProp(highlighter, 'font-size');
|
1529
|
+
var viewportRelative = {
|
1530
|
+
left: caretOffsetParentRect.left + caretPosition.left,
|
1531
|
+
top: caretOffsetParentRect.top + caretPosition.top + caretHeight
|
1532
|
+
};
|
1533
|
+
var viewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
|
1212
1534
|
|
1213
1535
|
if (!suggestions) {
|
1214
1536
|
return;
|
@@ -1216,23 +1538,16 @@ function (_React$Component) {
|
|
1216
1538
|
|
1217
1539
|
var position = {}; // if suggestions menu is in a portal, update position to be releative to its portal node
|
1218
1540
|
|
1219
|
-
if (
|
1220
|
-
// first get viewport-relative position (highlighter is offsetParent of caret):
|
1221
|
-
var caretOffsetParentRect = highlighter.getBoundingClientRect();
|
1222
|
-
var caretHeight = getComputedStyleLengthProp(highlighter, 'font-size');
|
1223
|
-
var viewportRelative = {
|
1224
|
-
left: caretOffsetParentRect.left + caretPosition.left,
|
1225
|
-
top: caretOffsetParentRect.top + caretPosition.top + caretHeight
|
1226
|
-
};
|
1541
|
+
if (suggestionsPortalHost) {
|
1227
1542
|
position.position = 'fixed';
|
1228
1543
|
var left = viewportRelative.left;
|
1229
|
-
|
1544
|
+
var top = viewportRelative.top; // absolute/fixed positioned elements are positioned according to their entire box including margins; so we remove margins here:
|
1230
1545
|
|
1231
1546
|
left -= getComputedStyleLengthProp(suggestions, 'margin-left');
|
1232
|
-
|
1547
|
+
top -= getComputedStyleLengthProp(suggestions, 'margin-top'); // take into account highlighter/textinput scrolling:
|
1233
1548
|
|
1234
1549
|
left -= highlighter.scrollLeft;
|
1235
|
-
|
1550
|
+
top -= highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window
|
1236
1551
|
|
1237
1552
|
var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
|
1238
1553
|
|
@@ -1240,18 +1555,36 @@ function (_React$Component) {
|
|
1240
1555
|
position.left = Math.max(0, viewportWidth - suggestions.offsetWidth);
|
1241
1556
|
} else {
|
1242
1557
|
position.left = left;
|
1558
|
+
} // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.
|
1559
|
+
// Move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height
|
1560
|
+
// is small enough to NOT cover up the caret
|
1561
|
+
|
1562
|
+
|
1563
|
+
if (allowSuggestionsAboveCursor && top + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < top - caretHeight) {
|
1564
|
+
position.top = Math.max(0, top - suggestions.offsetHeight - caretHeight);
|
1565
|
+
} else {
|
1566
|
+
position.top = top;
|
1243
1567
|
}
|
1244
1568
|
} else {
|
1245
|
-
var _left = caretPosition.left - highlighter.scrollLeft;
|
1569
|
+
var _left = caretPosition.left - highlighter.scrollLeft;
|
1570
|
+
|
1571
|
+
var _top = caretPosition.top - highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window
|
1246
1572
|
|
1247
1573
|
|
1248
1574
|
if (_left + suggestions.offsetWidth > _this.containerRef.offsetWidth) {
|
1249
1575
|
position.right = 0;
|
1250
1576
|
} else {
|
1251
1577
|
position.left = _left;
|
1252
|
-
}
|
1578
|
+
} // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.
|
1579
|
+
// move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height
|
1580
|
+
// is small enough to NOT cover up the caret
|
1581
|
+
|
1253
1582
|
|
1254
|
-
|
1583
|
+
if (allowSuggestionsAboveCursor && viewportRelative.top - highlighter.scrollTop + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < caretOffsetParentRect.top - caretHeight - highlighter.scrollTop) {
|
1584
|
+
position.top = _top - suggestions.offsetHeight - caretHeight;
|
1585
|
+
} else {
|
1586
|
+
position.top = _top;
|
1587
|
+
}
|
1255
1588
|
}
|
1256
1589
|
|
1257
1590
|
if (isEqual(position, _this.state.suggestionsPosition)) {
|
@@ -1351,8 +1684,11 @@ function (_React$Component) {
|
|
1351
1684
|
});
|
1352
1685
|
|
1353
1686
|
_defineProperty(_assertThisInitialized(_this), "queryData", function (query, childIndex, querySequenceStart, querySequenceEnd, plainTextValue) {
|
1354
|
-
var
|
1355
|
-
|
1687
|
+
var _this$props6 = _this.props,
|
1688
|
+
children = _this$props6.children,
|
1689
|
+
ignoreAccents = _this$props6.ignoreAccents;
|
1690
|
+
var mentionChild = Children.toArray(children)[childIndex];
|
1691
|
+
var provideData = getDataProvider(mentionChild.props.data, ignoreAccents);
|
1356
1692
|
var syncResult = provideData(query, _this.updateSuggestions.bind(null, _this._queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue));
|
1357
1693
|
|
1358
1694
|
if (syncResult instanceof Array) {
|
@@ -1365,7 +1701,7 @@ function (_React$Component) {
|
|
1365
1701
|
if (queryId !== _this._queryId) return; // save in property so that multiple sync state updates from different mentions sources
|
1366
1702
|
// won't overwrite each other
|
1367
1703
|
|
1368
|
-
_this.suggestions = _objectSpread({}, _this.suggestions, _defineProperty({}, childIndex, {
|
1704
|
+
_this.suggestions = _objectSpread$2({}, _this.suggestions, _defineProperty({}, childIndex, {
|
1369
1705
|
queryInfo: {
|
1370
1706
|
childIndex: childIndex,
|
1371
1707
|
query: query,
|
@@ -1530,22 +1866,26 @@ function (_React$Component) {
|
|
1530
1866
|
return;
|
1531
1867
|
}
|
1532
1868
|
|
1869
|
+
if (!this.supportsClipboardActions(event)) {
|
1870
|
+
return;
|
1871
|
+
}
|
1872
|
+
|
1533
1873
|
event.preventDefault();
|
1534
1874
|
var _this$state3 = this.state,
|
1535
1875
|
selectionStart = _this$state3.selectionStart,
|
1536
1876
|
selectionEnd = _this$state3.selectionEnd;
|
1537
|
-
var _this$
|
1538
|
-
value = _this$
|
1539
|
-
children = _this$
|
1877
|
+
var _this$props7 = this.props,
|
1878
|
+
value = _this$props7.value,
|
1879
|
+
children = _this$props7.children;
|
1540
1880
|
var config = readConfigFromChildren(children);
|
1541
1881
|
var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');
|
1542
1882
|
var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');
|
1543
1883
|
var pastedMentions = event.clipboardData.getData('text/react-mentions');
|
1544
1884
|
var pastedData = event.clipboardData.getData('text/plain');
|
1545
|
-
var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData);
|
1885
|
+
var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData).replace(/\r/g, '');
|
1546
1886
|
var newPlainTextValue = getPlainText(newValue, config);
|
1547
1887
|
var eventMock = {
|
1548
|
-
target: _objectSpread({}, event.target, {
|
1888
|
+
target: _objectSpread$2({}, event.target, {
|
1549
1889
|
value: newValue
|
1550
1890
|
})
|
1551
1891
|
};
|
@@ -1557,15 +1897,20 @@ function (_React$Component) {
|
|
1557
1897
|
var _this$state4 = this.state,
|
1558
1898
|
selectionStart = _this$state4.selectionStart,
|
1559
1899
|
selectionEnd = _this$state4.selectionEnd;
|
1560
|
-
var _this$
|
1561
|
-
children = _this$
|
1562
|
-
value = _this$
|
1900
|
+
var _this$props8 = this.props,
|
1901
|
+
children = _this$props8.children,
|
1902
|
+
value = _this$props8.value;
|
1563
1903
|
var config = readConfigFromChildren(children);
|
1564
1904
|
var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');
|
1565
1905
|
var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');
|
1566
1906
|
event.clipboardData.setData('text/plain', event.target.value.slice(selectionStart, selectionEnd));
|
1567
1907
|
event.clipboardData.setData('text/react-mentions', value.slice(markupStartIndex, markupEndIndex));
|
1568
1908
|
}
|
1909
|
+
}, {
|
1910
|
+
key: "supportsClipboardActions",
|
1911
|
+
value: function supportsClipboardActions(event) {
|
1912
|
+
return !!event.clipboardData;
|
1913
|
+
}
|
1569
1914
|
}, {
|
1570
1915
|
key: "handleCopy",
|
1571
1916
|
value: function handleCopy(event) {
|
@@ -1573,6 +1918,10 @@ function (_React$Component) {
|
|
1573
1918
|
return;
|
1574
1919
|
}
|
1575
1920
|
|
1921
|
+
if (!this.supportsClipboardActions(event)) {
|
1922
|
+
return;
|
1923
|
+
}
|
1924
|
+
|
1576
1925
|
event.preventDefault();
|
1577
1926
|
this.saveSelectionToClipboard(event);
|
1578
1927
|
}
|
@@ -1583,21 +1932,25 @@ function (_React$Component) {
|
|
1583
1932
|
return;
|
1584
1933
|
}
|
1585
1934
|
|
1935
|
+
if (!this.supportsClipboardActions(event)) {
|
1936
|
+
return;
|
1937
|
+
}
|
1938
|
+
|
1586
1939
|
event.preventDefault();
|
1587
1940
|
this.saveSelectionToClipboard(event);
|
1588
1941
|
var _this$state5 = this.state,
|
1589
1942
|
selectionStart = _this$state5.selectionStart,
|
1590
1943
|
selectionEnd = _this$state5.selectionEnd;
|
1591
|
-
var _this$
|
1592
|
-
children = _this$
|
1593
|
-
value = _this$
|
1944
|
+
var _this$props9 = this.props,
|
1945
|
+
children = _this$props9.children,
|
1946
|
+
value = _this$props9.value;
|
1594
1947
|
var config = readConfigFromChildren(children);
|
1595
1948
|
var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');
|
1596
1949
|
var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');
|
1597
1950
|
var newValue = [value.slice(0, markupStartIndex), value.slice(markupEndIndex)].join('');
|
1598
1951
|
var newPlainTextValue = getPlainText(newValue, config);
|
1599
1952
|
var eventMock = {
|
1600
|
-
target: _objectSpread({}, event.target, {
|
1953
|
+
target: _objectSpread$2({}, event.target, {
|
1601
1954
|
value: newPlainTextValue
|
1602
1955
|
})
|
1603
1956
|
};
|
@@ -1617,7 +1970,9 @@ function (_React$Component) {
|
|
1617
1970
|
_defineProperty(MentionsInput, "propTypes", propTypes);
|
1618
1971
|
|
1619
1972
|
_defineProperty(MentionsInput, "defaultProps", {
|
1973
|
+
ignoreAccents: false,
|
1620
1974
|
singleLine: false,
|
1975
|
+
allowSuggestionsAboveCursor: false,
|
1621
1976
|
onKeyDown: function onKeyDown() {
|
1622
1977
|
return null;
|
1623
1978
|
},
|
@@ -1642,14 +1997,16 @@ var styled$3 = defaultStyle({
|
|
1642
1997
|
display: 'block',
|
1643
1998
|
position: 'absolute',
|
1644
1999
|
top: 0,
|
2000
|
+
left: 0,
|
1645
2001
|
boxSizing: 'border-box',
|
1646
2002
|
backgroundColor: 'transparent',
|
1647
2003
|
width: 'inherit',
|
1648
2004
|
fontFamily: 'inherit',
|
1649
|
-
fontSize: 'inherit'
|
2005
|
+
fontSize: 'inherit',
|
2006
|
+
letterSpacing: 'inherit'
|
1650
2007
|
},
|
1651
2008
|
'&multiLine': {
|
1652
|
-
input: _objectSpread({
|
2009
|
+
input: _objectSpread$2({
|
1653
2010
|
width: '100%',
|
1654
2011
|
height: '100%',
|
1655
2012
|
bottom: 0,
|