suneditor 2.44.2 → 2.44.4

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 (131) hide show
  1. package/LICENSE.txt +20 -20
  2. package/README.md +1585 -1585
  3. package/dist/css/suneditor.min.css +1 -1
  4. package/dist/suneditor.min.js +2 -2
  5. package/package.json +71 -71
  6. package/src/assets/css/suneditor-contents.css +556 -556
  7. package/src/assets/css/suneditor.css +0 -0
  8. package/src/assets/defaultIcons.js +103 -103
  9. package/src/lang/Lang.d.ts +143 -143
  10. package/src/lang/ckb.d.ts +4 -4
  11. package/src/lang/ckb.js +187 -187
  12. package/src/lang/da.d.ts +4 -4
  13. package/src/lang/da.js +191 -191
  14. package/src/lang/de.d.ts +4 -4
  15. package/src/lang/de.js +187 -187
  16. package/src/lang/en.d.ts +4 -4
  17. package/src/lang/en.js +187 -187
  18. package/src/lang/es.d.ts +4 -4
  19. package/src/lang/es.js +187 -187
  20. package/src/lang/fr.d.ts +4 -4
  21. package/src/lang/fr.js +188 -188
  22. package/src/lang/he.d.ts +4 -4
  23. package/src/lang/he.js +188 -188
  24. package/src/lang/index.d.ts +22 -21
  25. package/src/lang/index.js +25 -24
  26. package/src/lang/it.d.ts +4 -4
  27. package/src/lang/it.js +188 -188
  28. package/src/lang/ja.d.ts +4 -4
  29. package/src/lang/ja.js +187 -187
  30. package/src/lang/ko.d.ts +4 -4
  31. package/src/lang/ko.js +187 -187
  32. package/src/lang/lv.d.ts +4 -4
  33. package/src/lang/lv.js +187 -187
  34. package/src/lang/nl.d.ts +4 -4
  35. package/src/lang/nl.js +187 -187
  36. package/src/lang/pl.d.ts +4 -4
  37. package/src/lang/pl.js +187 -187
  38. package/src/lang/pt_br.d.ts +4 -4
  39. package/src/lang/pt_br.js +189 -189
  40. package/src/lang/ro.d.ts +4 -4
  41. package/src/lang/ro.js +187 -187
  42. package/src/lang/ru.d.ts +4 -4
  43. package/src/lang/ru.js +187 -187
  44. package/src/lang/se.d.ts +4 -4
  45. package/src/lang/se.js +191 -191
  46. package/src/lang/ua.d.ts +5 -5
  47. package/src/lang/ua.js +188 -188
  48. package/src/lang/ur.d.ts +5 -0
  49. package/src/lang/ur.js +188 -0
  50. package/src/lang/zh_cn.d.ts +4 -4
  51. package/src/lang/zh_cn.js +187 -187
  52. package/src/lib/constructor.js +1 -2
  53. package/src/lib/context.d.ts +42 -42
  54. package/src/lib/context.js +0 -0
  55. package/src/lib/core.d.ts +1101 -1101
  56. package/src/lib/core.js +220 -99
  57. package/src/lib/history.d.ts +48 -48
  58. package/src/lib/history.js +218 -218
  59. package/src/lib/util.d.ts +677 -677
  60. package/src/lib/util.js +38 -12
  61. package/src/options.d.ts +608 -608
  62. package/src/plugins/CommandPlugin.d.ts +7 -7
  63. package/src/plugins/DialogPlugin.d.ts +19 -19
  64. package/src/plugins/FileBrowserPlugin.d.ts +29 -29
  65. package/src/plugins/Module.d.ts +14 -14
  66. package/src/plugins/Plugin.d.ts +41 -41
  67. package/src/plugins/SubmenuPlugin.d.ts +7 -7
  68. package/src/plugins/command/blockquote.d.ts +4 -4
  69. package/src/plugins/command/blockquote.js +46 -46
  70. package/src/plugins/dialog/audio.d.ts +4 -4
  71. package/src/plugins/dialog/audio.js +556 -554
  72. package/src/plugins/dialog/image.d.ts +4 -4
  73. package/src/plugins/dialog/image.js +1122 -1107
  74. package/src/plugins/dialog/link.d.ts +4 -4
  75. package/src/plugins/dialog/link.js +223 -223
  76. package/src/plugins/dialog/math.d.ts +4 -4
  77. package/src/plugins/dialog/math.js +294 -294
  78. package/src/plugins/dialog/mention.d.ts +5 -5
  79. package/src/plugins/dialog/mention.js +242 -242
  80. package/src/plugins/dialog/video.d.ts +4 -4
  81. package/src/plugins/dialog/video.js +983 -981
  82. package/src/plugins/fileBrowser/imageGallery.d.ts +4 -4
  83. package/src/plugins/fileBrowser/imageGallery.js +63 -63
  84. package/src/plugins/index.d.ts +79 -79
  85. package/src/plugins/index.js +32 -32
  86. package/src/plugins/modules/_anchor.js +461 -462
  87. package/src/plugins/modules/_colorPicker.d.ts +59 -59
  88. package/src/plugins/modules/_colorPicker.js +0 -0
  89. package/src/plugins/modules/_notice.d.ts +20 -20
  90. package/src/plugins/modules/_notice.js +72 -72
  91. package/src/plugins/modules/_selectMenu.js +118 -118
  92. package/src/plugins/modules/component.d.ts +24 -24
  93. package/src/plugins/modules/component.js +82 -82
  94. package/src/plugins/modules/dialog.d.ts +27 -27
  95. package/src/plugins/modules/dialog.js +174 -174
  96. package/src/plugins/modules/fileBrowser.d.ts +41 -41
  97. package/src/plugins/modules/fileBrowser.js +373 -373
  98. package/src/plugins/modules/fileManager.d.ts +66 -66
  99. package/src/plugins/modules/fileManager.js +325 -324
  100. package/src/plugins/modules/index.d.ts +10 -10
  101. package/src/plugins/modules/index.js +8 -8
  102. package/src/plugins/modules/resizing.d.ts +153 -153
  103. package/src/plugins/modules/resizing.js +895 -895
  104. package/src/plugins/submenu/align.d.ts +4 -4
  105. package/src/plugins/submenu/align.js +160 -160
  106. package/src/plugins/submenu/font.d.ts +4 -4
  107. package/src/plugins/submenu/font.js +120 -120
  108. package/src/plugins/submenu/fontColor.d.ts +4 -4
  109. package/src/plugins/submenu/fontColor.js +0 -0
  110. package/src/plugins/submenu/fontSize.d.ts +4 -4
  111. package/src/plugins/submenu/fontSize.js +112 -112
  112. package/src/plugins/submenu/formatBlock.d.ts +4 -4
  113. package/src/plugins/submenu/formatBlock.js +273 -273
  114. package/src/plugins/submenu/hiliteColor.d.ts +4 -4
  115. package/src/plugins/submenu/hiliteColor.js +0 -0
  116. package/src/plugins/submenu/horizontalRule.d.ts +4 -4
  117. package/src/plugins/submenu/horizontalRule.js +98 -98
  118. package/src/plugins/submenu/lineHeight.d.ts +4 -4
  119. package/src/plugins/submenu/lineHeight.js +104 -104
  120. package/src/plugins/submenu/list.d.ts +4 -4
  121. package/src/plugins/submenu/list.js +456 -455
  122. package/src/plugins/submenu/paragraphStyle.d.ts +4 -4
  123. package/src/plugins/submenu/paragraphStyle.js +135 -135
  124. package/src/plugins/submenu/table.d.ts +4 -4
  125. package/src/plugins/submenu/template.d.ts +4 -4
  126. package/src/plugins/submenu/template.js +71 -71
  127. package/src/plugins/submenu/textStyle.d.ts +4 -4
  128. package/src/plugins/submenu/textStyle.js +167 -167
  129. package/src/suneditor.d.ts +9 -9
  130. package/src/suneditor.js +75 -75
  131. package/src/suneditor_build.js +17 -17
package/src/lib/util.js CHANGED
@@ -17,6 +17,7 @@ const util = {
17
17
  isIE_Edge: null,
18
18
  isOSX_IOS: null,
19
19
  isChromium: null,
20
+ isResizeObserverSupported: null,
20
21
  _propertiesInit: function () {
21
22
  if (this._d) return;
22
23
  this._d = document;
@@ -25,6 +26,7 @@ const util = {
25
26
  this.isIE_Edge = (navigator.userAgent.indexOf('Trident') > -1) || (navigator.appVersion.indexOf('Edge') > -1);
26
27
  this.isOSX_IOS = /(Mac|iPhone|iPod|iPad)/.test(navigator.platform);
27
28
  this.isChromium = !!window.chrome;
29
+ this.isResizeObserverSupported = (typeof ResizeObserver === 'function');
28
30
  },
29
31
 
30
32
  _allowedEmptyNodeList: '.se-component, pre, blockquote, hr, li, table, img, iframe, video, audio, canvas',
@@ -540,19 +542,25 @@ const util = {
540
542
  * @description Add style and className of copyEl to originEl
541
543
  * @param {Element} originEl Origin element
542
544
  * @param {Element} copyEl Element to copy
545
+ * @param {Array|null} blacklist Blacklist array(LowerCase)
543
546
  */
544
- copyTagAttributes: function (originEl, copyEl) {
547
+ copyTagAttributes: function (originEl, copyEl, blacklist) {
545
548
  if (copyEl.style.cssText) {
546
549
  originEl.style.cssText += copyEl.style.cssText;
547
550
  }
548
551
 
549
- const classes = copyEl.classList;
550
- for (let i = 0, len = classes.length; i < len; i++) {
551
- this.addClass(originEl, classes[i]);
552
+ const attrs = copyEl.attributes;
553
+ for (let i = 0, len = attrs.length; i < len; i++) {
554
+ if (blacklist && blacklist.indexOf(attrs[i].name.toLowerCase()) > -1) continue;
555
+ originEl.setAttribute(attrs[i].name, attrs[i].value);
552
556
  }
553
557
 
554
- if (!originEl.style.cssText) originEl.removeAttribute('style');
555
- if (!originEl.className.trim()) originEl.removeAttribute('class');
558
+ const originAttrs = originEl.attributes;
559
+ for (let i = 0, len = originAttrs.length; i < len; i++) {
560
+ if (!originAttrs[i].value) {
561
+ originEl.removeAttribute(originAttrs[i].name);
562
+ }
563
+ }
556
564
  },
557
565
 
558
566
  /**
@@ -773,7 +781,7 @@ const util = {
773
781
  * @returns {Boolean}
774
782
  */
775
783
  isEmptyLine: function (element) {
776
- return !element || !element.parentNode || (!element.querySelector('IMG, IFRAME, AUDIO, VIDEO, CANVAS, TABLE') && this.onlyZeroWidthSpace(element.textContent));
784
+ return !element || !element.parentNode || (!element.querySelector('IMG, IFRAME, AUDIO, VIDEO, CANVAS, TABLE') && element.children.length === 0 && this.onlyZeroWidthSpace(element.textContent));
777
785
  },
778
786
 
779
787
  /**
@@ -1431,7 +1439,7 @@ const util = {
1431
1439
 
1432
1440
  if (baseNode.nodeType === 3) {
1433
1441
  index = this.getPositionIndex(baseNode);
1434
- if (offset >= 0) {
1442
+ if (offset >= 0 && baseNode.length !== offset) {
1435
1443
  baseNode.splitText(offset);
1436
1444
  const after = this.getNodeFromPath([index + 1], bp);
1437
1445
  if (this.onlyZeroWidthSpace(after)) after.data = this.zeroWidthSpace;
@@ -1656,11 +1664,12 @@ const util = {
1656
1664
  },
1657
1665
 
1658
1666
  /**
1659
- * @description Delete a empty child node of argument element
1667
+ * @description Delete a empty child node of argument element.
1660
1668
  * @param {Element} element Element node
1661
1669
  * @param {Node|null} notRemoveNode Do not remove node
1670
+ * @param {boolean} forceDelete When all child nodes are deleted, the parent node is also deleted.
1662
1671
  */
1663
- removeEmptyNode: function (element, notRemoveNode) {
1672
+ removeEmptyNode: function (element, notRemoveNode, forceDelete) {
1664
1673
  const inst = this;
1665
1674
 
1666
1675
  if (notRemoveNode) {
@@ -1687,7 +1696,13 @@ const util = {
1687
1696
  return 0;
1688
1697
  })(element);
1689
1698
 
1690
- if (element.childNodes.length === 0) element.innerHTML = '<br>';
1699
+ if (element.childNodes.length === 0) {
1700
+ if (forceDelete) {
1701
+ this.removeItem(element);
1702
+ } else {
1703
+ element.innerHTML = '<br>';
1704
+ }
1705
+ }
1691
1706
  },
1692
1707
 
1693
1708
  /**
@@ -1815,8 +1830,8 @@ const util = {
1815
1830
  return false;
1816
1831
  }
1817
1832
 
1818
- const nrtag = !this.getParentElement(current, this.isNotCheckingNode);
1819
1833
  // empty tags
1834
+ const nrtag = !this.getParentElement(current, this.isNotCheckingNode);
1820
1835
  if ((!this.isTable(current) && !this.isListCell(current) && !this.isAnchor(current)) && (this.isFormatElement(current) || this.isRangeFormatElement(current) || this.isTextStyleElement(current)) && current.childNodes.length === 0 && nrtag) {
1821
1836
  emptyTags.push(current);
1822
1837
  return false;
@@ -1837,6 +1852,13 @@ const util = {
1837
1852
  }
1838
1853
  }
1839
1854
 
1855
+ // class filter
1856
+ if (lowLevelCheck && nrtag && current.className) {
1857
+ const className = new this._w.Array(current.classList).map(this._classNameFilter).join(' ').trim();
1858
+ if (className) current.className = className;
1859
+ else current.removeAttribute('class');
1860
+ }
1861
+
1840
1862
  const result = current.parentNode !== documentFragment && nrtag &&
1841
1863
  ((this.isListCell(current) && !this.isList(current.parentNode)) ||
1842
1864
  (lowLevelCheck && (this.isFormatElement(current) || this.isComponent(current)) && !this.isRangeFormatElement(current.parentNode) && !this.getParentElement(current, this.isComponent)));
@@ -1906,6 +1928,10 @@ const util = {
1906
1928
  }
1907
1929
  },
1908
1930
 
1931
+ _classNameFilter: function (v) {
1932
+ return /(^__se__|^se-|katex)/.test(v) ? v : '';
1933
+ },
1934
+
1909
1935
  _setDefaultOptionStyle: function (options, defaultStyle) {
1910
1936
  let optionStyle = '';
1911
1937
  if (options.height) optionStyle += 'height:' + options.height + ';';