@dangl/angular-material-shared 2.9.0-beta0040 → 2.9.0-beta0048

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.
Files changed (165) hide show
  1. package/package.json +1 -1
  2. package/tinymce-assets/icons/default/icons.js +9 -46
  3. package/tinymce-assets/icons/default/icons.min.js +1 -1
  4. package/tinymce-assets/models/dom/model.js +7239 -8193
  5. package/tinymce-assets/models/dom/model.min.js +1 -1
  6. package/tinymce-assets/plugins/accordion/plugin.js +879 -1174
  7. package/tinymce-assets/plugins/accordion/plugin.min.js +5 -1
  8. package/tinymce-assets/plugins/advlist/plugin.js +200 -412
  9. package/tinymce-assets/plugins/advlist/plugin.min.js +5 -1
  10. package/tinymce-assets/plugins/anchor/plugin.js +166 -189
  11. package/tinymce-assets/plugins/anchor/plugin.min.js +5 -1
  12. package/tinymce-assets/plugins/autolink/plugin.js +220 -310
  13. package/tinymce-assets/plugins/autolink/plugin.min.js +5 -1
  14. package/tinymce-assets/plugins/autoresize/plugin.js +149 -180
  15. package/tinymce-assets/plugins/autoresize/plugin.min.js +5 -1
  16. package/tinymce-assets/plugins/autosave/plugin.js +189 -208
  17. package/tinymce-assets/plugins/autosave/plugin.min.js +5 -1
  18. package/tinymce-assets/plugins/charmap/plugin.js +1566 -905
  19. package/tinymce-assets/plugins/charmap/plugin.min.js +5 -1
  20. package/tinymce-assets/plugins/code/plugin.js +61 -73
  21. package/tinymce-assets/plugins/code/plugin.min.js +4 -0
  22. package/tinymce-assets/plugins/codesample/plugin.js +2409 -3592
  23. package/tinymce-assets/plugins/codesample/plugin.min.js +12 -8
  24. package/tinymce-assets/plugins/directionality/plugin.js +304 -545
  25. package/tinymce-assets/plugins/directionality/plugin.min.js +5 -1
  26. package/tinymce-assets/plugins/emoticons/plugin.js +488 -702
  27. package/tinymce-assets/plugins/emoticons/plugin.min.js +5 -1
  28. package/tinymce-assets/plugins/fullscreen/plugin.js +1049 -1409
  29. package/tinymce-assets/plugins/fullscreen/plugin.min.js +5 -1
  30. package/tinymce-assets/plugins/help/js/i18n/keynav/ar.js +1 -4
  31. package/tinymce-assets/plugins/help/js/i18n/keynav/bg_BG.js +1 -4
  32. package/tinymce-assets/plugins/help/js/i18n/keynav/ca.js +1 -4
  33. package/tinymce-assets/plugins/help/js/i18n/keynav/cs.js +1 -4
  34. package/tinymce-assets/plugins/help/js/i18n/keynav/da.js +1 -4
  35. package/tinymce-assets/plugins/help/js/i18n/keynav/de.js +1 -4
  36. package/tinymce-assets/plugins/help/js/i18n/keynav/el.js +1 -4
  37. package/tinymce-assets/plugins/help/js/i18n/keynav/en.js +1 -4
  38. package/tinymce-assets/plugins/help/js/i18n/keynav/es.js +1 -4
  39. package/tinymce-assets/plugins/help/js/i18n/keynav/eu.js +1 -4
  40. package/tinymce-assets/plugins/help/js/i18n/keynav/fa.js +1 -4
  41. package/tinymce-assets/plugins/help/js/i18n/keynav/fi.js +1 -4
  42. package/tinymce-assets/plugins/help/js/i18n/keynav/fr_FR.js +1 -4
  43. package/tinymce-assets/plugins/help/js/i18n/keynav/he_IL.js +1 -4
  44. package/tinymce-assets/plugins/help/js/i18n/keynav/hi.js +1 -4
  45. package/tinymce-assets/plugins/help/js/i18n/keynav/hr.js +1 -4
  46. package/tinymce-assets/plugins/help/js/i18n/keynav/hu_HU.js +1 -4
  47. package/tinymce-assets/plugins/help/js/i18n/keynav/id.js +1 -4
  48. package/tinymce-assets/plugins/help/js/i18n/keynav/it.js +1 -4
  49. package/tinymce-assets/plugins/help/js/i18n/keynav/ja.js +1 -4
  50. package/tinymce-assets/plugins/help/js/i18n/keynav/kk.js +1 -4
  51. package/tinymce-assets/plugins/help/js/i18n/keynav/ko_KR.js +1 -4
  52. package/tinymce-assets/plugins/help/js/i18n/keynav/ms.js +1 -4
  53. package/tinymce-assets/plugins/help/js/i18n/keynav/nb_NO.js +1 -4
  54. package/tinymce-assets/plugins/help/js/i18n/keynav/nl.js +1 -4
  55. package/tinymce-assets/plugins/help/js/i18n/keynav/pl.js +1 -4
  56. package/tinymce-assets/plugins/help/js/i18n/keynav/pt_BR.js +1 -4
  57. package/tinymce-assets/plugins/help/js/i18n/keynav/pt_PT.js +1 -4
  58. package/tinymce-assets/plugins/help/js/i18n/keynav/ro.js +1 -4
  59. package/tinymce-assets/plugins/help/js/i18n/keynav/ru.js +1 -4
  60. package/tinymce-assets/plugins/help/js/i18n/keynav/sk.js +1 -4
  61. package/tinymce-assets/plugins/help/js/i18n/keynav/sl_SI.js +2 -5
  62. package/tinymce-assets/plugins/help/js/i18n/keynav/sv_SE.js +1 -4
  63. package/tinymce-assets/plugins/help/js/i18n/keynav/th_TH.js +1 -4
  64. package/tinymce-assets/plugins/help/js/i18n/keynav/tr.js +1 -4
  65. package/tinymce-assets/plugins/help/js/i18n/keynav/uk.js +1 -4
  66. package/tinymce-assets/plugins/help/js/i18n/keynav/vi.js +1 -4
  67. package/tinymce-assets/plugins/help/js/i18n/keynav/zh_CN.js +5 -8
  68. package/tinymce-assets/plugins/help/js/i18n/keynav/zh_TW.js +1 -4
  69. package/tinymce-assets/plugins/help/plugin.js +809 -739
  70. package/tinymce-assets/plugins/help/plugin.min.js +5 -1
  71. package/tinymce-assets/plugins/image/plugin.js +1291 -1475
  72. package/tinymce-assets/plugins/image/plugin.min.js +5 -1
  73. package/tinymce-assets/plugins/importcss/plugin.js +269 -328
  74. package/tinymce-assets/plugins/importcss/plugin.min.js +5 -1
  75. package/tinymce-assets/plugins/insertdatetime/plugin.js +141 -140
  76. package/tinymce-assets/plugins/insertdatetime/plugin.min.js +5 -1
  77. package/tinymce-assets/plugins/link/plugin.js +1084 -1419
  78. package/tinymce-assets/plugins/link/plugin.min.js +5 -1
  79. package/tinymce-assets/plugins/lists/plugin.js +1805 -2177
  80. package/tinymce-assets/plugins/lists/plugin.min.js +5 -1
  81. package/tinymce-assets/plugins/media/plugin.js +1047 -1305
  82. package/tinymce-assets/plugins/media/plugin.min.js +5 -1
  83. package/tinymce-assets/plugins/nonbreaking/plugin.js +88 -93
  84. package/tinymce-assets/plugins/nonbreaking/plugin.min.js +4 -0
  85. package/tinymce-assets/plugins/pagebreak/plugin.js +85 -91
  86. package/tinymce-assets/plugins/pagebreak/plugin.min.js +4 -0
  87. package/tinymce-assets/plugins/preview/plugin.js +74 -742
  88. package/tinymce-assets/plugins/preview/plugin.min.js +5 -1
  89. package/tinymce-assets/plugins/quickbars/plugin.js +375 -582
  90. package/tinymce-assets/plugins/quickbars/plugin.min.js +5 -1
  91. package/tinymce-assets/plugins/save/plugin.js +82 -100
  92. package/tinymce-assets/plugins/save/plugin.min.js +5 -1
  93. package/tinymce-assets/plugins/searchreplace/plugin.js +906 -1183
  94. package/tinymce-assets/plugins/searchreplace/plugin.min.js +5 -1
  95. package/tinymce-assets/plugins/table/plugin.js +3094 -3651
  96. package/tinymce-assets/plugins/table/plugin.min.js +5 -1
  97. package/tinymce-assets/plugins/template/index.js +7 -0
  98. package/tinymce-assets/plugins/template/plugin.js +567 -0
  99. package/tinymce-assets/plugins/template/plugin.min.js +5 -0
  100. package/tinymce-assets/plugins/visualblocks/plugin.js +63 -71
  101. package/tinymce-assets/plugins/visualblocks/plugin.min.js +5 -1
  102. package/tinymce-assets/plugins/visualchars/plugin.js +436 -685
  103. package/tinymce-assets/plugins/visualchars/plugin.min.js +5 -1
  104. package/tinymce-assets/plugins/wordcount/plugin.js +307 -382
  105. package/tinymce-assets/plugins/wordcount/plugin.min.js +5 -1
  106. package/tinymce-assets/skins/content/dark/content.css +4 -0
  107. package/tinymce-assets/skins/content/dark/content.js +6 -1
  108. package/tinymce-assets/skins/content/dark/content.min.css +4 -0
  109. package/tinymce-assets/skins/content/default/content.css +4 -0
  110. package/tinymce-assets/skins/content/default/content.js +6 -1
  111. package/tinymce-assets/skins/content/default/content.min.css +4 -0
  112. package/tinymce-assets/skins/content/document/content.css +4 -0
  113. package/tinymce-assets/skins/content/document/content.js +6 -1
  114. package/tinymce-assets/skins/content/document/content.min.css +4 -0
  115. package/tinymce-assets/skins/content/tinymce-5/content.css +4 -0
  116. package/tinymce-assets/skins/content/tinymce-5/content.js +6 -1
  117. package/tinymce-assets/skins/content/tinymce-5/content.min.css +4 -0
  118. package/tinymce-assets/skins/content/tinymce-5-dark/content.css +4 -0
  119. package/tinymce-assets/skins/content/tinymce-5-dark/content.js +6 -1
  120. package/tinymce-assets/skins/content/tinymce-5-dark/content.min.css +4 -0
  121. package/tinymce-assets/skins/content/writer/content.css +4 -0
  122. package/tinymce-assets/skins/content/writer/content.js +6 -1
  123. package/tinymce-assets/skins/content/writer/content.min.css +4 -0
  124. package/tinymce-assets/skins/ui/oxide/content.css +53 -148
  125. package/tinymce-assets/skins/ui/oxide/content.inline.css +53 -148
  126. package/tinymce-assets/skins/ui/oxide/content.inline.js +6 -1
  127. package/tinymce-assets/skins/ui/oxide/content.inline.min.css +5 -1
  128. package/tinymce-assets/skins/ui/oxide/content.js +6 -1
  129. package/tinymce-assets/skins/ui/oxide/content.min.css +5 -1
  130. package/tinymce-assets/skins/ui/oxide/skin.css +207 -1585
  131. package/tinymce-assets/skins/ui/oxide/skin.js +2 -1
  132. package/tinymce-assets/skins/ui/oxide/skin.min.css +1 -1
  133. package/tinymce-assets/skins/ui/oxide/skin.shadowdom.js +2 -1
  134. package/tinymce-assets/skins/ui/oxide-dark/content.css +46 -148
  135. package/tinymce-assets/skins/ui/oxide-dark/content.inline.css +53 -148
  136. package/tinymce-assets/skins/ui/oxide-dark/content.inline.js +6 -1
  137. package/tinymce-assets/skins/ui/oxide-dark/content.inline.min.css +5 -1
  138. package/tinymce-assets/skins/ui/oxide-dark/content.js +6 -1
  139. package/tinymce-assets/skins/ui/oxide-dark/content.min.css +5 -1
  140. package/tinymce-assets/skins/ui/oxide-dark/skin.css +219 -1597
  141. package/tinymce-assets/skins/ui/oxide-dark/skin.js +2 -1
  142. package/tinymce-assets/skins/ui/oxide-dark/skin.min.css +1 -1
  143. package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.js +2 -1
  144. package/tinymce-assets/skins/ui/tinymce-5/content.css +53 -148
  145. package/tinymce-assets/skins/ui/tinymce-5/content.inline.css +53 -148
  146. package/tinymce-assets/skins/ui/tinymce-5/content.inline.js +6 -1
  147. package/tinymce-assets/skins/ui/tinymce-5/content.inline.min.css +5 -1
  148. package/tinymce-assets/skins/ui/tinymce-5/content.js +6 -1
  149. package/tinymce-assets/skins/ui/tinymce-5/content.min.css +5 -1
  150. package/tinymce-assets/skins/ui/tinymce-5/skin.css +194 -1597
  151. package/tinymce-assets/skins/ui/tinymce-5/skin.js +2 -1
  152. package/tinymce-assets/skins/ui/tinymce-5/skin.min.css +1 -1
  153. package/tinymce-assets/skins/ui/tinymce-5/skin.shadowdom.js +2 -1
  154. package/tinymce-assets/skins/ui/tinymce-5-dark/content.css +46 -148
  155. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.css +53 -148
  156. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.js +6 -1
  157. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.min.css +5 -1
  158. package/tinymce-assets/skins/ui/tinymce-5-dark/content.js +6 -1
  159. package/tinymce-assets/skins/ui/tinymce-5-dark/content.min.css +5 -1
  160. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.css +202 -1605
  161. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.js +2 -1
  162. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.min.css +1 -1
  163. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.shadowdom.js +2 -1
  164. package/tinymce-assets/themes/silver/theme.js +28439 -32466
  165. package/tinymce-assets/themes/silver/theme.min.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * TinyMCE version 7.9.3 (2026-05-19)
2
+ * TinyMCE version 6.8.6 (TBD)
3
3
  */
4
4
 
5
5
  (function () {
@@ -7,104 +7,69 @@
7
7
 
8
8
  var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');
9
9
 
10
- /* eslint-disable @typescript-eslint/no-wrapper-object-types */
11
- const eq = (t) => (a) => t === a;
10
+ const eq = t => a => t === a;
12
11
  const isNull = eq(null);
13
12
 
14
- const identity = (x) => {
15
- return x;
13
+ const identity = x => {
14
+ return x;
16
15
  };
17
16
 
18
17
  const map = (xs, f) => {
19
- // pre-allocating array size when it's guaranteed to be known
20
- // http://jsperf.com/push-allocated-vs-dynamic/22
21
- const len = xs.length;
22
- const r = new Array(len);
23
- for (let i = 0; i < len; i++) {
24
- const x = xs[i];
25
- r[i] = f(x, i);
26
- }
27
- return r;
28
- };
29
-
30
- // Run a function fn after rate ms. If another invocation occurs
31
- // during the time it is waiting, ignore it completely.
32
- const first = (fn, rate) => {
33
- let timer = null;
34
- const cancel = () => {
35
- if (!isNull(timer)) {
36
- clearTimeout(timer);
37
- timer = null;
38
- }
39
- };
40
- const throttle = (...args) => {
41
- if (isNull(timer)) {
42
- timer = setTimeout(() => {
43
- timer = null;
44
- fn.apply(null, args);
45
- }, rate);
46
- }
47
- };
48
- return {
49
- cancel,
50
- throttle
51
- };
18
+ const len = xs.length;
19
+ const r = new Array(len);
20
+ for (let i = 0; i < len; i++) {
21
+ const x = xs[i];
22
+ r[i] = f(x, i);
23
+ }
24
+ return r;
52
25
  };
53
26
 
54
- const removeZwsp$1 = (s) => s.replace(/\uFEFF/g, '');
55
-
56
- /* eslint-disable max-len */
57
- const punctuationStr = `[~№|!-*+-\\/:;?@\\[-\`{}\u00A1\u00AB\u00B7\u00BB\u00BF;\u00B7\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1361-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u3008\u3009\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30\u2E31\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]`;
27
+ const punctuationStr = `[~\u2116|!-*+-\\/:;?@\\[-\`{}\u00A1\u00AB\u00B7\u00BB\u00BF;\u00B7\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1361-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u3008\u3009\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30\u2E31\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]`;
58
28
  const regExps = {
59
- aletter: '[A-Za-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F3\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\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\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\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-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\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-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1A00-\u1A16\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BC0-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\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\u2160-\u2188\u24B6-\u24E9\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u303B\u303C\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790\uA791\uA7A0-\uA7A9\uA7FA-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\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\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]',
60
- midnumlet: `[-'\\.\u2018\u2019\u2024\uFE52\uFF07\uFF0E]`,
61
- midletter: '[:\u00B7\u00B7\u05F4\u2027\uFE13\uFE55\uFF1A]',
62
- midnum: '[±+*/,;;\u0589\u060C\u060D\u066C\u07F8\u2044\uFE10\uFE14\uFE50\uFE54\uFF0C\uFF1B]',
63
- numeric: '[0-9\u0660-\u0669\u066B\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9]',
64
- cr: '\\r',
65
- lf: '\\n',
66
- newline: '[\u000B\u000C\u0085\u2028\u2029]',
67
- extend: '[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0900-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C01-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C82\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D02\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B6-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAA\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2\u1DC0-\u1DE6\u1DFC-\u1DFF\u200C\u200D\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA67C\uA67D\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE26\uFF9E\uFF9F]',
68
- format: '[\u00AD\u0600-\u0603\u06DD\u070F\u17B4\u17B5\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\uFEFF\uFFF9-\uFFFB]',
69
- katakana: '[\u3031-\u3035\u309B\u309C\u30A0-\u30FA\u30FC-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\uFF66-\uFF9D]',
70
- extendnumlet: '[=_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F\u2200-\u22FF\u003c\u003e]',
71
- punctuation: punctuationStr
29
+ aletter: '[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05F3\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\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\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\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-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\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-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\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\u2160-\u2188\u24B6-\u24E9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\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\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]',
30
+ midnumlet: `[-'\\.\u2018\u2019\u2024\uFE52\uFF07\uFF0E]`,
31
+ midletter: '[:\xB7\xB7\u05F4\u2027\uFE13\uFE55\uFF1A]',
32
+ midnum: '[\xB1+*/,;;\u0589\u060C\u060D\u066C\u07F8\u2044\uFE10\uFE14\uFE50\uFE54\uFF0C\uFF1B]',
33
+ numeric: '[0-9\u0660-\u0669\u066B\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]',
34
+ cr: '\\r',
35
+ lf: '\\n',
36
+ newline: '[\x0B\f\x85\u2028\u2029]',
37
+ extend: '[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\uA672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]',
38
+ format: '[\xAD\u0600-\u0603\u06DD\u070F\u17b4\u17b5\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\uFEFF\uFFF9-\uFFFB]',
39
+ katakana: '[\u3031-\u3035\u309B\u309C\u30A0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32D0-\u32FE\u3300-\u3357\uff66-\uff9d]',
40
+ extendnumlet: '[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22FF<>]',
41
+ punctuation: punctuationStr
72
42
  };
73
- /* eslint-enable max-len */
74
43
  const characterIndices = {
75
- ALETTER: 0,
76
- MIDNUMLET: 1,
77
- MIDLETTER: 2,
78
- MIDNUM: 3,
79
- NUMERIC: 4,
80
- CR: 5,
81
- LF: 6,
82
- NEWLINE: 7,
83
- EXTEND: 8,
84
- FORMAT: 9,
85
- KATAKANA: 10,
86
- EXTENDNUMLET: 11,
87
- AT: 12,
88
- OTHER: 13
44
+ ALETTER: 0,
45
+ MIDNUMLET: 1,
46
+ MIDLETTER: 2,
47
+ MIDNUM: 3,
48
+ NUMERIC: 4,
49
+ CR: 5,
50
+ LF: 6,
51
+ NEWLINE: 7,
52
+ EXTEND: 8,
53
+ FORMAT: 9,
54
+ KATAKANA: 10,
55
+ EXTENDNUMLET: 11,
56
+ AT: 12,
57
+ OTHER: 13
89
58
  };
90
- // RegExp objects generated from code point data. Each regex matches a single
91
- // character against a set of Unicode code points. The index of each item in
92
- // this array must match its corresponding code point constant value defined
93
- // above.
94
59
  const SETS$1 = [
95
- new RegExp(regExps.aletter),
96
- new RegExp(regExps.midnumlet),
97
- new RegExp(regExps.midletter),
98
- new RegExp(regExps.midnum),
99
- new RegExp(regExps.numeric),
100
- new RegExp(regExps.cr),
101
- new RegExp(regExps.lf),
102
- new RegExp(regExps.newline),
103
- new RegExp(regExps.extend),
104
- new RegExp(regExps.format),
105
- new RegExp(regExps.katakana),
106
- new RegExp(regExps.extendnumlet),
107
- new RegExp('@')
60
+ new RegExp(regExps.aletter),
61
+ new RegExp(regExps.midnumlet),
62
+ new RegExp(regExps.midletter),
63
+ new RegExp(regExps.midnum),
64
+ new RegExp(regExps.numeric),
65
+ new RegExp(regExps.cr),
66
+ new RegExp(regExps.lf),
67
+ new RegExp(regExps.newline),
68
+ new RegExp(regExps.extend),
69
+ new RegExp(regExps.format),
70
+ new RegExp(regExps.katakana),
71
+ new RegExp(regExps.extendnumlet),
72
+ new RegExp('@')
108
73
  ];
109
74
  const EMPTY_STRING$1 = '';
110
75
  const PUNCTUATION$1 = new RegExp('^' + regExps.punctuation + '$');
@@ -112,369 +77,329 @@
112
77
 
113
78
  const SETS = SETS$1;
114
79
  const OTHER = characterIndices.OTHER;
115
- const getType = (char) => {
116
- let type = OTHER;
117
- const setsLength = SETS.length;
118
- for (let j = 0; j < setsLength; ++j) {
119
- const set = SETS[j];
120
- if (set && set.test(char)) {
121
- type = j;
122
- break;
123
- }
80
+ const getType = char => {
81
+ let type = OTHER;
82
+ const setsLength = SETS.length;
83
+ for (let j = 0; j < setsLength; ++j) {
84
+ const set = SETS[j];
85
+ if (set && set.test(char)) {
86
+ type = j;
87
+ break;
124
88
  }
125
- return type;
89
+ }
90
+ return type;
126
91
  };
127
- const memoize = (func) => {
128
- const cache = {};
129
- return (char) => {
130
- if (cache[char]) {
131
- return cache[char];
132
- }
133
- else {
134
- const result = func(char);
135
- cache[char] = result;
136
- return result;
137
- }
138
- };
92
+ const memoize = func => {
93
+ const cache = {};
94
+ return char => {
95
+ if (cache[char]) {
96
+ return cache[char];
97
+ } else {
98
+ const result = func(char);
99
+ cache[char] = result;
100
+ return result;
101
+ }
102
+ };
139
103
  };
140
- const classify = (characters) => {
141
- const memoized = memoize(getType);
142
- return map(characters, memoized);
104
+ const classify = characters => {
105
+ const memoized = memoize(getType);
106
+ return map(characters, memoized);
143
107
  };
144
108
 
145
109
  const isWordBoundary = (map, index) => {
146
- const type = map[index];
147
- const nextType = map[index + 1];
148
- if (index < 0 || (index > map.length - 1 && index !== 0)) {
149
- return false;
150
- }
151
- // WB5. Don't break between most letters.
152
- if (type === characterIndices.ALETTER && nextType === characterIndices.ALETTER) {
153
- return false;
154
- }
155
- const nextNextType = map[index + 2];
156
- // WB6. Don't break letters across certain punctuation.
157
- if (type === characterIndices.ALETTER &&
158
- (nextType === characterIndices.MIDLETTER || nextType === characterIndices.MIDNUMLET || nextType === characterIndices.AT) &&
159
- nextNextType === characterIndices.ALETTER) {
160
- return false;
161
- }
162
- const prevType = map[index - 1];
163
- // WB7. Don't break letters across certain punctuation.
164
- if ((type === characterIndices.MIDLETTER || type === characterIndices.MIDNUMLET || nextType === characterIndices.AT) &&
165
- nextType === characterIndices.ALETTER &&
166
- prevType === characterIndices.ALETTER) {
167
- return false;
168
- }
169
- // WB8/WB9/WB10. Don't break inside sequences of digits or digits
170
- // adjacent to letters.
171
- if ((type === characterIndices.NUMERIC || type === characterIndices.ALETTER) &&
172
- (nextType === characterIndices.NUMERIC || nextType === characterIndices.ALETTER)) {
173
- return false;
174
- }
175
- // WB11. Don't break inside numeric sequences like "3.2" or
176
- // "3,456.789".
177
- if ((type === characterIndices.MIDNUM || type === characterIndices.MIDNUMLET) &&
178
- nextType === characterIndices.NUMERIC &&
179
- prevType === characterIndices.NUMERIC) {
180
- return false;
181
- }
182
- // WB12. Don't break inside numeric sequences like "3.2" or
183
- // "3,456.789".
184
- if (type === characterIndices.NUMERIC &&
185
- (nextType === characterIndices.MIDNUM || nextType === characterIndices.MIDNUMLET) &&
186
- nextNextType === characterIndices.NUMERIC) {
187
- return false;
188
- }
189
- // WB4. Ignore format and extend characters.
190
- if ((type === characterIndices.EXTEND || type === characterIndices.FORMAT) &&
191
- (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC || nextType === characterIndices.KATAKANA ||
192
- nextType === characterIndices.EXTEND || nextType === characterIndices.FORMAT)
193
- ||
194
- (nextType === characterIndices.EXTEND ||
195
- // TINY-9654: Only ignore format characters if they do not precede a word boundary. Since some format characters overlap with whitespace characters (ex: \ufeff) and
196
- // our word extraction logic excludes whitespace characters, if a whitespace-overlapping format character that precedes a word boundary is not split on, whichever word
197
- // it is a part of will not be added to the list of extracted words, causing inaccuracies.
198
- nextType === characterIndices.FORMAT && (nextNextType === characterIndices.ALETTER || nextNextType === characterIndices.NUMERIC || nextNextType === characterIndices.KATAKANA || nextNextType === characterIndices.EXTEND || nextNextType === characterIndices.FORMAT))
199
- && (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA || type === characterIndices.EXTEND || type === characterIndices.FORMAT)) {
200
- return false;
201
- }
202
- // WB3. Don't break inside CRLF.
203
- if (type === characterIndices.CR && nextType === characterIndices.LF) {
204
- return false;
205
- }
206
- // WB3a. Break before newlines (including CR and LF).
207
- if (type === characterIndices.NEWLINE || type === characterIndices.CR || type === characterIndices.LF) {
208
- return true;
209
- }
210
- // WB3b. Break after newlines (including CR and LF).
211
- if (nextType === characterIndices.NEWLINE || nextType === characterIndices.CR || nextType === characterIndices.LF) {
212
- return true;
213
- }
214
- // WB13. Don't break between Katakana characters.
215
- if (type === characterIndices.KATAKANA && nextType === characterIndices.KATAKANA) {
216
- return false;
217
- }
218
- // WB13a. Don't break from extenders.
219
- if (nextType === characterIndices.EXTENDNUMLET &&
220
- (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA ||
221
- type === characterIndices.EXTENDNUMLET)) {
222
- return false;
223
- }
224
- // WB13b. Don't break from extenders.
225
- if (type === characterIndices.EXTENDNUMLET &&
226
- (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC ||
227
- nextType === characterIndices.KATAKANA)) {
228
- return false;
229
- }
230
- if (type === characterIndices.AT) {
231
- return false;
232
- }
233
- // Break after any character not covered by the rules above.
110
+ const type = map[index];
111
+ const nextType = map[index + 1];
112
+ if (index < 0 || index > map.length - 1 && index !== 0) {
113
+ return false;
114
+ }
115
+ if (type === characterIndices.ALETTER && nextType === characterIndices.ALETTER) {
116
+ return false;
117
+ }
118
+ const nextNextType = map[index + 2];
119
+ if (type === characterIndices.ALETTER && (nextType === characterIndices.MIDLETTER || nextType === characterIndices.MIDNUMLET || nextType === characterIndices.AT) && nextNextType === characterIndices.ALETTER) {
120
+ return false;
121
+ }
122
+ const prevType = map[index - 1];
123
+ if ((type === characterIndices.MIDLETTER || type === characterIndices.MIDNUMLET || nextType === characterIndices.AT) && nextType === characterIndices.ALETTER && prevType === characterIndices.ALETTER) {
124
+ return false;
125
+ }
126
+ if ((type === characterIndices.NUMERIC || type === characterIndices.ALETTER) && (nextType === characterIndices.NUMERIC || nextType === characterIndices.ALETTER)) {
127
+ return false;
128
+ }
129
+ if ((type === characterIndices.MIDNUM || type === characterIndices.MIDNUMLET) && nextType === characterIndices.NUMERIC && prevType === characterIndices.NUMERIC) {
130
+ return false;
131
+ }
132
+ if (type === characterIndices.NUMERIC && (nextType === characterIndices.MIDNUM || nextType === characterIndices.MIDNUMLET) && nextNextType === characterIndices.NUMERIC) {
133
+ return false;
134
+ }
135
+ if ((type === characterIndices.EXTEND || type === characterIndices.FORMAT) && (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC || nextType === characterIndices.KATAKANA || nextType === characterIndices.EXTEND || nextType === characterIndices.FORMAT) || (nextType === characterIndices.EXTEND || nextType === characterIndices.FORMAT && (nextNextType === characterIndices.ALETTER || nextNextType === characterIndices.NUMERIC || nextNextType === characterIndices.KATAKANA || nextNextType === characterIndices.EXTEND || nextNextType === characterIndices.FORMAT)) && (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA || type === characterIndices.EXTEND || type === characterIndices.FORMAT)) {
136
+ return false;
137
+ }
138
+ if (type === characterIndices.CR && nextType === characterIndices.LF) {
139
+ return false;
140
+ }
141
+ if (type === characterIndices.NEWLINE || type === characterIndices.CR || type === characterIndices.LF) {
142
+ return true;
143
+ }
144
+ if (nextType === characterIndices.NEWLINE || nextType === characterIndices.CR || nextType === characterIndices.LF) {
234
145
  return true;
146
+ }
147
+ if (type === characterIndices.KATAKANA && nextType === characterIndices.KATAKANA) {
148
+ return false;
149
+ }
150
+ if (nextType === characterIndices.EXTENDNUMLET && (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA || type === characterIndices.EXTENDNUMLET)) {
151
+ return false;
152
+ }
153
+ if (type === characterIndices.EXTENDNUMLET && (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC || nextType === characterIndices.KATAKANA)) {
154
+ return false;
155
+ }
156
+ if (type === characterIndices.AT) {
157
+ return false;
158
+ }
159
+ return true;
235
160
  };
236
161
 
237
162
  const EMPTY_STRING = EMPTY_STRING$1;
238
163
  const WHITESPACE = WHITESPACE$1;
239
164
  const PUNCTUATION = PUNCTUATION$1;
240
- const isProtocol = (str) => str === 'http' || str === 'https';
165
+ const isProtocol = str => str === 'http' || str === 'https';
241
166
  const findWordEnd = (characters, startIndex) => {
242
- let i;
243
- for (i = startIndex; i < characters.length; i++) {
244
- if (WHITESPACE.test(characters[i])) {
245
- break;
246
- }
167
+ let i;
168
+ for (i = startIndex; i < characters.length; i++) {
169
+ if (WHITESPACE.test(characters[i])) {
170
+ break;
247
171
  }
248
- return i;
172
+ }
173
+ return i;
249
174
  };
250
175
  const findUrlEnd = (characters, startIndex) => {
251
- const endIndex = findWordEnd(characters, startIndex + 1);
252
- const peakedWord = characters.slice(startIndex + 1, endIndex).join(EMPTY_STRING);
253
- return peakedWord.substr(0, 3) === '://' ? endIndex : startIndex;
176
+ const endIndex = findWordEnd(characters, startIndex + 1);
177
+ const peakedWord = characters.slice(startIndex + 1, endIndex).join(EMPTY_STRING);
178
+ return peakedWord.substr(0, 3) === '://' ? endIndex : startIndex;
254
179
  };
255
180
  const findWordsWithIndices = (chars, sChars, characterMap, options) => {
256
- const words = [];
257
- const indices = [];
258
- let word = [];
259
- // Loop through each character in the classification map and determine whether
260
- // it precedes a word boundary, building an array of distinct words as we go.
261
- for (let i = 0; i < characterMap.length; ++i) {
262
- // Append this character to the current word.
263
- word.push(chars[i]);
264
- // If there's a word boundary between the current character and the next character,
265
- // append the current word to the words array and start building a new word.
266
- if (isWordBoundary(characterMap, i)) {
267
- const ch = sChars[i];
268
- if ((options.includeWhitespace || !WHITESPACE.test(ch)) &&
269
- (options.includePunctuation || !PUNCTUATION.test(ch))) {
270
- const startOfWord = i - word.length + 1;
271
- const endOfWord = i + 1;
272
- const str = sChars.slice(startOfWord, endOfWord).join(EMPTY_STRING);
273
- if (isProtocol(str)) {
274
- const endOfUrl = findUrlEnd(sChars, i);
275
- const url = chars.slice(endOfWord, endOfUrl);
276
- Array.prototype.push.apply(word, url);
277
- i = endOfUrl;
278
- }
279
- // If the word is an abbreviation, include the next character if it's a period.
280
- if (sChars[i + 1] === '.' && /^([a-zA-Z]\.)+$/.test(str + '.')) {
281
- word.push(chars[i + 1]);
282
- indices.push({
283
- start: startOfWord,
284
- end: endOfWord + 1
285
- });
286
- }
287
- else {
288
- indices.push({
289
- start: startOfWord,
290
- end: endOfWord
291
- });
292
- }
293
- words.push(word);
294
- }
295
- word = [];
181
+ const words = [];
182
+ const indices = [];
183
+ let word = [];
184
+ for (let i = 0; i < characterMap.length; ++i) {
185
+ word.push(chars[i]);
186
+ if (isWordBoundary(characterMap, i)) {
187
+ const ch = sChars[i];
188
+ if ((options.includeWhitespace || !WHITESPACE.test(ch)) && (options.includePunctuation || !PUNCTUATION.test(ch))) {
189
+ const startOfWord = i - word.length + 1;
190
+ const endOfWord = i + 1;
191
+ const str = sChars.slice(startOfWord, endOfWord).join(EMPTY_STRING);
192
+ if (isProtocol(str)) {
193
+ const endOfUrl = findUrlEnd(sChars, i);
194
+ const url = chars.slice(endOfWord, endOfUrl);
195
+ Array.prototype.push.apply(word, url);
196
+ i = endOfUrl;
296
197
  }
198
+ words.push(word);
199
+ indices.push({
200
+ start: startOfWord,
201
+ end: endOfWord
202
+ });
203
+ }
204
+ word = [];
297
205
  }
298
- return { words, indices };
206
+ }
207
+ return {
208
+ words,
209
+ indices
210
+ };
299
211
  };
300
212
  const getDefaultOptions = () => ({
301
- includeWhitespace: false,
302
- includePunctuation: false
213
+ includeWhitespace: false,
214
+ includePunctuation: false
303
215
  });
304
216
  const getWordsWithIndices = (chars, extract, options) => {
305
- options = {
306
- ...getDefaultOptions(),
307
- ...options
308
- };
309
- const extractedChars = map(chars, extract);
310
- const characterMap = classify(extractedChars);
311
- return findWordsWithIndices(chars, extractedChars, characterMap, options);
217
+ options = {
218
+ ...getDefaultOptions(),
219
+ ...options
220
+ };
221
+ const extractedChars = map(chars, extract);
222
+ const characterMap = classify(extractedChars);
223
+ return findWordsWithIndices(chars, extractedChars, characterMap, options);
312
224
  };
313
225
  const getWords$1 = (chars, extract, options) => getWordsWithIndices(chars, extract, options).words;
314
226
 
315
227
  const getWords = getWords$1;
316
228
 
229
+ const removeZwsp$1 = s => s.replace(/\uFEFF/g, '');
230
+
317
231
  var global$1 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
318
232
 
319
233
  const getText = (node, schema) => {
320
- const blockElements = schema.getBlockElements();
321
- const voidElements = schema.getVoidElements();
322
- const isNewline = (node) => blockElements[node.nodeName] || voidElements[node.nodeName];
323
- const textBlocks = [];
324
- let txt = '';
325
- const treeWalker = new global$1(node, node);
326
- let tempNode;
327
- while ((tempNode = treeWalker.next())) {
328
- if (tempNode.nodeType === 3) {
329
- txt += removeZwsp$1(tempNode.data);
330
- }
331
- else if (isNewline(tempNode) && txt.length) {
332
- textBlocks.push(txt);
333
- txt = '';
334
- }
234
+ const blockElements = schema.getBlockElements();
235
+ const voidElements = schema.getVoidElements();
236
+ const isNewline = node => blockElements[node.nodeName] || voidElements[node.nodeName];
237
+ const textBlocks = [];
238
+ let txt = '';
239
+ const treeWalker = new global$1(node, node);
240
+ let tempNode;
241
+ while (tempNode = treeWalker.next()) {
242
+ if (tempNode.nodeType === 3) {
243
+ txt += removeZwsp$1(tempNode.data);
244
+ } else if (isNewline(tempNode) && txt.length) {
245
+ textBlocks.push(txt);
246
+ txt = '';
335
247
  }
336
- if (txt.length) {
337
- textBlocks.push(txt);
338
- }
339
- return textBlocks;
248
+ }
249
+ if (txt.length) {
250
+ textBlocks.push(txt);
251
+ }
252
+ return textBlocks;
340
253
  };
341
254
 
342
- const removeZwsp = (text) => text.replace(/\u200B/g, '');
343
- const strLen = (str) => str.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, '_').length;
255
+ const removeZwsp = text => text.replace(/\u200B/g, '');
256
+ const strLen = str => str.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, '_').length;
344
257
  const countWords = (node, schema) => {
345
- // TODO - TINY-9708: See if TINY-7484 fix can be replaced by adding \u200B to the "format" character class as per Unicode standard
346
- // TINY-7484: The grapheme word boundary logic used by Polaris states a ZWSP (\u200B) should be treated as
347
- // a word boundary, however word counting normally does not consider it as anything so we strip it out.
348
- const text = removeZwsp(getText(node, schema).join('\n'));
349
- return getWords(text.split(''), identity).length;
258
+ const text = removeZwsp(getText(node, schema).join('\n'));
259
+ return getWords(text.split(''), identity).length;
350
260
  };
351
261
  const countCharacters = (node, schema) => {
352
- const text = getText(node, schema).join('');
353
- return strLen(text);
262
+ const text = getText(node, schema).join('');
263
+ return strLen(text);
354
264
  };
355
265
  const countCharactersWithoutSpaces = (node, schema) => {
356
- const text = getText(node, schema).join('').replace(/\s/g, '');
357
- return strLen(text);
266
+ const text = getText(node, schema).join('').replace(/\s/g, '');
267
+ return strLen(text);
358
268
  };
359
269
 
360
270
  const createBodyCounter = (editor, count) => () => count(editor.getBody(), editor.schema);
361
271
  const createSelectionCounter = (editor, count) => () => count(editor.selection.getRng().cloneContents(), editor.schema);
362
- const createBodyWordCounter = (editor) => createBodyCounter(editor, countWords);
363
- const get = (editor) => ({
364
- body: {
365
- getWordCount: createBodyWordCounter(editor),
366
- getCharacterCount: createBodyCounter(editor, countCharacters),
367
- getCharacterCountWithoutSpaces: createBodyCounter(editor, countCharactersWithoutSpaces)
368
- },
369
- selection: {
370
- getWordCount: createSelectionCounter(editor, countWords),
371
- getCharacterCount: createSelectionCounter(editor, countCharacters),
372
- getCharacterCountWithoutSpaces: createSelectionCounter(editor, countCharactersWithoutSpaces)
373
- },
374
- getCount: createBodyWordCounter(editor)
272
+ const createBodyWordCounter = editor => createBodyCounter(editor, countWords);
273
+ const get = editor => ({
274
+ body: {
275
+ getWordCount: createBodyWordCounter(editor),
276
+ getCharacterCount: createBodyCounter(editor, countCharacters),
277
+ getCharacterCountWithoutSpaces: createBodyCounter(editor, countCharactersWithoutSpaces)
278
+ },
279
+ selection: {
280
+ getWordCount: createSelectionCounter(editor, countWords),
281
+ getCharacterCount: createSelectionCounter(editor, countCharacters),
282
+ getCharacterCountWithoutSpaces: createSelectionCounter(editor, countCharactersWithoutSpaces)
283
+ },
284
+ getCount: createBodyWordCounter(editor)
375
285
  });
376
286
 
377
287
  const open = (editor, api) => {
378
- editor.windowManager.open({
379
- title: 'Word Count',
380
- body: {
381
- type: 'panel',
382
- items: [
383
- {
384
- type: 'table',
385
- header: ['Count', 'Document', 'Selection'],
386
- cells: [
387
- [
388
- 'Words',
389
- String(api.body.getWordCount()),
390
- String(api.selection.getWordCount())
391
- ],
392
- [
393
- 'Characters (no spaces)',
394
- String(api.body.getCharacterCountWithoutSpaces()),
395
- String(api.selection.getCharacterCountWithoutSpaces())
396
- ],
397
- [
398
- 'Characters',
399
- String(api.body.getCharacterCount()),
400
- String(api.selection.getCharacterCount())
401
- ]
402
- ]
403
- }
288
+ editor.windowManager.open({
289
+ title: 'Word Count',
290
+ body: {
291
+ type: 'panel',
292
+ items: [{
293
+ type: 'table',
294
+ header: [
295
+ 'Count',
296
+ 'Document',
297
+ 'Selection'
298
+ ],
299
+ cells: [
300
+ [
301
+ 'Words',
302
+ String(api.body.getWordCount()),
303
+ String(api.selection.getWordCount())
304
+ ],
305
+ [
306
+ 'Characters (no spaces)',
307
+ String(api.body.getCharacterCountWithoutSpaces()),
308
+ String(api.selection.getCharacterCountWithoutSpaces())
309
+ ],
310
+ [
311
+ 'Characters',
312
+ String(api.body.getCharacterCount()),
313
+ String(api.selection.getCharacterCount())
404
314
  ]
405
- },
406
- buttons: [
407
- {
408
- type: 'cancel',
409
- name: 'close',
410
- text: 'Close',
411
- primary: true
412
- }
413
- ]
414
- });
315
+ ]
316
+ }]
317
+ },
318
+ buttons: [{
319
+ type: 'cancel',
320
+ name: 'close',
321
+ text: 'Close',
322
+ primary: true
323
+ }]
324
+ });
415
325
  };
416
326
 
417
327
  const register$1 = (editor, api) => {
418
- editor.addCommand('mceWordCount', () => open(editor, api));
328
+ editor.addCommand('mceWordCount', () => open(editor, api));
329
+ };
330
+
331
+ const first = (fn, rate) => {
332
+ let timer = null;
333
+ const cancel = () => {
334
+ if (!isNull(timer)) {
335
+ clearTimeout(timer);
336
+ timer = null;
337
+ }
338
+ };
339
+ const throttle = (...args) => {
340
+ if (isNull(timer)) {
341
+ timer = setTimeout(() => {
342
+ timer = null;
343
+ fn.apply(null, args);
344
+ }, rate);
345
+ }
346
+ };
347
+ return {
348
+ cancel,
349
+ throttle
350
+ };
419
351
  };
420
352
 
421
353
  var global = tinymce.util.Tools.resolve('tinymce.util.Delay');
422
354
 
423
355
  const fireWordCountUpdate = (editor, api) => {
424
- editor.dispatch('wordCountUpdate', {
425
- wordCount: {
426
- words: api.body.getWordCount(),
427
- characters: api.body.getCharacterCount(),
428
- charactersWithoutSpaces: api.body.getCharacterCountWithoutSpaces()
429
- }
430
- });
356
+ editor.dispatch('wordCountUpdate', {
357
+ wordCount: {
358
+ words: api.body.getWordCount(),
359
+ characters: api.body.getCharacterCount(),
360
+ charactersWithoutSpaces: api.body.getCharacterCountWithoutSpaces()
361
+ }
362
+ });
431
363
  };
432
364
 
433
365
  const updateCount = (editor, api) => {
434
- fireWordCountUpdate(editor, api);
366
+ fireWordCountUpdate(editor, api);
435
367
  };
436
368
  const setup = (editor, api, delay) => {
437
- const debouncedUpdate = first(() => updateCount(editor, api), delay);
438
- editor.on('init', () => {
439
- updateCount(editor, api);
440
- global.setEditorTimeout(editor, () => {
441
- editor.on('SetContent BeforeAddUndo Undo Redo ViewUpdate keyup', debouncedUpdate.throttle);
442
- }, 0);
443
- editor.on('remove', debouncedUpdate.cancel);
444
- });
369
+ const debouncedUpdate = first(() => updateCount(editor, api), delay);
370
+ editor.on('init', () => {
371
+ updateCount(editor, api);
372
+ global.setEditorTimeout(editor, () => {
373
+ editor.on('SetContent BeforeAddUndo Undo Redo ViewUpdate keyup', debouncedUpdate.throttle);
374
+ }, 0);
375
+ editor.on('remove', debouncedUpdate.cancel);
376
+ });
445
377
  };
446
378
 
447
- const register = (editor) => {
448
- const onAction = () => editor.execCommand('mceWordCount');
449
- editor.ui.registry.addButton('wordcount', {
450
- tooltip: 'Word count',
451
- icon: 'character-count',
452
- onAction,
453
- context: 'any'
454
- });
455
- editor.ui.registry.addMenuItem('wordcount', {
456
- text: 'Word count',
457
- icon: 'character-count',
458
- onAction,
459
- context: 'any'
460
- });
379
+ const register = editor => {
380
+ const onAction = () => editor.execCommand('mceWordCount');
381
+ editor.ui.registry.addButton('wordcount', {
382
+ tooltip: 'Word count',
383
+ icon: 'character-count',
384
+ onAction
385
+ });
386
+ editor.ui.registry.addMenuItem('wordcount', {
387
+ text: 'Word count',
388
+ icon: 'character-count',
389
+ onAction
390
+ });
461
391
  };
462
392
 
463
393
  var Plugin = (delay = 300) => {
464
- global$2.add('wordcount', (editor) => {
465
- const api = get(editor);
466
- register$1(editor, api);
467
- register(editor);
468
- setup(editor, api, delay);
469
- return api;
470
- });
394
+ global$2.add('wordcount', editor => {
395
+ const api = get(editor);
396
+ register$1(editor, api);
397
+ register(editor);
398
+ setup(editor, api, delay);
399
+ return api;
400
+ });
471
401
  };
472
402
 
473
403
  Plugin();
474
- /** *****
475
- * DO NOT EXPORT ANYTHING
476
- *
477
- * IF YOU DO ROLLUP WILL LEAVE A GLOBAL ON THE PAGE
478
- *******/
479
404
 
480
405
  })();