suneditor 2.44.12 → 2.45.0

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 (130) hide show
  1. package/LICENSE.txt +20 -20
  2. package/README.md +1588 -1585
  3. package/dist/suneditor.min.js +2 -2
  4. package/package.json +71 -71
  5. package/src/assets/css/suneditor-contents.css +561 -561
  6. package/src/assets/css/suneditor.css +0 -0
  7. package/src/assets/defaultIcons.js +103 -103
  8. package/src/lang/Lang.d.ts +143 -143
  9. package/src/lang/ckb.d.ts +4 -4
  10. package/src/lang/ckb.js +187 -187
  11. package/src/lang/da.d.ts +4 -4
  12. package/src/lang/da.js +191 -191
  13. package/src/lang/de.d.ts +4 -4
  14. package/src/lang/de.js +188 -188
  15. package/src/lang/en.d.ts +4 -4
  16. package/src/lang/en.js +187 -187
  17. package/src/lang/es.d.ts +4 -4
  18. package/src/lang/es.js +187 -187
  19. package/src/lang/fr.d.ts +4 -4
  20. package/src/lang/fr.js +188 -188
  21. package/src/lang/he.d.ts +4 -4
  22. package/src/lang/he.js +188 -188
  23. package/src/lang/index.d.ts +22 -22
  24. package/src/lang/index.js +25 -25
  25. package/src/lang/it.d.ts +4 -4
  26. package/src/lang/it.js +188 -188
  27. package/src/lang/ja.d.ts +4 -4
  28. package/src/lang/ja.js +187 -187
  29. package/src/lang/ko.d.ts +4 -4
  30. package/src/lang/ko.js +187 -187
  31. package/src/lang/lv.d.ts +4 -4
  32. package/src/lang/lv.js +187 -187
  33. package/src/lang/nl.d.ts +4 -4
  34. package/src/lang/nl.js +187 -187
  35. package/src/lang/pl.d.ts +4 -4
  36. package/src/lang/pl.js +187 -187
  37. package/src/lang/pt_br.d.ts +4 -4
  38. package/src/lang/pt_br.js +189 -189
  39. package/src/lang/ro.d.ts +4 -4
  40. package/src/lang/ro.js +187 -187
  41. package/src/lang/ru.d.ts +4 -4
  42. package/src/lang/ru.js +187 -187
  43. package/src/lang/se.d.ts +4 -4
  44. package/src/lang/se.js +191 -191
  45. package/src/lang/ua.d.ts +5 -5
  46. package/src/lang/ua.js +188 -188
  47. package/src/lang/ur.d.ts +4 -4
  48. package/src/lang/ur.js +187 -187
  49. package/src/lang/zh_cn.d.ts +4 -4
  50. package/src/lang/zh_cn.js +187 -187
  51. package/src/lib/constructor.js +3 -1
  52. package/src/lib/context.d.ts +42 -42
  53. package/src/lib/context.js +0 -0
  54. package/src/lib/core.d.ts +1101 -1101
  55. package/src/lib/core.js +96 -51
  56. package/src/lib/history.d.ts +48 -48
  57. package/src/lib/history.js +218 -218
  58. package/src/lib/util.d.ts +677 -677
  59. package/src/lib/util.js +39 -11
  60. package/src/options.d.ts +608 -608
  61. package/src/plugins/CommandPlugin.d.ts +7 -7
  62. package/src/plugins/DialogPlugin.d.ts +19 -19
  63. package/src/plugins/FileBrowserPlugin.d.ts +29 -29
  64. package/src/plugins/Module.d.ts +14 -14
  65. package/src/plugins/Plugin.d.ts +41 -41
  66. package/src/plugins/SubmenuPlugin.d.ts +7 -7
  67. package/src/plugins/command/blockquote.d.ts +4 -4
  68. package/src/plugins/command/blockquote.js +46 -46
  69. package/src/plugins/dialog/audio.d.ts +4 -4
  70. package/src/plugins/dialog/audio.js +556 -556
  71. package/src/plugins/dialog/image.d.ts +4 -4
  72. package/src/plugins/dialog/image.js +1115 -1115
  73. package/src/plugins/dialog/link.d.ts +4 -4
  74. package/src/plugins/dialog/link.js +223 -223
  75. package/src/plugins/dialog/math.d.ts +4 -4
  76. package/src/plugins/dialog/math.js +295 -295
  77. package/src/plugins/dialog/mention.d.ts +5 -5
  78. package/src/plugins/dialog/mention.js +242 -242
  79. package/src/plugins/dialog/video.d.ts +4 -4
  80. package/src/plugins/dialog/video.js +977 -977
  81. package/src/plugins/fileBrowser/imageGallery.d.ts +4 -4
  82. package/src/plugins/fileBrowser/imageGallery.js +63 -63
  83. package/src/plugins/index.d.ts +79 -79
  84. package/src/plugins/index.js +32 -32
  85. package/src/plugins/modules/_anchor.js +461 -461
  86. package/src/plugins/modules/_colorPicker.d.ts +59 -59
  87. package/src/plugins/modules/_colorPicker.js +0 -0
  88. package/src/plugins/modules/_notice.d.ts +20 -20
  89. package/src/plugins/modules/_notice.js +72 -72
  90. package/src/plugins/modules/_selectMenu.js +118 -118
  91. package/src/plugins/modules/component.d.ts +24 -24
  92. package/src/plugins/modules/component.js +80 -80
  93. package/src/plugins/modules/dialog.d.ts +27 -27
  94. package/src/plugins/modules/dialog.js +174 -174
  95. package/src/plugins/modules/fileBrowser.d.ts +41 -41
  96. package/src/plugins/modules/fileBrowser.js +373 -373
  97. package/src/plugins/modules/fileManager.d.ts +66 -66
  98. package/src/plugins/modules/fileManager.js +325 -325
  99. package/src/plugins/modules/index.d.ts +10 -10
  100. package/src/plugins/modules/index.js +8 -8
  101. package/src/plugins/modules/resizing.d.ts +153 -153
  102. package/src/plugins/modules/resizing.js +895 -895
  103. package/src/plugins/submenu/align.d.ts +4 -4
  104. package/src/plugins/submenu/align.js +160 -160
  105. package/src/plugins/submenu/font.d.ts +4 -4
  106. package/src/plugins/submenu/font.js +120 -120
  107. package/src/plugins/submenu/fontColor.d.ts +4 -4
  108. package/src/plugins/submenu/fontColor.js +0 -0
  109. package/src/plugins/submenu/fontSize.d.ts +4 -4
  110. package/src/plugins/submenu/fontSize.js +112 -112
  111. package/src/plugins/submenu/formatBlock.d.ts +4 -4
  112. package/src/plugins/submenu/formatBlock.js +273 -273
  113. package/src/plugins/submenu/hiliteColor.d.ts +4 -4
  114. package/src/plugins/submenu/hiliteColor.js +0 -0
  115. package/src/plugins/submenu/horizontalRule.d.ts +4 -4
  116. package/src/plugins/submenu/horizontalRule.js +98 -98
  117. package/src/plugins/submenu/lineHeight.d.ts +4 -4
  118. package/src/plugins/submenu/lineHeight.js +104 -104
  119. package/src/plugins/submenu/list.d.ts +4 -4
  120. package/src/plugins/submenu/list.js +456 -456
  121. package/src/plugins/submenu/paragraphStyle.d.ts +4 -4
  122. package/src/plugins/submenu/paragraphStyle.js +135 -135
  123. package/src/plugins/submenu/table.d.ts +4 -4
  124. package/src/plugins/submenu/template.d.ts +4 -4
  125. package/src/plugins/submenu/template.js +71 -71
  126. package/src/plugins/submenu/textStyle.d.ts +4 -4
  127. package/src/plugins/submenu/textStyle.js +167 -167
  128. package/src/suneditor.d.ts +9 -9
  129. package/src/suneditor.js +75 -75
  130. package/src/suneditor_build.js +17 -17
package/src/lib/util.js CHANGED
@@ -365,6 +365,15 @@ const util = {
365
365
  return element && element.nodeType !== 3 && /^(strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code|summary)$/i.test(element.nodeName);
366
366
  },
367
367
 
368
+ /**
369
+ * @description It is judged whether it is the input element (INPUT, TEXTAREA)
370
+ * @param {Node} element The node to check
371
+ * @returns
372
+ */
373
+ isInputElement: function (element) {
374
+ return element && element.nodeType === 1 && /^(INPUT|TEXTAREA)$/i.test(element.nodeName);
375
+ },
376
+
368
377
  /**
369
378
  * @description It is judged whether it is the format element (P, DIV, H[1-6], PRE, LI | class="__se__format__replace_xxx")
370
379
  * Format element also contain "free format Element"
@@ -1449,8 +1458,10 @@ const util = {
1449
1458
  }
1450
1459
 
1451
1460
  const bp = baseNode.parentNode;
1452
- let index = 0, newEl, children, temp;
1461
+ let index = 0;
1462
+ let suffixIndex = 1;
1453
1463
  let next = true;
1464
+ let newEl, children, temp;
1454
1465
  if (!depth || depth < 0) depth = 0;
1455
1466
 
1456
1467
  if (baseNode.nodeType === 3) {
@@ -1461,6 +1472,16 @@ const util = {
1461
1472
  if (this.onlyZeroWidthSpace(after)) after.data = this.zeroWidthSpace;
1462
1473
  }
1463
1474
  } else if (baseNode.nodeType === 1) {
1475
+ if (offset === 0) {
1476
+ while (baseNode.firstChild) {
1477
+ baseNode = baseNode.firstChild;
1478
+ }
1479
+ if (baseNode.nodeType === 3) {
1480
+ const after = this.createTextNode(this.zeroWidthSpace);
1481
+ baseNode.parentNode.insertBefore(after, baseNode);
1482
+ baseNode = after;
1483
+ }
1484
+ }
1464
1485
  if (!baseNode.previousSibling) {
1465
1486
  if (this.getElementDepth(baseNode) === depth) next = false;
1466
1487
  } else {
@@ -1468,9 +1489,10 @@ const util = {
1468
1489
  }
1469
1490
  }
1470
1491
 
1492
+ if (baseNode.nodeType === 1) suffixIndex = 0;
1471
1493
  let depthEl = baseNode;
1472
1494
  while (this.getElementDepth(depthEl) > depth) {
1473
- index = this.getPositionIndex(depthEl) + 1;
1495
+ index = this.getPositionIndex(depthEl) + suffixIndex;
1474
1496
  depthEl = depthEl.parentNode;
1475
1497
 
1476
1498
  temp = newEl;
@@ -1735,6 +1757,15 @@ const util = {
1735
1757
  return html.trim().replace(/<\/?(?!strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code|summary)[^>^<]+>\s+(?=<)/ig, function (m) { return m.replace(/\n/g, '').replace(/\s+/, ' '); });
1736
1758
  },
1737
1759
 
1760
+ /**
1761
+ * @description HTML code compression
1762
+ * @param {string} html HTML string
1763
+ * @returns {string} HTML string
1764
+ */
1765
+ htmlCompress: function (html) {
1766
+ return html.replace(/\n/g, '').replace(/(>)(?:\s+)(<)/g, '$1$2');
1767
+ },
1768
+
1738
1769
  /**
1739
1770
  * @description Sort a element array by depth of element.
1740
1771
  * @param {Array} array Array object
@@ -1797,6 +1828,7 @@ const util = {
1797
1828
  },
1798
1829
 
1799
1830
  /**
1831
+ * @deprecated
1800
1832
  * @description Check disallowed tags
1801
1833
  * @param {Node} element Element to check
1802
1834
  * @returns {Boolean}
@@ -1831,10 +1863,10 @@ const util = {
1831
1863
  * @param {Element} documentFragment Document fragment "DOCUMENT_FRAGMENT_NODE" (nodeType === 11)
1832
1864
  * @param {RegExp} htmlCheckWhitelistRegExp Editor tags whitelist (core._htmlCheckWhitelistRegExp)
1833
1865
  * @param {RegExp} htmlCheckBlacklistRegExp Editor tags blacklist (core._htmlCheckBlacklistRegExp)
1834
- * @param {Boolean} lowLevelCheck Row level check
1866
+ * @param {Function} classNameFilter Class name filter function
1835
1867
  * @private
1836
1868
  */
1837
- _consistencyCheckOfHTML: function (documentFragment, htmlCheckWhitelistRegExp, htmlCheckBlacklistRegExp, lowLevelCheck) {
1869
+ _consistencyCheckOfHTML: function (documentFragment, htmlCheckWhitelistRegExp, htmlCheckBlacklistRegExp, classNameFilter) {
1838
1870
  /**
1839
1871
  * It is can use ".children(util.getListChildren)" to exclude text nodes, but "documentFragment.children" is not supported in IE.
1840
1872
  * So check the node type and exclude the text no (current.nodeType !== 1)
@@ -1877,15 +1909,15 @@ const util = {
1877
1909
  }
1878
1910
 
1879
1911
  // class filter
1880
- if (lowLevelCheck && nrtag && current.className) {
1881
- const className = new this._w.Array(current.classList).map(this._classNameFilter).join(' ').trim();
1912
+ if (nrtag && current.className) {
1913
+ const className = new this._w.Array(current.classList).map(classNameFilter).join(' ').trim();
1882
1914
  if (className) current.className = className;
1883
1915
  else current.removeAttribute('class');
1884
1916
  }
1885
1917
 
1886
1918
  const result = current.parentNode !== documentFragment && nrtag &&
1887
1919
  ((this.isListCell(current) && !this.isList(current.parentNode)) ||
1888
- (lowLevelCheck && (this.isFormatElement(current) || this.isComponent(current)) && !this.isRangeFormatElement(current.parentNode) && !this.getParentElement(current, this.isComponent)));
1920
+ ((this.isFormatElement(current) || this.isComponent(current)) && !this.isRangeFormatElement(current.parentNode) && !this.getParentElement(current, this.isComponent)));
1889
1921
 
1890
1922
  return result;
1891
1923
  }.bind(this));
@@ -1952,10 +1984,6 @@ const util = {
1952
1984
  }
1953
1985
  },
1954
1986
 
1955
- _classNameFilter: function (v) {
1956
- return /(^__se__|^se-|katex)/.test(v) ? v : '';
1957
- },
1958
-
1959
1987
  _setDefaultOptionStyle: function (options, defaultStyle) {
1960
1988
  let optionStyle = '';
1961
1989
  if (options.height) optionStyle += 'height:' + options.height + ';';