suneditor 2.44.11 → 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 +97 -52
  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 +44 -13
  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"
@@ -556,14 +565,17 @@ const util = {
556
565
  */
557
566
  copyTagAttributes: function (originEl, copyEl, blacklist) {
558
567
  if (copyEl.style.cssText) {
559
- originEl.style.cssText += copyEl.style.cssText;
568
+ const copyStyles = copyEl.style;
569
+ for (let i = 0, len = copyStyles.length; i < len; i++) {
570
+ originEl.style[copyStyles[i]] = copyStyles[copyStyles[i]];
571
+ }
560
572
  }
561
573
 
562
574
  const attrs = copyEl.attributes;
563
575
  for (let i = 0, len = attrs.length, name; i < len; i++) {
564
576
  name = attrs[i].name.toLowerCase();
565
577
  if ((blacklist && blacklist.indexOf(name) > -1) || !attrs[i].value) originEl.removeAttribute(name);
566
- else originEl.setAttribute(attrs[i].name, attrs[i].value);
578
+ else if (name !== 'style') originEl.setAttribute(attrs[i].name, attrs[i].value);
567
579
  }
568
580
  },
569
581
 
@@ -1446,8 +1458,10 @@ const util = {
1446
1458
  }
1447
1459
 
1448
1460
  const bp = baseNode.parentNode;
1449
- let index = 0, newEl, children, temp;
1461
+ let index = 0;
1462
+ let suffixIndex = 1;
1450
1463
  let next = true;
1464
+ let newEl, children, temp;
1451
1465
  if (!depth || depth < 0) depth = 0;
1452
1466
 
1453
1467
  if (baseNode.nodeType === 3) {
@@ -1458,6 +1472,16 @@ const util = {
1458
1472
  if (this.onlyZeroWidthSpace(after)) after.data = this.zeroWidthSpace;
1459
1473
  }
1460
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
+ }
1461
1485
  if (!baseNode.previousSibling) {
1462
1486
  if (this.getElementDepth(baseNode) === depth) next = false;
1463
1487
  } else {
@@ -1465,9 +1489,10 @@ const util = {
1465
1489
  }
1466
1490
  }
1467
1491
 
1492
+ if (baseNode.nodeType === 1) suffixIndex = 0;
1468
1493
  let depthEl = baseNode;
1469
1494
  while (this.getElementDepth(depthEl) > depth) {
1470
- index = this.getPositionIndex(depthEl) + 1;
1495
+ index = this.getPositionIndex(depthEl) + suffixIndex;
1471
1496
  depthEl = depthEl.parentNode;
1472
1497
 
1473
1498
  temp = newEl;
@@ -1732,6 +1757,15 @@ const util = {
1732
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+/, ' '); });
1733
1758
  },
1734
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
+
1735
1769
  /**
1736
1770
  * @description Sort a element array by depth of element.
1737
1771
  * @param {Array} array Array object
@@ -1794,6 +1828,7 @@ const util = {
1794
1828
  },
1795
1829
 
1796
1830
  /**
1831
+ * @deprecated
1797
1832
  * @description Check disallowed tags
1798
1833
  * @param {Node} element Element to check
1799
1834
  * @returns {Boolean}
@@ -1828,10 +1863,10 @@ const util = {
1828
1863
  * @param {Element} documentFragment Document fragment "DOCUMENT_FRAGMENT_NODE" (nodeType === 11)
1829
1864
  * @param {RegExp} htmlCheckWhitelistRegExp Editor tags whitelist (core._htmlCheckWhitelistRegExp)
1830
1865
  * @param {RegExp} htmlCheckBlacklistRegExp Editor tags blacklist (core._htmlCheckBlacklistRegExp)
1831
- * @param {Boolean} lowLevelCheck Row level check
1866
+ * @param {Function} classNameFilter Class name filter function
1832
1867
  * @private
1833
1868
  */
1834
- _consistencyCheckOfHTML: function (documentFragment, htmlCheckWhitelistRegExp, htmlCheckBlacklistRegExp, lowLevelCheck) {
1869
+ _consistencyCheckOfHTML: function (documentFragment, htmlCheckWhitelistRegExp, htmlCheckBlacklistRegExp, classNameFilter) {
1835
1870
  /**
1836
1871
  * It is can use ".children(util.getListChildren)" to exclude text nodes, but "documentFragment.children" is not supported in IE.
1837
1872
  * So check the node type and exclude the text no (current.nodeType !== 1)
@@ -1874,15 +1909,15 @@ const util = {
1874
1909
  }
1875
1910
 
1876
1911
  // class filter
1877
- if (lowLevelCheck && nrtag && current.className) {
1878
- 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();
1879
1914
  if (className) current.className = className;
1880
1915
  else current.removeAttribute('class');
1881
1916
  }
1882
1917
 
1883
1918
  const result = current.parentNode !== documentFragment && nrtag &&
1884
1919
  ((this.isListCell(current) && !this.isList(current.parentNode)) ||
1885
- (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)));
1886
1921
 
1887
1922
  return result;
1888
1923
  }.bind(this));
@@ -1949,10 +1984,6 @@ const util = {
1949
1984
  }
1950
1985
  },
1951
1986
 
1952
- _classNameFilter: function (v) {
1953
- return /(^__se__|^se-|katex)/.test(v) ? v : '';
1954
- },
1955
-
1956
1987
  _setDefaultOptionStyle: function (options, defaultStyle) {
1957
1988
  let optionStyle = '';
1958
1989
  if (options.height) optionStyle += 'height:' + options.height + ';';