suneditor 3.0.0-beta.7 → 3.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "suneditor",
3
- "version": "3.0.0-beta.7",
3
+ "version": "3.0.0-beta.8",
4
4
  "description": "Vanilla javascript based WYSIWYG web editor",
5
5
  "author": "Yi JiHong",
6
6
  "license": "MIT",
@@ -21,7 +21,7 @@ const DEFAULT_BUTTON_LIST = [
21
21
  const REQUIRED_FORMAT_LINE = 'div';
22
22
  const REQUIRED_ELEMENT_WHITELIST = 'br|div';
23
23
  const DEFAULT_ELEMENT_WHITELIST =
24
- 'p|pre|blockquote|h1|h2|h3|h4|h5|h6|ol|ul|li|hr|figure|figcaption|img|iframe|audio|video|source|table|thead|tbody|tr|th|td|caption|a|b|strong|var|i|em|u|ins|s|span|strike|del|sub|sup|code|svg|path|details|summary';
24
+ 'p|pre|blockquote|h1|h2|h3|h4|h5|h6|ol|ul|li|hr|figure|figcaption|img|iframe|audio|video|source|table|colgroup|col|thead|tbody|tr|th|td|caption|a|b|strong|var|i|em|u|ins|s|span|strike|del|sub|sup|code|svg|path|details|summary';
25
25
  const DEFAULT_TEXT_STYLE_TAGS = 'strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code|summary';
26
26
 
27
27
  /* scopeSelectionTags */
@@ -46,7 +46,10 @@ const DEFAULT_CLASS_MJX = 'mjx-container|mjx-math|mjx-mrow|mjx-mi|mjx-mo|mjx-mn|
46
46
  const DEFAULT_EXTRA_TAG_MAP = { script: false, style: false, meta: false, link: false, '[a-z]+:[a-z]+': false };
47
47
 
48
48
  const DEFAULT_TAG_STYLES = {
49
- 'table|th|td': 'border|border-[a-z]+|background-color|text-align|float|font-weight|text-decoration|font-style',
49
+ 'table|th|td|tr': 'border|border-[a-z]+|background-color|text-align|float|font-weight|text-decoration|font-style|vertical-align|text-align',
50
+ 'table|td': 'width',
51
+ tr: 'height',
52
+ col: 'width',
50
53
  'ol|ul': 'list-style-type'
51
54
  };
52
55
  const DEFAULT_TEXT_STYLES = 'font-family|font-size|color|background-color';
@@ -2,14 +2,14 @@ import { _d, _w } from './env';
2
2
 
3
3
  const URLPattern = /https?:\/\/[^\s]+/g;
4
4
  const FONT_VALUES_MAP = {
5
- 'xx-small': 1,
6
- 'x-small': 2,
7
- small: 3,
8
- medium: 4,
9
- large: 5,
10
- 'x-large': 6,
11
- 'xx-large': 7,
12
- 'xxx-large': 8
5
+ 'xx-small': 0.5625,
6
+ 'x-small': 0.625,
7
+ small: 0.8333,
8
+ medium: 1,
9
+ large: 1.125,
10
+ 'x-large': 1.5,
11
+ 'xx-large': 2,
12
+ 'xxx-large': 2.5
13
13
  };
14
14
 
15
15
  function NodeToJson(node) {
@@ -264,7 +264,7 @@ export function setStyle(elements, styleName, value) {
264
264
  for (let i = 0, len = elements.length, e; i < len; i++) {
265
265
  e = /** @type {HTMLElement} */ (elements[i]);
266
266
  e.style[styleName] = value;
267
- if (!value && !e.style.cssText) {
267
+ if (!e.style.cssText) {
268
268
  e.removeAttribute('style');
269
269
  }
270
270
  }
@@ -423,13 +423,28 @@ class Table extends EditorInjector {
423
423
  query: 'table',
424
424
  method: (element) => {
425
425
  const ColgroupEl = element.querySelector('colgroup');
426
- let FigureEl = dom.check.isFigure(element.parentNode) ? element.parentNode : null;
427
- if (ColgroupEl && FigureEl) return;
426
+ let FigureEl = /** @type {HTMLElement} */ (dom.check.isFigure(element.parentNode) ? element.parentNode : null);
428
427
 
429
428
  // create colgroup
430
429
  if (!ColgroupEl) {
430
+ const rows = element.rows;
431
+ const firstRow = rows[0];
431
432
  const maxCount = GetMaxColumns(element);
432
- const colGroup = dom.utils.createElement('colgroup', null, `<col style="width: ${numbers.get(100 / maxCount, CELL_DECIMAL_END)}%;">`.repeat(maxCount));
433
+ const colHTML = [];
434
+
435
+ for (let i = 0; i < maxCount; i++) {
436
+ let colStyle = '';
437
+ if (firstRow && firstRow.cells[i]) {
438
+ const styleWidth = firstRow.cells[i].style.width;
439
+ if (styleWidth) {
440
+ colStyle = ` style="width: ${styleWidth};"`;
441
+ dom.utils.setStyle(firstRow.cells[i], 'width', '');
442
+ }
443
+ }
444
+ colHTML.push(`<col${colStyle}>`);
445
+ }
446
+
447
+ const colGroup = dom.utils.createElement('colgroup', null, colHTML.join(''));
433
448
  element.insertBefore(colGroup, element.firstElementChild);
434
449
  }
435
450
 
@@ -442,6 +457,12 @@ class Table extends EditorInjector {
442
457
  dom.utils.addClass(FigureEl, 'se-flex-component|se-input-component');
443
458
  }
444
459
 
460
+ // table width
461
+ if (element.style.width) {
462
+ FigureEl.style.width = element.style.width;
463
+ dom.utils.setStyle(element, 'width', '');
464
+ }
465
+
445
466
  // scroll
446
467
  if (!this.figureScroll) {
447
468
  dom.utils.removeClass(FigureEl, this.figureScrollList.join('|'));