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
@@ -6,7 +6,6 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
|
6
6
|
|
7
7
|
var _toConsumableArray = _interopDefault(require('@babel/runtime/helpers/toConsumableArray'));
|
8
8
|
var _extends = _interopDefault(require('@babel/runtime/helpers/extends'));
|
9
|
-
var _objectSpread = _interopDefault(require('@babel/runtime/helpers/objectSpread'));
|
10
9
|
var _classCallCheck = _interopDefault(require('@babel/runtime/helpers/classCallCheck'));
|
11
10
|
var _createClass = _interopDefault(require('@babel/runtime/helpers/createClass'));
|
12
11
|
var _possibleConstructorReturn = _interopDefault(require('@babel/runtime/helpers/possibleConstructorReturn'));
|
@@ -14,19 +13,19 @@ var _getPrototypeOf = _interopDefault(require('@babel/runtime/helpers/getPrototy
|
|
14
13
|
var _assertThisInitialized = _interopDefault(require('@babel/runtime/helpers/assertThisInitialized'));
|
15
14
|
var _inherits = _interopDefault(require('@babel/runtime/helpers/inherits'));
|
16
15
|
var _defineProperty = _interopDefault(require('@babel/runtime/helpers/defineProperty'));
|
17
|
-
var isEqual = _interopDefault(require('lodash/isEqual'));
|
18
|
-
var isNumber = _interopDefault(require('lodash/isNumber'));
|
19
|
-
var keys = _interopDefault(require('lodash/keys'));
|
20
|
-
var omit = _interopDefault(require('lodash/omit'));
|
21
|
-
var values = _interopDefault(require('lodash/values'));
|
22
|
-
var PropTypes = _interopDefault(require('prop-types'));
|
23
16
|
var React = require('react');
|
24
17
|
var React__default = _interopDefault(React);
|
25
|
-
var ReactDOM = _interopDefault(require('react-dom'));
|
26
|
-
var substyle = require('substyle');
|
27
|
-
var substyle__default = _interopDefault(substyle);
|
28
18
|
var invariant = _interopDefault(require('invariant'));
|
29
19
|
var _slicedToArray = _interopDefault(require('@babel/runtime/helpers/slicedToArray'));
|
20
|
+
var PropTypes = _interopDefault(require('prop-types'));
|
21
|
+
var substyle = require('substyle');
|
22
|
+
var substyle__default = _interopDefault(substyle);
|
23
|
+
var isEqual = _interopDefault(require('lodash/isEqual'));
|
24
|
+
var isNumber = _interopDefault(require('lodash/isNumber'));
|
25
|
+
var ReactDOM = _interopDefault(require('react-dom'));
|
26
|
+
var omit = _interopDefault(require('lodash/omit'));
|
27
|
+
var keys = _interopDefault(require('lodash/keys'));
|
28
|
+
var values = _interopDefault(require('lodash/values'));
|
30
29
|
|
31
30
|
// escape RegExp special characters https://stackoverflow.com/a/9310752/5142490
|
32
31
|
var escapeRegex = function escapeRegex(str) {
|
@@ -336,6 +335,304 @@ var makeMentionsMarkup = function makeMentionsMarkup(markup, id, display) {
|
|
336
335
|
return markup.replace(PLACEHOLDERS.id, id).replace(PLACEHOLDERS.display, display);
|
337
336
|
};
|
338
337
|
|
338
|
+
// This contains all the latin letters and the regex that match these letters with diacritics
|
339
|
+
// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript
|
340
|
+
var lettersDiacritics = [{
|
341
|
+
base: 'A',
|
342
|
+
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
|
343
|
+
}, {
|
344
|
+
base: 'AA',
|
345
|
+
letters: /(Ꜳ|[\uA732])/g
|
346
|
+
}, {
|
347
|
+
base: 'AE',
|
348
|
+
letters: /(Æ|Ǽ|Ǣ|[\u00C6\u01FC\u01E2])/g
|
349
|
+
}, {
|
350
|
+
base: 'AO',
|
351
|
+
letters: /(Ꜵ|[\uA734])/g
|
352
|
+
}, {
|
353
|
+
base: 'AU',
|
354
|
+
letters: /(Ꜷ|[\uA736])/g
|
355
|
+
}, {
|
356
|
+
base: 'AV',
|
357
|
+
letters: /(Ꜹ|Ꜻ|[\uA738\uA73A])/g
|
358
|
+
}, {
|
359
|
+
base: 'AY',
|
360
|
+
letters: /(Ꜽ|[\uA73C])/g
|
361
|
+
}, {
|
362
|
+
base: 'B',
|
363
|
+
letters: /(B|Ⓑ|B|Ḃ|Ḅ|Ḇ|Ƀ|Ƃ|Ɓ|[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181])/g
|
364
|
+
}, {
|
365
|
+
base: 'C',
|
366
|
+
letters: /(C|Ⓒ|C|Ć|Ĉ|Ċ|Č|Ç|Ḉ|Ƈ|Ȼ|Ꜿ|[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E])/g
|
367
|
+
}, {
|
368
|
+
base: 'D',
|
369
|
+
letters: /(D|Ⓓ|D|Ḋ|Ď|Ḍ|Ḑ|Ḓ|Ḏ|Đ|Ƌ|Ɗ|Ɖ|Ꝺ|Ð|[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779\u00D0])/g
|
370
|
+
}, {
|
371
|
+
base: 'DZ',
|
372
|
+
letters: /(DZ|DŽ|[\u01F1\u01C4])/g
|
373
|
+
}, {
|
374
|
+
base: 'Dz',
|
375
|
+
letters: /(Dz|Dž|[\u01F2\u01C5])/g
|
376
|
+
}, {
|
377
|
+
base: 'E',
|
378
|
+
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
|
379
|
+
}, {
|
380
|
+
base: 'F',
|
381
|
+
letters: /(F|Ⓕ|F|Ḟ|Ƒ|Ꝼ|[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B])/g
|
382
|
+
}, {
|
383
|
+
base: 'G',
|
384
|
+
letters: /(G|Ⓖ|G|Ǵ|Ĝ|Ḡ|Ğ|Ġ|Ǧ|Ģ|Ǥ|Ɠ|Ꞡ|Ᵹ|Ꝿ|[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E])/g
|
385
|
+
}, {
|
386
|
+
base: 'H',
|
387
|
+
letters: /(H|Ⓗ|H|Ĥ|Ḣ|Ḧ|Ȟ|Ḥ|Ḩ|Ḫ|Ħ|Ⱨ|Ⱶ|Ɥ|[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D])/g
|
388
|
+
}, {
|
389
|
+
base: 'I',
|
390
|
+
letters: /(I|Ⓘ|I|Ì|Í|Î|Ĩ|Ī|Ĭ|İ|Ï|Ḯ|Ỉ|Ǐ|Ȉ|Ȋ|Ị|Į|Ḭ|Ɨ|[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197])/g
|
391
|
+
}, {
|
392
|
+
base: 'J',
|
393
|
+
letters: /(J|Ⓙ|J|Ĵ|Ɉ|[\u004A\u24BF\uFF2A\u0134\u0248])/g
|
394
|
+
}, {
|
395
|
+
base: 'K',
|
396
|
+
letters: /(K|Ⓚ|K|Ḱ|Ǩ|Ḳ|Ķ|Ḵ|Ƙ|Ⱪ|Ꝁ|Ꝃ|Ꝅ|Ꞣ|[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2])/g
|
397
|
+
}, {
|
398
|
+
base: 'L',
|
399
|
+
letters: /(L|Ⓛ|L|Ŀ|Ĺ|Ľ|Ḷ|Ḹ|Ļ|Ḽ|Ḻ|Ł|Ƚ|Ɫ|Ⱡ|Ꝉ|Ꝇ|Ꞁ|[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780])/g
|
400
|
+
}, {
|
401
|
+
base: 'LJ',
|
402
|
+
letters: /(LJ|[\u01C7])/g
|
403
|
+
}, {
|
404
|
+
base: 'Lj',
|
405
|
+
letters: /(Lj|[\u01C8])/g
|
406
|
+
}, {
|
407
|
+
base: 'M',
|
408
|
+
letters: /(M|Ⓜ|M|Ḿ|Ṁ|Ṃ|Ɱ|Ɯ|[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C])/g
|
409
|
+
}, {
|
410
|
+
base: 'N',
|
411
|
+
letters: /(N|Ⓝ|N|Ǹ|Ń|Ñ|Ṅ|Ň|Ṇ|Ņ|Ṋ|Ṉ|Ƞ|Ɲ|Ꞑ|Ꞥ|Ŋ|[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4\u014A])/g
|
412
|
+
}, {
|
413
|
+
base: 'NJ',
|
414
|
+
letters: /(NJ|[\u01CA])/g
|
415
|
+
}, {
|
416
|
+
base: 'Nj',
|
417
|
+
letters: /(Nj|[\u01CB])/g
|
418
|
+
}, {
|
419
|
+
base: 'O',
|
420
|
+
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
|
421
|
+
}, {
|
422
|
+
base: 'OE',
|
423
|
+
letters: /(Œ|[\u0152])/g
|
424
|
+
}, {
|
425
|
+
base: 'OI',
|
426
|
+
letters: /(Ƣ|[\u01A2])/g
|
427
|
+
}, {
|
428
|
+
base: 'OO',
|
429
|
+
letters: /(Ꝏ|[\uA74E])/g
|
430
|
+
}, {
|
431
|
+
base: 'OU',
|
432
|
+
letters: /(Ȣ|[\u0222])/g
|
433
|
+
}, {
|
434
|
+
base: 'P',
|
435
|
+
letters: /(P|Ⓟ|P|Ṕ|Ṗ|Ƥ|Ᵽ|Ꝑ|Ꝓ|Ꝕ|[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754])/g
|
436
|
+
}, {
|
437
|
+
base: 'Q',
|
438
|
+
letters: /(Q|Ⓠ|Q|Ꝗ|Ꝙ|Ɋ|[\u0051\u24C6\uFF31\uA756\uA758\u024A])/g
|
439
|
+
}, {
|
440
|
+
base: 'R',
|
441
|
+
letters: /(R|Ⓡ|R|Ŕ|Ṙ|Ř|Ȑ|Ȓ|Ṛ|Ṝ|Ŗ|Ṟ|Ɍ|Ɽ|Ꝛ|Ꞧ|Ꞃ|[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782])/g
|
442
|
+
}, {
|
443
|
+
base: 'S',
|
444
|
+
letters: /(S|Ⓢ|S|ẞ|Ś|Ṥ|Ŝ|Ṡ|Š|Ṧ|Ṣ|Ṩ|Ș|Ş|Ȿ|Ꞩ|Ꞅ|[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784])/g
|
445
|
+
}, {
|
446
|
+
base: 'T',
|
447
|
+
letters: /(T|Ⓣ|T|Ṫ|Ť|Ṭ|Ț|Ţ|Ṱ|Ṯ|Ŧ|Ƭ|Ʈ|Ⱦ|Ꞇ|[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786])/g
|
448
|
+
}, {
|
449
|
+
base: 'TH',
|
450
|
+
letters: /(Þ|[\u00DE])/g
|
451
|
+
}, {
|
452
|
+
base: 'TZ',
|
453
|
+
letters: /(Ꜩ|[\uA728])/g
|
454
|
+
}, {
|
455
|
+
base: 'U',
|
456
|
+
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
|
457
|
+
}, {
|
458
|
+
base: 'V',
|
459
|
+
letters: /(V|Ⓥ|V|Ṽ|Ṿ|Ʋ|Ꝟ|Ʌ|[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245])/g
|
460
|
+
}, {
|
461
|
+
base: 'VY',
|
462
|
+
letters: /(Ꝡ|[\uA760])/g
|
463
|
+
}, {
|
464
|
+
base: 'W',
|
465
|
+
letters: /(W|Ⓦ|W|Ẁ|Ẃ|Ŵ|Ẇ|Ẅ|Ẉ|Ⱳ|[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72])/g
|
466
|
+
}, {
|
467
|
+
base: 'X',
|
468
|
+
letters: /(X|Ⓧ|X|Ẋ|Ẍ|[\u0058\u24CD\uFF38\u1E8A\u1E8C])/g
|
469
|
+
}, {
|
470
|
+
base: 'Y',
|
471
|
+
letters: /(Y|Ⓨ|Y|Ỳ|Ý|Ŷ|Ỹ|Ȳ|Ẏ|Ÿ|Ỷ|Ỵ|Ƴ|Ɏ|Ỿ|[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE])/g
|
472
|
+
}, {
|
473
|
+
base: 'Z',
|
474
|
+
letters: /(Z|Ⓩ|Z|Ź|Ẑ|Ż|Ž|Ẓ|Ẕ|Ƶ|Ȥ|Ɀ|Ⱬ|Ꝣ|[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762])/g
|
475
|
+
}, {
|
476
|
+
base: 'a',
|
477
|
+
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
|
478
|
+
}, {
|
479
|
+
base: 'aa',
|
480
|
+
letters: /(ꜳ|[\uA733])/g
|
481
|
+
}, {
|
482
|
+
base: 'ae',
|
483
|
+
letters: /(æ|ǽ|ǣ|[\u00E6\u01FD\u01E3])/g
|
484
|
+
}, {
|
485
|
+
base: 'ao',
|
486
|
+
letters: /(ꜵ|[\uA735])/g
|
487
|
+
}, {
|
488
|
+
base: 'au',
|
489
|
+
letters: /(ꜷ|[\uA737])/g
|
490
|
+
}, {
|
491
|
+
base: 'av',
|
492
|
+
letters: /(ꜹ|ꜻ|[\uA739\uA73B])/g
|
493
|
+
}, {
|
494
|
+
base: 'ay',
|
495
|
+
letters: /(ꜽ|[\uA73D])/g
|
496
|
+
}, {
|
497
|
+
base: 'b',
|
498
|
+
letters: /(b|ⓑ|b|ḃ|ḅ|ḇ|ƀ|ƃ|ɓ|[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253])/g
|
499
|
+
}, {
|
500
|
+
base: 'c',
|
501
|
+
letters: /(c|ⓒ|c|ć|ĉ|ċ|č|ç|ḉ|ƈ|ȼ|ꜿ|ↄ|[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184])/g
|
502
|
+
}, {
|
503
|
+
base: 'd',
|
504
|
+
letters: /(d|ⓓ|d|ḋ|ď|ḍ|ḑ|ḓ|ḏ|đ|ƌ|ɖ|ɗ|ꝺ|ð|[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A\u00F0])/g
|
505
|
+
}, {
|
506
|
+
base: 'dz',
|
507
|
+
letters: /(dz|dž|[\u01F3\u01C6])/g
|
508
|
+
}, {
|
509
|
+
base: 'e',
|
510
|
+
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
|
511
|
+
}, {
|
512
|
+
base: 'f',
|
513
|
+
letters: /(f|ⓕ|f|ḟ|ƒ|ꝼ|[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C])/g
|
514
|
+
}, {
|
515
|
+
base: 'g',
|
516
|
+
letters: /(g|ⓖ|g|ǵ|ĝ|ḡ|ğ|ġ|ǧ|ģ|ǥ|ɠ|ꞡ|ᵹ|ꝿ|[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F])/g
|
517
|
+
}, {
|
518
|
+
base: 'h',
|
519
|
+
letters: /(h|ⓗ|h|ĥ|ḣ|ḧ|ȟ|ḥ|ḩ|ḫ|ẖ|ħ|ⱨ|ⱶ|ɥ|[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265])/g
|
520
|
+
}, {
|
521
|
+
base: 'hv',
|
522
|
+
letters: /(ƕ|[\u0195])/g
|
523
|
+
}, {
|
524
|
+
base: 'i',
|
525
|
+
letters: /(i|ⓘ|i|ì|í|î|ĩ|ī|ĭ|ï|ḯ|ỉ|ǐ|ȉ|ȋ|ị|į|ḭ|ɨ|ı|[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131])/g
|
526
|
+
}, {
|
527
|
+
base: 'ij',
|
528
|
+
letters: /(ij|[\u0133])/g
|
529
|
+
}, {
|
530
|
+
base: 'j',
|
531
|
+
letters: /(j|ⓙ|j|ĵ|ǰ|ɉ|[\u006A\u24D9\uFF4A\u0135\u01F0\u0249])/g
|
532
|
+
}, {
|
533
|
+
base: 'k',
|
534
|
+
letters: /(k|ⓚ|k|ḱ|ǩ|ḳ|ķ|ḵ|ƙ|ⱪ|ꝁ|ꝃ|ꝅ|ꞣ|[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3])/g
|
535
|
+
}, {
|
536
|
+
base: 'l',
|
537
|
+
letters: /(l|ⓛ|l|ŀ|ĺ|ľ|ḷ|ḹ|ļ|ḽ|ḻ|ł|ƚ|ɫ|ⱡ|ꝉ|ꞁ|ꝇ|[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u0142\u019A\u026B\u2C61\uA749\uA781\uA747])/g
|
538
|
+
}, {
|
539
|
+
base: 'lj',
|
540
|
+
letters: /(lj|[\u01C9])/g
|
541
|
+
}, {
|
542
|
+
base: 'm',
|
543
|
+
letters: /(m|ⓜ|m|ḿ|ṁ|ṃ|ɱ|ɯ|[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F])/g
|
544
|
+
}, {
|
545
|
+
base: 'n',
|
546
|
+
letters: /(n|ⓝ|n|ǹ|ń|ñ|ṅ|ň|ṇ|ņ|ṋ|ṉ|ƞ|ɲ|ʼn|ꞑ|ꞥ|ŋ|[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u014B])/g
|
547
|
+
}, {
|
548
|
+
base: 'nj',
|
549
|
+
letters: /(nj|[\u01CC])/g
|
550
|
+
}, {
|
551
|
+
base: 'o',
|
552
|
+
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
|
553
|
+
}, {
|
554
|
+
base: 'oe',
|
555
|
+
letters: /(œ|[\u0153])/g
|
556
|
+
}, {
|
557
|
+
base: 'oi',
|
558
|
+
letters: /(ƣ|[\u01A3])/g
|
559
|
+
}, {
|
560
|
+
base: 'ou',
|
561
|
+
letters: /(ȣ|[\u0223])/g
|
562
|
+
}, {
|
563
|
+
base: 'oo',
|
564
|
+
letters: /(ꝏ|[\uA74F])/g
|
565
|
+
}, {
|
566
|
+
base: 'p',
|
567
|
+
letters: /(p|ⓟ|p|ṕ|ṗ|ƥ|ᵽ|ꝑ|ꝓ|ꝕ|[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755])/g
|
568
|
+
}, {
|
569
|
+
base: 'q',
|
570
|
+
letters: /(q|ⓠ|q|ɋ|ꝗ|ꝙ|[\u0071\u24E0\uFF51\u024B\uA757\uA759])/g
|
571
|
+
}, {
|
572
|
+
base: 'r',
|
573
|
+
letters: /(r|ⓡ|r|ŕ|ṙ|ř|ȑ|ȓ|ṛ|ṝ|ŗ|ṟ|ɍ|ɽ|ꝛ|ꞧ|ꞃ|[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783])/g
|
574
|
+
}, {
|
575
|
+
base: 's',
|
576
|
+
letters: /(s|ⓢ|s|ś|ṥ|ŝ|ṡ|š|ṧ|ṣ|ṩ|ș|ş|ȿ|ꞩ|ꞅ|ẛ|ſ|[\u0073\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u017F])/g
|
577
|
+
}, {
|
578
|
+
base: 'ss',
|
579
|
+
letters: /(ß|[\u00DF])/g
|
580
|
+
}, {
|
581
|
+
base: 't',
|
582
|
+
letters: /(t|ⓣ|t|ṫ|ẗ|ť|ṭ|ț|ţ|ṱ|ṯ|ŧ|ƭ|ʈ|ⱦ|ꞇ|[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787])/g
|
583
|
+
}, {
|
584
|
+
base: 'th',
|
585
|
+
letters: /(þ|[\u00FE])/g
|
586
|
+
}, {
|
587
|
+
base: 'tz',
|
588
|
+
letters: /(ꜩ|[\uA729])/g
|
589
|
+
}, {
|
590
|
+
base: 'u',
|
591
|
+
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
|
592
|
+
}, {
|
593
|
+
base: 'v',
|
594
|
+
letters: /(v|ⓥ|v|ṽ|ṿ|ʋ|ꝟ|ʌ|[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C])/g
|
595
|
+
}, {
|
596
|
+
base: 'vy',
|
597
|
+
letters: /(ꝡ|[\uA761])/g
|
598
|
+
}, {
|
599
|
+
base: 'w',
|
600
|
+
letters: /(w|ⓦ|w|ẁ|ẃ|ŵ|ẇ|ẅ|ẘ|ẉ|ⱳ|[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73])/g
|
601
|
+
}, {
|
602
|
+
base: 'x',
|
603
|
+
letters: /(x|ⓧ|x|ẋ|ẍ|[\u0078\u24E7\uFF58\u1E8B\u1E8D])/g
|
604
|
+
}, {
|
605
|
+
base: 'y',
|
606
|
+
letters: /(y|ⓨ|y|ỳ|ý|ŷ|ỹ|ȳ|ẏ|ÿ|ỷ|ẙ|ỵ|ƴ|ɏ|ỿ|[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF])/g
|
607
|
+
}, {
|
608
|
+
base: 'z',
|
609
|
+
letters: /(z|ⓩ|z|ź|ẑ|ż|ž|ẓ|ẕ|ƶ|ȥ|ɀ|ⱬ|ꝣ|[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763])/g
|
610
|
+
}];
|
611
|
+
|
612
|
+
var removeAccents = function removeAccents(str) {
|
613
|
+
var formattedStr = str;
|
614
|
+
lettersDiacritics.forEach(function (letterDiacritics) {
|
615
|
+
formattedStr = formattedStr.replace(letterDiacritics.letters, letterDiacritics.base);
|
616
|
+
});
|
617
|
+
return formattedStr;
|
618
|
+
};
|
619
|
+
|
620
|
+
var normalizeString = function normalizeString(str) {
|
621
|
+
return removeAccents(str).toLowerCase();
|
622
|
+
};
|
623
|
+
|
624
|
+
var getSubstringIndex = function getSubstringIndex(str, substr, ignoreAccents) {
|
625
|
+
if (!ignoreAccents) {
|
626
|
+
return str.toLowerCase().indexOf(substr.toLowerCase());
|
627
|
+
}
|
628
|
+
|
629
|
+
return normalizeString(str).indexOf(normalizeString(substr));
|
630
|
+
};
|
631
|
+
|
632
|
+
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; }
|
633
|
+
|
634
|
+
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; }
|
635
|
+
|
339
636
|
var _generateComponentKey = function _generateComponentKey(usedKeys, id) {
|
340
637
|
if (!usedKeys.hasOwnProperty(id)) {
|
341
638
|
usedKeys[id] = 0;
|
@@ -453,7 +750,7 @@ function (_Component) {
|
|
453
750
|
}
|
454
751
|
|
455
752
|
return React__default.createElement("div", _extends({}, style, {
|
456
|
-
style: _objectSpread({}, inputStyle, style.style)
|
753
|
+
style: _objectSpread({}, inputStyle, {}, style.style)
|
457
754
|
}), resultComponents);
|
458
755
|
}
|
459
756
|
}, {
|
@@ -588,9 +885,10 @@ function (_Component) {
|
|
588
885
|
key: "renderHighlightedDisplay",
|
589
886
|
value: function renderHighlightedDisplay(display) {
|
590
887
|
var _this$props2 = this.props,
|
888
|
+
ignoreAccents = _this$props2.ignoreAccents,
|
591
889
|
query = _this$props2.query,
|
592
890
|
style = _this$props2.style;
|
593
|
-
var i = display
|
891
|
+
var i = getSubstringIndex(display, query, ignoreAccents);
|
594
892
|
|
595
893
|
if (i === -1) {
|
596
894
|
return React__default.createElement("span", style('display'), display);
|
@@ -607,6 +905,7 @@ _defineProperty(Suggestion, "propTypes", {
|
|
607
905
|
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
608
906
|
query: PropTypes.string.isRequired,
|
609
907
|
index: PropTypes.number.isRequired,
|
908
|
+
ignoreAccents: PropTypes.bool,
|
610
909
|
suggestion: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
|
611
910
|
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
612
911
|
display: PropTypes.string
|
@@ -632,6 +931,10 @@ function LoadingIndicator(_ref) {
|
|
632
931
|
|
633
932
|
var LoadingIndicator$1 = substyle__default(LoadingIndicator);
|
634
933
|
|
934
|
+
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; }
|
935
|
+
|
936
|
+
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; }
|
937
|
+
|
635
938
|
var SuggestionsOverlay =
|
636
939
|
/*#__PURE__*/
|
637
940
|
function (_Component) {
|
@@ -714,12 +1017,14 @@ function (_Component) {
|
|
714
1017
|
var childIndex = queryInfo.childIndex,
|
715
1018
|
query = queryInfo.query;
|
716
1019
|
var renderSuggestion = React.Children.toArray(this.props.children)[childIndex].props.renderSuggestion;
|
1020
|
+
var ignoreAccents = this.props.ignoreAccents;
|
717
1021
|
return React__default.createElement(Suggestion$1, {
|
718
1022
|
style: this.props.style('item'),
|
719
1023
|
key: "".concat(childIndex, "-").concat(id),
|
720
1024
|
id: id,
|
721
1025
|
query: query,
|
722
1026
|
index: index,
|
1027
|
+
ignoreAccents: ignoreAccents,
|
723
1028
|
renderSuggestion: renderSuggestion,
|
724
1029
|
suggestion: result,
|
725
1030
|
focused: isFocused,
|
@@ -774,6 +1079,7 @@ _defineProperty(SuggestionsOverlay, "propTypes", {
|
|
774
1079
|
scrollFocusedIntoView: PropTypes.bool,
|
775
1080
|
isLoading: PropTypes.bool,
|
776
1081
|
onSelect: PropTypes.func,
|
1082
|
+
ignoreAccents: PropTypes.bool,
|
777
1083
|
children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired
|
778
1084
|
});
|
779
1085
|
|
@@ -786,7 +1092,7 @@ _defineProperty(SuggestionsOverlay, "defaultProps", {
|
|
786
1092
|
|
787
1093
|
var styled$2 = substyle.defaultStyle(function (_ref2) {
|
788
1094
|
var position = _ref2.position;
|
789
|
-
return _objectSpread({
|
1095
|
+
return _objectSpread$1({
|
790
1096
|
position: 'absolute',
|
791
1097
|
zIndex: 1,
|
792
1098
|
backgroundColor: 'white',
|
@@ -802,6 +1108,9 @@ var styled$2 = substyle.defaultStyle(function (_ref2) {
|
|
802
1108
|
});
|
803
1109
|
var SuggestionsOverlay$1 = styled$2(SuggestionsOverlay);
|
804
1110
|
|
1111
|
+
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; }
|
1112
|
+
|
1113
|
+
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; }
|
805
1114
|
var makeTriggerRegex = function makeTriggerRegex(trigger) {
|
806
1115
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
807
1116
|
|
@@ -816,7 +1125,7 @@ var makeTriggerRegex = function makeTriggerRegex(trigger) {
|
|
816
1125
|
}
|
817
1126
|
};
|
818
1127
|
|
819
|
-
var getDataProvider = function getDataProvider(data) {
|
1128
|
+
var getDataProvider = function getDataProvider(data, ignoreAccents) {
|
820
1129
|
if (data instanceof Array) {
|
821
1130
|
// if data is an array, create a function to query that
|
822
1131
|
return function (query, callback) {
|
@@ -825,7 +1134,7 @@ var getDataProvider = function getDataProvider(data) {
|
|
825
1134
|
for (var i = 0, l = data.length; i < l; ++i) {
|
826
1135
|
var display = data[i].display || data[i].id;
|
827
1136
|
|
828
|
-
if (display
|
1137
|
+
if (getSubstringIndex(display, query, ignoreAccents) >= 0) {
|
829
1138
|
results.push(data[i]);
|
830
1139
|
}
|
831
1140
|
}
|
@@ -854,6 +1163,8 @@ var propTypes = {
|
|
854
1163
|
singleLine: PropTypes.bool,
|
855
1164
|
allowSpaceInQuery: PropTypes.bool,
|
856
1165
|
EXPERIMENTAL_cutCopyPaste: PropTypes.bool,
|
1166
|
+
allowSuggestionsAboveCursor: PropTypes.bool,
|
1167
|
+
ignoreAccents: PropTypes.bool,
|
857
1168
|
value: PropTypes.string,
|
858
1169
|
onKeyDown: PropTypes.func,
|
859
1170
|
onSelect: PropTypes.func,
|
@@ -885,7 +1196,7 @@ function (_React$Component) {
|
|
885
1196
|
style = _this$props.style; // pass all props that we don't use through to the input control
|
886
1197
|
|
887
1198
|
var props = omit(_this.props, 'style', keys(propTypes));
|
888
|
-
return _objectSpread({}, props, style('input'), {
|
1199
|
+
return _objectSpread$2({}, props, {}, style('input'), {
|
889
1200
|
value: _this.getPlainText()
|
890
1201
|
}, !readOnly && !disabled && {
|
891
1202
|
onChange: _this.handleChange,
|
@@ -955,7 +1266,8 @@ function (_React$Component) {
|
|
955
1266
|
scrollFocusedIntoView: false
|
956
1267
|
});
|
957
1268
|
},
|
958
|
-
isLoading: _this.isLoading()
|
1269
|
+
isLoading: _this.isLoading(),
|
1270
|
+
ignoreAccents: _this.props.ignoreAccents
|
959
1271
|
}, _this.props.children);
|
960
1272
|
|
961
1273
|
if (_this.props.suggestionsPortalHost) {
|
@@ -1063,9 +1375,8 @@ function (_React$Component) {
|
|
1063
1375
|
var eventMock = {
|
1064
1376
|
target: {
|
1065
1377
|
value: newValue
|
1066
|
-
}
|
1067
|
-
|
1068
|
-
};
|
1378
|
+
}
|
1379
|
+
}; // this.props.onChange.call(this, eventMock, newValue, newPlainTextValue, mentions);
|
1069
1380
|
|
1070
1381
|
_this.executeOnChange(eventMock, newValue, newPlainTextValue, mentions);
|
1071
1382
|
});
|
@@ -1210,13 +1521,24 @@ function (_React$Component) {
|
|
1210
1521
|
|
1211
1522
|
_defineProperty(_assertThisInitialized(_this), "updateSuggestionsPosition", function () {
|
1212
1523
|
var caretPosition = _this.state.caretPosition;
|
1524
|
+
var _this$props5 = _this.props,
|
1525
|
+
suggestionsPortalHost = _this$props5.suggestionsPortalHost,
|
1526
|
+
allowSuggestionsAboveCursor = _this$props5.allowSuggestionsAboveCursor;
|
1213
1527
|
|
1214
1528
|
if (!caretPosition || !_this.suggestionsRef) {
|
1215
1529
|
return;
|
1216
1530
|
}
|
1217
1531
|
|
1218
1532
|
var suggestions = ReactDOM.findDOMNode(_this.suggestionsRef);
|
1219
|
-
var highlighter = ReactDOM.findDOMNode(_this.highlighterRef);
|
1533
|
+
var highlighter = ReactDOM.findDOMNode(_this.highlighterRef); // first get viewport-relative position (highlighter is offsetParent of caret):
|
1534
|
+
|
1535
|
+
var caretOffsetParentRect = highlighter.getBoundingClientRect();
|
1536
|
+
var caretHeight = getComputedStyleLengthProp(highlighter, 'font-size');
|
1537
|
+
var viewportRelative = {
|
1538
|
+
left: caretOffsetParentRect.left + caretPosition.left,
|
1539
|
+
top: caretOffsetParentRect.top + caretPosition.top + caretHeight
|
1540
|
+
};
|
1541
|
+
var viewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
|
1220
1542
|
|
1221
1543
|
if (!suggestions) {
|
1222
1544
|
return;
|
@@ -1224,23 +1546,16 @@ function (_React$Component) {
|
|
1224
1546
|
|
1225
1547
|
var position = {}; // if suggestions menu is in a portal, update position to be releative to its portal node
|
1226
1548
|
|
1227
|
-
if (
|
1228
|
-
// first get viewport-relative position (highlighter is offsetParent of caret):
|
1229
|
-
var caretOffsetParentRect = highlighter.getBoundingClientRect();
|
1230
|
-
var caretHeight = getComputedStyleLengthProp(highlighter, 'font-size');
|
1231
|
-
var viewportRelative = {
|
1232
|
-
left: caretOffsetParentRect.left + caretPosition.left,
|
1233
|
-
top: caretOffsetParentRect.top + caretPosition.top + caretHeight
|
1234
|
-
};
|
1549
|
+
if (suggestionsPortalHost) {
|
1235
1550
|
position.position = 'fixed';
|
1236
1551
|
var left = viewportRelative.left;
|
1237
|
-
|
1552
|
+
var top = viewportRelative.top; // absolute/fixed positioned elements are positioned according to their entire box including margins; so we remove margins here:
|
1238
1553
|
|
1239
1554
|
left -= getComputedStyleLengthProp(suggestions, 'margin-left');
|
1240
|
-
|
1555
|
+
top -= getComputedStyleLengthProp(suggestions, 'margin-top'); // take into account highlighter/textinput scrolling:
|
1241
1556
|
|
1242
1557
|
left -= highlighter.scrollLeft;
|
1243
|
-
|
1558
|
+
top -= highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window
|
1244
1559
|
|
1245
1560
|
var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
|
1246
1561
|
|
@@ -1248,18 +1563,36 @@ function (_React$Component) {
|
|
1248
1563
|
position.left = Math.max(0, viewportWidth - suggestions.offsetWidth);
|
1249
1564
|
} else {
|
1250
1565
|
position.left = left;
|
1566
|
+
} // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.
|
1567
|
+
// Move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height
|
1568
|
+
// is small enough to NOT cover up the caret
|
1569
|
+
|
1570
|
+
|
1571
|
+
if (allowSuggestionsAboveCursor && top + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < top - caretHeight) {
|
1572
|
+
position.top = Math.max(0, top - suggestions.offsetHeight - caretHeight);
|
1573
|
+
} else {
|
1574
|
+
position.top = top;
|
1251
1575
|
}
|
1252
1576
|
} else {
|
1253
|
-
var _left = caretPosition.left - highlighter.scrollLeft;
|
1577
|
+
var _left = caretPosition.left - highlighter.scrollLeft;
|
1578
|
+
|
1579
|
+
var _top = caretPosition.top - highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window
|
1254
1580
|
|
1255
1581
|
|
1256
1582
|
if (_left + suggestions.offsetWidth > _this.containerRef.offsetWidth) {
|
1257
1583
|
position.right = 0;
|
1258
1584
|
} else {
|
1259
1585
|
position.left = _left;
|
1260
|
-
}
|
1586
|
+
} // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.
|
1587
|
+
// move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height
|
1588
|
+
// is small enough to NOT cover up the caret
|
1589
|
+
|
1261
1590
|
|
1262
|
-
|
1591
|
+
if (allowSuggestionsAboveCursor && viewportRelative.top - highlighter.scrollTop + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < caretOffsetParentRect.top - caretHeight - highlighter.scrollTop) {
|
1592
|
+
position.top = _top - suggestions.offsetHeight - caretHeight;
|
1593
|
+
} else {
|
1594
|
+
position.top = _top;
|
1595
|
+
}
|
1263
1596
|
}
|
1264
1597
|
|
1265
1598
|
if (isEqual(position, _this.state.suggestionsPosition)) {
|
@@ -1359,8 +1692,11 @@ function (_React$Component) {
|
|
1359
1692
|
});
|
1360
1693
|
|
1361
1694
|
_defineProperty(_assertThisInitialized(_this), "queryData", function (query, childIndex, querySequenceStart, querySequenceEnd, plainTextValue) {
|
1362
|
-
var
|
1363
|
-
|
1695
|
+
var _this$props6 = _this.props,
|
1696
|
+
children = _this$props6.children,
|
1697
|
+
ignoreAccents = _this$props6.ignoreAccents;
|
1698
|
+
var mentionChild = React.Children.toArray(children)[childIndex];
|
1699
|
+
var provideData = getDataProvider(mentionChild.props.data, ignoreAccents);
|
1364
1700
|
var syncResult = provideData(query, _this.updateSuggestions.bind(null, _this._queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue));
|
1365
1701
|
|
1366
1702
|
if (syncResult instanceof Array) {
|
@@ -1373,7 +1709,7 @@ function (_React$Component) {
|
|
1373
1709
|
if (queryId !== _this._queryId) return; // save in property so that multiple sync state updates from different mentions sources
|
1374
1710
|
// won't overwrite each other
|
1375
1711
|
|
1376
|
-
_this.suggestions = _objectSpread({}, _this.suggestions, _defineProperty({}, childIndex, {
|
1712
|
+
_this.suggestions = _objectSpread$2({}, _this.suggestions, _defineProperty({}, childIndex, {
|
1377
1713
|
queryInfo: {
|
1378
1714
|
childIndex: childIndex,
|
1379
1715
|
query: query,
|
@@ -1538,22 +1874,26 @@ function (_React$Component) {
|
|
1538
1874
|
return;
|
1539
1875
|
}
|
1540
1876
|
|
1877
|
+
if (!this.supportsClipboardActions(event)) {
|
1878
|
+
return;
|
1879
|
+
}
|
1880
|
+
|
1541
1881
|
event.preventDefault();
|
1542
1882
|
var _this$state3 = this.state,
|
1543
1883
|
selectionStart = _this$state3.selectionStart,
|
1544
1884
|
selectionEnd = _this$state3.selectionEnd;
|
1545
|
-
var _this$
|
1546
|
-
value = _this$
|
1547
|
-
children = _this$
|
1885
|
+
var _this$props7 = this.props,
|
1886
|
+
value = _this$props7.value,
|
1887
|
+
children = _this$props7.children;
|
1548
1888
|
var config = readConfigFromChildren(children);
|
1549
1889
|
var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');
|
1550
1890
|
var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');
|
1551
1891
|
var pastedMentions = event.clipboardData.getData('text/react-mentions');
|
1552
1892
|
var pastedData = event.clipboardData.getData('text/plain');
|
1553
|
-
var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData);
|
1893
|
+
var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData).replace(/\r/g, '');
|
1554
1894
|
var newPlainTextValue = getPlainText(newValue, config);
|
1555
1895
|
var eventMock = {
|
1556
|
-
target: _objectSpread({}, event.target, {
|
1896
|
+
target: _objectSpread$2({}, event.target, {
|
1557
1897
|
value: newValue
|
1558
1898
|
})
|
1559
1899
|
};
|
@@ -1565,15 +1905,20 @@ function (_React$Component) {
|
|
1565
1905
|
var _this$state4 = this.state,
|
1566
1906
|
selectionStart = _this$state4.selectionStart,
|
1567
1907
|
selectionEnd = _this$state4.selectionEnd;
|
1568
|
-
var _this$
|
1569
|
-
children = _this$
|
1570
|
-
value = _this$
|
1908
|
+
var _this$props8 = this.props,
|
1909
|
+
children = _this$props8.children,
|
1910
|
+
value = _this$props8.value;
|
1571
1911
|
var config = readConfigFromChildren(children);
|
1572
1912
|
var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');
|
1573
1913
|
var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');
|
1574
1914
|
event.clipboardData.setData('text/plain', event.target.value.slice(selectionStart, selectionEnd));
|
1575
1915
|
event.clipboardData.setData('text/react-mentions', value.slice(markupStartIndex, markupEndIndex));
|
1576
1916
|
}
|
1917
|
+
}, {
|
1918
|
+
key: "supportsClipboardActions",
|
1919
|
+
value: function supportsClipboardActions(event) {
|
1920
|
+
return !!event.clipboardData;
|
1921
|
+
}
|
1577
1922
|
}, {
|
1578
1923
|
key: "handleCopy",
|
1579
1924
|
value: function handleCopy(event) {
|
@@ -1581,6 +1926,10 @@ function (_React$Component) {
|
|
1581
1926
|
return;
|
1582
1927
|
}
|
1583
1928
|
|
1929
|
+
if (!this.supportsClipboardActions(event)) {
|
1930
|
+
return;
|
1931
|
+
}
|
1932
|
+
|
1584
1933
|
event.preventDefault();
|
1585
1934
|
this.saveSelectionToClipboard(event);
|
1586
1935
|
}
|
@@ -1591,21 +1940,25 @@ function (_React$Component) {
|
|
1591
1940
|
return;
|
1592
1941
|
}
|
1593
1942
|
|
1943
|
+
if (!this.supportsClipboardActions(event)) {
|
1944
|
+
return;
|
1945
|
+
}
|
1946
|
+
|
1594
1947
|
event.preventDefault();
|
1595
1948
|
this.saveSelectionToClipboard(event);
|
1596
1949
|
var _this$state5 = this.state,
|
1597
1950
|
selectionStart = _this$state5.selectionStart,
|
1598
1951
|
selectionEnd = _this$state5.selectionEnd;
|
1599
|
-
var _this$
|
1600
|
-
children = _this$
|
1601
|
-
value = _this$
|
1952
|
+
var _this$props9 = this.props,
|
1953
|
+
children = _this$props9.children,
|
1954
|
+
value = _this$props9.value;
|
1602
1955
|
var config = readConfigFromChildren(children);
|
1603
1956
|
var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');
|
1604
1957
|
var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');
|
1605
1958
|
var newValue = [value.slice(0, markupStartIndex), value.slice(markupEndIndex)].join('');
|
1606
1959
|
var newPlainTextValue = getPlainText(newValue, config);
|
1607
1960
|
var eventMock = {
|
1608
|
-
target: _objectSpread({}, event.target, {
|
1961
|
+
target: _objectSpread$2({}, event.target, {
|
1609
1962
|
value: newPlainTextValue
|
1610
1963
|
})
|
1611
1964
|
};
|
@@ -1625,7 +1978,9 @@ function (_React$Component) {
|
|
1625
1978
|
_defineProperty(MentionsInput, "propTypes", propTypes);
|
1626
1979
|
|
1627
1980
|
_defineProperty(MentionsInput, "defaultProps", {
|
1981
|
+
ignoreAccents: false,
|
1628
1982
|
singleLine: false,
|
1983
|
+
allowSuggestionsAboveCursor: false,
|
1629
1984
|
onKeyDown: function onKeyDown() {
|
1630
1985
|
return null;
|
1631
1986
|
},
|
@@ -1650,14 +2005,16 @@ var styled$3 = substyle.defaultStyle({
|
|
1650
2005
|
display: 'block',
|
1651
2006
|
position: 'absolute',
|
1652
2007
|
top: 0,
|
2008
|
+
left: 0,
|
1653
2009
|
boxSizing: 'border-box',
|
1654
2010
|
backgroundColor: 'transparent',
|
1655
2011
|
width: 'inherit',
|
1656
2012
|
fontFamily: 'inherit',
|
1657
|
-
fontSize: 'inherit'
|
2013
|
+
fontSize: 'inherit',
|
2014
|
+
letterSpacing: 'inherit'
|
1658
2015
|
},
|
1659
2016
|
'&multiLine': {
|
1660
|
-
input: _objectSpread({
|
2017
|
+
input: _objectSpread$2({
|
1661
2018
|
width: '100%',
|
1662
2019
|
height: '100%',
|
1663
2020
|
bottom: 0,
|